Author: bpoussin Date: 2014-04-07 14:12:43 +0200 (Mon, 07 Apr 2014) New Revision: 3939 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3939 Log: change Optimisation method name Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java branches/4.0.1/src/main/resources/templates/script/optimization.ftl Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-07 10:43:17 UTC (rev 3938) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-07 12:12:43 UTC (rev 3939) @@ -50,22 +50,37 @@ /** * Appele lors de l'initialisation. La premiere generation doit etre construite * dans l'init. - * - * @param context + * + * @param context */ - void init(OptimizationContext context); + void init(OptimizationContext context) throws Exception; /** + * La premiere generation doit etre construite dans cette methode + * dans l'init. + * + * @param context + */ + void firstSimulation(OptimizationContext context) throws Exception; + + /** * Génère une nouvelle série de simulation suivant le context d'optimisation. * * @param context context */ - void getNextSimulation(OptimizationContext context); + void nextSimulation(OptimizationContext context) throws Exception; /** + * Cette methode est appelee après chaque serie de simulation + soit apres firstSimulation et nextSimulation + * @param context + */ + void endSimulation(OptimizationContext context) throws Exception; + + /** * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire * (init ou getNextSimulation n'ont pas fait appel a context.addSimulation) - * @param context + * @param context */ - void endSimulation(OptimizationContext context); + void finish(OptimizationContext context) throws Exception; } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java 2014-04-07 10:43:17 UTC (rev 3938) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java 2014-04-07 12:12:43 UTC (rev 3939) @@ -51,9 +51,6 @@ /** Simulation to do during next generation simulation */ protected List<SimulationStorage> nextSimulations; - protected int currentGeneration = 0; - protected int simNumber = 0; - public OptimizationContext(String id, SimulationParameter param, SimulationJob job) { super(id, param); this.job = job; @@ -78,7 +75,6 @@ if (CollectionUtils.isNotEmpty(result)) { generations.add(result); nextSimulations = null; - currentGeneration++; } return result; @@ -89,14 +85,21 @@ return result; } - public SimulationStorage getNewSimulation() { + /** + * Return new simulation. This new simulation is automaticaly added to + * next simulation. + * + * @return new Simulation + */ + public SimulationStorage newSimulation() { try { - String simId = id + "_" + simNumber; + String simId = id + "_" + number; SimulationParameter childParam = param.copy(); - childParam.setSimulationPlanNumber(simNumber); + childParam.setSimulationPlanNumber(number); SimulationStorage result = SimulationStorage.importAndRenameZip(job.getItem().getSimulationZip(), simId); - simNumber++; + incNumber(); + addSimulation(result); return result; } catch (Exception eee) { @@ -104,12 +107,16 @@ } } - public void addSimulation(SimulationStorage s) { + protected void addSimulation(SimulationStorage s) { getNextSimulations().add(s); } - public void addSimulation(Factor ... factors) { - SimulationStorage s = getNewSimulation(); + /** + * Create simulation. This new simulation is automaticaly added to + * next simulations. Database will be modified with factors in parameters + */ + public void newSimulation(Factor ... factors) { + SimulationStorage s = newSimulation(); Collection<Factor> colFactors = new ArrayList<Factor>(); Collections.addAll(colFactors, factors); @@ -117,16 +124,21 @@ SimulationParameter childParam = s.getParameter(); childParam.setGeneratedPreScript(script); - - addSimulation(s); } + /** + * Return the current generation. + * 0 for no generation + * 1 for one generation simulation + * ... + * @return + */ public int getCurrentGeneration() { - return currentGeneration; + return generations.size(); } public int getSimulationNumber() { - return simNumber; + return number; } public List<SimulationStorage> getGeneration(int n) { Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-07 10:43:17 UTC (rev 3938) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-07 12:12:43 UTC (rev 3939) @@ -21,6 +21,13 @@ import fr.ifremer.isisfish.simulator.OptimizationContext; import fr.ifremer.isisfish.simulator.SimulationControl; import fr.ifremer.isisfish.simulator.SimulationParameter; +import java.io.File; +import java.io.IOException; +import java.util.List; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.i18n.I18n; /** * Permet de generer l'enchainement des simulations d'optimisation. @@ -70,6 +77,7 @@ public void run() { try { optimization.init(optimizationContext); + optimization.firstSimulation(optimizationContext); List<SimulationStorage> sims = optimizationContext.clearNextSimulation(); while (!exception && !control.isStopSimulationRequest() @@ -104,13 +112,14 @@ } if (!exception && !control.isStopSimulationRequest()) { - optimization.getNextSimulation(optimizationContext); + optimization.endSimulation(optimizationContext); + optimization.nextSimulation(optimizationContext); sims = optimizationContext.clearNextSimulation(); } } if (!exception && !control.isStopSimulationRequest()) { - optimization.endSimulation(optimizationContext); + optimization.finish(optimizationContext); } // on enleve le master plan des simulations en cours, vu que Modified: branches/4.0.1/src/main/resources/templates/script/optimization.ftl =================================================================== --- branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-07 10:43:17 UTC (rev 3938) +++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-07 12:12:43 UTC (rev 3939) @@ -73,7 +73,7 @@ public class ${name} implements Optimization { /** to use log facility, just put in your code: log.info("..."); */ - private static Log log = LogFactory.getLog(${name}.class); + private static final Log log = LogFactory.getLog(${name}.class); protected String[] necessaryResult = { // put here all necessary result for this rule @@ -98,8 +98,7 @@ } /** - * Appele lors de l'initialisation. La premiere generation doit etre construite - * dans l'init via des appels a context.addSimulation(...) + * Appele lors de l'initialisation. * * @param context */ @@ -108,24 +107,40 @@ } /** + * La premiere generation doit etre construite dans cette methode + * via des appels a context.addSimulation(...) + * + * @param context + */ + public void firstSimulation(OptimizationContext context) throws Exception { + // TODO + } + + /** * Génère une nouvelle série de simulation suivant le context d'optimisation. * Pour cela vous devez appeler context.addSimulation(...) pour ajouter * des simulations pour la prochaine generation. * * @param context context - * @param region region - * @return simulations serie */ public void getNextSimulation(OptimizationContext context) { // TODO } /** - * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire - * (init ou getNextSimulation n'ont pas fait appel a context.addSimulation) + * Cette methode est appelee après chaque serie de simulation + * soit apres startSimulation et nextSimulation * @param context */ public void endSimulation(OptimizationContext context) { } + + /** + * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire + * (init ou getNextSimulation n'ont pas fait appel a context.addSimulation) + * @param context + */ + public void finish(OptimizationContext context) throws Exception; + }