Author: echatellier Date: 2015-06-21 17:24:03 +0000 (Sun, 21 Jun 2015) New Revision: 4277 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4277 Log: Merge branch isis-fish-4.4.0-resultname into trunk Added: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultInfoStorage.java trunk/src/main/java/fr/ifremer/isisfish/result/ trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultInfoNameListRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/util/RendererHelper.java trunk/src/test/java/fr/ifremer/isisfish/result/ trunk/src/test/resources/test-database/resultinfos/ Removed: trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java trunk/src/test/resources/.isis-config-3_cvs Modified: trunk/ trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableCellRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListCellRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportNameListRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboRenderer.java trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java trunk/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java trunk/src/main/resources/i18n/isis-fish_en_GB.properties trunk/src/main/resources/i18n/isis-fish_fr_FR.properties trunk/src/main/resources/templates/script/export.ftl trunk/src/main/resources/templates/script/exportStep.ftl trunk/src/main/resources/templates/script/objective.ftl trunk/src/main/resources/templates/script/optimization.ftl trunk/src/main/resources/templates/script/rule.ftl trunk/src/main/resources/templates/script/sensitivityexport.ftl trunk/src/main/resources/templates/script/simulationplan.ftl trunk/src/test/java/fr/ifremer/isisfish/datastore/DataStorageTestHelper.java trunk/src/test/java/fr/ifremer/isisfish/datastore/RuleStorageTest.java trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulationPlanStorageTest.java trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java trunk/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java trunk/src/test/resources/test-database/rules/Cantonnement.java trunk/src/test/resources/test-database/scripts/ResultName.java Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo - /branches/isis-fish-4.4.0-editor:4243-4262 /branches/isis-fish-4.4.0-ui-refactoring:4246-4262 + /branches/isis-fish-4.4.0-editor:4243-4262 /branches/isis-fish-4.4.0-resultname:4267-4276 /branches/isis-fish-4.4.0-ui-refactoring:4246-4262 Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -1112,7 +1112,7 @@ public static enum Option implements ConfigOptionDef { CONFIG_FILE(CONFIG_FILE_NAME, n("isisfish.config.main.configFileName.description"), "isis-config-" + ISIS_FISH_MAJOR_VERSION), - ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + ISIS_FISH_MAJOR_VERSION + "-rc"), + ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + ISIS_FISH_MAJOR_VERSION), COMPILATION_DIRECTORY("compilation.directory", n("isisfish.config.main.compileDirectory.description"), "${isis.home.directory}" + File.separator + "isis-build"), MONITORING_DIRECTORY("monitoring.directory", n("isisfish.config.main.monitoringDirectory.description"), "${isis.home.directory}" + File.separator + "isis-monitoring"), JAVADOC_DIRECTORY("javadoc.directory", n("isisfish.config.main.javadocDirectory.description"), "${isis.home.directory}" + File.separator + "isis-docs"), Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -37,6 +37,7 @@ import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Collection; +import java.util.Date; import java.util.List; import javax.imageio.ImageIO; @@ -69,6 +70,7 @@ import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.datastore.OptimizationStorage; import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; @@ -403,6 +405,7 @@ ObjectiveStorage.checkout(); OptimizationStorage.checkout(); RuleStorage.checkout(); + ResultInfoStorage.checkout(); ScriptStorage.checkout(); SensitivityAnalysisStorage.checkout(); SensitivityExportStorage.checkout(); @@ -442,7 +445,7 @@ List<File> filesInClonflict; // si on est sur une branche, on est en developpement, on ne fait donc rien - if (vcs.getTag().startsWith("branches")) { + if (vcs.getTag().startsWith("/branches")) { log.info(t("Use branches, switch not needed")); } else { // Si on utilise pas le bon tag on change de tag @@ -514,7 +517,7 @@ if (ask(t("isisfish.vcs.init.wrongprotocol", local))) { File localBackup = new File(local.getParentFile(), local.getName() + "-" + - new SimpleDateFormat("yyyy-mm-dd-HH-mm-ss").format(new java.util.Date())); + new SimpleDateFormat("yyyy-mm-dd-HH-mm-ss").format(new Date())); if (log.isInfoEnabled()) { log.info(t("Rename data directory to %s", localBackup)); } Copied: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultInfoStorage.java (from rev 4276, branches/isis-fish-4.4.0-resultname/src/main/java/fr/ifremer/isisfish/datastore/ResultInfoStorage.java) =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultInfoStorage.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultInfoStorage.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -0,0 +1,205 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2015 Ifremer, Code Lutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.datastore; + +import static org.nuiton.i18n.I18n.t; + +import java.io.File; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections4.map.ReferenceMap; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.result.ResultInfo; +import fr.ifremer.isisfish.util.Doc; +import fr.ifremer.isisfish.vcs.VCSException; + +/** + * This class define a result name. + * + * @author Eric Chatellier + * @since 4.4 + */ +public class ResultInfoStorage extends JavaSourceStorage { // ResultInfoStorage + + /** to use log facility, just put in your code: log.info(\"...\"); */ + private static Log log = LogFactory.getLog(ResultInfoStorage.class); + + public static final String RESULT_INFO_PATH = "resultinfos"; + + /** Template freemarker pour les noms de resultats. */ + public static final String RESULT_NAME_TEMPLATE = "templates/script/resultInfo.ftl"; + + /** Instance cache. */ + protected static Map<String, ResultInfoStorage> resultInfosCache = new ReferenceMap<String, ResultInfoStorage>(); + + /** + * Contruit un nouveau resultInfo storage + * + * @param rootSrc La region auquelle est attaché le resultats + * @param directory le repertoire ou devrait se trouver le resultat + * @param name le nom du resultat + */ + protected ResultInfoStorage(File rootSrc, File directory, String name) { + super(rootSrc, directory, name); + } + + /** + * Get context (official VCS) resultInfo directory. + * + * @return context resultInfo directory + */ + static public File getResultInfoDirectory() { + File result = new File(getContextDatabaseDirectory(), RESULT_INFO_PATH); + result.mkdirs(); + return result; + } + + /** + * Get community VCS resultInfo directory. + * + * @return community resultInfo directory + */ + public static File getCommunityResultInfoDirectory() { + File result = new File(getCommunityDatabaseDirectory(), RESULT_INFO_PATH); + result.mkdirs(); + return result; + } + + /** + * Retourne le nom de toutes les resultats existants pour cette region + * + * @return all result names found in local user database + */ + static public List<String> getResultInfoNames() { + List<String> rules = getStorageNames(getResultInfoDirectory()); + rules.addAll(getStorageNames(getCommunityResultInfoDirectory())); + return rules; + } + + /** + * Retourne le storage pour le resultat demandé + * + * @param name le nom du resultat souhaité + * @param location location to open storage file + * @return Le storage pour le resultat + */ + static public ResultInfoStorage getResultInfo(String name, Location... location) { + ResultInfoStorage result = resultInfosCache.get(name); + if (result == null) { + Location[] locs = nonEmptyLocation(location); + for (int i = 0; i < locs.length && result == null; i++) { + Location loc = locs[i]; + for (File dir : loc.getDirectories()) { + ResultInfoStorage storage = new ResultInfoStorage(dir, new File(dir, RESULT_INFO_PATH), name); + File sFile = storage.getFile(); + if (sFile.isFile()) { + result = storage; + resultInfosCache.put(name, result); + } + } + } + } + return result; + } + + /** + * Create new result name. + * + * @param name new result name to create + * @param location location to result name storage file + * @return new rule storage + */ + public static ResultInfoStorage createResultInfo(String name, Location location) { + File dir = location.getDirectories()[0]; + ResultInfoStorage storage = new ResultInfoStorage(dir, new File(dir, RESULT_INFO_PATH), name); + return storage; + } + + static public void checkout() throws VCSException { + checkout(IsisFish.config.getDatabaseDirectory(), RESULT_INFO_PATH); + } + + /** + * Retourne la liste des noms de toutes les resultats disponibles en local qui + * ne sont pas encore sur le serveur VCS + * + * @return liste de noms de resultats + */ + static public List<String> getNewResultInfoNames() { + List<String> result = getResultInfoNames(); + result.removeAll(getRemoteResultInfoNames()); + return result; + } + + /** + * Retourne la liste des noms de toutes les régions disponible sur le + * serveur VCS + * + * @return la liste des noms de toutes les régions disponible sur le serveur + * VCS. Si le serveur n'est pas disponible la liste retournée est + * vide. + */ + static public List<String> getRemoteResultInfoNames() { + File dir = getResultInfoDirectory(); + return getRemoteStorageNames(dir); + } + + /** + * Retourne la liste des noms de toutes les régions disponible sur le + * serveur VCS qui ne sont pas encore en local + * + * @return liste de noms de regions + */ + static public List<String> getNewRemoteResultInfoNames() { + List<String> result = getRemoteResultInfoNames(); + result.removeAll(getResultInfoNames()); + return result; + } + + /** + * <b>Be ware this method require to instanciate a resultInfo, so + * it would be better to call as often as possible.</b> + * + * @return the description of the instanciate Rule + * @see Doc + */ + public String getDescription() { + String result = null; + try { + ResultInfo resultInfo = getNewInstance(); + result = resultInfo == null ? null : resultInfo.getDescription(); + } catch (Exception e) { + log.warn(t("isisfish.error.not.found.description",this)); + } + return result; + } + +} // ResultInfoStorage + Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -28,9 +28,7 @@ import static org.nuiton.i18n.I18n.t; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -55,6 +53,7 @@ import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.export.ExportInfo; import fr.ifremer.isisfish.export.SensitivityExport; +import fr.ifremer.isisfish.result.ResultInfoHelper; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.Objective; import fr.ifremer.isisfish.simulator.Optimization; @@ -380,11 +379,8 @@ public boolean isEnabled(String name) { name = name.trim(); if (enabledResult == null && simulation.getSimulationParametersFile().exists()) { - enabledResult = new HashSet<String>(); - Collection<String> resultEnabled = simulation.getParameter() - .getResultEnabled(); - enabledResult.addAll(resultEnabled); + Set<String> requestedResult = ResultInfoHelper.cleanResultNames(simulation.getParameter().getResultEnabled()); // test on export List<String> exportNames = simulation.getParameter().getExportNames(); @@ -408,7 +404,7 @@ .getParameter().getSensitivityExport(); if (sensitivityExports != null) { for (SensitivityExport sensitivityExport : sensitivityExports) { - Collections.addAll(enabledResult, sensitivityExport.getNecessaryResult()); + Collections.addAll(requestedResult, sensitivityExport.getNecessaryResult()); } } @@ -416,7 +412,7 @@ List<Rule> rules = simulation.getParameter().getRules(); if (rules != null) { for (Rule rule : rules) { - Collections.addAll(enabledResult, rule.getNecessaryResult()); + Collections.addAll(requestedResult, rule.getNecessaryResult()); } } @@ -424,21 +420,24 @@ List<SimulationPlan> plans = simulation.getParameter().getSimulationPlans(); if (plans != null) { for (SimulationPlan plan : plans) { - Collections.addAll(enabledResult, plan.getNecessaryResult()); + Collections.addAll(requestedResult, plan.getNecessaryResult()); } } // on objective and optimization Objective objective = simulation.getParameter().getObjective(); if (objective != null) { - Collections.addAll(enabledResult, objective.getNecessaryResult()); + Collections.addAll(requestedResult, objective.getNecessaryResult()); } Optimization optimization = simulation.getParameter().getOptimization(); if (optimization != null) { - Collections.addAll(enabledResult, optimization.getNecessaryResult()); + Collections.addAll(requestedResult, optimization.getNecessaryResult()); } + // recursive result extraction + enabledResult = ResultInfoHelper.extractAllNecessaryResults(requestedResult); + log.info("Enabled result: " + enabledResult); } // par defaut on dit qu'on conserve le resultat Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -27,8 +27,6 @@ import static org.nuiton.i18n.I18n.t; -import java.util.Collection; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -44,6 +42,7 @@ import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.export.ExportInfo; import fr.ifremer.isisfish.export.SensitivityExport; +import fr.ifremer.isisfish.result.ResultInfoHelper; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.types.TimeStep; @@ -114,206 +113,212 @@ * sauvé ou non. */ public boolean isEnabled(String name) { - name = name.trim(); - if (enabledResult == null) { - SimulationParameter param = context.getSimulationStorage().getParameter(); - enabledResult = new HashSet<String>(); - - Collection<String> resultEnabled = param.getResultEnabled(); - enabledResult.addAll(resultEnabled); - List<String> exportNames = param.getExportNames(); - if (exportNames != null) { - for (String exportName : exportNames) { - ExportStorage storage = ExportStorage.getExport(exportName); - try { - ExportInfo export = storage.getNewInstance(); - for (String resultName : export.getNecessaryResult()) { - enabledResult.add(resultName); - } - } catch (IsisFishException eee) { - if (log.isWarnEnabled()) { - log.warn(t("Can't instanciate export %1$s", exportName), eee); - } - } - } - } - List<SensitivityExport> sensitivityExports = param.getSensitivityExport(); - if (sensitivityExports != null) { - for (SensitivityExport sensitivityExport : sensitivityExports) { - for (String resultName : sensitivityExport.getNecessaryResult()) { - enabledResult.add(resultName); - } - } - } - List<Rule> rules = param.getRules(); - if (rules != null) { - for (Rule rule : rules) { - for (String resultName : rule.getNecessaryResult()) { - enabledResult.add(resultName); - } - } - } - List<SimulationPlan> plans = param.getSimulationPlans(); - if (plans != null) { - for (SimulationPlan plan : plans) { - for (String resultName : plan.getNecessaryResult()) { - enabledResult.add(resultName); - } - } - } + name = name.trim(); + if (enabledResult == null) { + SimulationParameter param = context.getSimulationStorage().getParameter(); + + Set<String> requestedResult = ResultInfoHelper.cleanResultNames(param.getResultEnabled()); + + List<String> exportNames = param.getExportNames(); + if (exportNames != null) { + for (String exportName : exportNames) { + ExportStorage storage = ExportStorage.getExport(exportName); + try { + ExportInfo export = storage.getNewInstance(); + for (String resultName : export.getNecessaryResult()) { + requestedResult.add(resultName); + } + } catch (IsisFishException eee) { + if (log.isWarnEnabled()) { + log.warn(t("Can't instanciate export %1$s", exportName), eee); + } + } + } + } + List<SensitivityExport> sensitivityExports = param.getSensitivityExport(); + if (sensitivityExports != null) { + for (SensitivityExport sensitivityExport : sensitivityExports) { + for (String resultName : sensitivityExport.getNecessaryResult()) { + requestedResult.add(resultName); + } + } + } + List<Rule> rules = param.getRules(); + if (rules != null) { + for (Rule rule : rules) { + for (String resultName : rule.getNecessaryResult()) { + requestedResult.add(resultName); + } + } + } + List<SimulationPlan> plans = param.getSimulationPlans(); + if (plans != null) { + for (SimulationPlan plan : plans) { + for (String resultName : plan.getNecessaryResult()) { + requestedResult.add(resultName); + } + } + } + // on objective and optimization Objective objective = param.getObjective(); if (objective != null) { for (String resultName : objective.getNecessaryResult()) { - enabledResult.add(resultName); + requestedResult.add(resultName); } } - + Optimization optimization = param.getOptimization(); if (optimization != null) { for (String resultName : optimization.getNecessaryResult()) { - enabledResult.add(resultName); + requestedResult.add(resultName); } } - + // optimization export Map<ExportInfo, Observation> optimizationExportsObservations = param.getOptimizationExportsObservations(); if (optimizationExportsObservations != null) { for (ExportInfo export : optimizationExportsObservations.keySet()) { for (String resultName : export.getNecessaryResult()) { - enabledResult.add(resultName); + requestedResult.add(resultName); } } } - log.info("Enabled result: " + enabledResult); - } - boolean result = enabledResult.contains(name); - return result; - } - public void addActiveRule(TimeStep step, Rule rule) throws IsisFishException { - log.warn("addActiveRule not implemented"); - // FIXME: addActiveRule not implemented - } - - public void addResult(TimeStep step, MatrixND mat) throws IsisFishException{ - addResult(false, step, mat.getName(), mat); - } + // recursive result extraction + enabledResult = ResultInfoHelper.extractAllNecessaryResults(requestedResult); + + if (log.isInfoEnabled()) { + log.info("Enabled result: " + enabledResult); + } + } + + boolean result = enabledResult.contains(name); + return result; + } - public void addResult(TimeStep step, Population pop, MatrixND mat) throws IsisFishException{ - addResult(false, step, mat.getName(), pop, mat); - } + public void addActiveRule(TimeStep step, Rule rule) throws IsisFishException { + log.warn("addActiveRule not implemented"); + // FIXME: addActiveRule not implemented + } + + public void addResult(TimeStep step, MatrixND mat) throws IsisFishException{ + addResult(false, step, mat.getName(), mat); + } - public void addResult(boolean force, TimeStep step, MatrixND mat) throws IsisFishException{ - addResult(force, step, mat.getName(), mat); - } + public void addResult(TimeStep step, Population pop, MatrixND mat) throws IsisFishException{ + addResult(false, step, mat.getName(), pop, mat); + } - public void addResult(boolean force, TimeStep step, Population pop, MatrixND mat) throws IsisFishException{ - addResult(force, step, mat.getName(), pop, mat); - } + public void addResult(boolean force, TimeStep step, MatrixND mat) throws IsisFishException{ + addResult(force, step, mat.getName(), mat); + } - public void addResult(TimeStep step, String name, Population pop, MatrixND mat) throws IsisFishException{ - addResult(false, step, name, pop, mat); - } + public void addResult(boolean force, TimeStep step, Population pop, MatrixND mat) throws IsisFishException{ + addResult(force, step, mat.getName(), pop, mat); + } - public void addResult(TimeStep step, String name, MatrixND mat) throws IsisFishException{ - addResult(false, step, name, mat); - } + public void addResult(TimeStep step, String name, Population pop, MatrixND mat) throws IsisFishException{ + addResult(false, step, name, pop, mat); + } + + public void addResult(TimeStep step, String name, MatrixND mat) throws IsisFishException{ + addResult(false, step, name, mat); + } - public void addResult(boolean force, TimeStep step, String name, Population pop, MatrixND mat) throws IsisFishException{ - // don't call generic addResult, because pop name is added - if (force || isEnabled(name)) { - for (SimulationResultListener l : listeners) { - l.addResult(context, step, name + " " + pop, mat); - } - } - } + public void addResult(boolean force, TimeStep step, String name, Population pop, MatrixND mat) throws IsisFishException{ + // don't call generic addResult, because pop name is added + if (force || isEnabled(name)) { + for (SimulationResultListener l : listeners) { + l.addResult(context, step, name + " " + pop, mat); + } + } + } - public void addResult(boolean force, TimeStep step, String name, MatrixND mat) throws IsisFishException{ - if (force || isEnabled(name)) { - for (SimulationResultListener l : listeners) { - l.addResult(context, step, name, mat); - } - } - } + public void addResult(boolean force, TimeStep step, String name, MatrixND mat) throws IsisFishException{ + if (force || isEnabled(name)) { + for (SimulationResultListener l : listeners) { + l.addResult(context, step, name, mat); + } + } + } - /** - * Retourne la matrice stocke pour un pas de temps - * @param step le pas de temps que l'on souhaite - * @param pop la population pour lequelle on souhaite le resultat - * @param name le nom des resultats dont on veut la matrice - * @return La matrice demandée ou null si aucune matrice ne correspond a - * la demande. - */ - public MatrixND getMatrix(TimeStep step, Population pop, String name){ - name += " " + pop; - return getMatrix(step, name); - } + /** + * Retourne la matrice stocke pour un pas de temps + * @param step le pas de temps que l'on souhaite + * @param pop la population pour lequelle on souhaite le resultat + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(TimeStep step, Population pop, String name){ + name += " " + pop; + return getMatrix(step, name); + } - /** - * Retourne la matrice stocke pour un pas de temps - * @param step le pas de temps que l'on souhaite - * @param name le nom des resultats dont on veut la matrice - * @return La matrice demandée ou null si aucune matrice ne correspond a - * la demande. - */ - public MatrixND getMatrix(TimeStep step, String name){ - MatrixND result = null; - if (getter != null) { - result = getter.getMatrix(context, step, name); - } - return result; - } + /** + * Retourne la matrice stocke pour un pas de temps + * @param step le pas de temps que l'on souhaite + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(TimeStep step, String name){ + MatrixND result = null; + if (getter != null) { + result = getter.getMatrix(context, step, name); + } + return result; + } - /** - * Retourne la matrice stocke pour des pas de temps - * @param steps les pas de temps que l'on souhaite - * @param pop la population pour lequelle on souhaite le resultat - * @param name le nom des resultats dont on veut la matrice - * @return La matrice demandée ou null si aucune matrice ne correspond a - * la demande. - */ - public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name){ - name += " " + pop; - return getMatrix(steps, name); - } + /** + * Retourne la matrice stocke pour des pas de temps + * @param steps les pas de temps que l'on souhaite + * @param pop la population pour lequelle on souhaite le resultat + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name){ + name += " " + pop; + return getMatrix(steps, name); + } - /** - * Retourne la matrice stocke pour des pas de temps - * @param steps les pas de temps que l'on souhaite - * @param name le nom des resultats dont on veut la matrice - * @return La matrice demandée ou null si aucune matrice ne correspond a - * la demande. - */ - public MatrixND getMatrix(List<TimeStep> steps, String name){ - MatrixND result = null; - if (getter != null) { - result = getter.getMatrix(context, steps, name); - } - return result; - } + /** + * Retourne la matrice stocke pour des pas de temps + * @param steps les pas de temps que l'on souhaite + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(List<TimeStep> steps, String name){ + MatrixND result = null; + if (getter != null) { + result = getter.getMatrix(context, steps, name); + } + return result; + } - /** - * Retourne une matrice contenant tous les pas de temps. - * @param pop la population pour lequel on souhaite la matrice - * @param name le nom des resultats dont on veut une matrice globale. - */ - public MatrixND getMatrix(Population pop, String name){ - name += " " + pop; - return getMatrix(name); - } + /** + * Retourne une matrice contenant tous les pas de temps. + * @param pop la population pour lequel on souhaite la matrice + * @param name le nom des resultats dont on veut une matrice globale. + */ + public MatrixND getMatrix(Population pop, String name){ + name += " " + pop; + return getMatrix(name); + } - /** - * Retourne une matrice contenant tous les pas de temps. - * @param name le nom des resultats dont on veut une matrice globale. - */ - public MatrixND getMatrix(String name){ - MatrixND result = null; - if (getter != null) { - result = getter.getMatrix(context, name); - } - return result; - } - + /** + * Retourne une matrice contenant tous les pas de temps. + * @param name le nom des resultats dont on veut une matrice globale. + */ + public MatrixND getMatrix(String name){ + MatrixND result = null; + if (getter != null) { + result = getter.getMatrix(context, name); + } + return result; + } } Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -1357,12 +1357,26 @@ if (resultEnabled == null) { - resultEnabled = new LinkedList<String>(); + resultEnabled = new LinkedList<>(); if (propertiesParameters != null) { String[] resultList = SimulationParameterPropertiesHelper.getResultNames(propertiesParameters); - Collections.addAll(resultEnabled, resultList); + + // en version < 4.4, les noms de resultats commencait par une minuscule + // il doivent etre capitalized pour matcher la classe correspondante + if (VersionUtil.smallerThan(getIsisFishVersion(), "4.4.0.0")) { + for (String result : resultList) { + String migrated = StringUtils.capitalize(result); + // .java must be added to be like others properties + if (!migrated.endsWith(".java")) { + migrated += ".java"; + } + resultEnabled.add(migrated); + } + } else { + Collections.addAll(resultEnabled, resultList); + } } } return resultEnabled; Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -70,7 +70,6 @@ import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.SimulationPreScriptListener; import fr.ifremer.isisfish.simulator.Simulator; -import fr.ifremer.isisfish.types.Month; import fr.ifremer.isisfish.types.TimeStep; import fr.ifremer.isisfish.util.CompileHelper; Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -65,11 +65,13 @@ import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.datastore.OptimizationStorage; import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; @@ -77,9 +79,11 @@ import fr.ifremer.isisfish.datastore.SimulationPlanStorage; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.SimulatorStorage; +import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.ExportInfo; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.mexico.MexicoHelper; +import fr.ifremer.isisfish.result.ResultInfoHelper; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.Objective; import fr.ifremer.isisfish.simulator.Optimization; @@ -691,6 +695,7 @@ * <ul> * <li> scripts</li> * <li> rules</li> + * <li> resultinfos</li> * <li> exports</li> * <li> simulators</li> * <li> optimisations</li> @@ -709,8 +714,10 @@ * @param param les parametre de la simulation * @param xmlDesignPlan contenu xml des design plan * @param sensitivityScenarios used to add some extra files (such as rules) + * * @return un zip de simulation pour une simulation pret a être faite - * @throws SimulationException pour tout problème rencontré (IO,Topia...) + * + * @throws SimulationException pour tout problème rencontré (IO,Topia,Script compilation...) */ protected File prepareSimulationZipFile(SimulationControl control, SimulationParameter param, String xmlDesignPlan, SensitivityScenarios sensitivityScenarios) @@ -736,6 +743,9 @@ tc.closeContext(); control.setText(t("isisfish.message.backup.database.finished")); + // result are in various scripts + Set<String> necessaryResults = new HashSet<>(); + // extract Rules defined in factors List<Rule> rules = param.getRules(); if (sensitivityScenarios != null) { @@ -757,19 +767,33 @@ } FileUtils.copyFile(ruleFile, new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java")); + + // results + if (rule.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, rule.getNecessaryResult()); + } } // copie des regles reclamées par les plans de simulation for (String name : param.getExtraRules()) { + RuleStorage ruleStorage = RuleStorage.getRule(name); + Rule rule = ruleStorage.getNewInstance(); + + // copy File ruleFile = new File(RuleStorage.getRuleDirectory(), name + ".java"); if (!ruleFile.isFile()) { ruleFile = new File(RuleStorage.getCommunityRuleDirectory(), name + ".java"); } FileUtils.copyFile(ruleFile, new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java")); + + // results + if (rule.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, rule.getNecessaryResult()); + } } - // copie de toutes regles a utiliser + // copie de tous les plans a utiliser List<SimulationPlan> plans = param.getSimulationPlans(); for (SimulationPlan plan : plans) { String name = SimulationPlanStorage.getName(plan); @@ -779,10 +803,20 @@ } FileUtils.copyFile(planFile, new File(tmpDirectory, SimulationPlanStorage.SIMULATION_PLAN_PATH + File.separator + name + ".java")); + + // results + if (plan.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, plan.getNecessaryResult()); + } } // copie de tous les exports a utiliser for (String name : param.getExportNames()) { + // new instance + ExportStorage exportStorage = ExportStorage.getExport(name); + Export export = exportStorage.getNewInstance(); + + // copy name = name.endsWith(".java") ? name : name + ".java"; File exportFile = new File(ExportStorage.getExportDirectory(), name); if (!exportFile.isFile()) { @@ -791,6 +825,11 @@ FileUtils.copyFile(exportFile, new File(tmpDirectory, ExportStorage.EXPORT_PATH + File.separator + name)); + + // results + if (export.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, export.getNecessaryResult()); + } } // copie de tous les exports de sensitivity a utiliser @@ -804,6 +843,11 @@ FileUtils.copyFile(sensitivityFile, new File(tmpDirectory, SensitivityExportStorage.SENSITIVITY_EXPORT_PATH + File.separator + name)); + + // results + if (sensitivity.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, sensitivity.getNecessaryResult()); + } } // copie de la fonction d'objectif @@ -816,6 +860,11 @@ } FileUtils.copyFile(objectiveFile, new File(tmpDirectory, ObjectiveStorage.OBJECTIVE_PATH + File.separator + name + ".java")); + + // results + if (objective.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, objective.getNecessaryResult()); + } } // copie du script d'optipmisation @@ -828,6 +877,11 @@ } FileUtils.copyFile(optimizationFile, new File(tmpDirectory, OptimizationStorage.OPTIMIZATION_PATH + File.separator + name + ".java")); + + // results + if (optimization.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, optimization.getNecessaryResult()); + } } // copie des export d'optimisation @@ -843,6 +897,11 @@ FileUtils.copyFile(exportFile, new File(tmpDirectory, ExportStorage.EXPORT_PATH + File.separator + name)); + + // results + if (export.getNecessaryResult() != null) { + Collections.addAll(necessaryResults, export.getNecessaryResult()); + } } } @@ -855,7 +914,22 @@ SimulatorStorage.SIMULATOR_PATH + File.separator + param.getSimulatorName())); + // copie de tous les résultats + Set<String> allNecessaryResults = ResultInfoHelper.extractAllNecessaryResults(necessaryResults); + for (String result : allNecessaryResults) { + String filename = result.endsWith(".java") ? result : result + ".java"; + // copy + File resultFile = new File(ResultInfoStorage.getResultInfoDirectory(), filename); + if (!resultFile.isFile()) { + resultFile = new File(ResultInfoStorage.getCommunityResultInfoDirectory(), filename); + } + FileUtils.copyFile(resultFile, + new File(tmpDirectory, ResultInfoStorage.RESULT_INFO_PATH + + File.separator + filename)); + } + // compile and add dependencies + // used results will be added here compileAllFile(control, tmpDirectory); // sauvegarde du design plan en XML @@ -875,14 +949,10 @@ } return result; - } catch (IOException eee) { + } catch (IOException|IsisFishException|TopiaException eee) { throw new SimulationException( t("isisfish.error.prepare.information.simulation"), eee); - } catch (TopiaException eee) { - throw new SimulationException( - t("isisfish.error.prepare.information.simulation"), eee); } - } /** @@ -910,7 +980,7 @@ List<File> fileToCompile = new ArrayList<>(); // *.java List<File> fileToInpect = new ArrayList<>(); // *.class - Set<String> dependencies = new HashSet<String>(); // packages + Set<String> dependencies = new HashSet<>(); // packages String[] modules = { ExportStorage.EXPORT_PATH, Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -370,7 +370,9 @@ String directoryPath = directory.toString() + File.separator + SimulationStorage.RESULT_EXPORT_DIRECTORY; + File importFile = new File(directoryPath, name + extension); + System.out.println("result=" + importFile); String simulResult = ""; try { Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -96,24 +96,12 @@ if (sensitivityProperties == null) { sensitivityProperties = new Properties(); - InputStream stream = null; - try { - stream = SensitivityUtils.class.getResourceAsStream(PROPERTIES_PATH); + try (InputStream stream = SensitivityUtils.class.getResourceAsStream(PROPERTIES_PATH)) { sensitivityProperties.load(stream); } catch (IOException ex) { if (log.isErrorEnabled()) { log.error("Can't load sensitivity properties file", ex); } - } finally { - try { - if (stream != null) { - stream.close(); - } - } catch (IOException ex) { - if (log.isErrorEnabled()) { - log.error("Can't load sensitivity properties file", ex); - } - } } } return sensitivityProperties; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -32,7 +32,6 @@ import javax.imageio.ImageIO; import javax.swing.JFileChooser; -import javax.swing.SwingUtilities; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -22,14 +22,14 @@ */ package fr.ifremer.isisfish.ui; -import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.context.DefaultJAXXContext; -public class WelcomeContext extends JAXXInitialContext { +public class WelcomeContext extends DefaultJAXXContext { protected WelcomeSaveVerifier verifier = new WelcomeSaveVerifier(); public WelcomeContext() { - add(verifier); + setContextValue(verifier); } } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -46,7 +46,6 @@ import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.ui.config.RConfigHandler; import fr.ifremer.isisfish.ui.config.RConfigUI; import fr.ifremer.isisfish.ui.config.SSHLauncherConfigUI; import fr.ifremer.isisfish.ui.input.InputContext; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -24,21 +24,21 @@ import fr.ifremer.isisfish.ui.WelcomeSaveVerifier; import jaxx.runtime.JAXXContext; -import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.context.DefaultJAXXContext; /** * Ce contexte regroupe les élements qui servent à une hierachie d'interfaces Input. * * @author Eric Chatellier */ -public class InputContext extends JAXXInitialContext { +public class InputContext extends DefaultJAXXContext { public InputContext(JAXXContext parent) { setParentContext(parent); // add save verifier for this hierarchy InputSaveVerifier inputSaveVerifier = new InputSaveVerifier(); - add(inputSaveVerifier); + setContextValue(inputSaveVerifier); // this verifier is linked to global verifier WelcomeSaveVerifier welcomeSaveVerifier = getContextValue(WelcomeSaveVerifier.class); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableCellRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableCellRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableCellRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -32,7 +32,7 @@ import javax.swing.table.DefaultTableCellRenderer; import fr.ifremer.isisfish.datastore.JavaSourceStorage; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; import fr.ifremer.isisfish.util.Doc; /** @@ -69,7 +69,7 @@ c.setText(parameterName); Doc doc = JavaSourceStorage.getParameterDoc(script, parameterName); - String documentation = TooltipHelper.docToString(doc); + String documentation = RendererHelper.docToString(doc); c.setToolTipText(documentation); return c; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.ui.models.export; -import static org.nuiton.i18n.I18n.t; - import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -37,7 +35,7 @@ import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.export.ExportInfo; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour la combo des noms d'export. @@ -60,7 +58,7 @@ * Empty constructor. */ public ExportNameListRenderer() { - exportCache = new HashMap<String, ExportInfo>(); + exportCache = new HashMap<>(); } /* @@ -76,7 +74,7 @@ index, isSelected, cellHasFocus); String exportName = (String) value; - c.setText(exportName); + String text = null; // c'est tres couteux d'avoir une instance // on les met en cache @@ -88,12 +86,13 @@ exportCache.put(exportName, export); } - c.setToolTipText(export.getDescription()); + text = RendererHelper.getNameAndDocListString(exportName, export.getDescription()); } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", exportName)); - c.setToolTipText(errorTooltip); + text = RendererHelper.getNameAndCompListString(exportName); } + c.setText(text); + return c; } } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -61,7 +61,7 @@ public void setOptimizationExportsObservations(Map<ExportInfo, Observation> optimizationExportsObservations) { this.optimizationExportsObservations = optimizationExportsObservations; - keysCache = new ArrayList<ExportInfo>(optimizationExportsObservations.keySet()); + keysCache = new ArrayList<>(optimizationExportsObservations.keySet()); fireTableDataChanged(); } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.ui.models.optimization; -import static org.nuiton.i18n.I18n.t; - import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -37,7 +35,7 @@ import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.simulator.Objective; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour la combo des script d'optimisation. @@ -60,7 +58,7 @@ * Empty constructor. */ public ObjectiveComboRenderer() { - objectiveCache = new HashMap<String, Objective>(); + objectiveCache = new HashMap<>(); } /* @@ -76,23 +74,26 @@ index, isSelected, cellHasFocus); String objectiveName = (String) value; - c.setText(objectiveName); + String text = null; // c'est tres couteux d'avoir une instance // on les met en cache - try { - Objective objective = objectiveCache.get(objectiveName); - if (objective == null) { - ObjectiveStorage storage = ObjectiveStorage - .getObjective(objectiveName); - objective = storage.getNewInstance(); - objectiveCache.put(objectiveName, objective); + if (objectiveName != null) { + try { + Objective objective = objectiveCache.get(objectiveName); + if (objective == null) { + ObjectiveStorage storage = ObjectiveStorage + .getObjective(objectiveName); + objective = storage.getNewInstance(); + objectiveCache.put(objectiveName, objective); + } + + text = RendererHelper.getNameAndDocComboString(objectiveName, objective.getDescription()); + } catch (Exception e) { + text = RendererHelper.getNameAndCompComboString(objectiveName); } - - c.setToolTipText(objective.getDescription()); - } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", objectiveName)); - c.setToolTipText(errorTooltip); + + c.setText(text); } return c; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.ui.models.optimization; -import static org.nuiton.i18n.I18n.t; - import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -37,7 +35,7 @@ import fr.ifremer.isisfish.datastore.OptimizationStorage; import fr.ifremer.isisfish.simulator.Optimization; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour la combo des script d'optimisation. @@ -60,7 +58,7 @@ * Empty constructor. */ public OptimizationComboRenderer() { - optimizationCache = new HashMap<String, Optimization>(); + optimizationCache = new HashMap<>(); } /* @@ -76,23 +74,26 @@ index, isSelected, cellHasFocus); String optimizationName = (String) value; - c.setText(optimizationName); + String text = null; // c'est tres couteux d'avoir une instance // on les met en cache - try { - Optimization optim = optimizationCache.get(optimizationName); - if (optim == null) { - OptimizationStorage storage = OptimizationStorage - .getOptimization(optimizationName); - optim = storage.getNewInstance(); - optimizationCache.put(optimizationName, optim); + if (optimizationName != null) { + try { + Optimization optim = optimizationCache.get(optimizationName); + if (optim == null) { + OptimizationStorage storage = OptimizationStorage + .getOptimization(optimizationName); + optim = storage.getNewInstance(); + optimizationCache.put(optimizationName, optim); + } + + text = RendererHelper.getNameAndDocComboString(optimizationName, optim.getDescription()); + } catch (Exception e) { + text = RendererHelper.getNameAndCompComboString(optimizationName); } - - c.setToolTipText(optim.getDescription()); - } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", optimizationName)); - c.setToolTipText(errorTooltip); + + c.setText(text); } return c; Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultInfoNameListRenderer.java (from rev 4276, branches/isis-fish-4.4.0-resultname/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultInfoNameListRenderer.java) =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultInfoNameListRenderer.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultInfoNameListRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -0,0 +1,100 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.ui.models.result; + +import java.awt.Component; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.isisfish.datastore.ResultInfoStorage; +import fr.ifremer.isisfish.result.ResultInfo; +import fr.ifremer.isisfish.ui.util.RendererHelper; + +/** + * Renderer pour les listes des noms de resultats. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ResultInfoNameListRenderer extends DefaultListCellRenderer { + + /** Class logger. */ + private static final Log log = LogFactory.getLog(ResultInfoNameListRenderer.class); + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Rule cache. */ + protected Map<String, ResultInfo> resultNameCache; + + /** + * Empty constructor. + */ + public ResultInfoNameListRenderer() { + resultNameCache = new HashMap<>(); + } + + /* + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + @Override + public Component getListCellRendererComponent(JList<?> list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel)super.getListCellRendererComponent(list,value,index, isSelected, cellHasFocus); + + String resultNameName = (String)value; + String text = null; + try { + ResultInfo resultInfo = resultNameCache.get(resultNameName); + if (resultInfo == null) { + ResultInfoStorage storage = ResultInfoStorage.getResultInfo(resultNameName); + resultInfo = storage.getNewInstance(); + resultNameCache.put(resultNameName, resultInfo); + } + + text = RendererHelper.getNameAndDocListString(resultNameName, resultInfo.getDescription()); + } catch (Exception ex) { + text = RendererHelper.getNameAndCompListString(resultNameName); + } + + c.setText(text); + + return c; + } +} Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -1,105 +0,0 @@ -/* - * #%L - * IsisFish - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2010 Ifremer, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -package fr.ifremer.isisfish.ui.models.result; - -import static org.nuiton.i18n.I18n.t; - -import java.awt.Component; -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.DefaultListCellRenderer; -import javax.swing.JLabel; -import javax.swing.JList; - -import fr.ifremer.isisfish.datastore.ScriptStorage; -import fr.ifremer.isisfish.ui.util.TooltipHelper; -import fr.ifremer.isisfish.util.Doc; - -/** - * Renderer pour la combo des noms de regles. - * - * TODO don't work for now, worg with field name, not field values !!! - * - * @author chatellier - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public class ResultListRenderer extends DefaultListCellRenderer { - - /** serialVersionUID. */ - private static final long serialVersionUID = -4070846632975105788L; - - /** Cache map for doc corresponding to value. */ - protected Map<String, String> docForValue; - - public ResultListRenderer() { - docForValue = new HashMap<String, String>(); - } - - /* - * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) - */ - @Override - public Component getListCellRendererComponent(JList<?> list, Object value, - int index, boolean isSelected, boolean cellHasFocus) { - - // this must be used to have alterned highlight rows and default - // selection color - JLabel c = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - - String resultName = (String)value; - c.setText(resultName); - - String tooltip = docForValue.get(resultName); - if (tooltip == null) { - // c'est tres couteux d'avoir la doc en fonction - // de la valeur d'un des attributs - try { - ScriptStorage storage = ScriptStorage.getScript("ResultName.java"); - Class<?> resultNameClass = storage.getCodeClass(); - Field[] fields = resultNameClass.getFields(); - for (Field f : fields) { - String fieldValue = (String) f.get(null); - if (fieldValue != null && fieldValue.equals(resultName)) { - Doc doc = f.getAnnotation(Doc.class); - tooltip = TooltipHelper.docToString(doc); - } - } - } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", "ResultName.java")); - c.setToolTipText(errorTooltip); - } - } - - setToolTipText(tooltip); - - return c; - } -} Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListCellRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListCellRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListCellRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -33,6 +33,7 @@ import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Rendu des données d'une liste graphique de regles @@ -63,13 +64,15 @@ if (value != null) { Rule rule = (Rule) value; String ruleName = RuleStorage.getName(rule); - c.setText(ruleName); - + + String text; try { - c.setToolTipText(rule.getDescription()); + text = RendererHelper.getNameAndDocListString(ruleName, rule.getDescription()); } catch (Exception e) { - // can't get exception + text = RendererHelper.getNameAndDocListString(ruleName, ""); } + + c.setText(text); } return c; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,9 +25,6 @@ package fr.ifremer.isisfish.ui.models.rule; -import static org.nuiton.i18n.I18n.t; - -import java.awt.Color; import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -38,7 +35,7 @@ import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.rule.Rule; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour les listes des noms de regles. @@ -61,7 +58,7 @@ * Empty constructor. */ public RuleNamesListRenderer() { - ruleCache = new HashMap<String, Rule>(); + ruleCache = new HashMap<>(); } /* @@ -74,10 +71,11 @@ // this must be used to have alterned highlight rows and default // selection color JLabel c = (JLabel)super.getListCellRendererComponent(list,value,index, isSelected, cellHasFocus); - - String ruleName = (String)value; - c.setText(ruleName); + /*String ruleName = (String)value; + String TEMPLATE = "<html><b>%s</b><br /><font color='gray'>%s</font></html>"; + c.setText(String.format(TEMPLATE, ruleName, "test")); + // c'est tres couteux d'avoir une instance // on les met en cache try { @@ -91,10 +89,26 @@ c.setToolTipText(rule.getDescription()); c.setForeground(null); } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", ruleName)); + String errorTooltip = RendererHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", ruleName)); c.setToolTipText(errorTooltip); c.setForeground(Color.RED); + }*/ + + String ruleName = (String)value; + String text = null; + try { + Rule rule = ruleCache.get(ruleName); + if (rule == null) { + RuleStorage storage = RuleStorage.getRule(ruleName); + rule = storage.getNewInstance(); + ruleCache.put(ruleName, rule); + } + + text = RendererHelper.getNameAndDocListString(ruleName, rule.getDescription()); + } catch (Exception ex) { + text = RendererHelper.getNameAndCompListString(ruleName); } + c.setText(text); return c; } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -107,6 +107,7 @@ addRuleParameterFactor(ruleChooser, rule, paramName); } }); + button.setToolTipText(t("isisfish.sensitivity.ruleparameterfactortip")); comp = button; } } catch (IsisFishException ex) { Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,6 +25,8 @@ package fr.ifremer.isisfish.ui.models.rule; +import static org.nuiton.i18n.I18n.t; + import java.awt.Component; import javax.swing.JButton; @@ -81,7 +83,9 @@ Class paramType = RuleStorage.getParameterType(rule, paramName); boolean canBeFactor = SensitivityUtils.canBeFactor(paramType); if (canBeFactor) { - comp = new JButton(Resource.getIcon("/icons/sensitivity/flag--plus.png")); + JButton button = new JButton(Resource.getIcon("/icons/sensitivity/flag--plus.png")); + button.setToolTipText(t("isisfish.sensitivity.ruleparameterfactortip")); + comp = button; } } catch (IsisFishException ex) { if (log.isWarnEnabled()) { Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.ui.models.sensitivityanalysis; -import static org.nuiton.i18n.I18n.t; - import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -37,7 +35,7 @@ import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour la combo des calculateurs de sensibilités. @@ -60,7 +58,7 @@ * Empty constructor. */ public SensitivityAnalysisComboRenderer() { - sensitivityAnalysisCache = new HashMap<String, SensitivityAnalysis>(); + sensitivityAnalysisCache = new HashMap<>(); } /* @@ -76,23 +74,26 @@ index, isSelected, cellHasFocus); String sensitivityName = (String) value; - c.setText(sensitivityName); + String text = null; // c'est tres couteux d'avoir une instance // on les met en cache - try { - SensitivityAnalysis plan = sensitivityAnalysisCache.get(sensitivityName); - if (plan == null) { - SensitivityAnalysisStorage storage = SensitivityAnalysisStorage - .getSensitivityAnalysis(sensitivityName); - plan = storage.getNewInstance(); - sensitivityAnalysisCache.put(sensitivityName, plan); + if (sensitivityName != null) { + try { + SensitivityAnalysis plan = sensitivityAnalysisCache.get(sensitivityName); + if (plan == null) { + SensitivityAnalysisStorage storage = SensitivityAnalysisStorage + .getSensitivityAnalysis(sensitivityName); + plan = storage.getNewInstance(); + sensitivityAnalysisCache.put(sensitivityName, plan); + } + + text = RendererHelper.getNameAndDocComboString(sensitivityName, plan.getDescription()); + } catch (Exception e) { + text = RendererHelper.getNameAndCompComboString(sensitivityName); } - - c.setToolTipText(plan.getDescription()); - } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", sensitivityName)); - c.setToolTipText(errorTooltip); + + c.setText(text); } return c; Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportNameListRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportNameListRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportNameListRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.ui.models.sensitivityexport; -import static org.nuiton.i18n.I18n.t; - import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -37,7 +35,7 @@ import fr.ifremer.isisfish.datastore.SensitivityExportStorage; import fr.ifremer.isisfish.export.SensitivityExport; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour la combo des noms d'export. @@ -60,7 +58,7 @@ * Empty constructor. */ public SensitivityExportNameListRenderer() { - sensitivityExportCache = new HashMap<String, SensitivityExport>(); + sensitivityExportCache = new HashMap<>(); } /* @@ -76,7 +74,7 @@ index, isSelected, cellHasFocus); String exportName = (String) value; - c.setText(exportName); + String text = null; // c'est tres couteux d'avoir une instance // on les met en cache @@ -88,11 +86,12 @@ sensitivityExportCache.put(exportName, export); } - c.setToolTipText(export.getDescription()); + text = RendererHelper.getNameAndDocListString(exportName, export.getDescription()); } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", exportName)); - c.setToolTipText(errorTooltip); + text = RendererHelper.getNameAndCompListString(exportName); } + + c.setText(text); return c; } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboRenderer.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboRenderer.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboRenderer.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.ui.models.simulationplan; -import static org.nuiton.i18n.I18n.t; - import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -37,7 +35,7 @@ import fr.ifremer.isisfish.datastore.SimulationPlanStorage; import fr.ifremer.isisfish.simulator.SimulationPlan; -import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.ui.util.RendererHelper; /** * Renderer pour la combo des plans de simulation. @@ -60,7 +58,7 @@ * Empty constructor. */ public SimulationPlanComboRenderer() { - simulationPlanCache = new HashMap<String, SimulationPlan>(); + simulationPlanCache = new HashMap<>(); } /* @@ -76,7 +74,7 @@ index, isSelected, cellHasFocus); String simulationPlanName = (String) value; - c.setText(simulationPlanName); + String text = null; // c'est tres couteux d'avoir une instance // on les met en cache @@ -89,11 +87,12 @@ simulationPlanCache.put(simulationPlanName, plan); } - c.setToolTipText(plan.getDescription()); + text = RendererHelper.getNameAndDocComboString(simulationPlanName, plan.getDescription()); } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", simulationPlanName)); - c.setToolTipText(errorTooltip); + text = RendererHelper.getNameAndCompComboString(simulationPlanName); } + + c.setText(text); return c; } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -181,8 +181,7 @@ public void setAllChecked(boolean selection) { if (selection) { selectedFiles.addAll(availableFiles); - } - else { + } else { selectedFiles.clear(); } fireTableDataChanged(); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -77,6 +77,7 @@ import fr.ifremer.isisfish.datastore.JavaSourceStorage; import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.datastore.OptimizationStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; @@ -336,6 +337,9 @@ case CommunityObjective: script = ObjectiveStorage.createObjective(fileName, Location.COMMUNITY); break; + case CommunityResultInfo: + script = ResultInfoStorage.createResultInfo(fileName, Location.COMMUNITY); + break; case CommunityOptimization: script = OptimizationStorage.createOptimization(fileName, Location.COMMUNITY); break; @@ -472,6 +476,9 @@ case Rule: script = RuleStorage.getRule(file.getName(), Location.OFFICIAL); break; + case ResultInfo: + script = ResultInfoStorage.getResultInfo(file.getName(), Location.OFFICIAL); + break; case Objective: script = ObjectiveStorage.getObjective(file.getName(), Location.OFFICIAL); break; @@ -506,6 +513,9 @@ case CommunityRule: script = RuleStorage.getRule(file.getName(), Location.COMMUNITY); break; + case CommunityResultInfo: + script = ResultInfoStorage.getResultInfo(file.getName(), Location.COMMUNITY); + break; case CommunitySimulationPlan: script = SimulationPlanStorage.getSimulationPlan(file.getName(), Location.COMMUNITY); break; @@ -963,6 +973,9 @@ Rule( RuleStorage.getRuleDirectory(), RuleStorage.RULE_TEMPLATE, true), + ResultInfo( + ResultInfoStorage.getResultInfoDirectory(), + ResultInfoStorage.RESULT_NAME_TEMPLATE, true), Objective( ObjectiveStorage.getObjectiveDirectory(), ObjectiveStorage.OBJECTIVE_TEMPLATE, true), @@ -996,13 +1009,16 @@ ExportStorage.EXPORT_STEP_TEMPLATE), CommunityObjective( ObjectiveStorage.getCommunityObjectiveDirectory(), - ObjectiveStorage.OBJECTIVE_TEMPLATE, true), + ObjectiveStorage.OBJECTIVE_TEMPLATE), CommunityOptimization( OptimizationStorage.getCommunityOptimizationDirectory(), - OptimizationStorage.OPTIMIZATION_TEMPLATE, true), + OptimizationStorage.OPTIMIZATION_TEMPLATE), CommunityRule( RuleStorage.getCommunityRuleDirectory(), RuleStorage.RULE_TEMPLATE), + CommunityResultInfo( + ResultInfoStorage.getCommunityResultInfoDirectory(), + ResultInfoStorage.RESULT_NAME_TEMPLATE), CommunityScript( ScriptStorage.getCommunityScriptDirectory(), ScriptStorage.SCRIPT_TEMPLATE), Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2015-06-21 17:24:03 UTC (rev 4277) @@ -55,6 +55,8 @@ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityExportStep)' icon="script/script.png" /> <JMenuItem id="miNewRule" text="isisfish.script.menu.txtNewRule" onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityRule)' icon="script/script.png" /> + <JMenuItem id="miNewResultInfo" text="isisfish.script.menu.txtNewResultInfo" + onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityResultInfo)' icon="script/script.png" /> <JMenuItem id="miNewSImulationPlan" text="isisfish.script.menu.txtNewSimulationPlan" onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunitySimulationPlan)' icon="script/script.png" /> <JMenuItem id="miNewSensitivity" text="isisfish.script.menu.txtNewSensitivity" Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -41,15 +41,16 @@ import org.jdesktop.swingx.tree.TreeModelSupport; import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.datastore.FormuleStorage; import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.datastore.OptimizationStorage; -import fr.ifremer.isisfish.datastore.SimulationPlanStorage; -import fr.ifremer.isisfish.datastore.ExportStorage; -import fr.ifremer.isisfish.datastore.FormuleStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; +import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; import fr.ifremer.isisfish.datastore.SensitivityExportStorage; -import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; +import fr.ifremer.isisfish.datastore.SimulationPlanStorage; import fr.ifremer.isisfish.datastore.SimulatorStorage; import fr.ifremer.isisfish.vcs.VCS; @@ -78,7 +79,7 @@ protected TreeModelSupport modelSupport; /** VCS list. */ - protected List<VCS> vcsList = new ArrayList<VCS>(); + protected List<VCS> vcsList = new ArrayList<>(); /** Categories files for VCS. */ protected Map<VCS, List<File>> rootFiles; @@ -93,28 +94,30 @@ public ScriptTreeModel() { modelSupport = new TreeModelSupport(this); - rootFiles = new HashMap<VCS, List<File>>(); + rootFiles = new HashMap<>(); List<File> offFiles = new ArrayList<File>(); offFiles.add(ExportStorage.getExportDirectory()); offFiles.add(FormuleStorage.getFormuleDirectory()); offFiles.add(ObjectiveStorage.getObjectiveDirectory()); offFiles.add(OptimizationStorage.getOptimizationDirectory()); + offFiles.add(ResultInfoStorage.getResultInfoDirectory()); offFiles.add(RuleStorage.getRuleDirectory()); offFiles.add(ScriptStorage.getScriptDirectory()); + offFiles.add(SensitivityAnalysisStorage.getSensitivityAnalysisDirectory()); offFiles.add(SensitivityExportStorage.getSensitivityExportDirectory()); - offFiles.add(SensitivityAnalysisStorage.getSensitivityAnalysisDirectory()); offFiles.add(SimulationPlanStorage.getSimulationPlanDirectory()); offFiles.add(SimulatorStorage.getSimulatorDirectory()); - List<File> comFiles = new ArrayList<File>(); + List<File> comFiles = new ArrayList<>(); comFiles.add(ExportStorage.getCommunityExportDirectory()); comFiles.add(FormuleStorage.getCommunityFormuleDirectory()); comFiles.add(ObjectiveStorage.getCommunityObjectiveDirectory()); comFiles.add(OptimizationStorage.getCommunityOptimizationDirectory()); + comFiles.add(ResultInfoStorage.getCommunityResultInfoDirectory()); comFiles.add(RuleStorage.getCommunityRuleDirectory()); comFiles.add(ScriptStorage.getCommunityScriptDirectory()); + comFiles.add(SensitivityAnalysisStorage.getCommunitySensitivityAnalysisDirectory()); comFiles.add(SensitivityExportStorage.getCommunitySensitivityExportDirectory()); - comFiles.add(SensitivityAnalysisStorage.getCommunitySensitivityAnalysisDirectory()); comFiles.add(SimulationPlanStorage.getCommunitySimulationPlanDirectory()); comFiles.add(SimulatorStorage.getCommunitySimulatorDirectory()); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -40,7 +40,7 @@ // add save verifier for this hierarchy (input) SensitivitySaveVerifier sensitivitySaveVerifier = new SensitivitySaveVerifier(); - add(sensitivitySaveVerifier); + setContextValue(sensitivitySaveVerifier); // this verifier is linked to global verifier (input) WelcomeSaveVerifier welcomeSaveVerifier = getContextValue(WelcomeSaveVerifier.class); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2015-06-21 17:24:03 UTC (rev 4277) @@ -39,6 +39,8 @@ @Override public void refresh() { paramsUI.getHandler().refresh(); + resultChoiceUI.getHandler().refresh(); + exportUI.getHandler().refresh(); advancedParamsUI.getHandler().refresh(); } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,8 +25,6 @@ <JDialog title='isisfish.sensitivity.title' modal='{true}' layout='{new BorderLayout()}'> <import> - java.beans.PropertyChangeEvent - java.beans.PropertyChangeListener java.awt.CardLayout </import> @@ -45,6 +43,7 @@ handler.afterInit(); } ]]></script> + <Table constraints='BorderLayout.CENTER'> <row> <cell columns='4' fill='horizontal'> Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -24,7 +24,7 @@ import static org.nuiton.i18n.I18n.t; -import java.util.ArrayList; +import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -35,7 +35,6 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.datastore.ExportStorage; -import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.ui.WelcomePanelUI; import fr.ifremer.isisfish.ui.models.common.GenericListModel; @@ -61,23 +60,20 @@ } public void refresh() { - - // FIXME listen for export modification here - // fill export setListSimulExportChooseModel(); } protected void setListSimulExportChooseModel() { - java.util.List<String> availableExports = getExportNames(); - java.util.List<String> userExports = getParameters().getExportNames(); - // userExports = intersection(userExports,availableExports) - userExports.retainAll(availableExports); + Collection<String> paramExports = getParameters().getExportNames(); + + // get full list + List<String> availableExports = ExportStorage.getExportNames(); GenericListModel<String> exportModel = new GenericListModel<>(availableExports); tabUI.listSimulExportChoose.setModel(exportModel); - for (String userExport : userExports) { + for (String userExport : paramExports) { int index = availableExports.indexOf(userExport); tabUI.listSimulExportChoose.addSelectionInterval(index, index); } @@ -85,13 +81,9 @@ protected void saveSimulationExports(ListSelectionEvent event) { // Set exports (this can save empty list (not a big deal)) - List<String> values = tabUI.listSimulExportChoose.getSelectedValuesList(); - List<String> exportNames = new LinkedList<>(); - for (String o : values) { - exportNames.add(o); - } + List<String> exportNames = new LinkedList<>(tabUI.listSimulExportChoose.getSelectedValuesList()); getParameters().setExportNames(exportNames); - + if (log.isDebugEnabled()) { log.debug("Set exports in simulation : " + exportNames); } @@ -99,14 +91,9 @@ protected void saveConfigExports() { // Set exports (this can save empty list (not a big deal)) - List<String> values = tabUI.listSimulExportChoose.getSelectedValuesList(); - List<String> exportNames = new LinkedList<>(); - for (String o : values) { - exportNames.add(o); - } - getParameters().setExportNames(exportNames); - - saveExport(); + List<String> exportNames = new LinkedList<>(tabUI.listSimulExportChoose.getSelectedValuesList()); + IsisFish.config.setDefaultExportNames(exportNames); + setInfoText(t("isisfish.export.saved")); } @@ -115,30 +102,4 @@ WelcomePanelUI root = tabUI.getParentContainer(WelcomePanelUI.class); root.setStatusMessage(txt); } - - /* - * ExportUI - */ - - public List<String> getExportNames() { - List<String> exportNames = ExportStorage.getExportNames(); - List<String> result = new ArrayList<>(exportNames); - return result; - } - - /** - * Save current parameters exports names in configuration. - */ - public void saveExport() { - - SimulationParameter param = getParameters(); - if (param.getExportNames() != null) { - - if (log.isDebugEnabled()) { - log.debug("Set exports in configuration : " + param.getExportNames()); - } - - IsisFish.config.setDefaultExportNames(param.getExportNames()); - } - } } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2015-06-21 17:24:03 UTC (rev 4277) @@ -22,7 +22,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<Table> +<JPanel layout='{new BorderLayout()}'> <ExportHandler id="handler" constructorParams="this" /> <script><![CDATA[ @@ -31,20 +31,14 @@ } ]]></script> - <row> - <cell fill="both" weightx="1.0" weighty="1.0"> - <JScrollPane> - <JList id="listSimulExportChoose" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" - genericType="String" - cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}' - onValueChanged='handler.saveSimulationExports(event)' /> - </JScrollPane> - </cell> - </row> - <row> - <cell fill="horizontal"> - <JButton text="isisfish.common.saveNextSimulation" onActionPerformed='handler.saveConfigExports()'/> - </cell> - </row> -</Table> + <JScrollPane constraints='BorderLayout.CENTER'> + <JList id="listSimulExportChoose" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + genericType="String" + cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}' + selectionModel="{new jaxx.runtime.swing.OneClicListSelectionModel(listSimulExportChoose.getSelectionModel(), listSimulExportChoose.getModel())}" + onValueChanged='handler.saveSimulationExports(event)' /> + </JScrollPane> + + <JButton constraints='BorderLayout.SOUTH' text="isisfish.common.saveNextSimulation" onActionPerformed='handler.saveConfigExports()'/> +</JPanel> Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -62,7 +62,6 @@ import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.datastore.SimulatorStorage; import fr.ifremer.isisfish.datastore.StorageChangeEvent; import fr.ifremer.isisfish.datastore.StorageChangeListener; import fr.ifremer.isisfish.datastore.StorageException; @@ -201,7 +200,7 @@ log.debug("call loadOldSimulation: " + simulName); } try { - SimulatorContext context = tabUI.getContextValue(SimulatorContext.class); + SimulatorContext context = tabUI.getContextValue(SimulatorContext.class, "SimulatorContext"); // read storage to get name SimulationStorage simulStorage = SimulationStorage.getSimulation(simulName); @@ -488,6 +487,8 @@ for (Population selectedPopulation : selectedPopulationsValues) { final MatrixPanelEditor matrixPanel = new MatrixPanelEditor(); + final String populationName = selectedPopulation.getName(); + MatrixND populationEffectives = getParameters().getNumberOf(selectedPopulation); matrixPanel.setMatrix(populationEffectives); @@ -508,6 +509,8 @@ Object result = null; if (key.equals(Action.SMALL_ICON)) { result = SwingUtil.createImageIcon("sensitivity/flag--plus.png"); + } else if (key.equals(Action.SHORT_DESCRIPTION)) { + result = t("isisfish.params.populationEffectives.factorTooltip", populationName); } return result; } @@ -516,7 +519,7 @@ } tabUI.getPopulationEffectivesTabbedPane().add(matrixPanelComponent, - t("isisfish.params.populationEffectives", selectedPopulation.getName())); + t("isisfish.params.populationEffectives", populationName)); } layout.show(tabUI.getPopulationEffectivesPanel(), "specific"); Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2015-06-21 17:24:03 UTC (rev 4277) @@ -211,6 +211,7 @@ <cell anchor="north"> <JButton id="addRuleFactorButton" icon='{SwingUtil.createImageIcon("sensitivity/flag--plus.png")}' + toolTipText="isisfish.params.rules.ruleSetFactor" onActionPerformed="handler.addFactorWithComponent(ruleChooser)" visible="{isSensitivity()}" enabled="{getRegionStorage() != null}" /> Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -24,8 +24,8 @@ import static org.nuiton.i18n.I18n.t; -import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.swing.event.ListSelectionEvent; @@ -34,10 +34,9 @@ import org.apache.commons.logging.LogFactory; import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.datastore.ScriptStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.ui.WelcomePanelUI; import fr.ifremer.isisfish.ui.models.common.GenericListModel; -import fr.ifremer.isisfish.ui.util.ErrorHelper; /** * Result choice UI handler. @@ -60,79 +59,41 @@ } public void refresh() { - - // FIXME listen for result name modification - - setListSimulResultChooseModel(); + setResultNameModel(); } /** - * Looking for ResultName.java script and read all fields and fill - * list of field value and doc - * @return the list of result names found in ResultName script + * Reset model with selection on current parameters to work with simulation reload(); */ - protected List<String> getResultNames() { - List<String> result = new ArrayList<String>(); - try { - ScriptStorage storage = ScriptStorage.getScript("ResultName.java"); - Class<?> resultNameClass = storage.getCodeClass(); - // TODO: if we can't find class, perhaps try to parser Java source ? - Field[] fields = resultNameClass.getFields(); - for (Field f : fields) { - String fieldName = (String) f.get(null); - result.add(fieldName); - } - } catch (Exception eee) { - if (log.isWarnEnabled()) { - log.warn("Can't find result name script", eee); - } - ErrorHelper.showErrorDialog(t("isisfish.error.simulation.getresultname"), eee); - } - return result; - } + protected void setResultNameModel() { + Collection<String> userResults = getParameters().getResultEnabled(); - public List<String> getDefaultResultNames() { - return IsisFish.config.getDefaultResultNamesAsList(); - } - - protected void setListSimulResultChooseModel() { - - List<String> availableResults = getResultNames(); - List<String> userResults = getDefaultResultNames(); - // userResults = intersection(userResults,availableResult) - userResults.retainAll(availableResults); - - GenericListModel<String> resultModel = new GenericListModel<>(availableResults); + // get full list + List<String> allResults = ResultInfoStorage.getResultInfoNames(); + GenericListModel<String> resultModel = new GenericListModel<>(allResults); tabUI.listResultNames.setModel(resultModel); - + + // restore previous selection for (String userResult : userResults) { - int index = availableResults.indexOf(userResult); + int index = allResults.indexOf(userResult); tabUI.listResultNames.addSelectionInterval(index, index); } } protected void saveParametersResultNames(ListSelectionEvent event) { - saveParametersResultNames(tabUI.listResultNames.getSelectedValuesList()); - } - - protected void saveConfigResultNames() { - saveConfigurationResultNames(tabUI.listResultNames.getSelectedValuesList()); - setStatusMessage(t("isisfish.resultChoice.saved")); - } - - public void saveParametersResultNames(List<String> resultNames) { - List<String> resultNamesString = new ArrayList<>(resultNames); + List<String> resultNamesString = new ArrayList<>(tabUI.listResultNames.getSelectedValuesList()); getParameters().setResultEnabled(resultNamesString); if (log.isDebugEnabled()) { log.debug("Set simulation result names : " + resultNamesString); } } - - public void saveConfigurationResultNames(List<String> resultNames) { - List<String> resultNamesString = new ArrayList<>(resultNames); + + protected void saveConfigResultNames() { + List<String> resultNamesString = new ArrayList<>(tabUI.listResultNames.getSelectedValuesList()); IsisFish.config.setDefaultResultNames(resultNamesString); - + setStatusMessage(t("isisfish.resultChoice.saved")); + if (log.isDebugEnabled()) { log.debug("Set configuration result names : " + resultNamesString); } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2015-06-21 17:24:03 UTC (rev 4277) @@ -36,7 +36,8 @@ <JScrollPane constraints='BorderLayout.CENTER'> <JList id="listResultNames" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" genericType="String" - cellRenderer='{new fr.ifremer.isisfish.ui.models.result.ResultListRenderer()}' + cellRenderer='{new fr.ifremer.isisfish.ui.models.result.ResultInfoNameListRenderer()}' + selectionModel="{new jaxx.runtime.swing.OneClicListSelectionModel(listResultNames.getSelectionModel(), listResultNames.getModel())}" onValueChanged='handler.saveParametersResultNames(event)' /> </JScrollPane> <JButton constraints='BorderLayout.SOUTH' text="isisfish.common.saveNextSimulation" onActionPerformed='handler.saveConfigResultNames()'/> Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -22,10 +22,6 @@ */ package fr.ifremer.isisfish.ui.simulator; -import static org.nuiton.i18n.I18n.t; - -import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -35,13 +31,12 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.datastore.RegionStorage; -import fr.ifremer.isisfish.datastore.ScriptStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.SimulationParameterImpl; import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup; -import fr.ifremer.isisfish.ui.util.ErrorHelper; import jaxx.runtime.JAXXContext; -import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.context.DefaultJAXXContext; /** * Ce contexte regroupe les élements qui servent à une hierachie d'interfaces Simulator. @@ -56,7 +51,7 @@ * * @author Eric Chatellier */ -public class SimulatorContext extends JAXXInitialContext { +public class SimulatorContext extends DefaultJAXXContext { private static final Log log = LogFactory.getLog(SimulatorContext.class); @@ -65,23 +60,24 @@ initDefaultParameters(); initFactorGroup(); - // concurrentmodification : setSimulatorContext(this); + setSimulatorContext(this); } public void setSimulationParameter(SimulationParameter param) { - add(param); + setContextValue(param); } public void setFactorGroup(FactorGroup factorGroup) { - add(factorGroup); + setContextValue(factorGroup); } public void setRegionStorage(RegionStorage regionStorage) { - add(regionStorage); + setContextValue(regionStorage); } public void setSimulatorContext(SimulatorContext simulatorContext) { - add(simulatorContext); + // add this one named to prevent infinite loop + setContextValue(simulatorContext, "SimulatorContext"); } /** @@ -102,7 +98,7 @@ if (defaultResultNames != null) { param.setResultEnabled(defaultResultNames); } else { - List<String> allResultNames = getResultNames(); + List<String> allResultNames = ResultInfoStorage.getResultInfoNames(); param.setResultEnabled(allResultNames); } @@ -117,40 +113,12 @@ } /** - * Looking for ResultName.java script and read all fields and fill - * list of field value and doc - * @return the list of result names found in ResultName script - * - * @deprecated duplicated with another one - */ - @Deprecated - protected List<String> getResultNames() { - List<String> result = new ArrayList<String>(); - try { - ScriptStorage storage = ScriptStorage.getScript("ResultName.java"); - Class<?> resultNameClass = storage.getCodeClass(); - // TODO: if we can't find class, perhaps try to parser Java source ? - Field[] fields = resultNameClass.getFields(); - for (Field f : fields) { - String fieldName = (String) f.get(null); - result.add(fieldName); - } - } catch (Exception eee) { - if (log.isWarnEnabled()) { - log.warn("Can't find result name script", eee); - } - ErrorHelper.showErrorDialog(t("isisfish.error.simulation.getresultname"), eee); - } - return result; - } - - /** * List de facteur sous forme d'arbre (factor group). * {@code null} name for compatibility with 3.3.0.0. */ protected void initFactorGroup() { FactorGroup factorGroup = new FactorGroup(null); - add(factorGroup); + setContextValue(factorGroup); } } Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/util/RendererHelper.java (from rev 4276, branches/isis-fish-4.4.0-resultname/src/main/java/fr/ifremer/isisfish/ui/util/RendererHelper.java) =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/util/RendererHelper.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/util/RendererHelper.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -0,0 +1,109 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2010 Ifremer, CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.ui.util; + +import static org.nuiton.i18n.I18n.t; + +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; + +import fr.ifremer.isisfish.util.Doc; + +/** + * Common format utils methods mostly used in renderers. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class RendererHelper { + + protected static final String DOCUMENTATION_SUBTITLE = "<html><b>%s</b>%s<font color='gray'>%s</font></html>"; + protected static final String COMPILATION_SUBTITLE = "<html><b color='red'>%s</b>%s<font color='red'>%s</font></html>"; + + /** + * Return HTML formatted tooltip. + * + * Use optional documentation (if any) or use @Doc's class doc. + * + * @param doc the doc to use + * @param optionalDocumentations optional documentation + * @return a string nicely print version + */ + public static String docToString(Doc doc, String... optionalDocumentations) { + + String tooltip = null; + + if (doc != null) { + StringBuilder sb = new StringBuilder(); + sb.append("<html>"); + if (!ArrayUtils.isEmpty(optionalDocumentations)) { + for (String optionalDocumentation : optionalDocumentations) { + sb.append("<p>" + optionalDocumentation + "</p>"); + } + } else { + sb.append("<p>" + doc.value() + "</p>"); + } + if (!StringUtils.isEmpty(doc.author())) { + sb.append("<p><b>author: </b>" + doc.author() + "</p>"); + } + if (!StringUtils.isEmpty(doc.date())) { + sb.append("<p><b>date: </b>" + doc.date() + "</p>"); + } + if (!StringUtils.isEmpty(doc.version())) { + sb.append("<p><b>version: </b>" + doc.version() + "</p>"); + } + sb.append("</html>"); + tooltip = sb.toString(); + + // replace all \n by <br/> + tooltip = tooltip.replace("\n", "<br/>"); + } + return tooltip; + } + + public static String getNameAndDocListString(String name, String documentation) { + String result = String.format(DOCUMENTATION_SUBTITLE, name, "<br />", documentation); + return result; + } + + public static String getNameAndCompListString(String name) { + String result = String.format(COMPILATION_SUBTITLE, name, "<br />", t("isisfish.error.compile.documentationerror")); + return result; + } + + public static String getNameAndDocComboString(String name, String documentation) { + String result = String.format(DOCUMENTATION_SUBTITLE, name, " - ", documentation); + return result; + } + + public static String getNameAndCompComboString(String name) { + String result = String.format(COMPILATION_SUBTITLE, name, " - ", t("isisfish.error.compile.documentationerror")); + return result; + } +} Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -1,100 +0,0 @@ -/* - * #%L - * IsisFish - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2010 Ifremer, CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -package fr.ifremer.isisfish.ui.util; - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.StringUtils; - -import fr.ifremer.isisfish.util.Doc; - -/** - * Tooltip common utils methods. - * - * @author chatellier - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public class TooltipHelper { - - /** - * Return HTML formatted tooltip. - * - * Use optional documentation (if any) or use @Doc's class doc. - * - * @param doc the doc to use - * @param optionalDocumentations optional documentation - * @return a string nicely print version - */ - public static String docToString(Doc doc, String... optionalDocumentations) { - - String tooltip = null; - - if (doc != null) { - StringBuilder sb = new StringBuilder(); - sb.append("<html>"); - if (!ArrayUtils.isEmpty(optionalDocumentations)) { - for (String optionalDocumentation : optionalDocumentations) { - sb.append("<p>" + optionalDocumentation + "</p>"); - } - } else { - sb.append("<p>" + doc.value() + "</p>"); - } - if (!StringUtils.isEmpty(doc.author())) { - sb.append("<p><b>author: </b>" + doc.author() + "</p>"); - } - if (!StringUtils.isEmpty(doc.date())) { - sb.append("<p><b>date: </b>" + doc.date() + "</p>"); - } - if (!StringUtils.isEmpty(doc.version())) { - sb.append("<p><b>version: </b>" + doc.version() + "</p>"); - } - sb.append("</html>"); - tooltip = sb.toString(); - - // replace all \n by <br/> - tooltip = tooltip.replace("\n", "<br/>"); - } - return tooltip; - } - - /** - * Format error as tootip error messsage. - * - * @param errorMessage error message - * @return html formated string - */ - public static String getErrorTooltip(String errorMessage) { - StringBuilder sb = new StringBuilder(); - sb.append("<html>"); - sb.append("<font color='red'><b>"); - sb.append(errorMessage); - sb.append("</b></font>"); - sb.append("</html>"); - return sb.toString(); - } -} Modified: trunk/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -54,6 +54,7 @@ import fr.ifremer.isisfish.datastore.FormuleStorage; import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.datastore.OptimizationStorage; +import fr.ifremer.isisfish.datastore.ResultInfoStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; @@ -249,12 +250,13 @@ ObjectiveStorage.OBJECTIVE_PATH, OptimizationStorage.OPTIMIZATION_PATH, RuleStorage.RULE_PATH, + ResultInfoStorage.RESULT_INFO_PATH, ScriptStorage.SCRIPT_PATH, SensitivityAnalysisStorage.SENSITIVITY_ANALYSIS_PATH, SensitivityExportStorage.SENSITIVITY_EXPORT_PATH, SimulationPlanStorage.SIMULATION_PLAN_PATH, SimulatorStorage.SIMULATOR_PATH)) { - + // exclude inner types if (!type.contains("$")) { String dotType = type.replace('/', '.'); Modified: trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -26,8 +26,10 @@ import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import org.apache.commons.io.FileUtils; +import org.nuiton.util.FileUtil; /** * Cette class réintroduit les méthodes qui ont été supprimées dans nuiton-utils @@ -47,7 +49,7 @@ * @since 4.3.0 */ public static String readAsString(File file) throws IOException { - return FileUtils.readFileToString(file, "utf-8"); + return FileUtils.readFileToString(file, StandardCharsets.UTF_8); } /** @@ -58,6 +60,19 @@ * @since 4.3.0 */ public static void writeString(File file, String content) throws IOException { - FileUtils.writeStringToFile(file, content, "utf-8"); + FileUtils.writeStringToFile(file, content, StandardCharsets.UTF_8); } + + /** + * Retourne le nom du fichier entre dans la boite de dialogue. + * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne null. + * + * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données + * par deux, le pattern du filtre + la description du filtre + * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé + * @since 4.4.0 + */ + public static File getFile(String... patternOrDescriptionFilters) { + return FileUtil.getFile(patternOrDescriptionFilters); + } } Modified: trunk/src/main/resources/i18n/isis-fish_en_GB.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2015-06-21 17:24:03 UTC (rev 4277) @@ -283,6 +283,7 @@ isisfish.error.add.tray=Can't add system tray icon isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s isisfish.error.change.equation=Can't change equation +isisfish.error.compile.documentationerror=This script contains compile errors \! isisfish.error.compile.fileerror=File %s can't be compiled \! isisfish.error.compile.script=Can't compile script\: %1$s isisfish.error.compiled.parameter=Can't get rule parameter from compiled class @@ -617,8 +618,10 @@ isisfish.params.nopopulation=No selected population isisfish.params.numberMonth=Number of months isisfish.params.populationEffectives=%s's effectives +isisfish.params.populationEffectives.factorTooltip=Define %s's effectives as factor (replace default effectives) isisfish.params.rules=Rules isisfish.params.rules.availables=Available rules +isisfish.params.rules.ruleSetFactor=Define rule set factor (replace default rule set) isisfish.params.rules.selected=Selected rules isisfish.params.rules.tooltip=Rules are executed ordered \! You can change order using drag and drop. isisfish.params.sensitivityName=Sensitivity name @@ -814,6 +817,7 @@ isisfish.script.menu.txtNewExportStep=New export per Step isisfish.script.menu.txtNewObjective=New objective function isisfish.script.menu.txtNewOptimization=New optimization script +isisfish.script.menu.txtNewResultInfo=New result isisfish.script.menu.txtNewRule=New rule isisfish.script.menu.txtNewScript=New script isisfish.script.menu.txtNewSensitivity=New sensitivity calculator @@ -862,6 +866,7 @@ isisfish.sensitivity.newfactorname=Factor group name isisfish.sensitivity.populationfactorname=Population %s isisfish.sensitivity.ruleparameterfactorname=Param rule %s.%s +isisfish.sensitivity.ruleparameterfactortip=Define this parameter as factor (replace default value) isisfish.sensitivity.rulesfactorname=Rule set isisfish.sensitivity.secondpass=Analyze results isisfish.sensitivity.secondpass.title=Analyze results Modified: trunk/src/main/resources/i18n/isis-fish_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2015-06-21 17:24:03 UTC (rev 4277) @@ -283,6 +283,7 @@ isisfish.error.add.tray=Impossible d'ajouter une icone de notification isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s isisfish.error.change.equation=Can't change equation +isisfish.error.compile.documentationerror=Ce script contient des erreurs de compilation \! isisfish.error.compile.fileerror=Le fichier %s contient des erreurs \! isisfish.error.compile.script=Impossible de compiler le script \: %s isisfish.error.compiled.parameter=Can't get rule parameter from compiled class @@ -617,8 +618,10 @@ isisfish.params.nopopulation=Aucune population sélectionnée isisfish.params.numberMonth=Nombre de mois isisfish.params.populationEffectives=Effectifs %s +isisfish.params.populationEffectives.factorTooltip=Définir les effectifs de %s en tant que facteur (Remplace les effectifs par défaut) isisfish.params.rules=Règles isisfish.params.rules.availables=Règles disponibles +isisfish.params.rules.ruleSetFactor=Définir un facteur d'ensembles de règles (remplace le jeu de règle par defaut) isisfish.params.rules.selected=Règles sélectionnées isisfish.params.rules.tooltip=Les règles sont executées dans l'ordre défini \! Vous pouvez modifier l'ordre à l'aide du glisser-déposer. isisfish.params.sensitivityName=Nom de l'analyse de sensibilité @@ -814,6 +817,7 @@ isisfish.script.menu.txtNewExportStep=Nouveau script d'export par pas de temps isisfish.script.menu.txtNewObjective=Nouvelle fonction d'objectif isisfish.script.menu.txtNewOptimization=Nouveau script d'optimisation +isisfish.script.menu.txtNewResultInfo=Nouveau résultat isisfish.script.menu.txtNewRule=Nouvelle règle isisfish.script.menu.txtNewScript=Nouveau script isisfish.script.menu.txtNewSensitivity=Nouveau calculateur de sensibilité @@ -862,6 +866,7 @@ isisfish.sensitivity.newfactorname=Nom du groupe de facteurs isisfish.sensitivity.populationfactorname=Population %s isisfish.sensitivity.ruleparameterfactorname=Param regle %s.%s +isisfish.sensitivity.ruleparameterfactortip=Définir ce paramètre en tant que facteur (remplace la valeur par défaut) isisfish.sensitivity.rulesfactorname=Ensemble de règles isisfish.sensitivity.secondpass=Analyse des résultats isisfish.sensitivity.secondpass.title=Analyse des résultats Modified: trunk/src/main/resources/templates/script/export.ftl =================================================================== --- trunk/src/main/resources/templates/script/export.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/export.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -49,7 +49,7 @@ import org.nuiton.math.matrix.*; -import scripts.ResultName; +import resultinfos.*; import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.entities.*; @@ -76,8 +76,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; public String[] getNecessaryResult() { Modified: trunk/src/main/resources/templates/script/exportStep.ftl =================================================================== --- trunk/src/main/resources/templates/script/exportStep.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/exportStep.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -44,18 +44,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import java.io.Writer; import org.nuiton.math.matrix.*; +import resultinfos.*; -import scripts.ResultName; - import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.export.ExportStep; import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.datastore.ResultStorage; +import fr.ifremer.isisfish.simulator.ResultManager; import fr.ifremer.isisfish.types.TimeStep; /** @@ -77,8 +75,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_EFFORT_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; /** @@ -143,7 +141,7 @@ // example: // MatrixND mat = simulation.getResultStorage().getMatrix(step, - // ResultName.MATRIX_EFFORT_PER_STRATEGY_MET); + // MatrixBiomass.class.getSimpleName()); // if (mat != null) { // can be null if no result for this step // for (MatrixIterator i = mat.iterator(); i.hasNext();) { // i.next(); Modified: trunk/src/main/resources/templates/script/objective.ftl =================================================================== --- trunk/src/main/resources/templates/script/objective.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/objective.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -44,10 +44,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import java.util.List; import org.nuiton.math.matrix.*; +import resultinfos.*; import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.simulator.SimulationContext; @@ -76,8 +76,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; @Override Modified: trunk/src/main/resources/templates/script/optimization.ftl =================================================================== --- trunk/src/main/resources/templates/script/optimization.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/optimization.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -48,6 +48,7 @@ import java.util.List; import org.nuiton.math.matrix.*; +import resultinfos.*; import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.simulator.SimulationContext; @@ -76,8 +77,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; @Override Modified: trunk/src/main/resources/templates/script/rule.ftl =================================================================== --- trunk/src/main/resources/templates/script/rule.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/rule.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -44,12 +44,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - -import scripts.ResultName; - import java.io.Writer; import org.nuiton.math.matrix.*; +import resultinfos.*; import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.simulator.SimulationContext; @@ -77,8 +75,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; public String[] getNecessaryResult() { Modified: trunk/src/main/resources/templates/script/sensitivityexport.ftl =================================================================== --- trunk/src/main/resources/templates/script/sensitivityexport.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/sensitivityexport.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -44,13 +44,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import java.io.Writer; import org.nuiton.math.matrix.*; +import resultinfos.*; -import scripts.ResultName; - import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.export.SensitivityExport; @@ -76,8 +74,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; public String[] getNecessaryResult() { Modified: trunk/src/main/resources/templates/script/simulationplan.ftl =================================================================== --- trunk/src/main/resources/templates/script/simulationplan.ftl 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/main/resources/templates/script/simulationplan.ftl 2015-06-21 17:24:03 UTC (rev 4277) @@ -45,12 +45,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import scripts.ResultName; - import java.io.Writer; import org.nuiton.math.matrix.*; import org.nuiton.util.*; import org.nuiton.topia.*; +import resultinfos.*; import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.*; @@ -61,7 +60,7 @@ import fr.ifremer.isisfish.simulator.SimulationPlanContext; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.datastore.ResultStorage; +import fr.ifremer.isisfish.simulator.ResultManager; /** * ${name}.java @@ -81,8 +80,8 @@ protected String[] necessaryResult = { // put here all necessary result for this rule // example: - // ResultName.MATRIX_BIOMASS, - // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, + // MatrixBiomass.class.getSimpleName(), + // MatrixNetValueOfLandingsPerStrategyMet.class.getSimpleName(), }; @Override Modified: trunk/src/test/java/fr/ifremer/isisfish/datastore/DataStorageTestHelper.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/datastore/DataStorageTestHelper.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/java/fr/ifremer/isisfish/datastore/DataStorageTestHelper.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2009 - 2010 Ifremer, CodeLutin + * Copyright (C) 2009 - 2015 Ifremer, CodeLutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.datastore; -import org.junit.Ignore; - /** * Helper to acces protected static cache objects. * @@ -36,7 +34,6 @@ * Last update : $Date$ * By : $Author$ */ -@Ignore public class DataStorageTestHelper { /** @@ -49,6 +46,7 @@ OptimizationStorage.objectiveCache.clear(); RegionStorage.regions.clear(); RuleStorage.rulesCache.clear(); + ResultInfoStorage.resultInfosCache.clear(); ScriptStorage.scriptsCache.clear(); SensitivityAnalysisStorage.sensitivityCache.clear(); SimulationPlanStorage.plansCache.clear(); Modified: trunk/src/test/java/fr/ifremer/isisfish/datastore/RuleStorageTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/datastore/RuleStorageTest.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/java/fr/ifremer/isisfish/datastore/RuleStorageTest.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -87,10 +87,6 @@ out.flush(); String content = out.toString(); - // remove it to compile, it's in isis fish data project - Assert.assertTrue(content.indexOf("import scripts.ResultName;") > 0); - content = content.replaceFirst("import scripts.ResultName;", ""); - ruleStorage.setContent(content); // 0 = compile success Modified: trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -119,10 +119,6 @@ out.flush(); String content = out.toString(); - // remove it to compile, it's in isis fish data project - Assert.assertTrue(content.indexOf("import scripts.ResultName;") > 0); - content = content.replaceFirst("import scripts.ResultName;", ""); - scriptStorage.setContent(content); // 0 = compile success Modified: trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulationPlanStorageTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulationPlanStorageTest.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulationPlanStorageTest.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -88,10 +88,6 @@ out.flush(); String content = out.toString(); - // remove it to compile, it's in isis fish data project - Assert.assertTrue(content.indexOf("import scripts.ResultName;") > 0); - content = content.replaceFirst("import scripts.ResultName;", ""); - simulationPlanStorage.setContent(content); // 0 = compile success Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -27,12 +27,12 @@ import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Properties; import java.util.SortedMap; import java.util.TreeMap; -import fr.ifremer.isisfish.types.Month; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -74,6 +74,7 @@ import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain; +import fr.ifremer.isisfish.types.Month; /** * Test for {@link SimulationService}. @@ -119,6 +120,8 @@ params.setStrategies(strats); // number of year params.setNumberOfYear(1); + // add first result only (cicular deps only) + params.setResultEnabled(Collections.singletonList("MatrixTestDep1")); // run simulation SimulationService service = SimulationService.getService(); Modified: trunk/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -172,4 +172,20 @@ Set<String> deps = extractDependencies(script); Assert.assertFalse(deps.contains("rules.GraviteVPUE1$1")); } + + /** + * Test que les classes de résultats sont bien extraites en incluant les dépendances + * récursives entre les résultats. + * + * @throws IsisFishException + * @throws IOException + */ + @Test + public void testExtractDependencies8() throws IsisFishException, IOException { + RuleStorage script = RuleStorage.getRule("Cantonnement"); + Set<String> deps = extractDependencies(script); + Assert.assertTrue(deps.contains("resultinfos.MatrixTestDep1")); + Assert.assertTrue(deps.contains("resultinfos.MatrixTestDep2")); + Assert.assertTrue(deps.contains("resultinfos.MatrixTestDep3")); + } } Deleted: trunk/src/test/resources/.isis-config-3_cvs =================================================================== --- trunk/src/test/resources/.isis-config-3_cvs 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/resources/.isis-config-3_cvs 2015-06-21 17:24:03 UTC (rev 4277) @@ -1,21 +0,0 @@ -#IsisFish configuration version 3 -#Fri Dec 07 10:44:28 GMT 2007 -compileDirectory=/home/tony/isis-build -cvsSsh2Connexion=false -defaultExportDirectory=/home/tony/isis-export -cvsUserName=anonymous -simulatorServerPassword=guest -simulatorServer=http\://simulateur.ifremer.fr\:9090 -javadocUrl=http\://isis-fish.labs.libre-entreprise.org/apidocs/ -smtpServer=smtp -cvsHost=/home/tony/.isis-ssh-host.xml -cvsHostName=cvs.labs.libre-entreprise.org -userName=chemit tony -cvsKeyFile=/home/tony/.isis-ssh-key -cvsDataBase=isis-fish-data -database=/home/tony/isis-database-3_cvs -simulatorServerLogin=anonymous -language=fr -country=FR -userMail=chemit@codelutin.com -cvsRepository=/cvsroot/isis-fish Modified: trunk/src/test/resources/test-database/rules/Cantonnement.java =================================================================== --- trunk/src/test/resources/test-database/rules/Cantonnement.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/resources/test-database/rules/Cantonnement.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -26,6 +26,7 @@ import scripts.ResultName; import scripts.SiMatrix; +import resultinfos.*; import java.util.ArrayList; import java.util.Collection; @@ -82,6 +83,7 @@ // ResultName.MATRIX_BIOMASS, // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET, ResultName.MATRIX_NO_ACTIVITY, + MatrixTestDep1.class.getSimpleName() }; @Override Modified: trunk/src/test/resources/test-database/scripts/ResultName.java =================================================================== --- trunk/src/test/resources/test-database/scripts/ResultName.java 2015-06-21 17:17:41 UTC (rev 4276) +++ trunk/src/test/resources/test-database/scripts/ResultName.java 2015-06-21 17:24:03 UTC (rev 4277) @@ -25,6 +25,7 @@ import static org.nuiton.i18n.I18n.n; import fr.ifremer.isisfish.util.Doc; // pour pouvoir afficher une aide contextuelle (BUG#1605) +import resultinfos.*; /** * Contient l'ensemble des noms des differents resultats. Le mieux lorsque l'on @@ -187,7 +188,7 @@ * Dimension 3 : Zone (semantics : Dimension 2) */ @Doc(value = "do the doc of Result matrixAbundance") - static final public String MATRIX_ABUNDANCE = n("matrixAbundance"); + static final public String MATRIX_ABUNDANCE = MatrixAbundance.class.getSimpleName(); /** * Matrix with three dimensions