Author: bpoussin Date: 2008-08-13 13:17:17 +0000 (Wed, 13 Aug 2008) New Revision: 1295 Modified: branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java Log: SimulationManager - utilisation de execute et non submit sur les executors pour forcer l'execution - lors de la demande du control si on ne le trouve pas dans les simulations actives, recherche dans les simulations ternimees Migration - la migration fonctionne Modified: branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java =================================================================== --- branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-12 15:23:29 UTC (rev 1294) +++ branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-13 13:17:17 UTC (rev 1295) @@ -98,7 +98,7 @@ } } - return MigrationChoice.NO_MIGRATION; // force false during test // result; + return result; } private void migrateTo3_2(Connection conn) throws SQLException { @@ -112,8 +112,10 @@ "alter table STRATEGY add column INACTIVITYEQUATION VARCHAR(255);", }; for (String sql : sqls) { + log.info("try " + sql); PreparedStatement sta = conn.prepareStatement(sql); sta.executeUpdate(); + log.info("done " + sql); } } Modified: branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java =================================================================== --- branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-12 15:23:29 UTC (rev 1294) +++ branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-13 13:17:17 UTC (rev 1295) @@ -36,8 +36,6 @@ import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.types.Date; import java.beans.PropertyChangeEvent; -import java.util.logging.Level; -import java.util.logging.Logger; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import static org.codelutin.i18n.I18nf._; @@ -67,7 +65,10 @@ static protected SimulationManager instance = null; - protected boolean autoLaunch = false; + // FIXME pouvoir configurer ceci en fichier de config + // FIXME ainsi que la mise a false, lors de la simulation de la derniere + // (sans doute ajoute un boolean, simulationListAsQueue = true|false) + protected boolean autoLaunch = true; protected ListenerSet<SimulationQueueListener> listeners = new ListenerSet<SimulationQueueListener>(); protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this); @@ -163,6 +164,7 @@ synchronized(this) { while (!isAutoLaunch()) { try { + log.info("autoLaunch is false waiting queue start"); this.wait(); } catch (InterruptedException eee) { log.warn("Error during wait autoLaunch flag", eee); @@ -193,19 +195,22 @@ // on construit le bon type de SimulationItem pour le job SimulationItem item = null; if (param.getUseAnalysePlan()) { + // c un plan d'analyse, il peut etre independant ou dependant if (!param.isIndependentPlan()) { item = new SimulationItemPlan(id, param); - executor.submit(new SimulationJob(this, item)); + executor.execute(new SimulationJob(this, item)); } else { // on met dans la queue local le process de generation de toutes // les simus item = new SimulationItemPlanIndependent(id, param); - localExecutor.submit( + localExecutor.execute( new PrepareIndependentSimulationJob(this, executor, item)); } } else { + // une simulation normal item = new SimulationItem(id, param); - executor.submit(new SimulationJob(this, item)); + log.info("Simulation added to executor: " + executor.isShutdown() + ", " + executor.isTerminated()); + executor.execute(new SimulationJob(this, item)); } fireAddEvent(id, item); // must be before thread notification because thread look in map } @@ -338,6 +343,10 @@ public SimulationControl getControl(String id) { SimulationControl result = null; SimulationItem item = map.get(id); + if (item == null) { + // try to find it in done simulation + item = mapDones.get(id); + } if (item != null) { result = item.control; } @@ -360,6 +369,7 @@ // on ne met jamais dans la queue done les simulations de plan // sauf si elle echoue result = false; +// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus) } else if (!(config.isSimulationShowOnlyError() && !(item instanceof SimulationItemPlan) && item.getSimulation().getInformation().hasError())) { @@ -655,7 +665,7 @@ // plus celles en cours d'affichees while (item.hasNext()) { try { - executor.submit(new SimulationJob(simulationManager, item.next())); + executor.execute(new SimulationJob(simulationManager, item.next())); } catch (Exception eee) { log.error("Can't add simulation: " + item, eee); } @@ -689,6 +699,7 @@ } public void run() { + log.info("Start simulation : " + simItem.id); simulationManager.waitAutoLaunch(); try { // si l'simItem exist encore (que l'utilisateur ne la pas retire)