Author: echatellier Date: 2014-03-20 15:53:11 +0100 (Thu, 20 Mar 2014) New Revision: 3900 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3900 Log: refs #4803: Gestion des nouveaux scripts dans les storages et dans l'UI script. Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java branches/4.0.1/src/main/resources/templates/script/objective.ftl branches/4.0.1/src/main/resources/templates/script/optimization.ftl branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java Removed: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimisation.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimisationContext.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/Docable.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisFish.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/rule/Rule.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -158,7 +158,7 @@ return apiVersion; } - static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2012"; + static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2014"; static final public String CONFIG_FILENAME = "isis-config-" + majorVersion.toString(); /** separateur de liste */ Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisFish.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -66,6 +66,8 @@ import fr.ifremer.isisfish.cron.CronService; 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.RegionStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; @@ -387,14 +389,17 @@ vcs.checkout(tag, false); // ajoute les repertoires qu'il faut - SimulationPlanStorage.checkout(); ExportStorage.checkout(); FormuleStorage.checkout(); + ObjectiveStorage.checkout(); + OptimizationStorage.checkout(); RuleStorage.checkout(); ScriptStorage.checkout(); - SimulatorStorage.checkout(); SensitivityAnalysisStorage.checkout(); SensitivityExportStorage.checkout(); + SimulationPlanStorage.checkout(); + SimulatorStorage.checkout(); + // on ne prend pas toutes les simu ni toutes les regions vcs.update(new File(local, SimulationStorage.SIMULATION_PATH), false); @@ -536,7 +541,7 @@ // cleanup communityVcs.cleanup(null); - + // check protocol, user, host communityVcs.checkProtocol(); @@ -547,7 +552,7 @@ warnFileListDialog(_("isisfish.error.warning.title"), _("isisfish.vcs.update.warningconflict"), filesInClonflict); } } - + // fin de l'init on supprime le vetoable du vcs communityVcs.remoteVetoableActionListener(asker); } @@ -595,7 +600,7 @@ comFile.renameTo(newFile); } } - + if (log.isDebugEnabled()) { long after = System.currentTimeMillis(); log.debug("Check corrumpted file in " + (after - before) + " ms"); @@ -614,7 +619,7 @@ // est illisible String conflictFilesString = ""; String separator = ""; - for(File file : conflictFiles) { + for (File file : conflictFiles) { conflictFilesString += separator + file.toString(); separator = "\n"; } @@ -683,13 +688,13 @@ // init simulater manager SimulationService.getService(); - + // init IsisTray IsisTray.getInstance(); - + // OpenMap sysout MapBean.suppressCopyright = true; - + // configure swing session // can't be in config ? getUserConfigDirectory() not static File isisConfigDirectory = new File(config.getUserConfigDirectory(), "isis-fish"); @@ -715,7 +720,7 @@ quit(); } }); - + try { InputStream imageStream = WelcomeUI.class.getResourceAsStream("/images/simulation.gif"); Image image = ImageIO.read(imageStream); Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -38,7 +38,6 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.util.Doc; -import fr.ifremer.isisfish.util.Docable; import fr.ifremer.isisfish.vcs.VCSException; /** @@ -153,12 +152,11 @@ } /** - * <b>Be ware this method require to instanciate a Export, so + * <b>Be ware this method require to instantiate a Export, so * it would be better to call as often as possible.</b> * - * @return the description of the instanciate Export + * @return the description of the instantiate Export * @see Doc - * @see Docable */ public String getDescription() { String result = null; Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -184,8 +184,6 @@ all.addAll(getCategories()); try { - - @SuppressWarnings("unchecked") List<String> contextCategory = (List<String>) context.findAll( "SELECT DISTINCT category FROM Equation"); all.addAll(contextCategory); Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -42,7 +42,6 @@ import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.util.CompileHelper; import fr.ifremer.isisfish.util.Doc; -import fr.ifremer.isisfish.util.Docable; import fr.ifremer.isisfish.util.JavadocHelper; /** @@ -62,7 +61,7 @@ * * Last update: $Date$ by : $Author$ */ -public abstract class JavaSourceStorage extends CodeSourceStorage implements Docable { +public abstract class JavaSourceStorage extends CodeSourceStorage { /** Class logger. */ private static Log log = LogFactory.getLog(ExportStorage.class); @@ -74,7 +73,8 @@ * Build a new java source storage. * * @param rootSrc sources root directory - * @param directory class location directory (rootSrc subdirectory) + * @param directory class location directory (rootSrc subdirectory) + * @param storagePath storagePath * @param name class name */ protected JavaSourceStorage(File rootSrc, File directory, String name) { @@ -221,7 +221,6 @@ /** * Get docable element description. */ - @Override public String getDescription() { return null; } Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,183 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2014 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 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.vcs.VCSException; + +/** + * Class permettant de gérer les fonctions d'objectif des optimisations. + * + * @author Eric Chatellier + */ +public class ObjectiveStorage extends JavaSourceStorage { // RulesStorage + + /** to use log facility, just put in your code: log.info(\"...\"); */ + private static Log log = LogFactory.getLog(ObjectiveStorage.class); + + public static final String OBJECTIVE_PATH = "objectives"; + + /** Template freemarker pour les regles. */ + public static final String OBJECTIVE_TEMPLATE = "templates/script/objective.ftl"; + + /** Instance cache. */ + private static Map<String, ObjectiveStorage> objectiveCache = new ReferenceMap<>(); + + /** + * Contruit un nouveau storage + * + * @param rootSrc La region auquelle est attaché la rule + * @param directory le repertoire ou devrait se trouver la rule + * @param name le nom de la rule + */ + protected ObjectiveStorage(File rootSrc, File directory, String name) { + super(rootSrc, directory, name); + } + + /** + * Get context (official VCS) rule directory. + * + * @return context rule directory + */ + static public File getObjectiveDirectory() { + File result = new File(getContextDatabaseDirectory(), OBJECTIVE_PATH); + result.mkdirs(); + return result; + } + + /** + * Get community VCS rule directory. + * + * @return community rule directory + */ + public static File getCommunityObjectiveDirectory() { + File result = new File(getCommunityDatabaseDirectory(), OBJECTIVE_PATH); + result.mkdirs(); + return result; + } + + /** + * Retourne le nom de toutes les regles existantes pour cette region + * + * @return all rule names found in local user database + */ + static public List<String> getObjectiveNames() { + List<String> rules = getStorageNames(getObjectiveDirectory()); + rules.addAll(getStorageNames(getCommunityObjectiveDirectory())); + return rules; + } + + /** + * Retourne le storage pour la regle demandée + * + * @param name le nom de la regle souhaitée + * @param location location to open storage file + * @return Le storage pour la regle + */ + static public ObjectiveStorage getObjective(String name, Location... location) { + ObjectiveStorage result = objectiveCache.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()) { + ObjectiveStorage storage = new ObjectiveStorage(dir, new File(dir, OBJECTIVE_PATH), name); + File sFile = storage.getFile(); + if (sFile.isFile()) { + result = storage; + objectiveCache.put(name, result); + } + } + } + } + return result; + } + + /** + * Create new rule. + * + * @param name new rule to create + * @param location location to rule storage file + * @return new rule storage + */ + public static ObjectiveStorage createObjective(String name, Location location) { + File dir = location.getDirectories()[0]; + ObjectiveStorage storage = new ObjectiveStorage(dir, new File(dir, OBJECTIVE_PATH), name); + return storage; + } + + + static public void checkout() throws VCSException { + checkout(IsisFish.config.getDatabaseDirectory(), OBJECTIVE_PATH); + } + + /** + * Retourne la liste des noms de toutes les régions disponible en local qui + * ne sont pas encore sur le serveur VCS + * + * @return liste de noms de regions + */ + static public List<String> getNewObjectiveNames() { + List<String> result = getObjectiveNames(); + result.removeAll(getRemoteObjectiveNames()); + 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> getRemoteObjectiveNames() { + File dir = getObjectiveDirectory(); + 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> getNewRemoteObjectiveNames() { + List<String> result = getRemoteObjectiveNames(); + result.removeAll(getObjectiveNames()); + return result; + } + +} // ObjectiveStorage + Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,183 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2014 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 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.vcs.VCSException; + +/** + * Class permettant de gérer les fonctions d'objectif des optimisations. + * + * @author Eric Chatellier + */ +public class OptimizationStorage extends JavaSourceStorage { // RulesStorage + + /** to use log facility, just put in your code: log.info(\"...\"); */ + private static Log log = LogFactory.getLog(OptimizationStorage.class); + + public static final String OPTIMIZATION_PATH = "optimizations"; + + /** Template freemarker pour les regles. */ + public static final String OPTIMIZATION_TEMPLATE = "templates/script/optimization.ftl"; + + /** Instance cache. */ + private static Map<String, OptimizationStorage> objectiveCache = new ReferenceMap<>(); + + /** + * Contruit un nouveau storage + * + * @param rootSrc La region auquelle est attaché la rule + * @param directory le repertoire ou devrait se trouver la rule + * @param name le nom de la rule + */ + protected OptimizationStorage(File rootSrc, File directory, String name) { + super(rootSrc, directory, name); + } + + /** + * Get context (official VCS) rule directory. + * + * @return context rule directory + */ + static public File getOptimizationDirectory() { + File result = new File(getContextDatabaseDirectory(), OPTIMIZATION_PATH); + result.mkdirs(); + return result; + } + + /** + * Get community VCS rule directory. + * + * @return community rule directory + */ + public static File getCommunityOptimizationDirectory() { + File result = new File(getCommunityDatabaseDirectory(), OPTIMIZATION_PATH); + result.mkdirs(); + return result; + } + + /** + * Retourne le nom de toutes les regles existantes pour cette region + * + * @return all rule names found in local user database + */ + static public List<String> getOptimizationNames() { + List<String> rules = getStorageNames(getOptimizationDirectory()); + rules.addAll(getStorageNames(getCommunityOptimizationDirectory())); + return rules; + } + + /** + * Retourne le storage pour la regle demandée + * + * @param name le nom de la regle souhaitée + * @param location location to open storage file + * @return Le storage pour la regle + */ + static public OptimizationStorage getOptimization(String name, Location... location) { + OptimizationStorage result = objectiveCache.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()) { + OptimizationStorage storage = new OptimizationStorage(dir, new File(dir, OPTIMIZATION_PATH), name); + File sFile = storage.getFile(); + if (sFile.isFile()) { + result = storage; + objectiveCache.put(name, result); + } + } + } + } + return result; + } + + /** + * Create new rule. + * + * @param name new rule to create + * @param location location to rule storage file + * @return new rule storage + */ + public static OptimizationStorage createOptimization(String name, Location location) { + File dir = location.getDirectories()[0]; + OptimizationStorage storage = new OptimizationStorage(dir, new File(dir, OPTIMIZATION_PATH), name); + return storage; + } + + + static public void checkout() throws VCSException { + checkout(IsisFish.config.getDatabaseDirectory(), OPTIMIZATION_PATH); + } + + /** + * Retourne la liste des noms de toutes les régions disponible en local qui + * ne sont pas encore sur le serveur VCS + * + * @return liste de noms de regions + */ + static public List<String> getNewOptimisationNames() { + List<String> result = getOptimizationNames(); + result.removeAll(getRemoteOptimizationNames()); + 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> getRemoteOptimizationNames() { + File dir = getOptimizationDirectory(); + 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> getNewRemoteOptimizationNames() { + List<String> result = getRemoteOptimizationNames(); + result.removeAll(getOptimizationNames()); + return result; + } + +} // OptimisationStorage + Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -36,10 +36,8 @@ import org.apache.commons.logging.LogFactory; import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.util.Doc; -import fr.ifremer.isisfish.util.Docable; import fr.ifremer.isisfish.vcs.VCSException; /** @@ -59,7 +57,7 @@ * * Last update: $Date$ by : $Author$ */ -public class RuleStorage extends JavaSourceStorage implements Docable { // RulesStorage +public class RuleStorage extends JavaSourceStorage { // RulesStorage /** to use log facility, just put in your code: log.info(\"...\"); */ private static Log log = LogFactory.getLog(RuleStorage.class); @@ -201,9 +199,8 @@ * <b>Be ware this method require to instanciate a Rule, so * it would be better to call as often as possible.</b> * - * @return the descript of the instanciate Rule + * @return the description of the instanciate Rule * @see Doc - * @see Docable */ public String getDescription() { String result = null; Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -38,7 +38,6 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis; import fr.ifremer.isisfish.util.Doc; -import fr.ifremer.isisfish.util.Docable; import fr.ifremer.isisfish.vcs.VCSException; /** @@ -208,7 +207,6 @@ * * @return the descript of the instanciate AnalysePlan * @see Doc - * @see Docable */ @Override public String getDescription() { Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -34,7 +34,6 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.export.SensitivityExport; -import fr.ifremer.isisfish.util.Docable; import fr.ifremer.isisfish.vcs.VCSException; /** @@ -49,7 +48,7 @@ * Last update: $Date$ * by : $Author: chatellier $ */ -public class SensitivityExportStorage extends ExportStorage implements Docable { +public class SensitivityExportStorage extends ExportStorage { public static final String SENSITIVITY_EXPORT_PATH = "sensitivityexports"; Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -39,7 +39,6 @@ import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.simulator.SimulationPlan; import fr.ifremer.isisfish.util.Doc; -import fr.ifremer.isisfish.util.Docable; import fr.ifremer.isisfish.vcs.VCSException; /** @@ -199,7 +198,6 @@ * * @return the descript of the instanciate SimulationPlan * @see Doc - * @see Docable */ public String getDescription() { String result = null; Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/rule/Rule.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/rule/Rule.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/rule/Rule.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -84,7 +84,7 @@ /** * La condition qui doit etre vrai pour faire les actions. * - * Si la confition return vrai alors les methodes + * Si la condition return vrai alors les methodes * {@link #preAction(SimulationContext, TimeStep, Metier)} et * {@link #postAction(SimulationContext, TimeStep, Metier)} seront appelée. * Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -44,5 +44,5 @@ * @param observation observation * @return double value */ - double eval(OptimisationContext context, List<MatrixND> exports, List<MatrixND> observations); + double eval(OptimizationContext context, List<MatrixND> exports, List<MatrixND> observations); } Deleted: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimisation.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimisation.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimisation.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -1,49 +0,0 @@ -/* - * #%L - * IsisFish - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2014 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.simulator; - -import java.util.List; - -import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.entities.FisheryRegion; - -/** - * Script d'optimisation. - * - * @author Eric Chatellier - * @since 4.3.0.0 - */ -public interface Optimisation { - - /** - * Génère une nouvelle série de simulation suivant le context d'optimisation. - * - * @param context context - * @param region region - * @return simulations serie - */ - List<SimulationStorage> getNextGeneration(OptimisationContext context, FisheryRegion region); - -} Deleted: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimisationContext.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimisationContext.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimisationContext.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -1,63 +0,0 @@ -/* - * #%L - * IsisFish - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2014 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.simulator; - -import java.util.List; - -import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.entities.FisheryRegion; - -/** - * Context utilisé pour gérer les différentes simulation lancées par un script d'optimisation. - * - * @author Eric Chatellier - * @since 4.3.0.0 - */ -public class OptimisationContext { - - public FisheryRegion copyRegion(FisheryRegion region) { - return null; - } - - public void createSimulation(FisheryRegion region) { - - } - - public int getCurrentGenerationNumber() { - return 0; - } - - public List<SimulationStorage> getLastGeneration() { - return null; - } - - public List<SimulationStorage> getGeneration(int n) { - return null; - } - - public int getGenerationNumber() { - return 0; - } -} Copied: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java (from rev 3899, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimisation.java) =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,49 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2014 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.simulator; + +import java.util.List; + +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.entities.FisheryRegion; + +/** + * Script d'optimisation. + * + * @author Eric Chatellier + * @since 4.3.0.0 + */ +public interface Optimization { + + /** + * Génère une nouvelle série de simulation suivant le context d'optimisation. + * + * @param context context + * @param region region + * @return simulations serie + */ + List<SimulationStorage> getNextGeneration(OptimizationContext context, FisheryRegion region); + +} Copied: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java (from rev 3899, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimisationContext.java) =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,63 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2014 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.simulator; + +import java.util.List; + +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.entities.FisheryRegion; + +/** + * Context utilisé pour gérer les différentes simulation lancées par un script d'optimisation. + * + * @author Eric Chatellier + * @since 4.3.0.0 + */ +public class OptimizationContext { + + public FisheryRegion copyRegion(FisheryRegion region) { + return null; + } + + public void createSimulation(FisheryRegion region) { + + } + + public int getCurrentGenerationNumber() { + return 0; + } + + public List<SimulationStorage> getLastGeneration() { + return null; + } + + public List<SimulationStorage> getGeneration(int n) { + return null; + } + + public int getGenerationNumber() { + return 0; + } +} Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -28,7 +28,10 @@ import static org.nuiton.i18n.I18n._; import java.awt.Color; +import java.awt.Component; import java.awt.Desktop; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileFilter; @@ -46,7 +49,10 @@ import java.util.List; import java.util.Map; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; @@ -62,6 +68,7 @@ import org.nuiton.util.FileUtil; import org.nuiton.util.ZipUtil; import org.nuiton.widget.SwingUtil; +import org.nuiton.widget.editor.RSyntaxEditor; import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishRuntimeException; @@ -70,6 +77,8 @@ import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.datastore.FormuleStorage; import fr.ifremer.isisfish.datastore.JavaSourceStorage; +import fr.ifremer.isisfish.datastore.ObjectiveStorage; +import fr.ifremer.isisfish.datastore.OptimizationStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage; @@ -183,13 +192,27 @@ WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class); parentUI.setStatusMessage(msg, running); } - + /** * Make new script, and select it on tree. */ - public void newScript() { - ScriptMapping selectedType = (ScriptMapping) scriptUI.getScriptTypeChoice().getSelectedItem(); - newScript(selectedType); + public void newScript(ScriptUI view, MouseEvent event) { + JPopupMenu menu = new JPopupMenu(); + + // make a basic copy of already existing menu + JMenu oldMenu = view.getScriptNewMenu(); + for (int i = 0; i < oldMenu.getItemCount(); i++) { + JMenuItem oldMenuItem = (JMenuItem)oldMenu.getMenuComponent(i); + JMenuItem miCopy = new JMenuItem(); + miCopy.setText(oldMenuItem.getText()); + miCopy.setIcon(oldMenuItem.getIcon()); + for (ActionListener l : oldMenuItem.getActionListeners()) { + miCopy.addActionListener(l); + } + menu.add(miCopy); + } + + menu.show((Component)event.getSource(), event.getX(), event.getY()); } /** @@ -297,6 +320,12 @@ case CommunityExport: script = ExportStorage.createExport(fileName, Location.COMMUNITY); break; + case CommunityObjective: + script = ObjectiveStorage.createObjective(fileName, Location.COMMUNITY); + break; + case CommunityOptimization: + script = OptimizationStorage.createOptimization(fileName, Location.COMMUNITY); + break; case CommunityRule: script = RuleStorage.createRule(fileName, Location.COMMUNITY); break; @@ -438,6 +467,12 @@ case Rule: script = RuleStorage.getRule(file.getName(), Location.OFFICIAL); break; + case Objective: + script = ObjectiveStorage.getObjective(file.getName(), Location.OFFICIAL); + break; + case Optimization: + script = OptimizationStorage.getOptimization(file.getName(), Location.OFFICIAL); + break; case SimulationPlan: script = SimulationPlanStorage.getSimulationPlan(file.getName(), Location.OFFICIAL); break; @@ -456,6 +491,12 @@ case SensitivityExport: script = SensitivityExportStorage.getSensitivityExport(file.getName(), Location.OFFICIAL); break; + case CommunityObjective: + script = ObjectiveStorage.getObjective(file.getName(), Location.COMMUNITY); + break; + case CommunityOptimization: + script = OptimizationStorage.getOptimization(file.getName(), Location.COMMUNITY); + break; case CommunityRule: script = RuleStorage.getRule(file.getName(), Location.COMMUNITY); break; @@ -1093,6 +1134,12 @@ Rule( RuleStorage.getRuleDirectory(), RuleStorage.RULE_TEMPLATE, true), + Objective( + ObjectiveStorage.getObjectiveDirectory(), + ObjectiveStorage.OBJECTIVE_TEMPLATE, true), + Optimization( + OptimizationStorage.getOptimizationDirectory(), + OptimizationStorage.OPTIMIZATION_TEMPLATE, true), Script( ScriptStorage.getScriptDirectory(), ScriptStorage.SCRIPT_TEMPLATE, true), @@ -1115,6 +1162,12 @@ CommunityExport( ExportStorage.getCommunityExportDirectory(), ExportStorage.EXPORT_TEMPLATE), + CommunityObjective( + ObjectiveStorage.getCommunityObjectiveDirectory(), + ObjectiveStorage.OBJECTIVE_TEMPLATE, true), + CommunityOptimization( + OptimizationStorage.getCommunityOptimizationDirectory(), + OptimizationStorage.OPTIMIZATION_TEMPLATE, true), CommunityRule( RuleStorage.getCommunityRuleDirectory(), RuleStorage.RULE_TEMPLATE), Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2014-03-20 14:53:11 UTC (rev 3900) @@ -5,7 +5,7 @@ $Id$ $HeadURL$ %% - Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric + Copyright (C) 2009 - 2014 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 @@ -59,6 +59,10 @@ onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunitySensitivity)' icon="script.png" /> <JMenuItem id="miNewSensitivityExport" text="isisfish.script.menu.txtNewSensitivityExport" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunitySensitivityExport)' icon="script.png" /> + <JMenuItem text="isisfish.script.menu.txtNewObjective" + onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityObjective)' icon="script.png" /> + <JMenuItem text="isisfish.script.menu.txtNewOptimization" + onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityOptimization)' icon="script.png" /> <JMenuItem id="miNewEquationModel" text="isisfish.script.menu.txtNewEquationModel" onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityFormule)' icon="script.png" /> </JMenu> @@ -110,9 +114,8 @@ <!-- Toolbar --> <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'> <JPanel id="buttonBar" layout='{new GridLayout()}' constraints='BorderLayout.NORTH'> - <JComboBox id="scriptTypeChoice" model='{new ScriptTypesComboModel()}'/> - <JButton id="buttonScriptNew" text="isisfish.script.new" toolTipText='isisfish.script.new.tooltip' - onActionPerformed='getScriptAction().newScript()' icon="script.png" /> + <JButton id="buttonScriptNew" text="isisfish.script.newplus" toolTipText='isisfish.script.new.tooltip' + onMousePressed='getScriptAction().newScript(this, event)' icon="script.png" /> <JButton id="buttonScriptSave" text="isisfish.script.save" toolTipText="isisfish.script.save.tooltip" enabled='{isSingleFileSelected()}' onActionPerformed='getScriptAction().saveScript()' icon="script_save.png" /> <JButton id="buttonScriptExport" text="isisfish.script.export" toolTipText="isisfish.script.export.tooltip" enabled='false' Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -41,6 +41,8 @@ import org.jdesktop.swingx.tree.TreeModelSupport; import fr.ifremer.isisfish.IsisFish; +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; @@ -93,23 +95,27 @@ rootFiles = new HashMap<VCS, List<File>>(); List<File> offFiles = new ArrayList<File>(); - offFiles.add(SimulationPlanStorage.getSimulationPlanDirectory()); offFiles.add(ExportStorage.getExportDirectory()); offFiles.add(FormuleStorage.getFormuleDirectory()); + offFiles.add(ObjectiveStorage.getObjectiveDirectory()); + offFiles.add(OptimizationStorage.getOptimizationDirectory()); offFiles.add(RuleStorage.getRuleDirectory()); offFiles.add(ScriptStorage.getScriptDirectory()); offFiles.add(SensitivityExportStorage.getSensitivityExportDirectory()); offFiles.add(SensitivityAnalysisStorage.getSensitivityAnalysisDirectory()); + offFiles.add(SimulationPlanStorage.getSimulationPlanDirectory()); offFiles.add(SimulatorStorage.getSimulatorDirectory()); List<File> comFiles = new ArrayList<File>(); - comFiles.add(SimulationPlanStorage.getCommunitySimulationPlanDirectory()); comFiles.add(ExportStorage.getCommunityExportDirectory()); comFiles.add(FormuleStorage.getCommunityFormuleDirectory()); + comFiles.add(ObjectiveStorage.getCommunityObjectiveDirectory()); + comFiles.add(OptimizationStorage.getCommunityOptimizationDirectory()); comFiles.add(RuleStorage.getCommunityRuleDirectory()); comFiles.add(ScriptStorage.getCommunityScriptDirectory()); comFiles.add(SensitivityExportStorage.getCommunitySensitivityExportDirectory()); comFiles.add(SensitivityAnalysisStorage.getCommunitySensitivityAnalysisDirectory()); + comFiles.add(SimulationPlanStorage.getCommunitySimulationPlanDirectory()); comFiles.add(SimulatorStorage.getCommunitySimulatorDirectory()); rootFiles.put(IsisFish.vcs, offFiles); Deleted: branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/Docable.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/Docable.java 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/Docable.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -1,54 +0,0 @@ -/* - * #%L - * IsisFish - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2011 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.util; - -/** - * This is the contract to be realize by any class which wanted to have a @Doc support. - * - * @author chemit - * @see Doc - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public interface Docable { - - /** - * Field documentation (if any). - * - * @param fieldName name of the field to use - * @return the @Doc of the field, or null if none - */ - Doc getFieldDoc(String fieldName); - - /** - * Class documentation (if any). - * - * @return the description of the class, or null if none - */ - String getDescription(); -} Modified: branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties =================================================================== --- branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties 2014-03-20 14:53:11 UTC (rev 3900) @@ -859,6 +859,8 @@ isisfish.script.menu.txtImport=Import isisfish.script.menu.txtNewEquationModel=New equation model isisfish.script.menu.txtNewExport=New export +isisfish.script.menu.txtNewObjective=New objective function +isisfish.script.menu.txtNewOptimization=New optimization script isisfish.script.menu.txtNewRule=New rule isisfish.script.menu.txtNewScript=New script isisfish.script.menu.txtNewSensitivity=New sensitivity calculator @@ -869,6 +871,7 @@ isisfish.script.menu.update=Update from server isisfish.script.new=New isisfish.script.new.tooltip=Create new script +isisfish.script.newplus=New ► isisfish.script.paste=Paste isisfish.script.paste.tooltip=Paste current selection (Ctrl-v) isisfish.script.save=Save Modified: branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties =================================================================== --- branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-03-19 16:59:03 UTC (rev 3899) +++ branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-03-20 14:53:11 UTC (rev 3900) @@ -859,6 +859,8 @@ isisfish.script.menu.txtImport=Importer isisfish.script.menu.txtNewEquationModel=Nouvelle formule isisfish.script.menu.txtNewExport=Nouveau script d'export +isisfish.script.menu.txtNewObjective=Nouvelle fonction d'objectif +isisfish.script.menu.txtNewOptimization=Nouveau script d'optimisation isisfish.script.menu.txtNewRule=Nouvelle règle isisfish.script.menu.txtNewScript=Nouveau script isisfish.script.menu.txtNewSensitivity=Nouveau calculateur de sensibilité @@ -869,6 +871,7 @@ isisfish.script.menu.update=Synchronisation isisfish.script.new=Nouveau isisfish.script.new.tooltip=Crée un nouveau script +isisfish.script.newplus=Nouveau ► isisfish.script.paste=Coller isisfish.script.paste.tooltip=Colle la sélection courante (Ctrl-v) isisfish.script.save=Sauver Added: branches/4.0.1/src/main/resources/templates/script/objective.ftl =================================================================== --- branches/4.0.1/src/main/resources/templates/script/objective.ftl (rev 0) +++ branches/4.0.1/src/main/resources/templates/script/objective.ftl 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,90 @@ +<#-- + #%L + IsisFish + + $Id$ + $HeadURL$ + %% + Copyright (C) 2014 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% +--> +/* + * Copyright (C) ${date?date?string("yyyy")} ${author} + * + * 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>. + */ + +package rules; + +import static org.nuiton.i18n.I18n._; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.List; + +import org.nuiton.math.matrix.*; + +import fr.ifremer.isisfish.util.Doc; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.types.TimeStep; +import fr.ifremer.isisfish.entities.*; +import fr.ifremer.isisfish.simulator.Objective; +import fr.ifremer.isisfish.simulator.OptimizationContext; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.datastore.ResultStorage; + +/** + * ${name}.java + * + * Created: ${date?date?string.long} + * + * @author ${author} <${email}> + * @version $Revision: 1545 $ + * Last update: $Date: ${date?date?string.long} $ + * by : $Author: ${author} $ + */ +public class ${name} implements Objective { + + /** to use log facility, just put in your code: log.info("..."); */ + private static Log log = LogFactory.getLog(${name}.class); + + /** + * Effectue une evaluation entre les exports et les observations. + * + * @param context optimization context + * @param exports exports + * @param observation observation + * @return double value + */ + public double eval(OptimizationContext context, List<MatrixND> exports, List<MatrixND> observations) { + // TODO put your code here + return 0; + } +} Added: branches/4.0.1/src/main/resources/templates/script/optimization.ftl =================================================================== --- branches/4.0.1/src/main/resources/templates/script/optimization.ftl (rev 0) +++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,89 @@ +<#-- + #%L + IsisFish + + $Id$ + $HeadURL$ + %% + Copyright (C) 2014 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% +--> +/* + * Copyright (C) ${date?date?string("yyyy")} ${author} + * + * 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>. + */ + +package rules; + +import static org.nuiton.i18n.I18n._; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.List; + +import org.nuiton.math.matrix.*; + +import fr.ifremer.isisfish.util.Doc; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.types.TimeStep; +import fr.ifremer.isisfish.entities.*; +import fr.ifremer.isisfish.simulator.Optimization; +import fr.ifremer.isisfish.simulator.OptimizationContext; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.datastore.ResultStorage; + +/** + * ${name}.java + * + * Created: ${date?date?string.long} + * + * @author ${author} <${email}> + * @version $Revision: 1545 $ + * Last update: $Date: ${date?date?string.long} $ + * by : $Author: ${author} $ + */ +public class ${name} implements Optimization { + + /** to use log facility, just put in your code: log.info("..."); */ + private static Log log = LogFactory.getLog(${name}.class); + + /** + * Génère une nouvelle série de simulation suivant le context d'optimisation. + * + * @param context context + * @param region region + * @return simulations serie + */ + public List<SimulationStorage> getNextGeneration(OptimizationContext context, FisheryRegion region) { + // TODO + return null; + } +} Added: branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java =================================================================== --- branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java (rev 0) +++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,97 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2012 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.datastore; + +import java.io.StringWriter; +import java.io.Writer; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import fr.ifremer.isisfish.AbstractIsisFishTest; +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.CodeSourceStorage.Location; +import freemarker.template.Configuration; +import freemarker.template.Template; + +/** + * RuleStorageTest. + * + * Created: 7 août 2006 11:07:57 + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class ObjectiveStorageTest extends AbstractIsisFishTest { + + protected Configuration freemarkerConfiguration; + + @Before + public void setUp() throws Exception { + freemarkerConfiguration = getFreemarkerConfiguration(); + } + + @Test + public void testNewObjectiveWithCompilation() throws Exception { + + String fileName = "TestObjective1"; + + ObjectiveStorage objectiveStorage = ObjectiveStorage.createObjective(fileName, Location.OFFICIAL); + + // get template + Template template = freemarkerConfiguration + .getTemplate(ObjectiveStorage.OBJECTIVE_TEMPLATE); + + // context values + Map<String, Object> root = new HashMap<String, Object>(); + // FIXME what is category ? + root.put("category", ""); + root.put("name", fileName); + root.put("date", new Date()); + root.put("author", IsisFish.config.getUserName()); + root.put("email", IsisFish.config.getUserMail()); + + // process template + Writer out = new StringWriter(); + template.process(root, out); + out.flush(); + String content = out.toString(); + + objectiveStorage.setContent(content); + + // 0 = compile success + int compileResult = objectiveStorage.compile(false, null); + Assert.assertEquals(0, compileResult); + } + +} Property changes on: branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java =================================================================== --- branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java (rev 0) +++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java 2014-03-20 14:53:11 UTC (rev 3900) @@ -0,0 +1,97 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2012 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.datastore; + +import java.io.StringWriter; +import java.io.Writer; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import fr.ifremer.isisfish.AbstractIsisFishTest; +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.CodeSourceStorage.Location; +import freemarker.template.Configuration; +import freemarker.template.Template; + +/** + * RuleStorageTest. + * + * Created: 7 août 2006 11:07:57 + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class OptimizationStorageTest extends AbstractIsisFishTest { + + protected Configuration freemarkerConfiguration; + + @Before + public void setUp() throws Exception { + freemarkerConfiguration = getFreemarkerConfiguration(); + } + + @Test + public void testNewOptimizationWithCompilation() throws Exception { + + String fileName = "TestOptimization1"; + + OptimizationStorage optimizationStorage = OptimizationStorage.createOptimization(fileName, Location.OFFICIAL); + + // get template + Template template = freemarkerConfiguration + .getTemplate(OptimizationStorage.OPTIMIZATION_TEMPLATE); + + // context values + Map<String, Object> root = new HashMap<String, Object>(); + // FIXME what is category ? + root.put("category", ""); + root.put("name", fileName); + root.put("date", new Date()); + root.put("author", IsisFish.config.getUserName()); + root.put("email", IsisFish.config.getUserMail()); + + // process template + Writer out = new StringWriter(); + template.process(root, out); + out.flush(); + String content = out.toString(); + + optimizationStorage.setContent(content); + + // 0 = compile success + int compileResult = optimizationStorage.compile(false, null); + Assert.assertEquals(0, compileResult); + } + +} Property changes on: branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native