Author: chatellier Date: 2009-02-18 13:20:34 +0000 (Wed, 18 Feb 2009) New Revision: 1831 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java Log: Gestion des demandes d'arret de monitoring de simulations Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-02-18 13:10:43 UTC (rev 1830) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-02-18 13:20:34 UTC (rev 1831) @@ -172,7 +172,10 @@ String simulationOnlyExport = simulationInfos[2]; String simulationExports = simulationInfos[3]; String simulationUseAnalysePlan = simulationInfos[4]; - String simulationPlans = simulationInfos[5]; + String simulationPlans = ""; + if(simulationInfos.length >= 6) { + simulationPlans = simulationInfos[5]; + } if (log.isInfoEnabled()) { log.info("Restart monitoring of " + simulationId); @@ -351,6 +354,9 @@ SimulationJob job = checkMap.get(date); SimulatorLauncher launcher = job.getLauncher(); + // retourne true if : + // - simulation is finished + // - simulation end has been asked boolean jobIsFinished = checkProgression(job, launcher); // always remove this simulation from map @@ -360,6 +366,7 @@ if (jobIsFinished) { doPostSimulationOperation(job, launcher); } else { + // next check date long nextJobTimeMs = date.getTime() + launcher.getCheckProgressionInterval() * 1000; @@ -407,8 +414,8 @@ // WARNING this condition is VERY important // and set by end of // fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher#localSimulateSameThread(SimulationControl, SimulationStorage) - if (control.getProgress() > 0 - && control.getProgress() >= control.getProgressMax()) { + if ((control.getProgress() > 0 + && control.getProgress() >= control.getProgressMax()) || control.isStopSimulationRequest()) { simulationEnded = true; } } catch (RemoteException e) { @@ -440,12 +447,17 @@ } try { - // get storage - SimulationStorage simulation = launcher.getSimulationStorage( - service, control); - - // post manage this storage - exportResult(job, simulation); + + // on ne fait de post traitement que si + // la simulation n'a pas été arretée + if (!control.isStopSimulationRequest()) { + // get storage + SimulationStorage simulation = launcher.getSimulationStorage( + service, control); + + // post manage this storage + exportResult(job, simulation); + } } catch (RemoteException e) { if (log.isErrorEnabled()) { log.error("Can't get simulation results after simulation end",