private void createTables(boolean dropTables) { for (Enumeration e = EOModelGroup.defaultGroup().models().objectEnumerator(); e.hasMoreElements(); ) { final EOModel eomodel = (EOModel) e.nextElement(); EODatabaseContext dbc = EOUtilities.databaseContextForModelNamed(ec, eomodel.name()); dbc.lock(); try { EOAdaptorChannel channel = dbc.availableChannel().adaptorChannel(); if (eomodel.adaptorName().contains("JDBC")) { EOSynchronizationFactory syncFactory = (EOSynchronizationFactory) channel.adaptorContext().adaptor().synchronizationFactory(); ERXSQLHelper helper = ERXSQLHelper.newSQLHelper(channel); NSDictionary options = helper.defaultOptionDictionary(true, dropTables); // Primary key support creation throws an unwanted exception // if // EO_PK_TABLE already // exists (e.g. in case of MySQL), so we add pk support in a // stand-alone step options = optionsWithPrimaryKeySupportDisabled(options); createPrimaryKeySupportForModel(eomodel, channel, syncFactory); String sqlScript = syncFactory.schemaCreationScriptForEntities(eomodel.entities(), options); log.info("Creating tables: {}", eomodel.name()); ERXJDBCUtilities.executeUpdateScript(channel, sqlScript, true); } } catch (SQLException ex) { log.error("Can't update", ex); } finally { dbc.unlock(); } } }
/*------------------------------------------------------------------------------------------------* * A P P L I C A T I O N W I L L L A U N C H [ N O T I F I C A T I O N ] *------------------------------------------------------------------------------------------------*/ public void appWillLaunch(NSNotification notification) { LOG.info("[-NOTIFY-] appWillLaunch"); NSNotificationCenter.defaultCenter() .removeObserver( this, com.webobjects.appserver.WOApplication.ApplicationWillFinishLaunchingNotification, null); NSArray<EOModel> modelArray = ERXModelGroup.defaultGroup().models(); for (EOModel model : modelArray) { LOG.info("[OBSERVER] modelName={} ({})", model.name(), model.adaptorName()); } if (ERXProperties.booleanForKey("pachy.exitBeforeLaunching")) { LOG.info("[APPLICATION] EXIT BEFORE LAUNCHING [pachy.exitBeforeLaunching == true]"); System.exit(0); /* ######################################### MIGHT STOP HERE (pachy.exitBeforeLaunching) #### */ } if (ERXProperties.booleanForKeyWithDefault("pachy.optionEnableTimers", false)) { startTenMinuteTimerTask(); startDayChangeTimerTask(); } }