Author: bpoussin Date: 2014-04-02 16:06:11 +0200 (Wed, 02 Apr 2014) New Revision: 3920 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3920 Log: add necessaryResult and used it for objective and optimization Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java branches/4.0.1/src/main/resources/templates/script/objective.ftl branches/4.0.1/src/main/resources/templates/script/optimization.ftl Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-04-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-04-02 14:06:11 UTC (rev 3920) @@ -56,6 +56,8 @@ import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.simulator.Objective; +import fr.ifremer.isisfish.simulator.Optimization; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.simulator.SimulationException; import fr.ifremer.isisfish.simulator.SimulationPlan; @@ -299,6 +301,22 @@ } } } + + // on objective and optimization + Objective objective = simulation.getParameter().getObjective(); + if (objective != null) { + for (String resultName : objective.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + + Optimization optimization = simulation.getParameter().getOptimization(); + if (optimization != null) { + for (String resultName : optimization.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + log.info("Enabled result: " + enabledResult); } boolean result = enabledResult.contains(name); Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-04-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-04-02 14:06:11 UTC (rev 3920) @@ -70,6 +70,8 @@ import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.simulator.Objective; +import fr.ifremer.isisfish.simulator.Optimization; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.simulator.SimulationException; import fr.ifremer.isisfish.simulator.SimulationPlan; @@ -653,6 +655,22 @@ } } } + + // on objective and optimization + Objective objective = simulation.getParameter().getObjective(); + if (objective != null) { + for (String resultName : objective.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + + Optimization optimization = simulation.getParameter().getOptimization(); + if (optimization != null) { + for (String resultName : optimization.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + log.info("Enabled result: " + enabledResult); } // par defaut on dit qu'on conserve le resultat Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-04-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-04-02 14:06:11 UTC (rev 3920) @@ -48,6 +48,8 @@ import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.simulator.Objective; +import fr.ifremer.isisfish.simulator.Optimization; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.simulator.SimulationException; import fr.ifremer.isisfish.simulator.SimulationPlan; @@ -184,6 +186,22 @@ } } } + + // on objective and optimization + Objective objective = simulation.getParameter().getObjective(); + if (objective != null) { + for (String resultName : objective.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + + Optimization optimization = simulation.getParameter().getOptimization(); + if (optimization != null) { + for (String resultName : optimization.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + log.info("Enabled result: " + enabledResult); } boolean result = enabledResult.contains(name); Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-04-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-04-02 14:06:11 UTC (rev 3920) @@ -37,6 +37,21 @@ public interface Objective { /** + * Return plan necessary Results. + * + * @return the necessaryResult name + */ + public String[] getNecessaryResult(); + + /** + * Return plan description. + * + * @return plan description + * @throws Exception + */ + public String getDescription() throws Exception; + + /** * Effectue une evaluation entre les exports et les observations. * * @param context optimisation context 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-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 14:06:11 UTC (rev 3920) @@ -38,6 +38,21 @@ public interface Optimization { /** + * Return plan necessary Results. + * + * @return the necessaryResult name + */ + public String[] getNecessaryResult(); + + /** + * Return plan description. + * + * @return plan description + * @throws Exception + */ + public String getDescription() throws Exception; + + /** * Appele lors de l'initialisation. La premiere generation doit etre construite * dans l'init. * Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-04-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-04-02 14:06:11 UTC (rev 3920) @@ -150,7 +150,23 @@ } } } - log.info("Enabled result: " + enabledResult); + + // on objective and optimization + Objective objective = param.getObjective(); + if (objective != null) { + for (String resultName : objective.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + + Optimization optimization = param.getOptimization(); + if (optimization != null) { + for (String resultName : optimization.getNecessaryResult()) { + enabledResult.add(resultName); + } + } + + log.info("Enabled result: " + enabledResult); } boolean result = enabledResult.contains(name); return result; Modified: branches/4.0.1/src/main/resources/templates/script/objective.ftl =================================================================== --- branches/4.0.1/src/main/resources/templates/script/objective.ftl 2014-04-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/resources/templates/script/objective.ftl 2014-04-02 14:06:11 UTC (rev 3920) @@ -75,7 +75,29 @@ /** to use log facility, just put in your code: log.info("..."); */ private static Log log = LogFactory.getLog(${name}.class); + protected String[] necessaryResult = { + // put here all necessary result for this rule + // example: + // ResultName.MATRIX_BIOMASS, + // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + }; + + @Override + public String[] getNecessaryResult() { + return this.necessaryResult; + } + /** + * Permet d'afficher a l'utilisateur une aide sur le plan. + * @return L''aide ou la description du plan + */ + @Override + public String getDescription() throws Exception { + // TODO change description + return _("TODO ${name} description plan"); + } + + /** * Effectue une evaluation entre les exports et les observations. * * @param context optimization context 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-02 13:52:17 UTC (rev 3919) +++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 14:06:11 UTC (rev 3920) @@ -75,7 +75,29 @@ /** to use log facility, just put in your code: log.info("..."); */ private static Log log = LogFactory.getLog(${name}.class); + protected String[] necessaryResult = { + // put here all necessary result for this rule + // example: + // ResultName.MATRIX_BIOMASS, + // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + }; + + @Override + public String[] getNecessaryResult() { + return this.necessaryResult; + } + /** + * Permet d'afficher a l'utilisateur une aide sur le plan. + * @return L''aide ou la description du plan + */ + @Override + public String getDescription() throws Exception { + // TODO change description + return _("TODO ${name} description plan"); + } + + /** * Appele lors de l'initialisation. La premiere generation doit etre construite * dans l'init via des appels a context.addSimulation(...) * @@ -83,7 +105,6 @@ */ void init(OptimizationContext context); - /** * Génère une nouvelle série de simulation suivant le context d'optimisation. * Pour cela vous devez appeler context.addSimulation(...) pour ajouter