ulrich
2017-02-11 1345f04c927a319d1f541d420250e94bb949fbdd
src/java/de/uhilger/um/web/Initialiser.java
@@ -18,10 +18,13 @@
package de.uhilger.um.web;
import de.uhilger.baselink.GenericRecord;
import de.uhilger.baselink.PersistenceManager;
import de.uhilger.baselink.Record;
import de.uhilger.um.api.UserMgr;
import de.uhilger.um.daten.User;
import de.uhilger.um.daten.UserData;
import de.uhilger.um.daten.UserRole;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -58,6 +61,10 @@
    
  /** Name des SQL-Befehls zum Pruefen, ob die Datenbank vorhanden ist */
  public static final String SQL_DB_VORHANDEN = "dbVorhanden";  
  public static final String MP_USER = "userMapper";
  public static final String MP_USER_DATA = "userDataMapper";
  public static final String MP_USER_ROLE = "userRoleMapper";
  
  /**
   * Diese Webanwendung initialisieren, also z.B. Elemente instantiieren, die
@@ -124,6 +131,7 @@
      PersistenceManager db = new PersistenceManager();
      db.setDataSourceName(servletContext.getInitParameter(P_DSNAME));
      servletContext.setAttribute(UserMgr.UM_DB, db);
      initMapper(servletContext);
      Properties sql = (Properties) servletContext.getAttribute(UserMgr.UM_SQL_PROPERTIES);
      if(!dbVorhanden(db, sql.getProperty(SQL_DB_VORHANDEN))) {
        logger.info("Datenbank ist nicht vorhanden");
@@ -131,6 +139,9 @@
        User admin = new User();
        admin.setId("admin");
        admin.setPw("admin");
        admin.setFirstName("admin");
        admin.setLastName("admin");
        admin.setEmail("none");
        UserMgr um = new UserMgr();
        um.setServletContext(servletContext);
        um.createUser(admin);
@@ -140,11 +151,26 @@
    }
  }
  
  /**
   * Mapper erzeugen
   * @param servletContext der ServletContext dieser Webanwendung
   */
  /*
  TODO: das noch auf on demand anlegen: GenericRecord wird erst angelegt
   wenn er erstmals benoetigt wird. Ggf. auch einen Mechanismus zum entfernen
   laenger nicht benoetigter Mapper hinzufuegen
  */
  private void initMapper(ServletContext servletContext) {
    servletContext.setAttribute(UserMgr.MP_USER, new GenericRecord(User.class));
    servletContext.setAttribute(UserMgr.MP_USER_DATA, new GenericRecord(UserData.class));
    servletContext.setAttribute(UserMgr.MP_USER_ROLE, new GenericRecord(UserRole.class));
  }
  @SuppressWarnings("rawtypes")
  private boolean dbVorhanden(PersistenceManager pm, String sql) {
    boolean istVorhanden = false;
    List<List<String>> list = pm.select(sql, Record.WITHOUT_BLOBS);
    if(list.size() > 1) {
    if(list != null && list.size() > 1) {
      istVorhanden = true;
      logger.fine("Datenbank ist vorhanden");
    }