Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
April 2014
- 3 participants
- 73 discussions
Author: echatellier
Date: 2014-04-18 15:54:36 +0200 (Fri, 18 Apr 2014)
New Revision: 3973
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3973
Log:
Update mavenpom
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-04-18 13:51:34 UTC (rev 3972)
+++ trunk/pom.xml 2014-04-18 13:54:36 UTC (rev 3973)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0.5</version>
+ <version>5.0.6</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0
Author: echatellier
Date: 2014-04-18 15:51:34 +0200 (Fri, 18 Apr 2014)
New Revision: 3972
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3972
Log:
Update to jdistlib 0.3.5
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-04-18 13:30:39 UTC (rev 3971)
+++ trunk/pom.xml 2014-04-18 13:51:34 UTC (rev 3972)
@@ -290,7 +290,7 @@
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>jdistlib</artifactId>
- <version>0.0.7</version>
+ <version>0.3.5</version>
</dependency>
<!-- ssj pour les calculs stockastiques -->
1
0
r3971 - in trunk: . src/main/java/fr/ifremer/isisfish/aspect src/main/java/fr/ifremer/isisfish/simulator/launcher
by echatellier@users.forge.codelutin.com 18 Apr '14
by echatellier@users.forge.codelutin.com 18 Apr '14
18 Apr '14
Author: echatellier
Date: 2014-04-18 15:30:39 +0200 (Fri, 18 Apr 2014)
New Revision: 3971
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3971
Log:
refs #2255: Correction de l'init du classloader aspectj
Modified:
trunk/pom.xml
trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-04-18 08:17:52 UTC (rev 3970)
+++ trunk/pom.xml 2014-04-18 13:30:39 UTC (rev 3971)
@@ -283,21 +283,9 @@
<dependency>
<groupId>org.aspectj</groupId>
- <artifactId>aspectjrt</artifactId>
- <version>1.7.4</version>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
- <version>1.7.4</version>
+ <version>1.8.0</version>
</dependency>
- <!-- This one seams to be required for RuleAspect to work, but not directly used -->
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjtools</artifactId>
- <version>1.7.4</version>
- <scope>runtime</scope>
- </dependency>
<dependency>
<groupId>net.sourceforge</groupId>
Modified: trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java 2014-04-18 08:17:52 UTC (rev 3970)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java 2014-04-18 13:30:39 UTC (rev 3971)
@@ -73,16 +73,17 @@
*/
private void init(ClassLoader loader, List<String> classPath) {
try {
- //XXX call to private code "abortOnError = true;"
+ // introspection of : abortOnError = true;
Field abortOnErrorField = WeavingAdaptor.class.getDeclaredField("abortOnError");
abortOnErrorField.setAccessible(true);
abortOnErrorField.set(this, true);
createMessageHandler();
- info("using classpath: " + classPath);
+ //info("using classpath: " + classPath);
//info("using aspectpath: " + aspectPath);
+ // introspection of : messageHandler
Field messageHandlerField = WeavingAdaptor.class.getDeclaredField("messageHandler");
messageHandlerField.setAccessible(true);
IMessageHandler messageHandler = (IMessageHandler)messageHandlerField.get(this);
@@ -97,13 +98,12 @@
//registerAspectLibraries(aspectPath);
//initializeCache(loader, aspectPath, null, getMessageHandler());
- //XXX call to private code "enabled = true;"
+ // introspection of : enabled = true;
Field enabledField = WeavingAdaptor.class.getDeclaredField("enabled");
enabledField.setAccessible(true);
enabledField.set(this, true);
- // get private field instance
- //XXX call to private code "xcutSet = weaver.xcutSet"
+ // introspection of : xcutSet = weaver.xcutSet
Field xcutSetField = BcelWeaver.class.getDeclaredField("xcutSet");
xcutSetField.setAccessible(true);
xcutSet = (CrosscuttingMembersSet) xcutSetField.get(weaver);
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2014-04-18 08:17:52 UTC (rev 3970)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2014-04-18 13:30:39 UTC (rev 3971)
@@ -34,6 +34,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Enumeration;
import java.util.List;
import org.apache.commons.io.FileUtils;
@@ -70,6 +71,7 @@
import fr.ifremer.isisfish.simulator.Simulator;
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.types.TimeStep;
+import fr.ifremer.isisfish.util.CompileHelper;
/**
* Fait une simulation dans la meme jvm.
@@ -278,6 +280,9 @@
* @return le classe loader modifié
*/
protected AspectJUrlClassLoader changeClassLoader(Thread thread, File directory) {
+ /*
+ FIXME echatellier 20140419 : normalement c'est ce code original qui est bon
+ il fonctionne sur eclipse, mais pas en java -jar ...
try {
URL[] classpath = new URL[] { directory.toURI().toURL(),
// poussin 20080821 : il semble ne plus trouve les formules,
@@ -286,7 +291,7 @@
AspectJUrlClassLoader loader = new AspectJUrlClassLoader(classpath,
IsisFish.class.getClassLoader());
thread.setContextClassLoader(loader);
- log.info("Classloader used for simulation: " + loader + " "
+ log.error("Classloader used for simulation: " + loader + " "
+ Arrays.toString(loader.getURLs()));
return loader;
} catch (MalformedURLException eee) {
@@ -294,6 +299,37 @@
// impossible car on creer l'url a partir d'un File ce qui ne pose
// noralement pas de probleme
throw new IsisFishRuntimeException(t("isisfish.error.change.classloader", directory), eee);
+ }*/
+
+ // FIXME echatellier 20140419 : pour que aspectj fonctionne, on lui construit un urlclassloader
+ // complet avec toutes les urls
+ try {
+ List<URL> urls = new ArrayList<>();
+ for (Enumeration<?> e = CompileHelper.class.getClassLoader()
+ .getResources("META-INF/MANIFEST.MF"); e.hasMoreElements();) {
+ URL url = (URL) e.nextElement();
+ if (log.isDebugEnabled()) {
+ log.debug("Found manifest : " + url);
+ }
+ if ((url != null) && url.getFile().startsWith("file:/")) {
+ String jarPath = url.getPath().substring(0,
+ url.getPath().indexOf("!"));
+ urls.add(new URL(jarPath));
+ }
+ }
+ urls.add(directory.toURI().toURL());
+ urls.add(IsisFish.config.getCompileDirectory().toURI().toURL());
+ AspectJUrlClassLoader loader = new AspectJUrlClassLoader(urls.toArray(new URL[urls.size()]),
+ IsisFish.class.getClassLoader());
+ thread.setContextClassLoader(loader);
+ log.error("Classloader used for simulation: " + loader + " "
+ + Arrays.toString(loader.getURLs()));
+ return loader;
+ } catch (Exception eee) {
+ // on leve un runtime, car normalement cette erreur est pratiquement
+ // impossible car on creer l'url a partir d'un File ce qui ne pose
+ // noralement pas de probleme
+ throw new IsisFishRuntimeException(t("isisfish.error.change.classloader", directory), eee);
}
}
1
0
18 Apr '14
Author: echatellier
Date: 2014-04-18 10:17:52 +0200 (Fri, 18 Apr 2014)
New Revision: 3970
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3970
Log:
Switch defaut jdk to version 7 on caparmor
Modified:
trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-04-17 16:48:13 UTC (rev 3969)
+++ trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-04-18 08:17:52 UTC (rev 3970)
@@ -1003,7 +1003,7 @@
/** Serveur accessible par ssh : remote tmp path */
SIMULATOR_SSH_TMPPATH("simulation.ssh.tmppath", n("isisfish.config.main.simulation.ssh.tmppath.description"), "isis-tmp"),
/** Serveur accessible par SSH : emplacement de Java (full path) */
- SIMULATOR_SSH_JAVAPATH("simulation.ssh.javapath64", n("isisfish.config.main.simulation.ssh.javapath.description"), "/home3/caparmor/poussin/jdk64/bin/java"),
+ SIMULATOR_SSH_JAVAPATH("simulation.ssh.javapath64", n("isisfish.config.main.simulation.ssh.javapath.description"), "/home3/caparmor/poussin/jdk7/bin/java"),
/** Serveur accessible par SSH : emplacement des executables pbs */
SIMULATOR_SSH_PBSBINPATH("simulation.ssh.pbsbinpath", n("isisfish.config.main.simulation.ssh.pbsbinpath.description"), "/usr/pbs/bin"),
/** Serveur accessible par SSH : option de l'executable qsub (defaut to -m n = no mail) */
1
0
17 Apr '14
Author: echatellier
Date: 2014-04-17 18:48:13 +0200 (Thu, 17 Apr 2014)
New Revision: 3969
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3969
Log:
Merge branches/4.0.1 into trunk
Added:
trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJUrlClassLoader.java
trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java
trunk/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/Objective.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Distribution.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/optimization/
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/DummyLayerUI.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java
trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java
trunk/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml
trunk/src/main/resources/templates/script/objective.ftl
trunk/src/main/resources/templates/script/optimization.ftl
trunk/src/site/rst/v3/devel/mexico.rst
trunk/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java
trunk/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java
trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java
trunk/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java
trunk/src/test/resources/mexico/expDesign.xsd
trunk/src/test/resources/mexico/mexicohelper_designplanV3.xml
trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.h2.db
trunk/src/test/resources/test-database/regions/DemoRegion/data/data.h2.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/1.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/2.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/3.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/4.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/5.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/6.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/7.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/8.t42.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/9.t42.lob.db
trunk/src/test/resources/test-database/sensitivityanalysis/DOptimal.java
trunk/src/test/resources/test-database/sensitivityanalysis/Fast.java
trunk/src/test/resources/test-database/sensitivityanalysis/Morris.java
trunk/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java
trunk/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java
trunk/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java
trunk/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java
trunk/src/test/resources/test-database/sensitivityanalysis/Sobol.java
Removed:
trunk/TODO.txt
trunk/src/main/assembly/isisfish64.bat
trunk/src/main/assembly/isisfish64.sh
trunk/src/main/assembly/x64/
trunk/src/main/assembly/x86/
trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationContinuousDomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/MatrixContinuousDomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/equation/
trunk/src/main/java/fr/ifremer/isisfish/util/Docable.java
trunk/src/main/resources/v2xsl/
trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/domain/
trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
trunk/src/test/java/fr/ifremer/isisfish/util/EvaluateHelperTest.java
trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.1.log.db
trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.data.db
trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.index.db
trunk/src/test/resources/test-database/regions/DemoRegion/data/data.2.log.db
trunk/src/test/resources/test-database/regions/DemoRegion/data/data.data.db
trunk/src/test/resources/test-database/regions/DemoRegion/data/data.index.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/46.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/47.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/48.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/49.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/50.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/51.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/52.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/53.t43.lob.db
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/54.t43.lob.db
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRDOptimal.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFast.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFrF2.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRMorris.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRSobol.java
trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRegularFractions.java
Modified:
trunk/
trunk/pom.xml
trunk/src/license/THIRD-PARTY.properties
trunk/src/main/assembly/bin.xml
trunk/src/main/assembly/isisfish-log4j.properties
trunk/src/main/assembly/isisfish.bat
trunk/src/main/assembly/isisfish.sh
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/IsisTray.java
trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java
trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java
trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
trunk/src/main/java/fr/ifremer/isisfish/aspect/CacheAspect.java
trunk/src/main/java/fr/ifremer/isisfish/aspect/RuleAspect.java
trunk/src/main/java/fr/ifremer/isisfish/aspect/TraceAspect.java
trunk/src/main/java/fr/ifremer/isisfish/aspect/package-info.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java
trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
trunk/src/main/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/EquationImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/SeasonImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
trunk/src/main/java/fr/ifremer/isisfish/entities/VariableImpl.java
trunk/src/main/java/fr/ifremer/isisfish/equation/Language.java
trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevel.java
trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevelUtil.java
trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsole.java
trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java
trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.java
trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java
trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java
trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java
trunk/src/main/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.java
trunk/src/main/java/fr/ifremer/isisfish/map/CellSelectionLayer.java
trunk/src/main/java/fr/ifremer/isisfish/map/CopyMapToClipboardListener.java
trunk/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java
trunk/src/main/java/fr/ifremer/isisfish/map/ResultatLayer.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/package-info.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/AbstractXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationDiscreteDomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorGroupXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/RuleDiscreteDomainXMLVisitor.java
trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/package-info.java
trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java
trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/MetierMonitor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/RuleMonitor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationException.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationMeta.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationProperties.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationVariable.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/package-info.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java
trunk/src/main/java/fr/ifremer/isisfish/types/Month.java
trunk/src/main/java/fr/ifremer/isisfish/types/TimeStep.java
trunk/src/main/java/fr/ifremer/isisfish/types/TimeUnit.java
trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MatrixType.java
trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MonthType.java
trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.java
trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeStepType.java
trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.java
trunk/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeSaveVerifier.java
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyOneMonthInfoUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/WizardGroupCreationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResult.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/EffortDescriptionListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearPopulationSelectivityModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoTargetSpeciesTableModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationSeasonInfoComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PortComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SetOfVesselsComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SpeciesComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TopiaEntityListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/VesselTypeComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/ZoneListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/EffortDescriptionListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierSeasonInfoComboRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/PopulationSeasonInfoComboRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/TripTypeListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/SpeciesNodeLoador.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableTypeComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListCellRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportNameListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixSummaryRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultMatrixFilter.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/SumByYearMatrixFilter.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorCardinalityTableModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeCellRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterPanelUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java
trunk/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java
trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java
trunk/src/main/java/fr/ifremer/isisfish/ui/util/JaxxUtil.java
trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSGenerateSshKeyUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ScriptParameterDialog.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterPanelUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/util/ArgTypes.java
trunk/src/main/java/fr/ifremer/isisfish/util/CellPointcomparator.java
trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java
trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java
trunk/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java
trunk/src/main/java/fr/ifremer/isisfish/util/IsisCache.java
trunk/src/main/java/fr/ifremer/isisfish/util/IsisCacheBackendOnReferenceMap.java
trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java
trunk/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java
trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java
trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUtils.java
trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSException.java
trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java
trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.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/log4j.properties
trunk/src/main/resources/templates/script/equation.ftl
trunk/src/main/resources/templates/script/export.ftl
trunk/src/main/resources/templates/script/rule.ftl
trunk/src/main/resources/templates/script/script.ftl
trunk/src/main/resources/templates/script/sensitivityanalysis.ftl
trunk/src/main/resources/templates/script/sensitivityexport.ftl
trunk/src/main/resources/templates/script/simulationplan.ftl
trunk/src/main/resources/templates/script/simulator.ftl
trunk/src/main/xmi/isis-fish.properties
trunk/src/main/xmi/isis-fish.zargo
trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java
trunk/src/test/java/fr/ifremer/isisfish/IsisConfigTest.java
trunk/src/test/java/fr/ifremer/isisfish/IsisFishMiscTest.java
trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java
trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java
trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceTest.java
trunk/src/test/java/fr/ifremer/isisfish/entity/PopulationSeasonInfoTest.java
trunk/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java
trunk/src/test/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.java
trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java
trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java
trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java
trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisRandomMock.java
trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java
trunk/src/test/java/fr/ifremer/isisfish/types/MonthTest.java
trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java
trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java
trunk/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java
trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_basic.properties
trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_plan.properties
trunk/src/test/resources/mexico/mexicohelper_designplan.xml
trunk/src/test/resources/mexico/mexicohelper_designplanV2.xml
trunk/src/test/resources/mexico/mexicohelper_factorgroupdp.xml
trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.h2.db
trunk/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java
Property changes on: trunk
___________________________________________________________________
Modified: svn:ignore
- maven.log
target
velocity.log
.classpath
.project
isis-fish.ipr
isis-fish.iws
isis-fish.iml
.settings
bin
nbproject
Inputs_Langoustine
+ maven.log
target
velocity.log
.classpath
.project
isis-fish.ipr
isis-fish.iws
isis-fish.iml
.settings
bin
nbproject
Inputs_Langoustine
.idea
Modified: svn:mergeinfo
- /branches/4.1:3601-3670
+ /branches/4.0.0-svnkit:3665-3698
/branches/4.0.1:3616-3968
/branches/4.1:3601-3670
Deleted: trunk/TODO.txt
===================================================================
--- trunk/TODO.txt 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/TODO.txt 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,8 +0,0 @@
-TODO au 18/09/2009
-==================
-
- - tester que les paramêtres d'une simulation sont corrects
- (ex:année < 0)
- - valeur par defaut dans les champs de saisie
- - JavaWebStart
- - Voir une version antérieure d'un script
\ No newline at end of file
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/pom.xml 2014-04-17 16:48:13 UTC (rev 3969)
@@ -6,12 +6,12 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0.1</version>
+ <version>5.0.5</version>
</parent>
<groupId>fr.ifremer</groupId>
<artifactId>isis-fish</artifactId>
- <version>4.2.1.3-SNAPSHOT</version>
+ <version>4.3.0.0-rc1-SNAPSHOT</version>
<!-- POM Relationships : Inheritance : Dependencies -->
<dependencies>
@@ -20,15 +20,28 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>${nuitonUtilsVersion}</version>
+ <version>3.0-rc-2</version>
<scope>compile</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-config</artifactId>
+ <version>3.0-alpha-2</version>
+ <scope>compile</scope>
+ </dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-validator</artifactId>
- <version>${nuitonUtilsVersion}</version>
+ <version>3.0-rc-1</version>
<scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>javassist</artifactId>
+ <groupId>javassist</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -43,6 +56,12 @@
<artifactId>topia-persistence</artifactId>
<version>${topiaVersion}</version>
<scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>javassist</artifactId>
+ <groupId>javassist</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -62,14 +81,14 @@
<dependency>
<groupId>org.nuiton.matrix</groupId>
<artifactId>nuiton-matrix</artifactId>
- <version>2.3.2</version>
+ <version>2.4-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.nuiton.matrix</groupId>
<artifactId>nuiton-matrix-gui</artifactId>
- <version>2.3.2</version>
+ <version>2.4-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
@@ -83,14 +102,14 @@
<dependency>
<groupId>com.fifesoft</groupId>
<artifactId>rsyntaxtextarea</artifactId>
- <version>2.0.2</version>
- <scope>runtime</scope>
+ <version>2.5.0</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
- <version>1.4.5</version>
+ <version>1.4.7</version>
<scope>compile</scope>
</dependency>
@@ -107,16 +126,17 @@
<artifactId>jaxx-runtime</artifactId>
<version>${jaxxVersion}</version>
<scope>compile</scope>
- <exclusions>
- <exclusion>
- <artifactId>swingx-core</artifactId>
- <groupId>org.swinglabs</groupId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.nuiton.jaxx</groupId>
+ <artifactId>jaxx-config</artifactId>
+ <version>${jaxxVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.nuiton.jaxx</groupId>
<artifactId>jaxx-validator</artifactId>
<version>${jaxxVersion}</version>
<scope>compile</scope>
@@ -127,12 +147,6 @@
<artifactId>jaxx-widgets</artifactId>
<version>${jaxxVersion}</version>
<scope>compile</scope>
- <exclusions>
- <exclusion>
- <artifactId>swingx-core</artifactId>
- <groupId>org.swinglabs</groupId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
@@ -145,18 +159,20 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-j2r</artifactId>
- <version>1.0.2</version>
+ <version>1.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
+ <version>3.3.2</version>
</dependency>
-
+
<dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-collections4</artifactId>
+ <version>4.0</version>
</dependency>
<dependency>
@@ -167,7 +183,7 @@
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.3</version>
+ <version>2.4</version>
</dependency>
<dependency>
@@ -180,14 +196,14 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
- <version>3.0</version>
+ <version>3.2</version>
<scope>runtime</scope> <!--script -->
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
- <version>1.2</version>
+ <version>1.3.2</version>
</dependency>
<dependency>
@@ -198,21 +214,21 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <version>1.2.16</version>
+ <version>1.2.17</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.6.4</version>
+ <version>1.7.7</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>1.6.4</version>
+ <version>1.7.7</version>
<scope>runtime</scope>
</dependency>
@@ -229,151 +245,80 @@
</exclusions>
</dependency>
- <!-- encore utilise pour les pre-scripts -->
<dependency>
- <groupId>org.beanshell</groupId>
- <artifactId>bsh</artifactId>
- <version>2.0b4</version>
- <scope>compile</scope>
+ <groupId>jaxen</groupId>
+ <artifactId>jaxen</artifactId>
+ <version>1.1.6</version>
+ <scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.bbn</groupId>
<artifactId>openmap</artifactId>
- <version>5.0</version>
+ <version>5.0.4</version>
<scope>compile</scope>
</dependency>
- <!-- <dependency>
- <groupId>com.fifesoft</groupId>
- <artifactId>languagesupport</artifactId>
- <version>0.7</version>
- </dependency> -->
-
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
- <version>0.1.48</version>
+ <version>0.1.51</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-core</artifactId>
- <version>1.6.3</version>
+ <version>1.6.5-1</version>
<scope>compile</scope>
</dependency>
- <!-- Utilisé lors de l'import xml v2 (entre autre) -->
- <dependency>
- <groupId>jaxen</groupId>
- <artifactId>jaxen</artifactId>
- <version>1.1.1</version>
- <scope>runtime</scope>
- <exclusions>
- <exclusion>
- <artifactId>xml-apis</artifactId>
- <groupId>xml-apis</groupId>
- </exclusion>
- <exclusion>
- <artifactId>xmlParserAPIs</artifactId>
- <groupId>xerces</groupId>
- </exclusion>
- </exclusions>
- </dependency>
-
<!-- Change this dependence if you change database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.3.166</version>
+ <version>1.3.176</version>
<scope>compile</scope>
</dependency>
- <!-- Migration des bases creee avec h2 1.1 -->
<dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2mig_pagestore_addon</artifactId>
- <version>1.3.153</version>
- <scope>runtime</scope>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.7.4</version>
</dependency>
-
- <!-- aspectwerkz -->
<dependency>
- <groupId>aspectwerkz</groupId>
- <artifactId>aspectwerkz</artifactId>
- <version>${aspectwerkzVersion}</version>
- <scope>compile</scope>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>1.7.4</version>
</dependency>
+ <!-- This one seams to be required for RuleAspect to work, but not directly used -->
<dependency>
- <groupId>aspectwerkz</groupId>
- <artifactId>aspectwerkz-jdk5</artifactId>
- <version>${aspectwerkzVersion}</version>
- <scope>compile</scope>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjtools</artifactId>
+ <version>1.7.4</version>
+ <scope>runtime</scope>
</dependency>
+
<dependency>
- <groupId>aspectwerkz</groupId>
- <artifactId>aspectwerkz-core</artifactId>
- <version>${aspectwerkzVersion}</version>
- <scope>compile</scope>
+ <groupId>net.sourceforge</groupId>
+ <artifactId>jdistlib</artifactId>
+ <version>0.0.7</version>
</dependency>
<!-- ssj pour les calculs stockastiques -->
<dependency>
<groupId>ssj</groupId>
<artifactId>ssj</artifactId>
- <version>2.1.1</version>
+ <version>2.5</version>
<scope>runtime</scope>
</dependency>
-
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>Blas</artifactId>
- <version>20081007</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>colt</artifactId>
- <version>20081007</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>interpreter</artifactId>
- <version>1.6.8</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>language</artifactId>
- <version>1.6.7</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>logger</artifactId>
- <version>1.6.4</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>optimization</artifactId>
- <version>20081007</version>
- <scope>runtime</scope>
- </dependency>
<!-- fin ssj pour les calculs stockastiques -->
<!-- debut svnkit pour communication subversion -->
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
- <version>1.3.5</version>
+ <version>1.8.3-1</version>
<scope>compile</scope>
</dependency>
<!-- fin svnkit pour communication subversion -->
@@ -381,15 +326,14 @@
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
- <version>2.3.19</version>
+ <version>2.3.20</version>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>com.sun</groupId>
- <artifactId>tools</artifactId>
- <version>1.6.0.16</version>
- <scope>compile</scope>
+ <groupId>org.eclipse.jdt.core.compiler</groupId>
+ <artifactId>ecj</artifactId>
+ <version>4.3.1</version>
</dependency>
<dependency>
@@ -530,18 +474,18 @@
<maven.jar.main.class>fr.ifremer.isisfish.IsisFish</maven.jar.main.class>
<license.licenseName>gpl_v3</license.licenseName>
<license.organizationName>Ifremer, Codelutin</license.organizationName>
- <signatureArtifactId>java16-sun</signatureArtifactId>
- <signatureVersion>1.9</signatureVersion>
+ <maven.compiler.source>1.7</maven.compiler.source>
+ <maven.compiler.target>1.7</maven.compiler.target>
+ <signatureArtifactId>java17</signatureArtifactId>
+ <signatureVersion>1.0</signatureVersion>
<!-- Dependencies version -->
- <jaxxVersion>2.4.2</jaxxVersion>
- <eugeneVersion>2.4.2</eugeneVersion>
- <topiaVersion>2.6.13</topiaVersion>
- <hibernateVersion>3.6.10.Final</hibernateVersion>
- <nuitonUtilsVersion>2.4.7</nuitonUtilsVersion>
- <nuitonI18nVersion>2.4.1</nuitonI18nVersion>
+ <jaxxVersion>2.8.4</jaxxVersion>
+ <eugeneVersion>2.7.4</eugeneVersion>
+ <topiaVersion>2.9-SNAPSHOT</topiaVersion>
+ <hibernateVersion>4.3.5.Final</hibernateVersion>
+ <nuitonI18nVersion>3.1-SNAPSHOT</nuitonI18nVersion>
<nuitonWidgetsVersion>1.1.1</nuitonWidgetsVersion>
- <aspectwerkzVersion>2.0</aspectwerkzVersion>
<redmine.releaseFiles>target/isis-fish-${project.version}-bin.zip</redmine.releaseFiles>
@@ -566,28 +510,29 @@
<plugins>
<plugin>
<groupId>org.nuiton.eugene</groupId>
- <artifactId>maven-eugene-plugin</artifactId>
+ <artifactId>eugene-maven-plugin</artifactId>
<version>${eugeneVersion}</version>
</plugin>
<plugin>
<groupId>org.nuiton.jaxx</groupId>
- <artifactId>maven-jaxx-plugin</artifactId>
+ <artifactId>jaxx-maven-plugin</artifactId>
<version>${jaxxVersion}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.nuiton.i18n</groupId>
+ <artifactId>nuiton-i18n</artifactId>
+ <version>${nuitonI18nVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
</plugin>
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>${nuitonI18nVersion}</version>
</plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <showDeprecation>true</showDeprecation>
- <showWarnings>true</showWarnings>
- </configuration>
- </plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
@@ -635,25 +580,13 @@
</dependency>
</dependencies>
</plugin>
-
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>animal-sniffer-maven-plugin</artifactId>
- <configuration>
- <signature>
- <groupId>org.codehaus.mojo.signature</groupId>
- <artifactId>java16-sun</artifactId>
- <version>1.10</version>
- </signature>
- </configuration>
- </plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.nuiton.eugene</groupId>
- <artifactId>maven-eugene-plugin</artifactId>
+ <artifactId>eugene-maven-plugin</artifactId>
<executions>
<execution>
<id>eugene-generation</id>
@@ -666,7 +599,7 @@
<templates>org.nuiton.topia.generator.TopiaMetaTransformer</templates>
</configuration>
<goals>
- <goal>smart-generate</goal>
+ <goal>generate</goal>
</goals>
</execution>
</executions>
@@ -682,7 +615,7 @@
<plugin>
<groupId>org.nuiton.jaxx</groupId>
- <artifactId>maven-jaxx-plugin</artifactId>
+ <artifactId>jaxx-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -699,7 +632,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<configuration>
<entries>
<entry>
@@ -727,6 +660,7 @@
<configuration>
<silent>true</silent>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <useBaseVersion>false</useBaseVersion>
</configuration>
<goals>
<goal>copy-dependencies</goal>
@@ -741,9 +675,9 @@
<!-- *** Build Environment ************************************** -->
<!-- ************************************************************* -->
<scm>
- <connection>scm:svn:http://svn.codelutin.com/isis-fish/trunk</connection>
- <developerConnection>scm:svn:http://svn.codelutin.com/isis-fish/trunk</developerConnection>
- <url>http://svn.codelutin.com/isis-fish/trunk</url>
+ <connection>scm:svn:http://svn.codelutin.com/isis-fish/branches/4.0.1</connection>
+ <developerConnection>scm:svn:http://svn.codelutin.com/isis-fish/branches/4.0.1</developerConnection>
+ <url>http://svn.codelutin.com/isis-fish/branches/4.0.1</url>
</scm>
<repositories>
@@ -810,7 +744,7 @@
<properties>
<!-- pmd config -->
<minimumTokens>100</minimumTokens>
- <targetJdk>1.6</targetJdk>
+ <targetJdk>1.7</targetJdk>
</properties>
<build>
@@ -823,7 +757,7 @@
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<links>
- <link>http://download.oracle.com/javase/6/docs/api/</link>
+ <link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://maven-site.nuiton.org/nuiton-utils/nuiton-utils/apidocs/</link>
<link>http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/</link>
<link>http://maven-site.nuiton.org/nuiton-j2r/apidocs/</link>
Modified: trunk/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/src/license/THIRD-PARTY.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/license/THIRD-PARTY.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,29 +1,26 @@
# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
-# - ANTLR 3 License
-# - ASM License
-# - Apache Software License
-# - Apache Software License Version 2.0
-# - Apache Software License, Version 1.1
-# - Apache Software License, Version 2.0
+# - Apache License 2.0
# - BSD License
-# - BSD licence
-# - BSD style
# - BSD-style license
# - Bouncy Castle License
# - CDDL
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+# - Common Development and Distribution License
# - Common Public License Version 1.0
+# - Eclipse Public License - v 1.0
# - GNU General Public License - Version 2 with the class path exception
+# - GNU General Public License, Version 2 with the Classpath Exception
# - GNU Lesser General Public Licence
+# - GNU Lesser General Public License, version 2.1
+# - GNU Library or Lesser General Public License
# - GPL
+# - GPL (with dual licensing option)
+# - GPLv2
# - GPLv2+CE
-# - ICU License
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
-# - JDom license
-# - Java Transaction API (JTA) License
-# - Jaxen license
+# - LGPL, version 2.1
# - Lesser General Public License (LGPL v. 2.1)
# - Lesser General Public License (LGPL)
# - Lesser General Public License (LGPL) v 3.0
@@ -31,44 +28,28 @@
# - Lesser General Public License (LPGL) v 2.1
# - MIT License
# - MPL 1.1
+# - Modified BSD License
# - Mozilla Public License
+# - New BSD License
# - OpenMap Software License Agreement
# - Revised BSD
-# - Sun's Binary Code License
+# - Sequence Library License
+# - TMate Open Source License (with dual licensing option)
# - The Apache Software License, Version 2.0
# - The H2 License, Version 1.0
-# - http://sqljet.com/
-# - http://svnkit.com/license.html
-# - http://www.trilead.com/Products/Trilead_SSH_for_Java/License/
+# - Trilead Library License
+# - http://jaxen.codehaus.org/license.html
# - license.txt
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Thu Apr 26 16:37:35 CEST 2012
-antlr--antlr--2.7.6=BSD License
-aspectwerkz--aspectwerkz--2.0=GNU Lesser General Public License
-aspectwerkz--aspectwerkz-core--2.0=GNU Lesser General Public License
-aspectwerkz--aspectwerkz-jdk5--2.0=GNU Lesser General Public License
-com.ibm.icu--icu4j--2.6.1=ICU License
-com.sun--tools--1.6.0.16=Sun's Binary Code License
+#Wed Feb 05 11:48:25 CET 2014
commons-jxpath--commons-jxpath--1.3=The Apache Software License, Version 2.0
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
javax.activation--activation--1.1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-javax.transaction--jta--1.1=Java Transaction API (JTA) License
-jaxen--jaxen--1.1.1=Jaxen license
-jdom--jdom--1.0=JDom license
-jrexx--jrexx--1.1.1=Apache Software License
-net.java.dev.jna--jna--3.2.3=Lesser General Public License (LGPL v. 2.1)
-org.antlr--antlr-runtime--3.1.3=ANTLR 3 License
+org.antlr--antlr-runtime--3.4=BSD License
org.nuiton.thirdparty--JRI--0.8-4=Lesser General Public License (LGPL v. 2.1)
org.nuiton.thirdparty--REngine--0.6-1=Lesser General Public License (LGPL v. 2.1)
org.nuiton.thirdparty--Rserve--0.6-1=Lesser General Public License (LGPL v. 2.1)
-org.nuiton.thirdparty--asm--1.5.4-snapshot=ASM License
-org.nuiton.thirdparty--asm-attrs--1.5.4-snapshot=ASM License
-org.nuiton.thirdparty--asm-util--1.5.4-snapshot=ASM License
-qdox--qdox--1.4=Apache Software License, Version 2.0
-trove--trove--1.0.2=Lesser General Public License (LGPL)
-xalan--xalan--2.6.0=Apache Software License Version 2.0
-xerces--xercesImpl--2.6.2=Apache Software License, Version 1.1
Modified: trunk/src/main/assembly/bin.xml
===================================================================
--- trunk/src/main/assembly/bin.xml 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/assembly/bin.xml 2014-04-17 16:48:13 UTC (rev 3969)
@@ -6,7 +6,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 1999 - 2010 Ifremer, CodeLutin
+ Copyright (C) 1999 - 2013 Ifremer, CodeLutin, Eric Chatellier
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -31,12 +31,6 @@
<formats>
<format>zip</format>
</formats>
- <!--dependencySets>
- <dependencySet>
- <outputDirectory>lib</outputDirectory>
- <scope>runtime</scope>
- </dependencySet>
- </dependencySets-->
<fileSets>
<fileSet>
@@ -46,12 +40,6 @@
<include>*.jar</include>
</includes>
</fileSet>
- <!-- <fileSet>
- <directory>target</directory>
- <includes>
- <include>*.jar</include>
- </includes>
- </fileSet> -->
<fileSet>
<includes>
<include>README*</include>
@@ -66,8 +54,6 @@
<includes>
<include>isisfish.sh</include>
<include>isisfish.bat</include>
- <include>isisfish64.sh</include>
- <include>isisfish64.bat</include>
</includes>
</fileSet>
<fileSet>
@@ -83,21 +69,5 @@
<file>
<source>target/${artifact.artifactId}-${artifact.version}.jar</source>
</file>
- <file>
- <source>src/main/assembly/x86/jri.dll</source>
- <outputDirectory>jri</outputDirectory>
- </file>
- <file>
- <source>src/main/assembly/x86/libjri.so</source>
- <outputDirectory>jri</outputDirectory>
- </file>
- <file>
- <source>src/main/assembly/x64/jri.dll</source>
- <outputDirectory>jri64</outputDirectory>
- </file>
- <file>
- <source>src/main/assembly/x64/libjri.so</source>
- <outputDirectory>jri64</outputDirectory>
- </file>
</files>
</assembly>
Modified: trunk/src/main/assembly/isisfish-log4j.properties
===================================================================
--- trunk/src/main/assembly/isisfish-log4j.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/assembly/isisfish-log4j.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
# $Id$
# $HeadURL$
# %%
-# Copyright (C) 2011 - 2012 Ifremer, CodeLutin, Chatellier Eric
+# Copyright (C) 2011 - 2013 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
Modified: trunk/src/main/assembly/isisfish.bat
===================================================================
--- trunk/src/main/assembly/isisfish.bat 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/assembly/isisfish.bat 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,4 +5,4 @@
rem SET PATH=%PATH%;%R_HOME%\bin\i386
echo [Script] Isis starting...
-java -Xmx900M -Djava.library.path=jri -DR.type=jni -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
+java -Xmx900M -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
Modified: trunk/src/main/assembly/isisfish.sh
===================================================================
--- trunk/src/main/assembly/isisfish.sh 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/assembly/isisfish.sh 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,6 +1,5 @@
#!/bin/bash
MEMORY="-Xmx1024M"
-JRIARGS="-Djava.library.path=jri -DR.type=jni"
-java $MEMORY $JRIARGS -jar ${project.build.finalName}.${project.packaging} $* &> debug.txt
+java $MEMORY -jar ${project.build.finalName}.${project.packaging} $* &> debug.txt
Deleted: trunk/src/main/assembly/isisfish64.bat
===================================================================
--- trunk/src/main/assembly/isisfish64.bat 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/assembly/isisfish64.bat 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,8 +0,0 @@
-@echo off
-
-rem Uncomment following 2 lines to easy configure R for ISIS-Fish
-rem SET R_HOME=C:\Program Files\R\R-2.14.1
-rem SET PATH=%PATH%;%R_HOME%\bin\x64
-
-echo [Script] Isis starting...
-java -Xmx1024M -Djava.library.path=jri64 -DR.type=jni -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
Deleted: trunk/src/main/assembly/isisfish64.sh
===================================================================
--- trunk/src/main/assembly/isisfish64.sh 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/assembly/isisfish64.sh 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-MEMORY="-Xmx1024M"
-JRIARGS="-Djava.library.path=jri64 -DR.type=jni"
-
-java $MEMORY $JRIARGS -jar ${project.build.finalName}.${project.packaging} $* &> debug.txt
Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,8 +25,8 @@
package fr.ifremer.isisfish;
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
import java.io.File;
import java.net.MalformedURLException;
@@ -43,7 +43,8 @@
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.nuiton.math.matrix.DoubleBigVector;
-import org.nuiton.util.ApplicationConfig;
+import org.nuiton.config.ApplicationConfig;
+import org.nuiton.config.ConfigOptionDef;
import org.nuiton.util.StringUtil;
import org.nuiton.util.Version;
@@ -76,37 +77,39 @@
/**
* Config step after init.
*
- * @see org.nuiton.util.ApplicationConfig.Action.Step
+ * @see org.nuiton.config.ApplicationConfig.Action.Step
*/
public static final int STEP_AFTER_INIT = 0;
/**
* Config step after init vcs.
*
- * @see org.nuiton.util.ApplicationConfig.Action.Step
+ * @see org.nuiton.config.ApplicationConfig.Action.Step
*/
public static final int STEP_AFTER_INIT_VCS = 1;
/**
* Config step after ui.
*
- * @see org.nuiton.util.ApplicationConfig.Action.Step
+ * @see org.nuiton.config.ApplicationConfig.Action.Step
*/
public static final int STEP_AFTER_UI = 2;
/**
* Config step before exit.
*
- * @see org.nuiton.util.ApplicationConfig.Action.Step
+ * @see org.nuiton.config.ApplicationConfig.Action.Step
*/
public static final int STEP_BEFORE_EXIT = 3;
/**
* La version du logiciel constitue de l.d.a.r
- * <li>l: le numero de version du logiciel
- * <li>d: le numero de version du schema de la base de donnees
- * <li>a: le numero de version de l'api des scripts
- * <li>r: le numero de version de de l'interface graphique ou autre modif mineur
+ * <ul>
+ * <li>l: le numero de version du logiciel</li>
+ * <li>d: le numero de version du schema de la base de donnees</li>
+ * <li>a: le numero de version de l'api des scripts</li>
+ * <li>r: le numero de version de de l'interface graphique ou autre modif mineur</li>
+ * </ul>
* <p>
* lors de l'increment de l, d, a et r sont remis a 0
* lors de l'increment de d, a et r sont remis a 0
@@ -117,7 +120,7 @@
* migration de donnees demande automatiquement un changement de version
* d'application.
*/
- protected final static Version version = new Version(4, 2, 1, 3);
+ protected final static Version version = new Version(4, 3, 0, 0);
protected final static Version majorVersion = new Version(version.getNumber(0));
protected final static Version databaseVersion = new Version(
@@ -157,7 +160,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 */
@@ -244,6 +247,7 @@
*
* Les valeurs acceptées sont :
* - file
+ * - FS
* - socket
* - no
*
@@ -274,10 +278,6 @@
if (control != null) {
result = new File(result, control.getId());
}
-
- if (!result.exists()) {
- result.mkdirs();
- }
return result;
}
@@ -921,7 +921,7 @@
ClassLoader parent = Thread.currentThread().getContextClassLoader();
result = new URLClassLoader(cp, parent);
} catch (MalformedURLException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.load.classloader", f, eee.getMessage()), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.load.classloader", f, eee.getMessage()), eee);
}
}
return result;
@@ -960,105 +960,105 @@
*
* Set it protected to force getOption() call.
*/
- public static enum Option implements OptionDef {
+ public static enum Option implements ConfigOptionDef {
- CONFIG_FILE(CONFIG_FILE_NAME, n_("isisfish.config.main.configFileName.description"), CONFIG_FILENAME),
- ISIS_HOME_DIRECTORY("isis.home.directory", n_("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + majorVersion.toString()),
- 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"),
- BACKUP_DIRECTORY("backup.directory", n_("isisfish.config.main.defaultBackupDirectory.description"), "${isis.home.directory}" + File.separator + "isis-backup"),
+ CONFIG_FILE(CONFIG_FILE_NAME, n("isisfish.config.main.configFileName.description"), CONFIG_FILENAME),
+ ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + majorVersion.toString()+"beta"),
+ 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"),
+ BACKUP_DIRECTORY("backup.directory", n("isisfish.config.main.defaultBackupDirectory.description"), "${isis.home.directory}" + File.separator + "isis-backup"),
- DEFAULT_EXPORT_NAMES("default.export.names", n_("isisfish.config.main.defaultExportNames.description"), ""),
- DEFAULT_RESULT_NAMES("default.result.names", n_("isisfish.config.main.defaultResultNames.description"), ""),
- DEFAULT_MAP_FILENAME("default.map.filename", n_("isisfish.config.main.defaultMapFile.description"), "maps/vmap_area_thin.shp"),
- DEFAULT_TAG_VALUE("default.tagvalue", n_("isisfish.config.main.defaultTagValue.description"), ""),
- ENCODING("encoding", n_("isisfish.config.main.encoding.description"), "UTF-8"),
- JAVADOC_URL("javadoc.url", n_("isisfish.config.main.javadocURL.description"), "http://www.isis-fish.org/apidocs/"),
+ DEFAULT_EXPORT_NAMES("default.export.names", n("isisfish.config.main.defaultExportNames.description"), ""),
+ DEFAULT_RESULT_NAMES("default.result.names", n("isisfish.config.main.defaultResultNames.description"), ""),
+ DEFAULT_MAP_FILENAME("default.map.filename", n("isisfish.config.main.defaultMapFile.description"), "maps/vmap_area_thin.shp"),
+ DEFAULT_TAG_VALUE("default.tagvalue", n("isisfish.config.main.defaultTagValue.description"), ""),
+ ENCODING("encoding", n("isisfish.config.main.encoding.description"), "UTF-8"),
+ JAVADOC_URL("javadoc.url", n("isisfish.config.main.javadocURL.description"), "http://www.isis-fish.org/apidocs/"),
- SIMULATOR_CLASSFILE("simulator.classfile", n_("isisfish.config.main.defaultSimulator.description"), "DefaultSimulator.java"),
+ SIMULATOR_CLASSFILE("simulator.classfile", n("isisfish.config.main.defaultSimulator.description"), "DefaultSimulator.java"),
/** prevu pour l'architecture de lancement en plugin: local, isis-server, caparmor, ... */
- SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".3", n_("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
- SIMULATOR_LAUNCHER2(SimulationService.SIMULATION_LAUNCHER + ".1", n_("isisfish.config.main.subSimulator.description"), SubProcessSimulationLauncher.class.getName()),
- SIMULATOR_LAUNCHER_REMOTE(SimulationService.SIMULATION_LAUNCHER + ".2", n_("isisfish.config.main.remoteCaparmor.description"), SSHSimulatorLauncher.class.getName()),
+ SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".3", n("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
+ SIMULATOR_LAUNCHER2(SimulationService.SIMULATION_LAUNCHER + ".1", n("isisfish.config.main.subSimulator.description"), SubProcessSimulationLauncher.class.getName()),
+ SIMULATOR_LAUNCHER_REMOTE(SimulationService.SIMULATION_LAUNCHER + ".2", n("isisfish.config.main.remoteCaparmor.description"), SSHSimulatorLauncher.class.getName()),
/** Nombre maximum de thread de simulation in process. */
- SIMULATOR_IN_MAXTHREADS("simulation.in.max.threads", n_("isisfish.config.main.simulation.in.max.threads.description"), "1"),
+ SIMULATOR_IN_MAXTHREADS("simulation.in.max.threads", n("isisfish.config.main.simulation.in.max.threads.description"), "1"),
/** Nombre max de sous processus à lancer (-1 = pas de limite). */
- SIMULATOR_SUB_MAXPROCESS("simulation.sub.max.process", n_("isisfish.config.main.simulation.sub.max.process.description"), "-1"),
+ SIMULATOR_SUB_MAXPROCESS("simulation.sub.max.process", n("isisfish.config.main.simulation.sub.max.process.description"), "-1"),
/** Mémoire max (Xmx) allouée aux sous processus. */
- SIMULATOR_SUB_MAXMEMORY("simulation.sub.max.memory", n_("isisfish.config.main.simulation.sub.max.memory.description"), "1024M"),
+ SIMULATOR_SUB_MAXMEMORY("simulation.sub.max.memory", n("isisfish.config.main.simulation.sub.max.memory.description"), "1024M"),
/** Serveur accessible par ssh : address */
- SIMULATOR_SSH_SERVER("simulation.ssh.server", n_("isisfish.config.main.simulation.ssh.server.description"), "caparmor-sftp"),
+ SIMULATOR_SSH_SERVER("simulation.ssh.server", n("isisfish.config.main.simulation.ssh.server.description"), "caparmor-sftp"),
/** Serveur accessible par ssh : login */
- SIMULATOR_SSH_USER_NAME("simulation.ssh.username", n_("isisfish.config.main.simulation.ssh.username.description"), ""),
+ SIMULATOR_SSH_USER_NAME("simulation.ssh.username", n("isisfish.config.main.simulation.ssh.username.description"), ""),
/** Serveur accessible par ssh : user home directory */
- SIMULATOR_SSH_USER_HOME("simulation.ssh.userhome", n_("isisfish.config.main.simulation.ssh.userhome.description"), ""),
+ SIMULATOR_SSH_USER_HOME("simulation.ssh.userhome", n("isisfish.config.main.simulation.ssh.userhome.description"), ""),
/** Serveur accessible par ssh : remote data path */
- SIMULATOR_SSH_DATAPATH("simulation.ssh.datapath", n_("isisfish.config.main.simulation.ssh.datapath.description"), "isis-fish-" + majorVersion.toString() + "/isis-database"),
+ SIMULATOR_SSH_DATAPATH("simulation.ssh.datapath", n("isisfish.config.main.simulation.ssh.datapath.description"), "isis-fish-" + majorVersion.toString() + "/isis-database"),
/** Serveur accessible par ssh : remote isis home install */
- SIMULATOR_SSH_ISIS_HOME("simulation.ssh.isis.home", n_("isisfish.config.main.simulation.ssh.isis.home.description"), "/home3/caparmor/poussin/isis-fish-" + IsisConfig.getApiVersion()),
+ SIMULATOR_SSH_ISIS_HOME("simulation.ssh.isis.home", n("isisfish.config.main.simulation.ssh.isis.home.description"), "/home3/caparmor/poussin/isis-fish-" + IsisConfig.getApiVersion()),
/** Serveur accessible par ssh : remote tmp path */
- SIMULATOR_SSH_TMPPATH("simulation.ssh.tmppath", n_("isisfish.config.main.simulation.ssh.tmppath.description"), "isis-tmp"),
+ SIMULATOR_SSH_TMPPATH("simulation.ssh.tmppath", n("isisfish.config.main.simulation.ssh.tmppath.description"), "isis-tmp"),
/** Serveur accessible par SSH : emplacement de Java (full path) */
- SIMULATOR_SSH_JAVAPATH("simulation.ssh.javapath64", n_("isisfish.config.main.simulation.ssh.javapath.description"), "/home3/caparmor/poussin/jdk64/bin/java"),
+ SIMULATOR_SSH_JAVAPATH("simulation.ssh.javapath64", n("isisfish.config.main.simulation.ssh.javapath.description"), "/home3/caparmor/poussin/jdk64/bin/java"),
/** Serveur accessible par SSH : emplacement des executables pbs */
- SIMULATOR_SSH_PBSBINPATH("simulation.ssh.pbsbinpath", n_("isisfish.config.main.simulation.ssh.pbsbinpath.description"), "/usr/pbs/bin"),
+ SIMULATOR_SSH_PBSBINPATH("simulation.ssh.pbsbinpath", n("isisfish.config.main.simulation.ssh.pbsbinpath.description"), "/usr/pbs/bin"),
/** Serveur accessible par SSH : option de l'executable qsub (defaut to -m n = no mail) */
- SIMULATOR_SSH_PBSQSUBOPTIONS("simulation.ssh.pbsqsuboptions", n_("isisfish.config.main.simulation.ssh.pbsqsuboptions.description"), "-m n"),
+ SIMULATOR_SSH_PBSQSUBOPTIONS("simulation.ssh.pbsqsuboptions", n("isisfish.config.main.simulation.ssh.pbsqsuboptions.description"), "-m n"),
/** Serveur accessible par SSH : interval de check du fichier de control */
- SIMULATOR_SSH_CONTROLCHECKINTERVAL("simulation.ssh.control.check.interval", n_("isisfish.config.main.simulation.ssh.control.check.interval.description"), "120"),
+ SIMULATOR_SSH_CONTROLCHECKINTERVAL("simulation.ssh.control.check.interval", n("isisfish.config.main.simulation.ssh.control.check.interval.description"), "120"),
/** Serveur accessible par SSH : nombre de thread au maximum a utilise simultanement */
- SIMULATOR_SSH_MAXTHREADS("simulation.ssh.max.threads", n_("isisfish.config.main.simulation.ssh.max.threads.description"), "1"),
+ SIMULATOR_SSH_MAXTHREADS("simulation.ssh.max.threads", n("isisfish.config.main.simulation.ssh.max.threads.description"), "1"),
/** Serveur accessible par SSH : mémoire (Xmx) allouée pour les process java sur caparmor */
- SIMULATOR_SSH_MAXMEMORY("simulation.ssh.max.memory", n_("isisfish.config.main.simulation.ssh.max.memory.description"), "2000M"),
+ SIMULATOR_SSH_MAXMEMORY("simulation.ssh.max.memory", n("isisfish.config.main.simulation.ssh.max.memory.description"), "2000M"),
/** Application locale (for i18n init). */
- LOCALE("locale", n_("isisfish.config.main.locale.description"), "fr_FR"),
- SIMULATION_SHOW_ONLY_ERROR("simulationShowOnlyError", n_("isisfish.config.main.simulationShowOnlyError.description"), "false"),
+ LOCALE("locale", n("isisfish.config.main.locale.description"), "fr_FR"),
+ SIMULATION_SHOW_ONLY_ERROR("simulationShowOnlyError", n("isisfish.config.main.simulationShowOnlyError.description"), "false"),
/** Perform ui launch option. */
- LAUNCH_UI("launch.ui", n_("isisfish.config.main.launchUI.description"), "true"),
+ LAUNCH_UI("launch.ui", n("isisfish.config.main.launchUI.description"), "true"),
/** Perform data migration option. */
- PERFORM_MIGRATION("perform.migration", n_("isisfish.config.main.performmigration.description"), "true"),
+ PERFORM_MIGRATION("perform.migration", n("isisfish.config.main.performmigration.description"), "true"),
/** Perform vcs update option. */
- PERFORM_VCS_UPDATE("perform.vcsupdate", n_("isisfish.config.main.performvcsupdate.description"), "true"),
+ PERFORM_VCS_UPDATE("perform.vcsupdate", n("isisfish.config.main.performvcsupdate.description"), "true"),
/** Perform cron option. */
- PERFORM_CRON("perform.cron", n_("isisfish.config.main.performcron.description"), "true"),
+ PERFORM_CRON("perform.cron", n("isisfish.config.main.performcron.description"), "true"),
/** Auto configure script parameter when addind it */
- SIMULATION_SCRIPT_AUTOCONFIG("script.autoconfig", n_("isisfish.config.main.script.autoconfig.description"), "true"),
+ SIMULATION_SCRIPT_AUTOCONFIG("script.autoconfig", n("isisfish.config.main.script.autoconfig.description"), "true"),
/** Database lock mode (h2).*/
- DATABASE_LOCK_MODE("database.lockmode", n_("isisfish.config.database.lockmode.description"), "file"),
+ DATABASE_LOCK_MODE("database.lockmode", n("isisfish.config.database.lockmode.description"), "file"),
// SSH (global, for both VCS and caparmor)
- SSH_KEY_FILE("ssh.key.file", n_("isisfish.config.ssh.key.file.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
+ SSH_KEY_FILE("ssh.key.file", n("isisfish.config.ssh.key.file.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
- DATABASE_DIRECTORY("database.directory", n_("isisfish.config.vcs.localDatabasePath.description"), "${isis.home.directory}" + File.separator + "isis-database"),
- VCS_TYPE(VCS.VCS_TYPE, n_("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
- VCS_PROTOCOL(VCS.VCS_PROTOCOL, n_("isisfish.config.vcs.protocol.description"), "http"),
- VCS_USER_NAME(VCS.VCS_USER_NAME, n_("isisfish.config.vcs.userName.description"), ""),
- VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, n_("isisfish.config.vcs.userPassword.description"), ""),
- VCS_HOST_NAME(VCS.VCS_HOST_NAME, n_("isisfish.config.vcs.hostName.description"), "svn.forge.codelutin.com"),
- VCS_PATH(VCS.VCS_PATH, n_("isisfish.config.vcs.remotePath.description"), "/svn/isis-fish-data"),
+ DATABASE_DIRECTORY("database.directory", n("isisfish.config.vcs.localDatabasePath.description"), "${isis.home.directory}" + File.separator + "isis-database"),
+ VCS_TYPE(VCS.VCS_TYPE, n("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
+ VCS_PROTOCOL(VCS.VCS_PROTOCOL, n("isisfish.config.vcs.protocol.description"), "http"),
+ VCS_USER_NAME(VCS.VCS_USER_NAME, n("isisfish.config.vcs.userName.description"), ""),
+ VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, n("isisfish.config.vcs.userPassword.description"), ""),
+ VCS_HOST_NAME(VCS.VCS_HOST_NAME, n("isisfish.config.vcs.hostName.description"), "svn.forge.codelutin.com"),
+ VCS_PATH(VCS.VCS_PATH, n("isisfish.config.vcs.remotePath.description"), "/svn/isis-fish-data"),
// community vsc
- COMMUNITY_DATABASE_DIRECTORY("community.database.directory", n_("isisfish.config.vcs.localCommunityDatabasePath.description"), "${isis.home.directory}" + File.separator + "isis-community-database"),
- VCS_COMMUNITY_TYPE("vcs.community.type", n_("isisfish.config.vcs.community.type.description"), VCS.TYPE_SVN),
- VCS_COMMUNITY_PROTOCOL("vcs.community.protocole", n_("isisfish.config.vcs.community.protocol.description"), "http"),
- VCS_COMMUNITY_USER_NAME("vcs.community.username", n_("isisfish.config.vcs.community.username.description"), ""),
- VCS_COMMUNITY_PASSWORD("vcs.community.password", n_("isisfish.config.vcs.community.password.description"), ""),
- VCS_COMMUNITY_HOST_NAME("vcs.community.hostname", n_("isisfish.config.vcs.community.hostname.description"), "svn.forge.codelutin.com"),
- VCS_COMMUNITY_PATH("vcs.community.path", n_("isisfish.config.vcs.community.remotepath.description"), "/svn/isis-fish-community"),
+ COMMUNITY_DATABASE_DIRECTORY("community.database.directory", n("isisfish.config.vcs.localCommunityDatabasePath.description"), "${isis.home.directory}" + File.separator + "isis-community-database"),
+ VCS_COMMUNITY_TYPE("vcs.community.type", n("isisfish.config.vcs.community.type.description"), VCS.TYPE_SVN),
+ VCS_COMMUNITY_PROTOCOL("vcs.community.protocole", n("isisfish.config.vcs.community.protocol.description"), "http"),
+ VCS_COMMUNITY_USER_NAME("vcs.community.username", n("isisfish.config.vcs.community.username.description"), ""),
+ VCS_COMMUNITY_PASSWORD("vcs.community.password", n("isisfish.config.vcs.community.password.description"), ""),
+ VCS_COMMUNITY_HOST_NAME("vcs.community.hostname", n("isisfish.config.vcs.community.hostname.description"), "svn.forge.codelutin.com"),
+ VCS_COMMUNITY_PATH("vcs.community.path", n("isisfish.config.vcs.community.remotepath.description"), "/svn/isis-fish-community"),
// misc options
- USER_NAME("user.name", n_("isisfish.config.main.userName.description"), System.getProperty("user.name")),
- SMTP_SERVER("smtpServer", n_("isisfish.config.main.smtpServer.description"), "smtp"),
- USER_MAIL("userMail", n_("isisfish.config.main.userMail.description"), USER_NAME.key + "@" + VCS_HOST_NAME.key),
- MAPPED_RESULT_MATRIX_VECTOR_CLASS("mapped.result.matrix.vector.class", n_("isisfish.config.mapped.result.matrix.vector.class.description"), DoubleBigVector.class.getName()),
- CACHE_BACKEND_FACTORY_CLASS("cache.backend.factory.class", n_("isisfish.config.cache.backend.factory.class.description"), IsisCacheBackendOnGuava.IsisCacheBackendOnGuavaFactory.class.getName());
+ USER_NAME("user.name", n("isisfish.config.main.userName.description"), System.getProperty("user.name")),
+ SMTP_SERVER("smtpServer", n("isisfish.config.main.smtpServer.description"), "smtp"),
+ USER_MAIL("userMail", n("isisfish.config.main.userMail.description"), USER_NAME.key + "@" + VCS_HOST_NAME.key),
+ MAPPED_RESULT_MATRIX_VECTOR_CLASS("mapped.result.matrix.vector.class", n("isisfish.config.mapped.result.matrix.vector.class.description"), DoubleBigVector.class.getName()),
+ CACHE_BACKEND_FACTORY_CLASS("cache.backend.factory.class", n("isisfish.config.cache.backend.factory.class.description"), IsisCacheBackendOnGuava.IsisCacheBackendOnGuavaFactory.class.getName());
public String key;
public String description;
@@ -1083,7 +1083,7 @@
*/
@Override
public String getDescription() {
- return _(description);
+ return t(description);
}
/*
@@ -1148,49 +1148,49 @@
//////////////////////////////////////////////////
public static enum Action {
- HELP(n_("Show help"), OtherAction.class.getName() + "#help", "-h", "--help"),
- VERSION(n_("Show version"), OtherAction.class.getName() + "#version", "-v", "--version"),
+ HELP(n("Show help"), OtherAction.class.getName() + "#help", "-h", "--help"),
+ VERSION(n("Show version"), OtherAction.class.getName() + "#version", "-v", "--version"),
- IMPORT_EXPORT(n_(""), ImportAction.class.getName() + "#importExport", "--importExport"),
- IMPORT_RULE(n_(""), ImportAction.class.getName() + "#importRule", "--importRule"),
- IMPORT_SCRIPT(n_("Import one java file script source"), ImportAction.class.getName() + "#importScript", "--importScript"),
- IMPORT_SIMULATION_PLAN(n_(""), ImportAction.class.getName() + "#importSimulationPlan", "--importSimulationPlan"),
- IMPORT_SIMULATOR(n_(""), ImportAction.class.getName() + "#importSimulator", "--importSimulator"),
- IMPORT_FORMULA(n_(""), ImportAction.class.getName() + "#importFormula", "--importFormula"),
- IMPORT_REGION(n_(""), ImportAction.class.getName() + "#importRegion", "--importRegion"),
- IMPORT_REGION_AND_RENAME(n_(""), ImportAction.class.getName() + "#importRegionAndRename", "--importRegionAndRename"),
- IMPORT_SIMULATION(n_(""), ImportAction.class.getName() + "#importSimulation", "--importSimulation"),
- IMPORT_SCRIPT_MODULE(n_("Import zipped file containing all scripts directory structure"), ImportAction.class.getName() + "#importScriptModule", "--importScriptModule"),
+ IMPORT_EXPORT(n(""), ImportAction.class.getName() + "#importExport", "--importExport"),
+ IMPORT_RULE(n(""), ImportAction.class.getName() + "#importRule", "--importRule"),
+ IMPORT_SCRIPT(n("Import one java file script source"), ImportAction.class.getName() + "#importScript", "--importScript"),
+ IMPORT_SIMULATION_PLAN(n(""), ImportAction.class.getName() + "#importSimulationPlan", "--importSimulationPlan"),
+ IMPORT_SIMULATOR(n(""), ImportAction.class.getName() + "#importSimulator", "--importSimulator"),
+ IMPORT_FORMULA(n(""), ImportAction.class.getName() + "#importFormula", "--importFormula"),
+ IMPORT_REGION(n(""), ImportAction.class.getName() + "#importRegion", "--importRegion"),
+ IMPORT_REGION_AND_RENAME(n(""), ImportAction.class.getName() + "#importRegionAndRename", "--importRegionAndRename"),
+ IMPORT_SIMULATION(n(""), ImportAction.class.getName() + "#importSimulation", "--importSimulation"),
+ IMPORT_SCRIPT_MODULE(n("Import zipped file containing all scripts directory structure"), ImportAction.class.getName() + "#importScriptModule", "--importScriptModule"),
- LIST_EXPORT(n_(""), ExportAction.class.getName() + "#listExport", "--listExport"),
- LIST_RULE(n_(""), ExportAction.class.getName() + "#listRule", "--listRule"),
- LIST_SCRIPT(n_(""), ExportAction.class.getName() + "#listScript", "--listScript"),
- LIST_SIMULATION_PLAN(n_(""), ExportAction.class.getName() + "#listSimulationPlan", "--listSimulationPlan"),
- LIST_SIMULATOR(n_(""), ExportAction.class.getName() + "#listSimulator", "--listSimulator"),
- LIST_FORMULA(n_(""), ExportAction.class.getName() + "#listFormula", "--listFormula"),
- LIST_REGION(n_(""), ExportAction.class.getName() + "#listRegion", "--listRegion"),
- LIST_SIMULATION(n_(""), ExportAction.class.getName() + "#listSimulation", "--listSimulation"),
+ LIST_EXPORT(n(""), ExportAction.class.getName() + "#listExport", "--listExport"),
+ LIST_RULE(n(""), ExportAction.class.getName() + "#listRule", "--listRule"),
+ LIST_SCRIPT(n(""), ExportAction.class.getName() + "#listScript", "--listScript"),
+ LIST_SIMULATION_PLAN(n(""), ExportAction.class.getName() + "#listSimulationPlan", "--listSimulationPlan"),
+ LIST_SIMULATOR(n(""), ExportAction.class.getName() + "#listSimulator", "--listSimulator"),
+ LIST_FORMULA(n(""), ExportAction.class.getName() + "#listFormula", "--listFormula"),
+ LIST_REGION(n(""), ExportAction.class.getName() + "#listRegion", "--listRegion"),
+ LIST_SIMULATION(n(""), ExportAction.class.getName() + "#listSimulation", "--listSimulation"),
- EXPORT_EXPORT(n_(""), ExportAction.class.getName() + "#exportExport", "--exportExport"),
- EXPORT_RULE(n_(""), ExportAction.class.getName() + "#exportRule", "--exportRule"),
- EXPORT_SCRIPT(n_(""), ExportAction.class.getName() + "#exportScript", "--exportScript"),
- EXPORT_SIMULATION_PLAN(n_(""), ExportAction.class.getName() + "#exportSimulationPlan", "--exportSimulationPlan"),
- EXPORT_SIMULATOR(n_(""), ExportAction.class.getName() + "#exportSimulator", "--exportSimulator"),
- EXPORT_FORMULA(n_(""), ExportAction.class.getName() + "#exportFormula", "--exportFormula"),
- EXPORT_REGION(n_(""), ExportAction.class.getName() + "#exportRegion", "--exportRegion"),
- EXPORT_SIMULATION(n_(""), ExportAction.class.getName() + "#exportSimulation", "--exportSimulation"),
+ EXPORT_EXPORT(n(""), ExportAction.class.getName() + "#exportExport", "--exportExport"),
+ EXPORT_RULE(n(""), ExportAction.class.getName() + "#exportRule", "--exportRule"),
+ EXPORT_SCRIPT(n(""), ExportAction.class.getName() + "#exportScript", "--exportScript"),
+ EXPORT_SIMULATION_PLAN(n(""), ExportAction.class.getName() + "#exportSimulationPlan", "--exportSimulationPlan"),
+ EXPORT_SIMULATOR(n(""), ExportAction.class.getName() + "#exportSimulator", "--exportSimulator"),
+ EXPORT_FORMULA(n(""), ExportAction.class.getName() + "#exportFormula", "--exportFormula"),
+ EXPORT_REGION(n(""), ExportAction.class.getName() + "#exportRegion", "--exportRegion"),
+ EXPORT_SIMULATION(n(""), ExportAction.class.getName() + "#exportSimulation", "--exportSimulation"),
- VCS_SSH_CREATE_KEY(n_(""), VCSAction.class.getName() + "#sshCreateKey", "--sshCreateKey"),
- VCS_UPDATE(n_(""), VCSAction.class.getName() + "#vcsUpdate", "--vcsUpdate"),
- VCS_ADD(n_(""), VCSAction.class.getName() + "#vcsAdd", "--vcsAdd"),
- VCS_REMOVE(n_(""), VCSAction.class.getName() + "#vcsRemove", "--vcsRemove"),
- VCS_COMMIT(n_(""), VCSAction.class.getName() + "#vcsCommit", "--vcsCommit"),
+ VCS_SSH_CREATE_KEY(n(""), VCSAction.class.getName() + "#sshCreateKey", "--sshCreateKey"),
+ VCS_UPDATE(n(""), VCSAction.class.getName() + "#vcsUpdate", "--vcsUpdate"),
+ VCS_ADD(n(""), VCSAction.class.getName() + "#vcsAdd", "--vcsAdd"),
+ VCS_REMOVE(n(""), VCSAction.class.getName() + "#vcsRemove", "--vcsRemove"),
+ VCS_COMMIT(n(""), VCSAction.class.getName() + "#vcsCommit", "--vcsCommit"),
- SIMULATE_WITH_REGION(n_(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"),
- SIMULATE_WITH_SIMULATION(n_(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"),
- SIMULATE_WITH_SIMULATION_AND_SCRIPT(n_(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"),
- SIMULATE_REMOTELLY(n_(""), SimulationAction.class.getName() + "#simulateRemotelly", "--simulateRemotelly"),
- SIMULATE_REMOTELLY_WITH_PRESCRIPT(n_(""), SimulationAction.class.getName() + "#simulateRemotellyWithPreScript", "--simulateRemotellyWithPreScript");
+ SIMULATE_WITH_REGION(n(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"),
+ SIMULATE_WITH_SIMULATION(n(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"),
+ SIMULATE_WITH_SIMULATION_AND_SCRIPT(n(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"),
+ SIMULATE_REMOTELLY(n(""), SimulationAction.class.getName() + "#simulateRemotelly", "--simulateRemotelly"),
+ SIMULATE_REMOTELLY_WITH_PRESCRIPT(n(""), SimulationAction.class.getName() + "#simulateRemotellyWithPreScript", "--simulateRemotellyWithPreScript");
protected String description;
protected String action;
@@ -1203,7 +1203,7 @@
}
public String getDescription() {
- return _(description);
+ return t(description);
}
public String getAction() {
Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2005 - 2012 Ifremer, CodeLutin, Chatellier Eric
+ * Copyright (C) 2005 - 2013 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,7 +25,7 @@
package fr.ifremer.isisfish;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.awt.Dimension;
@@ -58,7 +58,6 @@
import org.nuiton.i18n.init.DefaultI18nInitializer;
import org.nuiton.math.matrix.MatrixFactory;
import org.nuiton.topia.TopiaException;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.Version;
import org.nuiton.widget.SwingSession;
@@ -67,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;
@@ -93,7 +94,7 @@
*
* Created: 1 aout 2005 18:37:25 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
* @author chemit
* @version $Revision$
*
@@ -123,23 +124,24 @@
// permet de faire fonctionner la compilation en webstart
System.setSecurityManager(null);
+ // set Rtype in jni mode
+ System.setProperty("R.type", "jni");
+
// i18n is not inited here
if (log.isInfoEnabled()) {
log.info("Starting Isis-Fish " + IsisConfig.getVersion() + " with args : " + java.util.Arrays.toString(args));
log.info("Date: " + SimpleDateFormat.getInstance().format(new java.util.Date()));
log.info("Java version: " + System.getProperty("java.runtime.version") + ", " + System.getProperty("java.vm.name"));
- log.info("System arch: " + System.getProperty("os.arch"));
- log.info("R_HOME: " + System.getenv("R_HOME") + ", R.type: " + System.getProperty("R.type"));
+ log.info("Plaform/arch: " + System.getProperty("os.name") + "/" + System.getProperty("os.arch"));
+ log.info("R_HOME: " + System.getenv("R_HOME"));
log.info("PATH: " + System.getenv("PATH"));
- log.info("java.library.path: " + System.getProperty("java.library.path"));
-
}
// initialisation de l'application
init(args);
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.launch.init.done", config.getElapsedTimeAsString()));
+ log.debug(t("isisfish.launch.init.done", config.getElapsedTimeAsString()));
}
// action after init
@@ -154,14 +156,14 @@
initCommunityVCS();
checkDuplicatedFiles();
} catch (Exception eee) {
- log.warn(_("Error during vcs initialisation"), eee);
+ log.warn(t("Error during vcs initialisation"), eee);
}
// nuiton matrix semantics mapper
MatrixFactory.setSemanticMapper(new IsisMatrixSemanticMapper());
if (log.isInfoEnabled()) {
- log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
+ log.info(t("isisfish.launching", config.getElapsedTimeAsString()));
}
// after init vcs and local data
@@ -263,14 +265,14 @@
public boolean canDoAction(VCS vcs, VCSActionEvent action, File... files) {
boolean result = true;
if (action == VCSActionEvent.SWITCH_PROTOCOL) {
- result = ask(_("isisfish.vcs.switchprotocol.confirm"));
+ result = ask(t("isisfish.vcs.switchprotocol.confirm"));
if (!result) {
// l'utilisateur ne souhaite pas changer de protocol,
// on force le repo en read-only pour eviter les erreurs
vcs.setWriteable(false);
}
} else if (action == VCSActionEvent.SWITCH) {
- result = ask(_("isisfish.vcs.switchversion.confirm", IsisConfig.getVersion()));
+ result = ask(t("isisfish.vcs.switchversion.confirm", IsisConfig.getVersion()));
if (!result) {
// l'utilisateur ne souhaite pas changer de branche,
// on force le repo en read-only pour eviter les erreurs
@@ -288,7 +290,7 @@
}
// FIXME maybe make a JAXX UI ?
- JLabel labelModifiedFiles = new JLabel(_("isisfish.vcs.updaterepository.confirm"));
+ JLabel labelModifiedFiles = new JLabel(t("isisfish.vcs.updaterepository.confirm"));
JTextArea areaModifiedFiles = new JTextArea(modifiedFiles);
areaModifiedFiles.setEditable(false);
areaModifiedFiles.setAutoscrolls(true);
@@ -338,28 +340,28 @@
// Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
File local = config.getDatabaseDirectory();
if (log.isInfoEnabled()) {
- log.info(_("Check state of local repository: %s", local));
+ log.info(t("Check state of local repository: %s", local));
}
if (local.exists()) {
if (!vcs.isValidLocalRepository()) {
if (log.isInfoEnabled()) {
- log.info(_("Local repository exists but it's not valide for current vcs: %s",
+ log.info(t("Local repository exists but it's not valide for current vcs: %s",
config.getOption(VCS.VCS_TYPE)));
}
- if (ask(_("isisfish.vcs.init.wrongprotocol", local))) {
+ 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()));
if (log.isInfoEnabled()) {
- log.info(_("Rename data directory to %s", localBackup));
+ log.info(t("Rename data directory to %s", localBackup));
}
if (!local.renameTo(localBackup)) {
throw new IsisFishRuntimeException(
"Can't rename local repository that don't use svn");
}
} else {
- log.info(_("Switch repository type to none"));
+ log.info(t("Switch repository type to none"));
config.setOption(IsisConfig.Option.VCS_TYPE.key, VCS.TYPE_NONE);
config.saveForUser();
vcs = VCSFactory.createVCS(config);
@@ -370,10 +372,10 @@
// Si le repo local n'existe pas on fait un check out complet
if (!local.exists()) {
if (log.isInfoEnabled()) {
- log.info(_("Local repository don't exist"));
+ log.info(t("Local repository don't exist"));
}
if (!vcs.isConnected()) {
- ErrorHelper.showErrorDialog(_("isisfish.vcs.init.notfoundcantdownload",
+ ErrorHelper.showErrorDialog(t("isisfish.vcs.init.notfoundcantdownload",
IsisConfig.getApiVersion()), null);
} else {
// Si on utilise pas le bon tag on change de tag
@@ -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);
@@ -429,7 +434,7 @@
// si on est sur une branche, on est en developpement, on ne fait donc rien
if (vcs.getTag().startsWith("branches")) {
- log.info(_("Use branches, switch not needed"));
+ log.info(t("Use branches, switch not needed"));
} else {
// Si on utilise pas le bon tag on change de tag
Version tag = IsisConfig.getApiVersion();
@@ -447,7 +452,7 @@
// for now, display a simple warning message
// si refus de l'utilisateur, c'est null aussi
if (filesInClonflict != null && !filesInClonflict.isEmpty()) {
- warnFileListDialog(_("isisfish.error.warning.title"), _("isisfish.vcs.switchtag.warningconflict"), filesInClonflict);
+ warnFileListDialog(t("isisfish.error.warning.title"), t("isisfish.vcs.switchtag.warningconflict"), filesInClonflict);
}
}
@@ -455,7 +460,7 @@
// WARNING : this do the real svn update
filesInClonflict = vcs.checkFileStatus();
if (filesInClonflict != null && !filesInClonflict.isEmpty()) {
- warnFileListDialog(_("isisfish.error.warning.title"), _("isisfish.vcs.update.warningconflict"), filesInClonflict);
+ warnFileListDialog(t("isisfish.error.warning.title"), t("isisfish.vcs.update.warningconflict"), filesInClonflict);
}
}
@@ -494,22 +499,22 @@
if (local.exists()) {
if (!communityVcs.isValidLocalRepository()) {
if (log.isInfoEnabled()) {
- log.info(_("Local repository exists but it's not valide for current vcs: %s",
+ log.info(t("Local repository exists but it's not valide for current vcs: %s",
config.getOption(VCS.VCS_TYPE)));
}
- if (ask(_("isisfish.vcs.init.wrongprotocol", local))) {
+ 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()));
if (log.isInfoEnabled()) {
- log.info(_("Rename data directory to %s", localBackup));
+ log.info(t("Rename data directory to %s", localBackup));
}
if (!local.renameTo(localBackup)) {
throw new IsisFishRuntimeException(
"Can't rename local repository that don't use svn");
}
} else {
- log.info(_("Switch repository type to none"));
+ log.info(t("Switch repository type to none"));
config.setOption(IsisConfig.Option.VCS_COMMUNITY_TYPE.key, VCS.TYPE_NONE);
config.saveForUser();
communityVcs = VCSFactory.createPublicVCS(config);
@@ -520,10 +525,10 @@
// Si le repo local n'existe pas on fait un check out complet
if (!local.exists()) {
if (log.isInfoEnabled()) {
- log.info(_("Local repository don't exist"));
+ log.info(t("Local repository don't exist"));
}
if (!communityVcs.isConnected()) {
- ErrorHelper.showErrorDialog(_("isisfish.vcs.init.notfoundcantdownload",
+ ErrorHelper.showErrorDialog(t("isisfish.vcs.init.notfoundcantdownload",
"trunk"), null);
} else {
// initialise le repo local
@@ -536,7 +541,7 @@
// cleanup
communityVcs.cleanup(null);
-
+
// check protocol, user, host
communityVcs.checkProtocol();
@@ -544,10 +549,10 @@
// WARNING : this do the real svn update
List<File> filesInClonflict = communityVcs.checkFileStatus();
if (filesInClonflict != null && !filesInClonflict.isEmpty()) {
- warnFileListDialog(_("isisfish.error.warning.title"), _("isisfish.vcs.update.warningconflict"), filesInClonflict);
+ warnFileListDialog(t("isisfish.error.warning.title"), t("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";
}
@@ -653,9 +658,15 @@
// using non recompiled script due to dependency changes
// this is the better solution found :
// remove isis build directory
- FileUtil.deleteRecursively(IsisFish.config.getCompileDirectory());
+ try {
+ FileUtils.deleteDirectory(IsisFish.config.getCompileDirectory());
+ } catch (IOException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't clear build directory", ex);
+ }
+ }
- ErrorHelper.showErrorDialog(null, _("isisfish.error.linkageerror.message"), cause);
+ ErrorHelper.showErrorDialog(null, t("isisfish.error.linkageerror.message"), cause);
}
else {
if (log.isErrorEnabled()) {
@@ -677,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");
@@ -693,7 +704,7 @@
// lauch first UI (welcomeUI)
WelcomeUI welcome = new WelcomeUI();
- welcome.setTitle(_("isisfish.welcome.title", IsisConfig.getVersion()));
+ welcome.setTitle(t("isisfish.welcome.title", IsisConfig.getVersion()));
// Set to exit on close
welcome.setDefaultCloseOperation(WelcomeUI.DO_NOTHING_ON_CLOSE);
welcome.addWindowListener(new WindowAdapter() {
@@ -709,7 +720,7 @@
quit();
}
});
-
+
try {
InputStream imageStream = WelcomeUI.class.getResourceAsStream("/images/simulation.gif");
Image image = ImageIO.read(imageStream);
@@ -741,7 +752,7 @@
}
else {
if (log.isInfoEnabled()) {
- log.info(_("isisfish.message.launchui.notlaunch"));
+ log.info(t("isisfish.message.launchui.notlaunch"));
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/IsisTray.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/IsisTray.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,8 +25,8 @@
package fr.ifremer.isisfish;
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
import java.awt.AWTException;
import java.awt.SystemTray;
@@ -69,7 +69,7 @@
protected static final ImageIcon TRAY_IMAGE_START = Resource.getIcon("/images/BulbG.gif");
/** Non running simulation tooltip text. */
- private static final String NO_SIMULATION_TEXT = n_("isisfish.tray.simulation.no");
+ private static final String NO_SIMULATION_TEXT = n("isisfish.tray.simulation.no");
/**
* Texte a utiliser pour afficher l'etat de la simulation en cours.
@@ -78,10 +78,10 @@
* <li>1 = pas de temps courant de la simulation
* <li>2 = nombre total de pas de temps attendu
*/
- private static final String SIMULATION_TEXT = n_("isisfish.tray.simulation");
+ private static final String SIMULATION_TEXT = n("isisfish.tray.simulation");
/** System tray tooltip when multiple simulation are running. */
- private static final String MULTI_SIMULATION_TEXT = n_("isisfish.tray.simulation.multi");
+ private static final String MULTI_SIMULATION_TEXT = n("isisfish.tray.simulation.multi");
/** Tray implementation instance. */
private static IsisTray instance = null;
@@ -116,7 +116,7 @@
if (log.isInfoEnabled()) {
log.info("Use system tray: " + instance.getClass().getName());
}
- instance.setToolTip(_(NO_SIMULATION_TEXT));
+ instance.setToolTip(t(NO_SIMULATION_TEXT));
SimulationService.getService().addSimulationServiceListener(
instance);
}
@@ -132,7 +132,7 @@
SimulationControl control = job.getItem().getControl();
control.addPropertyChangeListener(this);
getInstance().setToolTip(
- _(SIMULATION_TEXT, control.getId(), control.getProgress(),
+ t(SIMULATION_TEXT, control.getId(), control.getProgress(),
control.getProgressMax()));
getInstance().setImage(TRAY_IMAGE_START);
}
@@ -144,7 +144,7 @@
public void simulationStop(SimulationService simService, SimulationJob job) {
SimulationControl control = job.getItem().getControl();
control.removePropertyChangeListener(this);
- getInstance().setToolTip(_(NO_SIMULATION_TEXT));
+ getInstance().setToolTip(t(NO_SIMULATION_TEXT));
getInstance().setImage(TRAY_IMAGE_STOP);
}
@@ -163,7 +163,7 @@
public void propertyChange(PropertyChangeEvent evt) {
SimulationControl control = (SimulationControl) evt.getSource();
getInstance().setToolTip(
- _(SIMULATION_TEXT, control.getId(), control.getProgress(),
+ t(SIMULATION_TEXT, control.getId(), control.getProgress(),
control.getProgressMax()));
}
@@ -248,7 +248,7 @@
/// ... add other items
// construct a TrayIcon
trayIcon = new java.awt.TrayIcon(TRAY_IMAGE_STOP.getImage(),
- _(NO_SIMULATION_TEXT), null);
+ t(NO_SIMULATION_TEXT), null);
trayIcon.setImageAutoSize(true);
// set the TrayIcon properties
//trayIcon.addActionListener(trayListener);
@@ -258,14 +258,14 @@
tray.add(trayIcon);
} catch (AWTException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.add.tray"), eee);
+ log.warn(t("isisfish.error.add.tray"), eee);
}
}
// ...
} else {
// disable tray option in your application or
// perform other actions
- log.info(_("isisfish.message.tray.disabled"));
+ log.info(t("isisfish.message.tray.disabled"));
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2002 - 2010 Ifremer, Code Lutin, Benjamin Poussin
+ * Copyright (C) 2002 - 2012 Ifremer, Code Lutin, Benjamin Poussin, 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,7 +25,7 @@
package fr.ifremer.isisfish.actions;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.util.ArrayList;
@@ -33,10 +33,10 @@
import java.util.List;
import java.util.regex.Pattern;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ApplicationConfig.Action.Step;
+import org.nuiton.config.ApplicationConfig.Action.Step;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
@@ -153,12 +153,12 @@
public void exportRegion(File file, String name, boolean force) throws Exception {
log.info("file:" + file + ", name:" + name);
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
if (!RegionStorage.exists(name)) {
// fatal error
- throw new IllegalArgumentException(_("could not found region %s", name));
+ throw new IllegalArgumentException(t("could not found region %s", name));
}
DataStorage data = RegionStorage.getRegion(name);
if (data != null) {
@@ -170,12 +170,12 @@
public void exportSimulation(File file, String name, boolean force) throws Exception {
log.info("exportSimulation in file " + file + " ( " + name + ", force = " + force + ")");
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
if (!SimulationStorage.exists(name)) {
// fatal error
- throw new IllegalArgumentException(_("could not found simulation %s", name));
+ throw new IllegalArgumentException(t("could not found simulation %s", name));
}
DataStorage data = SimulationStorage.getSimulation(name);
if (data != null) {
@@ -185,74 +185,74 @@
public void exportSimulationPlan(File file, String name, boolean force) throws Exception {
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
SimulationPlanStorage storage = SimulationPlanStorage.getSimulationPlan(name);
if (!storage.exists()) {
- throw new IllegalArgumentException(_("could not found %s", name));
+ throw new IllegalArgumentException(t("could not found %s", name));
}
String content = storage.getContent();
- FileUtil.writeString(file, content);
+ FileUtils.writeStringToFile(file, content);
}
public void exportRule(File file, String name, boolean force) throws Exception {
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
RuleStorage storage = RuleStorage.getRule(name);
if (!storage.exists()) {
- throw new IllegalArgumentException(_("could not found %s", name));
+ throw new IllegalArgumentException(t("could not found %s", name));
}
String content = storage.getContent();
- FileUtil.writeString(file, content);
+ FileUtils.writeStringToFile(file, content);
}
public void exportScript(File file, String name, boolean force) throws Exception {
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
ScriptStorage storage = ScriptStorage.getScript(name);
if (!storage.exists()) {
- throw new IllegalArgumentException(_("could not found %s", name));
+ throw new IllegalArgumentException(t("could not found %s", name));
}
String content = storage.getContent();
- FileUtil.writeString(file, content);
+ FileUtils.writeStringToFile(file, content);
}
public void exportExport(File file, String name, boolean force) throws Exception {
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
ExportStorage storage = ExportStorage.getExport(name);
if (!storage.exists()) {
- throw new IllegalArgumentException(_("could not found %s", name));
+ throw new IllegalArgumentException(t("could not found %s", name));
}
String content = storage.getContent();
- FileUtil.writeString(file, content);
+ FileUtils.writeStringToFile(file, content);
}
public void exportSimulator(File file, String name, boolean force) throws Exception {
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
SimulatorStorage storage = SimulatorStorage.getSimulator(name);
if (!storage.exists()) {
- throw new IllegalArgumentException(_("could not found %s", name));
+ throw new IllegalArgumentException(t("could not found %s", name));
}
String content = storage.getContent();
- FileUtil.writeString(file, content);
+ FileUtils.writeStringToFile(file, content);
}
public void exportFormula(File file, String category, String name, boolean force) throws Exception {
if (!force && file.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
+ throw new IllegalArgumentException(t("destination already exists %s use 'force' argument to force overwrite", file));
}
FormuleStorage storage = FormuleStorage.getFormule(category, name);
if (!storage.exists()) {
- throw new IllegalArgumentException(_("could not found %s", name));
+ throw new IllegalArgumentException(t("could not found %s", name));
}
String content = storage.getContent();
- FileUtil.writeString(file, content);
+ FileUtils.writeStringToFile(file, content);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2002 - 2010 Ifremer, Code Lutin, Benjamin Poussin
+ * Copyright (C) 2002 - 2012 Ifremer, Code Lutin, Benjamin Poussin, 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,11 +25,11 @@
package fr.ifremer.isisfish.actions;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
-import org.nuiton.util.FileUtil;
+import org.apache.commons.io.FileUtils;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
@@ -62,9 +62,9 @@
String name = file.getName();
SimulationPlanStorage storage = SimulationPlanStorage.getSimulationPlan(name);
if(!force && storage.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
+ throw new IllegalArgumentException(t("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
}
- String content = FileUtil.readAsString(file);
+ String content = FileUtils.readFileToString(file);
storage.setContent(content);
}
@@ -72,9 +72,9 @@
String name = file.getName();
ExportStorage storage = ExportStorage.getExport(name);
if(!force && storage.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
+ throw new IllegalArgumentException(t("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
}
- String content = FileUtil.readAsString(file);
+ String content = FileUtils.readFileToString(file);
storage.setContent(content);
}
@@ -82,9 +82,9 @@
String name = file.getName();
RuleStorage storage = RuleStorage.getRule(name);
if(!force && storage.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
+ throw new IllegalArgumentException(t("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
}
- String content = FileUtil.readAsString(file);
+ String content = FileUtils.readFileToString(file);
storage.setContent(content);
}
@@ -92,9 +92,9 @@
String name = file.getName();
ScriptStorage storage = ScriptStorage.getScript(name);
if(!force && storage.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
+ throw new IllegalArgumentException(t("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
}
- String content = FileUtil.readAsString(file);
+ String content = FileUtils.readFileToString(file);
storage.setContent(content);
}
@@ -102,22 +102,22 @@
String name = file.getName();
SimulatorStorage storage = SimulatorStorage.getSimulator(name);
if(!force && storage.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
+ throw new IllegalArgumentException(t("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
}
- String content = FileUtil.readAsString(file);
+ String content = FileUtils.readFileToString(file);
storage.setContent(content);
}
public void importFormula(boolean force, String formulaType, File file) throws Exception {
if (!FormuleStorage.getCategories().contains(formulaType)) {
- throw new IllegalArgumentException(_("Could not found formule type %s autorised type are %s", formulaType, FormuleStorage.getCategories()));
+ throw new IllegalArgumentException(t("Could not found formule type %s autorised type are %s", formulaType, FormuleStorage.getCategories()));
}
String name = file.getName();
FormuleStorage storage = FormuleStorage.getFormule(formulaType, name);
if(!force && storage.exists()) {
- throw new IllegalArgumentException(_("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
+ throw new IllegalArgumentException(t("destination already exists %s use \'force\' argument to force overwrite", storage.getFile()));
}
- String content = FileUtil.readAsString(file);
+ String content = FileUtils.readFileToString(file);
storage.setContent(content);
}
@@ -142,7 +142,7 @@
public void importRegionAndRename(boolean force, File file, String name) throws Exception {
if (RegionStorage.exists(name) && !force) {
// fatal error
- throw new IllegalArgumentException(_("region already exists %s use 'force' argument to force overwrite", name));
+ throw new IllegalArgumentException(t("region already exists %s use 'force' argument to force overwrite", name));
}
RegionStorage.importAndRenameZip(file, name);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2002 - 2011 Ifremer, Code Lutin, Benjamin Poussin, Chatellier Eric
+ * Copyright (C) 2002 - 2012 Ifremer, Code Lutin, Benjamin Poussin, 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,16 +25,16 @@
package fr.ifremer.isisfish.actions;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.ApplicationConfig.Action.Step;
-import org.nuiton.util.FileUtil;
+import org.nuiton.config.ApplicationConfig.Action.Step;
import org.nuiton.util.ZipUtil;
import fr.ifremer.isisfish.IsisConfig;
@@ -97,7 +97,7 @@
RegionStorage.importAndRenameZip(region, regionName);
} else {
if (log.isWarnEnabled()) {
- log.warn(_("Region %s allready exist in repository. Can't import",
+ log.warn(t("Region %s allready exist in repository. Can't import",
regionName));
}
}
@@ -144,7 +144,7 @@
//simulation.getStorage().closeContext();
String simulationPrescriptContent = null;
if (simulationPrescript != null && simulationPrescript.canRead()) {
- simulationPrescriptContent = FileUtil.readAsString(simulationPrescript);
+ simulationPrescriptContent = FileUtils.readFileToString(simulationPrescript);
}
SimulationControl control = new SimulationControl(name);
@@ -224,7 +224,7 @@
//simulation.getStorage().closeContext();
String simulationPrescriptContent = null;
if (simulationPrescript != null && simulationPrescript.canRead()) {
- simulationPrescriptContent = FileUtil.readAsString(simulationPrescript);
+ simulationPrescriptContent = FileUtils.readFileToString(simulationPrescript);
}
SimulationControl control = new SimulationControl(name);
Deleted: trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,164 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 1999 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- * %%
- * 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.aspect;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.codehaus.aspectwerkz.annotation.AspectAnnotationParser;
-import org.codehaus.aspectwerkz.definition.AdviceDefinition;
-import org.codehaus.aspectwerkz.definition.AspectDefinition;
-import org.codehaus.aspectwerkz.definition.DeploymentScope;
-import org.codehaus.aspectwerkz.definition.SystemDefinition;
-import org.codehaus.aspectwerkz.definition.SystemDefinitionContainer;
-import org.codehaus.aspectwerkz.expression.ExpressionInfo;
-import org.codehaus.aspectwerkz.hook.impl.ClassPreProcessorHelper;
-import org.codehaus.aspectwerkz.reflect.ClassInfo;
-import org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo;
-import org.codehaus.aspectwerkz.reflect.impl.java.JavaClassInfo;
-import org.codehaus.aspectwerkz.transform.inlining.AspectModelManager;
-
-import sun.misc.Resource;
-import sun.misc.URLClassPath;
-
-/**
- * Aspectwerkz class loader.
- *
- * http://aspectwerkz.codehaus.org/xref/org/codehaus/aspectwerkz/transform/inl…
- *
- * Created: 30 mars 07 00:31:22
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class AspectClassLoader extends URLClassLoader {
-
- /**
- * Class loader constructor.
- *
- * @param urls parent urlclassloader url
- * @param parent parent class loader
- */
- public AspectClassLoader(URL[] urls, ClassLoader parent) {
- super(urls, parent);
- ClassPreProcessorHelper.initializePreProcessor();
- }
-
- @Override
- protected Class<?> findClass(String name) throws ClassNotFoundException {
- String path = name.replace('.', '/').concat(".class");
- URLClassPath ucp = new URLClassPath(getURLs());
- Resource res = ucp.getResource(path, false);
- if (res != null) {
- //definePackage(name.substring(0, name.lastIndexOf(".")), null, null);
- try {
- byte[] b = res.getBytes();
- byte[] transformed = ClassPreProcessorHelper.defineClass0Pre(this, name, b, 0, b.length, null);
- return defineClass(name, transformed, 0, transformed.length);
- } catch (IOException e) {
- throw new ClassNotFoundException("Can't build aspect for class", e);
- }
- } else {
- throw new ClassNotFoundException(name);
- }
- }
-
- /**
- * Register new aspect.
- *
- * @param aspectClass aspect class to register
- */
- public void deploy(Class<?> aspectClass) {
- String className = aspectClass.getName();
- try {
- aspectClass = Class.forName(className, false, this);
- } catch (ClassNotFoundException e) {
- throw new RuntimeException("could not load class [" + className + "] in class loader [" + this + "]");
- }
-
- final ClassInfo aspectClassInfo = JavaClassInfo.getClassInfo(aspectClass);
-
- // create a new aspect def and fill it up with the annotation def from the aspect class
- final SystemDefinition systemDef = SystemDefinitionContainer.getVirtualDefinitionAt(this);
- final AspectDefinition newAspectDef = new AspectDefinition(className, aspectClassInfo, systemDef);
- getNewExpressionsForAspect(aspectClass, newAspectDef, systemDef, DeploymentScope.MATCH_ALL);
- }
-
- /**
- * Returns a set with the new expressions for the advice in the aspect to deploy.
- *
- * @param aspectClass
- * @param newAspectDef
- * @param newAspectDef
- * @param systemDef
- * @param deploymentScope
- * @return a set with the new expressions
- */
- private Set getNewExpressionsForAspect(final Class aspectClass,
- final AspectDefinition newAspectDef,
- final SystemDefinition systemDef,
- final DeploymentScope deploymentScope) {
- final ClassLoader aspectLoader = aspectClass.getClassLoader();
- final String aspectName = aspectClass.getName();
-
- final ClassInfo classInfo = AsmClassInfo.getClassInfo(aspectName, aspectLoader);
-
- AspectModelManager.defineAspect(classInfo, newAspectDef, aspectLoader);
-
- AspectAnnotationParser.parse(classInfo, newAspectDef, aspectLoader);
-
- AspectDefinition aspectDef = systemDef.getAspectDefinition(aspectName);
- if (aspectDef != null) {
- // if in def already reuse some of the settings that can have been overridded by XML def
- newAspectDef.setContainerClassName(aspectDef.getContainerClassName());
- newAspectDef.setDeploymentModel(aspectDef.getDeploymentModel());
- }
-
- systemDef.addAspectOverwriteIfExists(newAspectDef);
-
- final Set newExpressions = new HashSet();
- for (Iterator it2 = newAspectDef.getAdviceDefinitions().iterator(); it2.hasNext();) {
- AdviceDefinition adviceDef = (AdviceDefinition) it2.next();
- ExpressionInfo oldExpression = adviceDef.getExpressionInfo();
- if (oldExpression == null) {
- continue;
- }
- // deploymentHandle.registerDefinitionChange(adviceDef, oldExpression);
-
- final ExpressionInfo newExpression = deploymentScope.newExpressionInfo(oldExpression);
- adviceDef.setExpressionInfo(newExpression);
- newExpressions.add(newExpression);
- }
- return newExpressions;
- }
-}
Copied: trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJUrlClassLoader.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/aspect/AspectJUrlClassLoader.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJUrlClassLoader.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJUrlClassLoader.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,156 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 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.aspect;
+
+import java.io.IOException;
+import java.net.URL;
+import java.security.CodeSource;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.aspectj.bridge.AbortException;
+import org.aspectj.weaver.bcel.ExtensibleURLClassLoader;
+import org.aspectj.weaver.tools.Trace;
+import org.aspectj.weaver.tools.TraceFactory;
+import org.aspectj.weaver.tools.WeavingClassLoader;
+
+public class AspectJUrlClassLoader extends ExtensibleURLClassLoader implements WeavingClassLoader {
+
+ public static final String WEAVING_CLASS_PATH = "aj.class.path";
+ public static final String WEAVING_ASPECT_PATH = "aj.aspect.path";
+
+ private URL[] aspectURLs;
+ private AspectJWeavingAdaptor adaptor;
+ private boolean initializingAdaptor;
+ private Map generatedClasses = new HashMap(); /* String -> byte[] */
+
+ private static Trace trace = TraceFactory.getTraceFactory().getTrace(AspectJUrlClassLoader.class);
+
+ public AspectJUrlClassLoader(URL[] urls, ClassLoader parent) {
+ super(urls, parent);
+ if (trace.isTraceEnabled())
+ trace.enter("<init>", this, new Object[] { urls, parent });
+ if (trace.isTraceEnabled())
+ trace.exit("<init>");
+
+ adaptor = new AspectJWeavingAdaptor(getParent(), this);
+ }
+
+ private static String getAspectPath() {
+ return System.getProperty(WEAVING_ASPECT_PATH, "");
+ }
+
+ private static String getClassPath() {
+ return System.getProperty(WEAVING_CLASS_PATH, "");
+ }
+
+ protected void addURL(URL url) {
+ adaptor.addURL(url);
+ super.addURL(url);
+ }
+
+ /**
+ * Override to weave class using WeavingAdaptor
+ */
+ protected Class defineClass(String name, byte[] b, CodeSource cs) throws IOException {
+ if (trace.isTraceEnabled())
+ trace.enter("defineClass", this, new Object[] { name, b, cs });
+ // System.err.println("? WeavingURLClassLoader.defineClass(" + name + ", [" + b.length + "])");
+ byte orig[] = b;
+ /* Avoid recursion during adaptor initialization */
+ if (!initializingAdaptor) {
+
+ /* Need to defer creation because of possible recursion during constructor execution */
+ if (adaptor == null && !initializingAdaptor) {
+ //createAdaptor();
+ }
+
+ try {
+ b = adaptor.weaveClass(name, b, false);
+ } catch (AbortException ex) {
+ trace.error("defineClass", ex);
+ throw ex;
+ } catch (Throwable th) {
+ trace.error("defineClass", th);
+ }
+ }
+ Class clazz;
+
+ // On error, define the original form of the class and log the issue
+ try {
+ clazz= super.defineClass(name, b, cs);
+ } catch (Throwable th) {
+ trace.error("Weaving class problem. Original class has been returned. The error was caused because of: " + th, th);
+ clazz= super.defineClass(name, orig, cs);
+ }
+ if (trace.isTraceEnabled())
+ trace.exit("defineClass", clazz);
+ return clazz;
+ }
+
+ /**
+ * Override to find classes generated by WeavingAdaptor
+ */
+ protected byte[] getBytes(String name) throws IOException {
+ byte[] bytes = super.getBytes(name);
+
+ if (bytes == null) {
+ // return adaptor.findClass(name);
+ return (byte[]) generatedClasses.remove(name);
+ }
+
+ return bytes;
+ }
+
+ /**
+ * Implement method from WeavingClassLoader
+ */
+ public URL[] getAspectURLs() {
+ return aspectURLs;
+ }
+
+ public void acceptClass (String name, byte[] classBytes, byte[] weavedBytes) {
+ generatedClasses.put(name, weavedBytes);
+ }
+
+ public void deploy(Class<?> aspectClass) {
+ byte[] result = adaptor.deploy(aspectClass);
+ // this classloader need to be implemented in "local first" strategy
+ // and aspectized class must be forced into current classloader
+ // otherwize, aspectj will complain about missing 'aspectOf' methods
+ defineClass(aspectClass.getName(), result, 0, result.length);
+ }
+
+ /**
+ * Mark classloader as configured with aspects and tell to prepare for
+ * weaving.
+ *
+ * Must call this method to avoid NPE in aspectj weaver.
+ */
+ public void prepare() {
+ adaptor.prepare();
+ }
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/AspectJWeavingAdaptor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,237 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 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.aspect;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.aspectj.apache.bcel.classfile.ClassParser;
+import org.aspectj.apache.bcel.classfile.JavaClass;
+import org.aspectj.bridge.IMessageHandler;
+import org.aspectj.util.FileUtil;
+import org.aspectj.util.LangUtil;
+import org.aspectj.weaver.CrosscuttingMembersSet;
+import org.aspectj.weaver.IClassFileProvider;
+import org.aspectj.weaver.IUnwovenClassFile;
+import org.aspectj.weaver.IWeaveRequestor;
+import org.aspectj.weaver.ResolvedType;
+import org.aspectj.weaver.bcel.BcelObjectType;
+import org.aspectj.weaver.bcel.BcelWeaver;
+import org.aspectj.weaver.bcel.BcelWorld;
+import org.aspectj.weaver.bcel.UnwovenClassFile;
+import org.aspectj.weaver.tools.WeavingAdaptor;
+import org.aspectj.weaver.tools.WeavingClassLoader;
+import org.aspectj.weaver.tools.cache.SimpleCache;
+import org.aspectj.weaver.tools.cache.SimpleCacheFactory;
+
+public class AspectJWeavingAdaptor extends WeavingAdaptor {
+
+ protected ClassLoader parentLoader;
+
+ protected CrosscuttingMembersSet xcutSet;
+
+ public AspectJWeavingAdaptor(ClassLoader parentLoader, WeavingClassLoader loader) {
+ this.parentLoader = parentLoader;
+
+ generatedClassHandler = loader;
+ init((ClassLoader)loader, getFullClassPath((ClassLoader) loader));
+ }
+
+ /**
+ * Initialize the WeavingAdapter
+ * @param loader ClassLoader used by this adapter; which can be null
+ * @param classPath classpath of this adapter
+ * @param aspectPath list of aspect paths
+ */
+ private void init(ClassLoader loader, List<String> classPath) {
+ try {
+ //XXX call to private code "abortOnError = true;"
+ Field abortOnErrorField = WeavingAdaptor.class.getDeclaredField("abortOnError");
+ abortOnErrorField.setAccessible(true);
+ abortOnErrorField.set(this, true);
+
+ createMessageHandler();
+
+ info("using classpath: " + classPath);
+ //info("using aspectpath: " + aspectPath);
+
+ Field messageHandlerField = WeavingAdaptor.class.getDeclaredField("messageHandler");
+ messageHandlerField.setAccessible(true);
+ IMessageHandler messageHandler = (IMessageHandler)messageHandlerField.get(this);
+ bcelWorld = new BcelWorld(classPath, messageHandler, null);
+ bcelWorld.setXnoInline(false);
+ bcelWorld.getLint().loadDefaultProperties();
+ if (LangUtil.is15VMOrGreater()) {
+ bcelWorld.setBehaveInJava5Way(true);
+ }
+
+ weaver = new BcelWeaver(bcelWorld);
+ //registerAspectLibraries(aspectPath);
+ //initializeCache(loader, aspectPath, null, getMessageHandler());
+
+ //XXX call to private code "enabled = true;"
+ Field enabledField = WeavingAdaptor.class.getDeclaredField("enabled");
+ enabledField.setAccessible(true);
+ enabledField.set(this, true);
+
+ // get private field instance
+ //XXX call to private code "xcutSet = weaver.xcutSet"
+ Field xcutSetField = BcelWeaver.class.getDeclaredField("xcutSet");
+ xcutSetField.setAccessible(true);
+ xcutSet = (CrosscuttingMembersSet) xcutSetField.get(weaver);
+
+ } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public byte[] deploy(Class<?> aspectClass) {
+ byte[] result = null;
+ try {
+ String name = aspectClass.getName();
+ InputStream is = AspectJWeavingAdaptor.class.getResourceAsStream("/" + name.replace('.', '/') + ".class");
+ byte[] bytes = FileUtil.readAsByteArray(is);
+ is.close();
+ ClassParser parser = new ClassParser(new ByteArrayInputStream(bytes), name);
+
+ JavaClass jc = parser.parse();
+ BcelObjectType bcType = bcelWorld.addSourceObjectType(jc, false);
+ ResolvedType type = bcType.getResolvedTypeX();
+ xcutSet.addOrReplaceAspect(type);
+
+ WeavingClassFileProvider2 wcp = new WeavingClassFileProvider2(name, bytes);
+ wcp.setApplyAtAspectJMungersOnly();
+ weaver.weave(wcp);
+ result = wcp.getBytes();
+
+ } catch (IOException e) {
+ throw new RuntimeException("Can't create aspect", e);
+ }
+
+ return result;
+ }
+
+ /**
+ * Mark bcel weaver ready for weaving classes.
+ */
+ public void prepare() {
+ weaver.prepareForWeave();
+ }
+
+ private class WeavingClassFileProvider2 implements IClassFileProvider {
+
+ private final UnwovenClassFile unwovenClass;
+ private final List<UnwovenClassFile> unwovenClasses = new ArrayList<UnwovenClassFile>();
+ private IUnwovenClassFile wovenClass;
+ private boolean isApplyAtAspectJMungersOnly = false;
+
+ public WeavingClassFileProvider2(String name, byte[] bytes) {
+ ensureDelegateInitialized(name, bytes);
+ this.unwovenClass = new UnwovenClassFile(name, name /*delegateForCurrentClass.getResolvedTypeX().getName()*/, bytes);
+ this.unwovenClasses.add(unwovenClass);
+
+ if (shouldDump(name.replace('/', '.'), true)) {
+ dump(name, bytes, true);
+ }
+
+ }
+
+ public void setApplyAtAspectJMungersOnly() {
+ isApplyAtAspectJMungersOnly = true;
+ }
+
+ public boolean isApplyAtAspectJMungersOnly() {
+ return isApplyAtAspectJMungersOnly;
+ }
+
+ public byte[] getBytes() {
+ if (wovenClass != null) {
+ return wovenClass.getBytes();
+ } else {
+ return unwovenClass.getBytes();
+ }
+ }
+
+ public Iterator<UnwovenClassFile> getClassFileIterator() {
+ return unwovenClasses.iterator();
+ }
+
+ public IWeaveRequestor getRequestor() {
+ return new IWeaveRequestor() {
+
+ public void acceptResult(IUnwovenClassFile result) {
+ if (wovenClass == null) {
+ wovenClass = result;
+ String name = result.getClassName();
+ if (shouldDump(name.replace('/', '.'), false)) {
+ dump(name, result.getBytes(), false);
+ }
+ } else {
+ // Classes generated by weaver e.g. around closure advice
+ String className = result.getClassName();
+ byte[] resultBytes = result.getBytes();
+
+ if (SimpleCacheFactory.isEnabled()) {
+ SimpleCache lacache=SimpleCacheFactory.createSimpleCache();
+ lacache.put(result.getClassName(), wovenClass.getBytes(), result.getBytes());
+ lacache.addGeneratedClassesNames(wovenClass.getClassName(), wovenClass.getBytes(), result.getClassName());
+ }
+
+ generatedClasses.put(className, result);
+ generatedClasses.put(wovenClass.getClassName(), result);
+ generatedClassHandler.acceptClass(className, null, resultBytes);
+ }
+ }
+
+ public void processingReweavableState() {
+ }
+
+ public void addingTypeMungers() {
+ }
+
+ public void weavingAspects() {
+ }
+
+ public void weavingClasses() {
+ }
+
+ public void weaveCompleted() {
+ // ResolvedType.resetPrimitives();
+ if (delegateForCurrentClass != null) {
+ delegateForCurrentClass.weavingCompleted();
+ }
+ // ResolvedType.resetPrimitives();
+ // bcelWorld.discardType(typeBeingProcessed.getResolvedTypeX()); // work in progress
+ }
+ };
+ }
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/aspect/CacheAspect.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/CacheAspect.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/CacheAspect.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2006 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Copyright (C) 2006 - 2013 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -30,13 +30,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codehaus.aspectwerkz.annotation.Around;
-import org.codehaus.aspectwerkz.annotation.Aspect;
-import org.codehaus.aspectwerkz.annotation.Expression;
-import org.codehaus.aspectwerkz.definition.Pointcut;
-import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
-import org.codehaus.aspectwerkz.joinpoint.MethodRtti;
-import org.codehaus.aspectwerkz.joinpoint.MethodSignature;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.util.IsisCache;
@@ -52,14 +49,14 @@
* Last update: $Date$
* by : $Author$
*/
-@Aspect("perJVM")
+@Aspect
public class CacheAspect {
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(CacheAspect.class);
- @Expression("execution(* scripts..*(..))")
- Pointcut scriptsMethod;
+ //@Expression("execution(* scripts..*(..))")
+ //Pointcut scriptsMethod;
public CacheAspect() {
}
@@ -74,16 +71,16 @@
IsisCache result = context.getCache();
return result;
}
-
- @Around("scriptsMethod")
- public Object call(final JoinPoint jp) throws Throwable {
+
+ @Around("execution(* scripts..*(..))")
+ public Object call(final ProceedingJoinPoint jp) throws Throwable {
Method method = ((MethodSignature)jp.getSignature()).getMethod();
- Object[] args = ((MethodRtti)jp.getRtti()).getParameterValues();
+ Object[] args = jp.getArgs();
Object result = getCache().get(method, args, jp);
if (log.isTraceEnabled()) {
log.trace(((MethodSignature)jp.getSignature()).getMethod()
- + " args " + Arrays.toString(((MethodRtti)jp.getRtti()).getParameterValues())
+ + " args " + Arrays.toString(jp.getArgs())
+ " result = " + result);
}
return result;
Modified: trunk/src/main/java/fr/ifremer/isisfish/aspect/RuleAspect.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/RuleAspect.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/RuleAspect.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,9 +27,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codehaus.aspectwerkz.annotation.Around;
-import org.codehaus.aspectwerkz.annotation.Aspect;
-import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
import fr.ifremer.isisfish.datastore.SimulationInformation;
import fr.ifremer.isisfish.datastore.SimulationStorage;
@@ -50,7 +51,7 @@
* Last update : $Date$
* By : $Author$
*/
-@Aspect("perInstance")
+@Aspect
public class RuleAspect {
/**
@@ -71,7 +72,7 @@
* @throws Throwable
*/
@Around("execution(* rules.*.init(..))")
- public Object initCall(final JoinPoint jp) throws Throwable {
+ public Object initCall(final ProceedingJoinPoint jp) throws Throwable {
Object result = makeTimedCall(jp, State.INIT);
return result;
@@ -86,7 +87,7 @@
* @throws Throwable
*/
@Around("execution(* rules.*.preAction(..))")
- public Object initPreCall(final JoinPoint jp) throws Throwable {
+ public Object initPreCall(final ProceedingJoinPoint jp) throws Throwable {
Object result = makeTimedCall(jp, State.PRE);
return result;
@@ -100,7 +101,7 @@
* @throws Throwable
*/
@Around("execution(* rules.*.postAction(..))")
- public Object initPostCall(final JoinPoint jp) throws Throwable {
+ public Object initPostCall(final ProceedingJoinPoint jp) throws Throwable {
Object result = makeTimedCall(jp, State.POST);
return result;
@@ -113,10 +114,10 @@
* @param state state
* @throws Throwable
*/
- protected Object makeTimedCall(JoinPoint jp, State state) throws Throwable {
+ protected Object makeTimedCall(ProceedingJoinPoint jp, State state) throws Throwable {
if (log.isTraceEnabled()) {
- log.trace("Rule aspect called : " + jp.getCalleeClass().getSimpleName());
+ log.trace("Rule aspect called : " + jp.getTarget().getClass().getSimpleName());
}
// get time before
@@ -155,7 +156,7 @@
if (simulation != null) {
// get rule information
- Class<?> calleeClass = jp.getCalleeClass();
+ Class<?> calleeClass = jp.getTarget().getClass();
String ruleName = calleeClass.getSimpleName();
SimulationInformation info = simulation.getInformation();
Modified: trunk/src/main/java/fr/ifremer/isisfish/aspect/TraceAspect.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/TraceAspect.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/TraceAspect.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -26,21 +26,14 @@
package fr.ifremer.isisfish.aspect;
import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codehaus.aspectwerkz.annotation.After;
-import org.codehaus.aspectwerkz.annotation.AfterThrowing;
-import org.codehaus.aspectwerkz.annotation.Aspect;
-import org.codehaus.aspectwerkz.annotation.Before;
-import org.codehaus.aspectwerkz.annotation.Expression;
-import org.codehaus.aspectwerkz.definition.Pointcut;
-import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
-import org.codehaus.aspectwerkz.joinpoint.MethodSignature;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.reflect.MethodSignature;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.util.Trace;
@@ -58,18 +51,15 @@
* Last update: $Date$
* by : $Author$
*/
-@Aspect("perJVM")
+@Aspect
public class TraceAspect {
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(TraceAspect.class);
-
- @Expression("execution(* scripts..*(..))"
+ /*@Pointcut("execution(* scripts..*(..))"
+ " || execution(* simulators..*(..))"
+ " || execution(* rules..*(..)) "
+ " || execution(* simulationplans..*(..)) "
+ " || execution(* formules..*(..))")
- Pointcut executeMethod;
+ Pointcut executeMethod;*/
public TraceAspect() {
}
@@ -85,18 +75,31 @@
return result;
}
- @Before("executeMethod")
+ @Before("execution(* scripts..*(..))"
+ + " || execution(* simulators..*(..))"
+ + " || execution(* rules..*(..)) "
+ + " || execution(* simulationplans..*(..)) "
+ + " || execution(* formules..*(..))")
public void traceBeforeExecute(JoinPoint jp) {
getTrace().traceBefore();
}
- @AfterThrowing(type = "java.lang.Exception", pointcut = "executeMethod")
- public void traceAfterThrowingExecute(JoinPoint jp) {
+ @AfterThrowing(throwing = "ex",
+ pointcut = "execution(* scripts..*(..))"
+ + " || execution(* simulators..*(..))"
+ + " || execution(* rules..*(..)) "
+ + " || execution(* simulationplans..*(..)) "
+ + " || execution(* formules..*(..))")
+ public void traceAfterThrowingExecute(JoinPoint jp, Exception ex) {
// si une exeption est leve, il faut faire la meme chose
traceAfterExecute(jp);
}
- @After("executeMethod")
+ @After("execution(* scripts..*(..))"
+ + " || execution(* simulators..*(..))"
+ + " || execution(* rules..*(..)) "
+ + " || execution(* simulationplans..*(..)) "
+ + " || execution(* formules..*(..))")
public void traceAfterExecute(JoinPoint jp) {
Method method = ((MethodSignature) jp.getSignature()).getMethod();
getTrace().traceAfterCall(method);
Modified: trunk/src/main/java/fr/ifremer/isisfish/aspect/package-info.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/aspect/package-info.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/aspect/package-info.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 1999 - 2010 Ifremer, CodeLutin
+ * Copyright (C) 1999 - 2013 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
@@ -27,8 +27,8 @@
*
* Contains two aspects :
* <ul>
- * <li>{@link fr.ifremer.isisfish.aspect.Cache} : cache aspect</li>
- * <li>{@link fr.ifremer.isisfish.aspect.Trace} : trace expect</li>
+ * <li>{@link fr.ifremer.isisfish.aspect.CacheAspect} : cache aspect</li>
+ * <li>{@link fr.ifremer.isisfish.aspect.TraceAspect} : trace expect</li>
* <li>{@link fr.ifremer.isisfish.aspect.RuleAspect} : rule timing aspect</li>
* </ul>
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,7 +30,7 @@
import java.util.Collections;
import java.util.List;
-import org.nuiton.util.FileUtil;
+import org.apache.commons.io.FileUtils;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
@@ -96,7 +96,7 @@
/**
* Get non empty location.
*
- * @param location current location (if empty, return {@link Location#All}.
+ * @param location current location (if empty, return {@link Location#ALL}.
*/
protected static Location[] nonEmptyLocation(Location... location) {
Location[] locs = location;
@@ -200,7 +200,7 @@
content = "";
} else {
try {
- content = FileUtil.readAsString(getFile());
+ content = FileUtils.readFileToString(getFile());
lastContentUpdate = System.nanoTime();
lastContentLength = getFile().length();
} catch (IOException eee) {
@@ -231,7 +231,7 @@
public void setContent(String content, boolean saveToFile) throws IOException {
this.content = content;
if (saveToFile) {
- FileUtil.writeString(getFile(), content, "utf-8");
+ FileUtils.writeStringToFile(getFile(), content, "utf-8");
lastContentUpdate = System.nanoTime();
lastContentLength = getFile().length();
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2006 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Copyright (C) 2006 - 2014 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, 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,24 +25,24 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaContextFactory;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.TopiaNotFoundException;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.ZipUtil;
+import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.IsisFish;
/**
* Class abstraite dont herite tous les storages qui on besoin d'un TopiaContext
@@ -123,9 +123,10 @@
TopiaContext tx = getStorage().beginTransaction();
tx.backup(file, true);
- tx.closeContext();
+ //tx.closeContext();
+ closeStorage();
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.prepare.data"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.prepare.data"), eee);
}
}
@@ -241,7 +242,7 @@
root.clear(true);
}
} catch (TopiaException eee) {
- throw new StorageException(_("isisfish.error.delete.database"), eee);
+ throw new StorageException(t("isisfish.error.delete.database"), eee);
}
super.delete(cvsDelete);
}
@@ -280,7 +281,7 @@
if (file.equals(getDataBackupFile())) {
backupFile = target;
}
- FileUtil.copy(file, target);
+ FileUtils.copyFile(file, target);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,21 +25,19 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+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.IsisFishException;
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.util.Doc;
-import fr.ifremer.isisfish.util.Docable;
import fr.ifremer.isisfish.vcs.VCSException;
/**
@@ -48,7 +46,7 @@
*
* Created: 18 août 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard(a)codelutin.com>
+ * @author Grégoire DESSARD <dessard(a)codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -64,8 +62,8 @@
/** Template freemarker pour les scripts d'export . */
public static final String EXPORT_TEMPLATE = "templates/script/export.ftl";
- @SuppressWarnings("unchecked")
- private static Map<String, ExportStorage> exportCache = (Map<String, ExportStorage>) new ReferenceMap();
+ /** Instance cache. */
+ private static Map<String, ExportStorage> exportCache = new ReferenceMap<String, ExportStorage>();
/**
* Constructeur.
@@ -101,17 +99,6 @@
}
/**
- * Retourne une nouvelle instance de la regle. Compile le fichier si besoin
- *
- * @return une nouvelle instance de la classe d'export
- * @throws IsisFishException
- */
- public Export getNewExportInstance() throws IsisFishException {
- Object result = getNewInstance();
- return (Export) result;
- }
-
- /**
* Retourne le storage pour l'export demandée
*
* @param name le nom de l'export souhaitée
@@ -165,22 +152,21 @@
}
/**
- * <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;
try {
- Export export = getNewExportInstance();
+ Export export = getNewInstance();
if (export != null) {
result = export.getDescription();
}
} catch (Exception e) {
- log.warn(_("isisfish.error.not.found.description",this));
+ log.warn(t("isisfish.error.not.found.description",this));
}
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -33,7 +33,7 @@
import java.util.Set;
import java.util.TreeSet;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaContext;
@@ -59,12 +59,20 @@
* by : $Author$
*/
public class FormuleStorage extends CodeSourceStorage implements Formule {
-
+
+ /**
+ * Logger for this class
+ */
+ private static final Log log = LogFactory.getLog(FormuleStorage.class);
+
public static final String FORMULE_PATH = "formules";
-
+
/** Template freemarker pour les formules. */
public static final String FORMULE_TEMPLATE = "templates/script/equation.ftl";
-
+
+ /** Instance cache. */
+ static private Map<String, FormuleStorage> formulesCache = new ReferenceMap<>();
+
/**
* la categorie de la formule
*/
@@ -176,8 +184,6 @@
all.addAll(getCategories());
try {
-
- @SuppressWarnings("unchecked")
List<String> contextCategory = (List<String>) context.findAll(
"SELECT DISTINCT category FROM Equation");
all.addAll(contextCategory);
@@ -306,15 +312,4 @@
static public void checkout() throws VCSException {
checkout(IsisFish.config.getDatabaseDirectory(), FORMULE_PATH);
}
-
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory.getLog(FormuleStorage.class);
-
- @SuppressWarnings("unchecked")
- static private Map<String, FormuleStorage> formulesCache = (Map<String, FormuleStorage>) new ReferenceMap();
-
}
-
-
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.PrintWriter;
@@ -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,7 @@
* 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 name class name
*/
protected JavaSourceStorage(File rootSrc, File directory, String name) {
@@ -134,7 +133,7 @@
* {@link fr.ifremer.isisfish.IsisConfig#getJavadocDirectory()}
*
* @param force force javadoc build even if destination file is never
- * @param out output print stream. if <tt>null</tt standart output will be used
+ * @param out output print stream. if <tt>null</tt> standart output will be used
* @return 0 si la generation a reussi, une autre valeur sinon
*/
public int doJavadoc(boolean force, PrintWriter out) {
@@ -148,15 +147,12 @@
* @return la class
* @throws IsisFishException
*/
- public Class<?> getCodeClass() throws IsisFishException {
+ public <E> Class<E> getCodeClass() throws IsisFishException {
String fqn = getFQN();
- // Class result = CompileHelper.loadClass(fqn);
- // if (result == null) {
compile(false, null);
- Class<?> result = CompileHelper.loadClass(fqn);
- // }
+ Class<E> result = (Class<E>)CompileHelper.loadClass(fqn);
if (result == null) {
- throw new IsisFishException(_("isisfish.error.load.class", fqn));
+ throw new IsisFishException(t("isisfish.error.load.class", fqn));
}
return result;
}
@@ -167,9 +163,9 @@
* @return une nouvelle instance de la class
* @throws IsisFishException if can't make new instance
*/
- public Object getNewInstance() throws IsisFishException {
- Class<?> clazz = getCodeClass();
- Object result;
+ public <E> E getNewInstance() throws IsisFishException {
+ Class<E> clazz = getCodeClass();
+ E result;
try {
result = clazz.newInstance();
} catch (InstantiationException eee) {
@@ -200,7 +196,7 @@
try {
result = getFieldDoc(object.getClass(), PARAM_PREFIX + paramName);
} catch (Exception e) {
- log.warn(_("isisfish.error.not.found.field", paramName, object));
+ log.warn(t("isisfish.error.not.found.field", paramName, object));
}
return result;
}
@@ -216,7 +212,7 @@
Class<?> clazz = getCodeClass();
result = getFieldDoc(clazz, PARAM_PREFIX + paramName);
} catch (Exception e) {
- log.warn(_("isisfish.error.not.found.field", paramName, this));
+ log.warn(t("isisfish.error.not.found.field", paramName, this));
}
return result;
}
@@ -224,7 +220,6 @@
/**
* Get docable element description.
*/
- @Override
public String getDescription() {
return null;
}
@@ -246,7 +241,7 @@
result = getParameterNames(instance);
}
} catch (Exception eee) {
- log.info(_("isisfish.error.compiled.parameter"), eee);
+ log.info(t("isisfish.error.compiled.parameter"), eee);
}
// si on ne reussi pas avec la classe compilé on essai en parsant le
// source
@@ -254,7 +249,7 @@
try {
//String code = getContent();
log.fatal("FIXME a faire recherche des parametre dans le source");
- throw new IsisFishException(_("isisfish.error.source.parameter"));
+ throw new IsisFishException(t("isisfish.error.source.parameter"));
// TODO implanter la recherche des parametres.
// Se sont les attributs commencant par 'param_' et ils doivent
// etre public non static, non transient.
@@ -262,7 +257,7 @@
// Lorsqu'on ajoute un champs dans la map il ne faut pas mettre
// le prefix param.
} catch (Exception eee) {
- throw new IsisFishException(_("isisfish.error.source.parameter"), eee);
+ throw new IsisFishException(t("isisfish.error.source.parameter"), eee);
}
}
return result;
Copied: trunk/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ObjectiveStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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<String, ObjectiveStorage>();
+
+ /**
+ * 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
+
Copied: trunk/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/OptimizationStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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<String, OptimizationStorage>();
+
+ /**
+ * 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
+
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -32,14 +32,14 @@
import fr.ifremer.isisfish.entities.Result;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.vcs.VCSException;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.ZipUtil;
import java.io.File;
@@ -55,7 +55,7 @@
*
* Created: 17 août 2005 03:44:57 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
*
* @version $Revision$
*
@@ -68,10 +68,10 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(RegionStorage.class);
-
- @SuppressWarnings("unchecked")
- protected static Map<String, RegionStorage> regions = (Map<String, RegionStorage>) new ReferenceMap();
+ /** Instance cache. */
+ protected static Map<String, RegionStorage> regions = new ReferenceMap<String, RegionStorage>();
+
/** File to use to store next commit region comment. */
protected File commentForNextCommitFile = null;
@@ -106,7 +106,7 @@
public String getCommentForNextCommit() throws IOException {
commentForNextCommitFile.createNewFile();
String result;
- result = FileUtil.readAsString(commentForNextCommitFile);
+ result = FileUtils.readFileToString(commentForNextCommitFile);
return result;
}
@@ -116,7 +116,7 @@
*/
public void setCommentForNextCommit(String commentForNextCommit) throws IOException {
commentForNextCommitFile.createNewFile();
- FileUtil.writeString(commentForNextCommitFile, commentForNextCommit);
+ FileUtils.writeStringToFile(commentForNextCommitFile, commentForNextCommit);
}
/**
@@ -177,7 +177,7 @@
fireDataChanged(new StorageChangeEvent(this));
} catch (TopiaException eee) {
- throw new StorageException(_("isisfish.error.rename.region", toName), eee);
+ throw new StorageException(t("isisfish.error.rename.region", toName), eee);
}
}
@@ -455,7 +455,7 @@
return result;
} catch (TopiaException eee) {
- throw new StorageException(_("isisfish.error.import.file", file), eee);
+ throw new StorageException(t("isisfish.error.import.file", file), eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.Arrays;
@@ -34,7 +34,8 @@
import java.util.List;
import java.util.Set;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.AbstractReferenceMap.ReferenceStrength;
+import org.apache.commons.collections4.map.ReferenceMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixFactory;
@@ -55,12 +56,14 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationPlan;
import fr.ifremer.isisfish.simulator.SimulationResultGetter;
+import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.types.TimeStep;
-import fr.ifremer.isisfish.types.Month;
/**
* Cette classe permet de conserver des résultats de simulation. Elle permet
@@ -68,7 +71,7 @@
*
* Created: 29 sept. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
@@ -81,11 +84,11 @@
protected SimulationStorage simulation = null;
// transient protected HashMap<String, MatrixND> globalMatrix = new HashMap<String, MatrixND>();
- transient protected ReferenceMap cacheContext = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.WEAK);
+ transient protected ReferenceMap<String, TopiaContext> cacheContext = new ReferenceMap<>(ReferenceStrength.HARD, ReferenceStrength.WEAK);
/** cache to maintains some result. key: String(date + ':' + name), value: matrix
* TODO: cache will be more efficient if it keep at min the number of result by year */
- transient protected ReferenceMap cache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT);
+ transient protected ReferenceMap<String, MatrixND> cache = new ReferenceMap<>(ReferenceStrength.HARD, ReferenceStrength.SOFT);
/** contains all available result as string: String(date + ':' + name) */
transient protected Set<String> availableResult = null;
/** result enabled */
@@ -255,13 +258,13 @@
for (String exportName : exportNames) {
ExportStorage storage = ExportStorage.getExport(exportName);
try {
- Export export = storage.getNewExportInstance();
+ Export export = storage.getNewInstance();
for (String resultName : export.getNecessaryResult()) {
enabledResult.add(resultName);
}
} catch (IsisFishException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.instanciate.export",
+ log.warn(t("isisfish.error.instanciate.export",
exportName), eee);
}
}
@@ -298,6 +301,22 @@
}
}
}
+
+ // on objective and optimization
+ Objective objective = simulation.getParameter().getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = simulation.getParameter().getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
log.info("Enabled result: " + enabledResult);
}
boolean result = enabledResult.contains(name);
@@ -695,7 +714,7 @@
// recuperation des noms des dimensions
String[] dimNames = new String[1 + mat.getDimCount()];
- dimNames[0] = _("isisfish.common.date");
+ dimNames[0] = t("isisfish.common.date");
for (int i = 1; i < dimNames.length; i++) {
dimNames[i] = mat.getDimensionName(i - 1);
}
@@ -769,7 +788,7 @@
try {
doAddResult(step, name, mat, context.getDbResult());
} catch (TopiaException eee) {
- log.warn(_("Can't add result '%1$s' at date %2$s", name, step), eee);
+ log.warn(t("Can't add result '%1$s' at date %2$s", name, step), eee);
}
}
@@ -783,7 +802,7 @@
result = getMatrix(step, name, context.getDbResult());
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("Can't get result: %1$s", name), eee);
+ log.warn(t("Can't get result: %1$s", name), eee);
}
}
return result;
@@ -799,7 +818,7 @@
result = getMatrix(name, context.getDbResult());
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("Can't get result: %1$s", name), eee);
+ log.warn(t("Can't get result: %1$s", name), eee);
}
}
return result;
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.IOException;
@@ -40,8 +40,8 @@
import java.util.Set;
import java.util.TreeMap;
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.bidimap.DualHashBidiMap;
+import org.apache.commons.collections4.BidiMap;
+import org.apache.commons.collections4.bidimap.DualHashBidiMap;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@@ -70,6 +70,8 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationPlan;
@@ -85,7 +87,7 @@
*
* Created: 31 aout 2012
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin : poussin(a)codelutin.com
* @version $Revision$
*
* Mise a jour: $Date$
@@ -119,7 +121,7 @@
protected TopiaContext tx;
/** en cle les representation interne (get) en valeur les valeurs decoree (getKey) */
- protected BidiMap cache = new DualHashBidiMap();
+ protected BidiMap<Object, Object> cache = new DualHashBidiMap<>();
public EntitySemanticsDecorator() {
}
@@ -610,13 +612,13 @@
for (String exportName : exportNames) {
ExportStorage storage = ExportStorage.getExport(exportName);
try {
- Export export = storage.getNewExportInstance();
+ Export export = storage.getNewInstance();
for (String resultName : export.getNecessaryResult()) {
enabledResult.add(resultName);
}
} catch (IsisFishException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.instanciate.export",
+ log.warn(t("isisfish.error.instanciate.export",
exportName), eee);
}
}
@@ -653,6 +655,22 @@
}
}
}
+
+ // on objective and optimization
+ Objective objective = simulation.getParameter().getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = simulation.getParameter().getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
log.info("Enabled result: " + enabledResult);
}
// par defaut on dit qu'on conserve le resultat
@@ -805,7 +823,7 @@
// recuperation des noms des dimensions
String[] dimNames = new String[1 + mat.getDimCount()];
- dimNames[0] = _("isisfish.common.date");
+ dimNames[0] = t("isisfish.common.date");
for (int i = 1; i < dimNames.length; i++) {
dimNames[i] = mat.getDimensionName(i - 1);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.Arrays;
@@ -48,6 +48,8 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationPlan;
@@ -65,7 +67,7 @@
*
* Created: 29 sept. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin : poussin(a)codelutin.com
* @version $Revision$
*
* Mise a jour: $Date$
@@ -141,13 +143,13 @@
for (String exportName : exportNames) {
ExportStorage storage = ExportStorage.getExport(exportName);
try {
- Export export = storage.getNewExportInstance();
+ Export export = storage.getNewInstance();
for (String resultName : export.getNecessaryResult()) {
enabledResult.add(resultName);
}
} catch (IsisFishException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.instanciate.export",
+ log.warn(t("isisfish.error.instanciate.export",
exportName), eee);
}
}
@@ -184,6 +186,22 @@
}
}
}
+
+ // on objective and optimization
+ Objective objective = simulation.getParameter().getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = simulation.getParameter().getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
log.info("Enabled result: " + enabledResult);
}
boolean result = enabledResult.contains(name);
@@ -384,7 +402,7 @@
if (mats.size() > 0) {
// recuperation des noms des dimensions
String[] dimNames = new String[1 + matExample.getDimCount()];
- dimNames[0] = _("isisfish.common.date");
+ dimNames[0] = t("isisfish.common.date");
for (int i = 1; i < dimNames.length; i++) {
dimNames[i] = matExample.getDimensionName(i - 1);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,21 +25,19 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+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.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;
/**
@@ -48,18 +46,18 @@
* Il se trouve dans le package portant le nom de la region de cette maniere
* plusieurs region peuvent avoir des regles avec le meme nom mais pas le
* meme code.
- * <p/>
+ * <p>
* Gere les fichiers VCS de type {@link Rule} (package rules)
*
* Created: 17 août 2005 11:11:51 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
*
* @version $Revision$
*
* 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);
@@ -69,9 +67,8 @@
/** Template freemarker pour les regles. */
public static final String RULE_TEMPLATE = "templates/script/rule.ftl";
- @SuppressWarnings("unchecked")
- private static Map<String, RuleStorage> rulesCache =
- (Map<String, RuleStorage>) new ReferenceMap();
+ /** Instance cache. */
+ private static Map<String, RuleStorage> rulesCache = new ReferenceMap<String, RuleStorage>();
/**
* Contruit un nouveau rule storage
@@ -156,16 +153,6 @@
return storage;
}
- /**
- * Retourne une nouvelle instance de la regle. Compile le fichier si besoin
- *
- * @return a new rule instance
- * @throws IsisFishException if any exception while instanciation
- */
- public Rule getNewRuleInstance() throws IsisFishException {
- Object result = getNewInstance();
- return (Rule) result;
- }
static public void checkout() throws VCSException {
checkout(IsisFish.config.getDatabaseDirectory(), RULE_PATH);
@@ -212,17 +199,16 @@
* <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;
try {
- Rule rule = getNewRuleInstance();
+ Rule rule = getNewInstance();
result = rule == null ? null : rule.getDescription();
} catch (Exception e) {
- log.warn(_("isisfish.error.not.found.description",this));
+ log.warn(t("isisfish.error.not.found.description",this));
}
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,10 +29,9 @@
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.vcs.VCSException;
/**
@@ -40,7 +39,7 @@
*
* Created: 18 août 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard(a)codelutin.com>
+ * @author Grégoire DESSARD <dessard(a)codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -52,11 +51,10 @@
/** Template freemarker pour les scripts. */
public static final String SCRIPT_TEMPLATE = "templates/script/script.ftl";
-
- @SuppressWarnings("unchecked")
- static private Map<String, ScriptStorage> scriptsCache =
- (Map<String, ScriptStorage>) new ReferenceMap();
+ /** Instance cache. */
+ static private Map<String, ScriptStorage> scriptsCache = new ReferenceMap<String, ScriptStorage>();
+
/**
*
* Constructeur
@@ -90,16 +88,6 @@
result.mkdirs();
return result;
}
-
- /**
- * Retourne une nouvelle instance de la regle. Compile le fichier si besoin
- *
- * @return une nouvelle instance
- * @throws IsisFishException
- */
- public Object getNewScriptInstance() throws IsisFishException {
- return getNewInstance();
- }
/**
* Retourne le storage pour la regle demandée
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityAnalysisStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,31 +25,29 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+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.IsisFishException;
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;
/**
* Cette class permet de stocker les fichiers de calculateur de sensibilité.
- * <p/>
+ * <p>
* Gere les fichiers VCS de type {@link SensitivityAnalysis} (package sensitivityanalysis).
*
* Created: 17 août 2005 11:11:51 CEST
*
- * @author chatellier <chatellier(a)codelutin.com>
+ * @author chatellier <chatellier(a)codelutin.com>
* @version $Revision$
* Last update: $Date$ by : $Author$
*/
@@ -64,8 +62,8 @@
/** Template freemarker pour les scripts de sensibilité. */
public static final String SENSITIVITY_ANALYSIS_TEMPLATE = "templates/script/sensitivityanalysis.ftl";
- /** Cache. */
- protected static Map<String, SensitivityAnalysisStorage> sensitivityCache = new ReferenceMap();
+ /** Instance cache. */
+ protected static Map<String, SensitivityAnalysisStorage> sensitivityCache = new ReferenceMap<>();
/**
* Build new {@link SensitivityAnalysisStorage}.
@@ -152,17 +150,6 @@
}
/**
- * Retourne une nouvelle instance du calculateur. Compile le fichier si besoin
- *
- * @return retourne une nouvelle instance du calculateur
- * @throws IsisFishException s'il y a un problème d'instanciation
- */
- public SensitivityAnalysis getNewSensitivityAnalysisInstance() throws IsisFishException {
- Object result = getNewInstance();
- return (SensitivityAnalysis) result;
- }
-
- /**
* Effectue un chekout VCS sur le répertoire des calculateurs.
*
* @see VersionStorage#checkout(File, String)
@@ -220,16 +207,15 @@
*
* @return the descript of the instanciate AnalysePlan
* @see Doc
- * @see Docable
*/
@Override
public String getDescription() {
String result = null;
try {
- SensitivityAnalysis sensitivityAnalysis = getNewSensitivityAnalysisInstance();
+ SensitivityAnalysis sensitivityAnalysis = getNewInstance();
result = sensitivityAnalysis == null ? null : sensitivityAnalysis.getDescription();
} catch (Exception e) {
- log.warn(_("isisfish.error.not.found.description", this));
+ log.warn(t("isisfish.error.not.found.description", this));
}
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,12 +29,11 @@
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
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;
/**
@@ -43,21 +42,21 @@
*
* Created: 18 août 2005 15:07:36 CEST
*
- * @author chatellier eric <chatellier(a)codelutin.com>
+ * @author chatellier eric <chatellier(a)codelutin.com>
* @version $Revision$
*
* 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";
/** Template freemarker pour les scripts d'export . */
public static final String SENSITIVITY_EXPORT_TEMPLATE = "templates/script/sensitivityexport.ftl";
- @SuppressWarnings("unchecked")
- private static Map<String, SensitivityExportStorage> sensitivityExportsCache = (Map<String, SensitivityExportStorage>) new ReferenceMap();
+ /** Instance cache. */
+ private static Map<String, SensitivityExportStorage> sensitivityExportsCache = new ReferenceMap<String, SensitivityExportStorage>();
/**
* Constructeur.
@@ -93,17 +92,6 @@
}
/**
- * Retourne une nouvelle instance de l'export. Compile le fichier si besoin.
- *
- * @return une nouvelle instance de la classe d'export
- * @throws IsisFishException
- */
- public SensitivityExport getNewSensitivityExportInstance() throws IsisFishException {
- Object result = getNewInstance();
- return (SensitivityExport) result;
- }
-
- /**
* Retourne le storage pour l'export demandé.
*
* @param name le nom de la export souhaitée
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.FileReader;
@@ -99,7 +99,7 @@
info.load(reader);
} catch (IOException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.read.simulation", file
+ log.warn(t("isisfish.error.read.simulation", file
.getPath()), eee);
}
} finally {
@@ -207,7 +207,7 @@
info.store(writer, "Simulation Information");
} catch (IOException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.write.simulation", file.getPath()),
+ log.warn(t("isisfish.error.write.simulation", file.getPath()),
eee);
}
} finally {
@@ -233,7 +233,7 @@
result = dateFormat.parse(d);
} catch (ParseException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.date", d), eee);
+ log.warn(t("isisfish.error.parse.date", d), eee);
}
}
}
@@ -260,7 +260,7 @@
result = dateFormat.parse(d);
} catch (ParseException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.date", d), eee);
+ log.warn(t("isisfish.error.parse.date", d), eee);
}
}
}
@@ -295,7 +295,7 @@
value = Long.valueOf(t);
} catch (NumberFormatException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.long", t), eee);
+ log.warn(t("isisfish.error.parse.long", t), eee);
}
}
}
@@ -326,7 +326,7 @@
result = Long.parseLong(t);
} catch (NumberFormatException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.long", t), eee);
+ log.warn(t("isisfish.error.parse.long", t), eee);
}
}
}
@@ -339,7 +339,7 @@
* If a time already exists for ruleName, add time to previous time.
* (usefull because pre/post action are called multiples time)
*
- * @param keyName (ie {@link #RULE_TIME_INIT}, {@link #RULE_TIME_PRE}, {@link #RULE_TIME_POST})
+ * @param keyName (ie {@code #RULE_TIME_INIT}, {@code #RULE_TIME_PRE}, {@code #RULE_TIME_POST})
* @param ruleName rule name
* @param time time to add
*
@@ -356,7 +356,7 @@
previousTime = Long.parseLong(previousTimeAsString);
} catch (NumberFormatException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.long",
+ log.warn(t("isisfish.error.parse.long",
previousTimeAsString), eee);
}
}
@@ -455,7 +455,7 @@
result = Long.parseLong(t);
} catch (NumberFormatException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.long", t), eee);
+ log.warn(t("isisfish.error.parse.long", t), eee);
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationPlanStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,13 +25,13 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,18 +39,17 @@
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;
/**
* Class permettant de representer un plan de simulation.
* Un plan de simulation est un fichier Java que l'on compile si besoin.
- * <p/>
+ * <p>
* Gere les fichiers VCS de type {@link SimulationPlan} (package simulationplans)
*
* Created: 17 août 2005 11:11:51 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN : poussin(a)codelutin.com
*
* @version $Revision$
*
@@ -66,9 +65,8 @@
/** Template freemarker pour les plans de simulation . */
public static final String SIMULATION_PLAN_TEMPLATE = "templates/script/simulationplan.ftl";
- @SuppressWarnings("unchecked")
- static private Map<String, SimulationPlanStorage> plansCache =
- (Map<String, SimulationPlanStorage>) new ReferenceMap();
+ /** Instance cache. */
+ static private Map<String, SimulationPlanStorage> plansCache = new ReferenceMap<>();
/**
* Construit un nouveau SimulationPlan storage.
@@ -152,17 +150,6 @@
return storage;
}
- /**
- * Retourne une nouvelle instance du plan. Compile le fichier si besoin
- *
- * @return retourne une nouvelle instance du plan
- * @throws IsisFishException s'il y a un probleme d'instanciation
- */
- public SimulationPlan getNewSimulationPlanInstance() throws IsisFishException {
- Object result = getNewInstance();
- return (SimulationPlan) result;
- }
-
static public void checkout() throws VCSException {
checkout(IsisFish.config.getDatabaseDirectory(), SIMULATION_PLAN_PATH);
}
@@ -211,15 +198,14 @@
*
* @return the descript of the instanciate SimulationPlan
* @see Doc
- * @see Docable
*/
public String getDescription() {
String result = null;
try {
- SimulationPlan simulationPlan = getNewSimulationPlanInstance();
+ SimulationPlan simulationPlan = getNewInstance();
result = simulationPlan == null ? null : simulationPlan.getDescription();
} catch (Exception e) {
- log.warn(_("isisfish.error.not.found.description", this));
+ log.warn(t("isisfish.error.not.found.description", this));
}
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.FileInputStream;
@@ -36,7 +36,8 @@
import java.util.Map;
import java.util.Properties;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -62,7 +63,7 @@
*
* Created: 17 août 2005 03:48:50 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN : poussin(a)codelutin.com
* @version $Revision$
*
* Last update: $Date$
@@ -72,6 +73,7 @@
public static final String SIMULATION_PATH = "simulations";
public static final String INFORMATION_FILENAME = "information";
+ public static final String OBJECTIVE_FILENAME = "objective";
public static final String CONTROL_FILENAME = "control";
public static final String PARAMETERS_FILENAME = "parameters.properties";
public static final String RESULT_XML_FILENAME = "isis-mexico-output.xml";
@@ -84,7 +86,7 @@
private static Log log = LogFactory.getLog(SimulationStorage.class);
/** Cache des simulation storage. */
- protected static Map<String, SimulationStorage> simulations = (Map<String, SimulationStorage>) new ReferenceMap();
+ protected static Map<String, SimulationStorage> simulations = new ReferenceMap<String, SimulationStorage>();
/** some free information, that user can add during simulation */
protected SimulationInformation information = null;
@@ -97,6 +99,8 @@
protected boolean useLog;
protected transient File simulationControlFile = null;
+ /** objective value used as cache to prevent disk access */
+ protected transient Double objective = null;
/**
* Pour la lecture d'une simulation existante.
@@ -205,6 +209,33 @@
}
/**
+ * Retourne le fichier de stockage des inforations de la simulation.
+ *
+ * @param root le repertoire de stockage de la simulation
+ * @return information file
+ */
+ public static File getSimulationObjectiveFile(File root) {
+ File result = new File(root, OBJECTIVE_FILENAME);
+ return result;
+ }
+
+ public Double getObjective() throws IOException {
+ if (objective == null) {
+ File ObjFile = getObjectiveFile();
+ if (file.exists()) {
+ String s = FileUtils.readFileToString(ObjFile);
+ objective = Double.parseDouble(s);
+ }
+ }
+ return objective;
+ }
+
+ public void setObjective(double d) throws IOException {
+ objective = d;
+ FileUtils.writeStringToFile(getObjectiveFile(), String.valueOf(d));
+ }
+
+ /**
* Retourne le fichier de stockage des resultats sous format XML mexico
* de la simulation.
*
@@ -363,7 +394,7 @@
out = new FileOutputStream(file);
prop.store(out, "Parameters");
} catch (IOException eee) {
- throw new IsisFishRuntimeException(_(
+ throw new IsisFishRuntimeException(t(
"isisfish.error.save.simulation.parameters", file), eee);
} finally {
IOUtils.closeQuietly(out);
@@ -394,7 +425,7 @@
parameter = new SimulationParameterImpl();
parameter.fromProperties(prop);
} catch (IOException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.read.simulation.parameters", file), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.read.simulation.parameters", file), eee);
} finally {
IOUtils.closeQuietly(in);
}
@@ -425,7 +456,7 @@
parameter = new SimulationParameterImpl();
parameter.fromProperties(prop);
} catch (IOException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.read.simulation.parameters", file), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.read.simulation.parameters", file), eee);
} finally {
IOUtils.closeQuietly(in);
}
@@ -443,6 +474,16 @@
}
/**
+ * Retourne le nom du fichier contenant les informations de simulation.
+ *
+ * @return information file
+ */
+ protected File getObjectiveFile() {
+ File result = new File(getDirectory(), OBJECTIVE_FILENAME);
+ return result;
+ }
+
+ /**
* Get simulation informations.
*
* @return simulation information
@@ -723,7 +764,7 @@
directory.mkdirs();
}
if (!directory.isDirectory()) {
- throw new IllegalArgumentException(_(
+ throw new IllegalArgumentException(t(
"directory %s must be a directory", directory
.getAbsolutePath()));
}
@@ -734,25 +775,24 @@
renameTo = newName + "/$1";
}
if (log.isInfoEnabled()) {
- log.info(_("Import simulation file %s in directory %s and rename from %s to %s",
+ log.info(t("Import simulation file %s in directory %s and rename from %s to %s",
file, directory, renameFrom, renameTo));
}
String lastEntry = ZipUtil.uncompressAndRename(file, directory,
renameFrom, renameTo);
String name = lastEntry.substring(0, lastEntry.indexOf("/"));
if (log.isInfoEnabled()) {
- log.info(_("Last entry was %s extract name %s", lastEntry, name));
+ log.info(t("Last entry was %s extract name %s", lastEntry, name));
}
File simDir = new File(directory, name);
SimulationStorage result = new SimulationStorage(simDir, name, null);
File data = result.getDataBackupFile();
if (data.exists()) {
- TopiaContext root = result.getStorage();
- TopiaContext tx = root.beginTransaction();
+ TopiaContext tx = result.getStorage().beginTransaction();
tx.restore(data);
tx.commitTransaction();
- root.closeContext();
+ result.closeStorage();
}
return result;
@@ -784,7 +824,7 @@
// we must prepare storage (no file found)
prepare();
}
- FileUtil.copy(getDataBackupFile(), file1);
+ FileUtils.copyFile(getDataBackupFile(), file1);
// zip it
File zipRegion = new File(tmpDir, "extractedRegion.zip");
@@ -800,8 +840,8 @@
} catch (TopiaException ex) {
throw new StorageException("Can't extract region", ex);
} finally {
- if (tmpDir != null && !FileUtil.deleteRecursively(tmpDir)) {
- log.warn(_("isisfish.error.delete.file", tmpDir));
+ if (tmpDir != null && !FileUtils.deleteQuietly(tmpDir)) {
+ log.warn(t("isisfish.error.delete.file", tmpDir));
}
}
}
@@ -824,7 +864,7 @@
useLog = true;
} catch (Exception eee) {
useLog = false;
- log.warn(_("Can't create simulation logger", eee));
+ log.warn(t("Can't create simulation logger", eee));
// we do not throw any exception, this is a shame but not required
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,10 +29,9 @@
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.collections4.map.ReferenceMap;
import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.simulator.Simulator;
import fr.ifremer.isisfish.vcs.VCSException;
@@ -41,7 +40,7 @@
*
* Created: 18 août 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard(a)codelutin.com>
+ * @author Grégoire DESSARD <dessard(a)codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -55,7 +54,7 @@
public static final String SIMULATOR_TEMPLATE = "templates/script/simulator.ftl";
/** Simulators cache. */
- static private Map<String, SimulatorStorage> simulatorsCache = (Map<String, SimulatorStorage>) new ReferenceMap();
+ static private Map<String, SimulatorStorage> simulatorsCache = new ReferenceMap<String, SimulatorStorage>();
/**
* Constructeur.
@@ -87,17 +86,6 @@
result.mkdirs();
return result;
}
-
- /**
- * Retourne une nouvelle instance du simulateur. Compile le fichier si besoin.
- *
- * @return new simulator instance
- * @throws IsisFishException
- */
- public Simulator getNewSimulatorInstance() throws IsisFishException {
- Simulator result = (Simulator)getNewInstance();
- return result;
- }
/**
* Retourne le storage pour le simulateur demandée.
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -31,9 +31,11 @@
* Listener for change made on storage.
*
* Such as :
+ * <ul>
* <li>region added</li>
* <li>script removed</li>
* <li>plan renamed</li>
+ * </ul>
*
* @author chatellier
* @version $Revision: 1.0 $
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.IOException;
@@ -33,9 +33,9 @@
import java.util.Collections;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.ListenerSet;
import org.nuiton.util.Version;
@@ -309,16 +309,16 @@
}
try {
- getCurrentVCS().delete(files, _("isisfish.versionStorage.removed"));
+ getCurrentVCS().delete(files, t("isisfish.versionStorage.removed"));
} catch (VCSException eee) {
throw new StorageException(
- _("isisfish.error.delete.vcs.files"), eee);
+ t("isisfish.error.delete.vcs.files"), eee);
}
}
//TODO There is a bug to fix ? some files are not deleted!
// due to h2, storage need to be closed before deletion
if (getFile().isDirectory()) {
- FileUtil.deleteRecursively(getFile());
+ FileUtils.deleteQuietly(getFile());
} else {
getFile().delete();
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.datastore.migration;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.List;
@@ -50,6 +50,7 @@
protected static final Version VERSION_40 = new Version("4.0");
protected static final Version VERSION_41 = new Version("4.1");
protected static final Version VERSION_421 = new Version("4.2.1");
+ protected static final Version VERSION_43 = new Version("4.3");
public DatabaseMigrationClass() {
super(new MigrationResolver());
@@ -73,6 +74,8 @@
result = MigrationV40V41.class;
} else if (version.equals(VERSION_421)) {
result = MigrationV41V421.class;
+ } else if (version.equals(VERSION_43)) {
+ result = MigrationV421V43.class;
}
return result;
}
@@ -84,7 +87,7 @@
*/
@Override
public Version[] getAvailableVersions() {
- Version[] result = new Version[] { VERSION_32, VERSION_33, VERSION_40, VERSION_41, VERSION_421};
+ Version[] result = new Version[] { VERSION_32, VERSION_33, VERSION_40, VERSION_41, VERSION_421, VERSION_43};
return result;
}
@@ -105,8 +108,8 @@
boolean result = false;
int answer = JOptionPane.showConfirmDialog(
- null, _("isisfish.misc.databasemigration.question", dbVersion, versions.get(versions.size() - 1)),
- _("isisfish.misc.databasemigration.title"),
+ null, t("isisfish.misc.databasemigration.question", dbVersion, versions.get(versions.size() - 1)),
+ t("isisfish.misc.databasemigration.title"),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (answer == JOptionPane.YES_OPTION) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.datastore.migration;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.math.BigInteger;
import java.util.List;
@@ -153,7 +153,7 @@
equation.update();
} else {
EquationEditorPaneUI frame = new EquationEditorPaneUI();
- frame.setTitle(_("isisfish.message.import.equation.convert"));
+ frame.setTitle(t("isisfish.message.import.equation.convert"));
try {
frame.setEquation(equation.getCategory(), equation.getName(),
Copied: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,76 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 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.migration;
+
+import java.util.List;
+
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaContextImplementor;
+import org.nuiton.topia.migration.TopiaMigrationCallbackByClass;
+import org.nuiton.topia.migration.TopiaMigrationCallbackByClass.MigrationCallBackForVersion;
+import org.nuiton.util.Version;
+
+/**
+ * Migration between version 4.1 and 4.2.1.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class MigrationV421V43 extends MigrationCallBackForVersion {
+
+ /**
+ * Constructor.
+ *
+ * @param version version
+ * @param callback callback
+ */
+ public MigrationV421V43(Version version, TopiaMigrationCallbackByClass callback) {
+ super(version, callback);
+ }
+
+ /*
+ * @see org.nuiton.topia.migration.TopiaMigrationCallbackByClass.MigrationCallBackForVersion#prepareMigrationScript(org.nuiton.topia.framework.TopiaContextImplementor, java.util.List, boolean, boolean)
+ */
+ @Override
+ protected void prepareMigrationScript(TopiaContextImplementor tx,
+ List<String> queries, boolean showSql, boolean showProgression)
+ throws TopiaException {
+
+ // ajout de la table 'observation'
+ queries.add("CREATE TABLE observation( " +
+ "TOPIAID VARCHAR(255) NOT NULL, " +
+ "TOPIAVERSION BIGINT NOT NULL, " +
+ "TOPIACREATEDATE DATE, " +
+ "NAME LONGVARCHAR, " +
+ "COMMENT LONGVARCHAR, " +
+ "VALUE_NAME VARCHAR(255), " +
+ "VALUE_DIM VARCHAR(255), " +
+ "VALUE_DIMNAMES LONGVARCHAR, " +
+ "VALUE_SEMANTICS LONGVARCHAR, " +
+ "VALUE_DATA LONGVARCHAR) ");
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.datastore.update;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
@@ -198,14 +198,14 @@
*/
private File convertXML(File file, String versionStart, String versionEnd) throws Exception {
if(VersionUtil.greaterThan(versionStart, versionEnd)){
- throw new Exception(_("isisfish.error.import.recent.files"));
+ throw new Exception(t("isisfish.error.import.recent.files"));
}else if(VersionUtil.smallerThan(versionStart, versionEnd)){
// upgrate du fichier
try{
// recherche des fichiers XSL de conversion
URL [] xslurl = getXSLFile(versionStart, versionEnd);
if(xslurl == null){
- throw new Exception(_("isisfish.error.import.convertible"));
+ throw new Exception(t("isisfish.error.import.convertible"));
}
File dest = file;
for (URL aXslurl : xslurl) {
@@ -215,7 +215,7 @@
}
file = dest;
}catch(Exception eee){
- throw new Exception(_("isisfish.error.conversion.data"), eee);
+ throw new Exception(t("isisfish.error.conversion.data"), eee);
}
}
return file;
@@ -357,7 +357,7 @@
log.info("Ask user for manual equation conversion");
// EquationEditorFrame frame = new EquationEditorFrame(true, true);
EquationEditorPaneUI frame = new EquationEditorPaneUI();
- frame.setTitle(_("isisfish.message.import.equation.convert"));
+ frame.setTitle(t("isisfish.message.import.equation.convert"));
for (String id : equationId) {
context = storage.getStorage().beginTransaction();
Equation eq = (Equation)context.findByTopiaId(id);
@@ -511,7 +511,7 @@
pop3.setReproductionEquationContent(getEquationStringValue(pop, "equationReproduction"));
convertEquation(pop3.getReproductionEquation(), getStringValue(pop, "equationReproduction"));
pop3.setMonthGapBetweenReproRecrutement(getIntValue(pop, "nbMoisEntreReproRecrutement"));
- pop3.setRecruitmentDistribution(getMatrixValue(pop, "etalementRecrutement")); //TODO la semantique devrait etre: sem.add(_("isisfish.common.month", i));
+ pop3.setRecruitmentDistribution(getMatrixValue(pop, "etalementRecrutement")); //TODO la semantique devrait etre: sem.add(t("isisfish.common.month", i));
pop3.setComment(getStringValue(pop, "commentaire"));
List<Zone> zones = getZoneValue(pop, "zonePopulation");
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
/**
* EffortDescriptionImpl.
@@ -48,7 +48,7 @@
*/
@Override
public String toString() {
- String result = _("isisfish.effortDescription.toString",
+ String result = t("isisfish.effortDescription.toString",
getSetOfVessels(), getPossibleMetiers());
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/EquationImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/EquationImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/EquationImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,12 +25,8 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
-import java.util.HashMap;
-import java.util.Map;
-
-import bsh.Interpreter;
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.FormuleStorage;
import fr.ifremer.isisfish.equation.Language;
@@ -56,64 +52,45 @@
/**
* Evalue l'equation et retourne le résultat.
*
- * @param param equation args
+ * @param args equation args (arg name and arg value)
* @return equation evaluation
*/
- public double evaluate(Map<String, Object> param) {
+ public double evaluate(Object... args) {
String eq = getContent();
try {
- // add Simulation context in map
- param.put("context", SimulationContext.get());
// default is BSH
- if (Language.BSH.equals(getLanguage())
- || (("".equals(getLanguage()) || getLanguage() == null) && getJavaInterface() == null)) {
- Interpreter bsh = new Interpreter();
- for (Map.Entry<String, Object> e : param.entrySet()) {
- bsh.set(e.getKey(), e.getValue());
- }
- Object val = bsh.eval(eq);
- if (val instanceof Number) {
- double result = ((Number) val).doubleValue();
- return result;
- } else {
- throw new IsisFishRuntimeException(_("isisfish.error.equation.return.number", eq));
- }
- } else if (Language.JAVA.equals(getLanguage())
+ if (Language.JAVA.equals(getLanguage())
|| getJavaInterface() != null) {
+
+ // in Java, we don't need args names, only args value ordered
+ // build a new array with SimulationContext in first position
+ Object[] params = new Object[args.length / 2 + 1];
+ params[0] = SimulationContext.get();
+ for (int i = 0; i < args.length / 2; i++) {
+ params[i + 1] = args[i*2 + 1];
+ }
+
// default Java if there are javaInterface
Object val = EvaluatorHelper.evaluate(
FormuleStorage.FORMULE_PATH, getTopiaId(),
- getJavaInterface(), getContent(), param);
+ getJavaInterface(), getContent(), params);
if (val instanceof Number) {
double result = ((Number) val).doubleValue();
return result;
} else {
- throw new IsisFishRuntimeException(_("isisfish.error.equation.return.number", eq));
+ throw new IsisFishRuntimeException(t("isisfish.error.equation.return.number", eq));
}
} else {
// TODO other language support
- throw new IsisFishRuntimeException(_("isisfish.error.unsupported.equation.langage",
+ throw new IsisFishRuntimeException(t("isisfish.error.unsupported.equation.langage",
getLanguage(), eq));
}
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.equation", eq), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.evaluate.equation", eq), eee);
}
-
}
- public double evaluate(String name, Object value, Object... others) {
- Map<String, Object> param = new HashMap<String, Object>();
- param.put(name, value);
- for (int i = 0; i < others.length;) {
- name = (String) others[i++];
- value = others[i++];
- param.put(name, value);
- }
- double result = evaluate(param);
- return result;
- }
-
/*
* @see fr.ifremer.isisfish.entities.EquationAbstract#toString()
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -231,6 +231,17 @@
}
}
+ @Override
+ public List<Observation> getObservations() {
+ try {
+ ObservationDAO dao = IsisFishDAOHelper.getObservationDAO(getTopiaContext());
+ List<Observation> result = dao.findAll();
+ return result;
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException("Can't get observations", eee);
+ }
+ }
+
/*
* @see fr.ifremer.isisfish.entities.FisheryRegionAbstract#toString()
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.List;
@@ -68,7 +68,7 @@
result = targetSpecies.getTargetFactor(group);
} else {
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.error.no.target.species", this, group));
+ log.debug(t("isisfish.error.no.target.species", this, group));
}
}
return result;
@@ -88,7 +88,7 @@
*/
@Override
public String toString() {
- String result = _("isisfish.metierSeasonInfo.toString", this
+ String result = t("isisfish.metierSeasonInfo.toString", this
.getMetier(), this.getFirstMonth(), this.getLastMonth());
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -73,7 +73,7 @@
*/
@Override
public double getLength() {
- double result = 0;
+ double result = 0.0;
if (getPopulation() != null && getPopulation().getSpecies() != null) {
if (!getPopulation().getSpecies().getAgeGroupType()) {
result = (getMinLength() + getMaxLength()) / 2.0;
@@ -202,7 +202,7 @@
@Override
public String toString() {
- return _("isisfish.populationGroup.toString", this.getPopulation(),
+ return t("isisfish.populationGroup.toString", this.getPopulation(),
this.getId());
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,8 +25,8 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
import java.util.Arrays;
import java.util.Collection;
@@ -170,7 +170,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -201,7 +201,7 @@
fireOnPostWrite("content", _oldValue, content);
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"),
+ throw new IsisFishRuntimeException(t("isisfish.change.equation"),
eee);
}
}
@@ -234,7 +234,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -266,7 +266,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -298,7 +298,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -329,7 +329,7 @@
fireOnPostWrite("content", _oldValue, content);
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"),
+ throw new IsisFishRuntimeException(t("isisfish.change.equation"),
eee);
}
}
@@ -361,7 +361,7 @@
fireOnPostWrite("content", _oldValue, content);
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"),
+ throw new IsisFishRuntimeException(t("isisfish.change.equation"),
eee);
}
}
@@ -394,7 +394,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -524,10 +524,10 @@
getPopulationSeasonInfo(),};
MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.population.capturability"),
+ n("isisfish.population.capturability"),
newsems,
- new String[] { n_("isisfish.population.group"),
- n_("isisfish.population.season") });
+ new String[] { n("isisfish.population.group"),
+ n("isisfish.population.season") });
newmat.paste(value);
value = newmat;
}
@@ -551,21 +551,19 @@
if (mat == null) {
log.debug("Capturability is null, create new matrix");
mat = MatrixFactory.getInstance().create(
- n_("isisfish.population.capturability"),
+ n("isisfish.population.capturability"),
sems,
- new String[] { n_("isisfish.population.group"),
- n_("isisfish.population.season") });
+ new String[] { n("isisfish.population.group"),
+ n("isisfish.population.season") });
// we don't call setCapturability because is better to create a valid
// matrix when capturability is null instead check validity and
// create new one and paste the old
} else if (!Arrays.equals(mat.getSemantics(), sems)) {
- log.debug("Capturability has changed, create new matrix and copy old: "
- + mat.getSemantics() + " " + sems);
MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.population.capturability"),
+ n("isisfish.population.capturability"),
sems,
- new String[] { n_("isisfish.population.group"),
- n_("isisfish.population.season") });
+ new String[] { n("isisfish.population.group"),
+ n("isisfish.population.season") });
boolean allNull = true;
for (List l : mat.getSemantics()) {
@@ -633,7 +631,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -650,19 +648,19 @@
List[] sems = new List[] { getReproductionZone(), getRecruitmentZone(), };
if (mat == null) {
mat = MatrixFactory.getInstance().create(
- n_("isisfish.population.mappingZoneReproZoneRecru"),
+ n("isisfish.population.mappingZoneReproZoneRecru"),
sems,
- new String[] { n_("isisfish.population.reproduction"),
- n_("isisfish.population.recruitment") });
+ new String[] { n("isisfish.population.reproduction"),
+ n("isisfish.population.recruitment") });
// we don't call setMappingZoneReproZoneRecru because is better to create a valid
// matrix when MappingZoneReproZoneRecru is null instead check validity and
// create new one and paste the old
} else if (!Arrays.equals(mat.getSemantics(), sems)) {
MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.population.mappingZoneReproZoneRecru"),
+ n("isisfish.population.mappingZoneReproZoneRecru"),
sems,
- new String[] { n_("isisfish.population.reproduction"),
- n_("isisfish.population.recruitment") });
+ new String[] { n("isisfish.population.reproduction"),
+ n("isisfish.population.recruitment") });
newmat.paste(mat);
mat = newmat;
}
@@ -672,7 +670,7 @@
/**
* Convertie une matrice N 2D en une matrice N 1D strucutre pour les calculer.
*
- * N2D[classes, zones] --> N1D[classe1(zone1, zone2, ...), classe2(zone1, zone2, ...)]
+ * N2D[classes, zones] --> N1D[classe1(zone1, zone2, ...), classe2(zone1, zone2, ...)]
*
* @see #split2D(MatrixND)
*/
@@ -681,7 +679,7 @@
int maxY = N.getDim(1);
MatrixND result = MatrixFactory.getInstance().create(
- n_("isisfish.population.matrixAbundance1D"),
+ n("isisfish.population.matrixAbundance1D"),
new int[] { 1, maxX * maxY });
for (int x = 0; x < maxX; x++) {
@@ -705,10 +703,10 @@
int nbZone = zones.size();
MatrixND result = MatrixFactory.getInstance().create(
- n_("isisfish.population.matrixAbundance"),
+ n("isisfish.population.matrixAbundance"),
new List[] { groups, zones },
- new String[] { n_("isisfish.population.groups"),
- n_("isisfish.population.zones") });
+ new String[] { n("isisfish.population.groups"),
+ n("isisfish.population.zones") });
try {
int c = 0;
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,8 +25,8 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
import java.util.ArrayList;
import java.util.Arrays;
@@ -87,9 +87,9 @@
if (!months.equals(oldMonths)) {
MatrixND tmp = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.distributionSpawing"),
+ n("isisfish.populationSeasonInfo.distributionSpawing"),
new List[] { months },
- new String[] { n_("isisfish.populationSeasonInfo.months") });
+ new String[] { n("isisfish.populationSeasonInfo.months") });
tmp.pasteSemantics(result);
result = tmp;
}
@@ -117,23 +117,23 @@
if (mat == null) {
mat = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.migration"),
+ n("isisfish.populationSeasonInfo.migration"),
sems,
new String[] {
- n_("isisfish.populationSeasonInfo.group"),
- n_("isisfish.populationSeasonInfo.departure"),
- n_("isisfish.populationSeasonInfo.arrival") });
+ n("isisfish.populationSeasonInfo.group"),
+ n("isisfish.populationSeasonInfo.departure"),
+ n("isisfish.populationSeasonInfo.arrival") });
// we don't call setCapturability because is better to create a valid
// matrix when capturability is null instead check validity and
// create new one and paste the old
} else if (!Arrays.equals(mat.getSemantics(), sems)) {
MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.migration"),
+ n("isisfish.populationSeasonInfo.migration"),
sems,
new String[] {
- n_("isisfish.populationSeasonInfo.group"),
- n_("isisfish.populationSeasonInfo.departure"),
- n_("isisfish.populationSeasonInfo.arrival") });
+ n("isisfish.populationSeasonInfo.group"),
+ n("isisfish.populationSeasonInfo.departure"),
+ n("isisfish.populationSeasonInfo.arrival") });
newmat.pasteSemantics(mat);
mat = newmat;
// perhaps call setCapturability, but if possible wait the user
@@ -157,21 +157,21 @@
if (mat == null) {
mat = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.emigration"),
+ n("isisfish.populationSeasonInfo.emigration"),
sems,
new String[] {
- n_("isisfish.populationSeasonInfo.group"),
- n_("isisfish.populationSeasonInfo.departure") });
+ n("isisfish.populationSeasonInfo.group"),
+ n("isisfish.populationSeasonInfo.departure") });
// we don't call setCapturability because is better to create a valid
// matrix when capturability is null instead check validity and
// create new one and paste the old
} else if (!Arrays.equals(mat.getSemantics(), sems)) {
MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.emigration"),
+ n("isisfish.populationSeasonInfo.emigration"),
sems,
new String[] {
- n_("isisfish.populationSeasonInfo.group"),
- n_("isisfish.populationSeasonInfo.departure") });
+ n("isisfish.populationSeasonInfo.group"),
+ n("isisfish.populationSeasonInfo.departure") });
newmat.pasteSemantics(mat);
mat = newmat;
// perhaps call setCapturability, but if possible wait the user
@@ -195,21 +195,21 @@
if (mat == null) {
mat = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.immigration"),
+ n("isisfish.populationSeasonInfo.immigration"),
sems,
new String[] {
- n_("isisfish.populationSeasonInfo.group"),
- n_("isisfish.populationSeasonInfo.arrival") });
+ n("isisfish.populationSeasonInfo.group"),
+ n("isisfish.populationSeasonInfo.arrival") });
// we don't call setCapturability because is better to create a valid
// matrix when capturability is null instead check validity and
// create new one and paste the old
} else if (!Arrays.equals(mat.getSemantics(), sems)) {
MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.populationSeasonInfo.immigration"),
+ n("isisfish.populationSeasonInfo.immigration"),
sems,
new String[] {
- n_("isisfish.populationSeasonInfo.group"),
- n_("isisfish.populationSeasonInfo.arrival") });
+ n("isisfish.populationSeasonInfo.group"),
+ n("isisfish.populationSeasonInfo.arrival") });
newmat.pasteSemantics(mat);
mat = newmat;
// perhaps call setCapturability, but if possible wait the user
@@ -396,7 +396,7 @@
c++;
}
if (c >= groups.size()) {
- log.warn(_("isisfish.error.acceptable.population")
+ log.warn(t("isisfish.error.acceptable.population")
+ " (group=" + group + " new length: " + length[l]
+ ")");
// pas retrouver une classe pour cette longueur, on le laisse dans la meme classe.
@@ -733,7 +733,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -767,7 +767,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -801,7 +801,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
@@ -839,7 +839,7 @@
}
public String toString() {
- String result = _("isisfish.populationSeasonInfo.toString", this
+ String result = t("isisfish.populationSeasonInfo.toString", this
.getPopulation(), this.getFirstMonth(), this.getLastMonth());
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/SeasonImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,7 +29,7 @@
import java.util.List;
import fr.ifremer.isisfish.types.Month;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
/***
* SeasonImpl.
@@ -62,7 +62,7 @@
public List<Month> getMonths() {
List<Month> result = new ArrayList<Month>();
Month m = getFirstMonth();
- while (m.equals(getLastMonth()) == false) {
+ while (!m.equals(getLastMonth())) {
result.add(m);
m = m.next();
}
@@ -92,7 +92,7 @@
boolean result = month.equals(getLastMonth()); // check first last month, because loop don't do that
Month m = getFirstMonth();
- while (result == false && m.equals(getLastMonth()) == false) {
+ while (!result && !m.equals(getLastMonth())) {
result = m.equals(month);
m = m.next();
}
@@ -104,7 +104,7 @@
*/
@Override
public String toString() {
- String result = _("isisfish.season.toString", this.getFirstMonth(),
+ String result = t("isisfish.season.toString", this.getFirstMonth(),
this.getLastMonth());
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.nuiton.topia.TopiaException;
@@ -110,7 +110,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -135,7 +135,7 @@
fireOnPostWrite("content", _oldValue, content);
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"),
+ throw new IsisFishRuntimeException(t("isisfish.change.equation"),
eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.Arrays;
@@ -98,7 +98,7 @@
List<StrategyMonthInfo> result = super.getStrategyMonthInfo();
if (result == null || result.size() != Month.NUMBER_OF_MONTH) {
if (result != null) {
- log.warn(_("isisfish.error.strategy.order", getName(),
+ log.warn(t("isisfish.error.strategy.order", getName(),
result.size()));
clearStrategyMonthInfo();
} else {
@@ -201,7 +201,7 @@
fireOnPostWrite("content", _oldValue, content);
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"),
+ throw new IsisFishRuntimeException(t("isisfish.change.equation"),
eee);
}
}
@@ -235,10 +235,10 @@
List<Month> months = Arrays.asList(Month.MONTH);
MatrixND result = MatrixFactory.getInstance().create(
- _("isisfish.strategy.proportionMetier"),
+ t("isisfish.strategy.proportionMetier"),
new List[] { metiers, months},
- new String[] { _("isisfish.strategyMonthInfo.metier"),
- _("isisfish.common.months")});
+ new String[] { t("isisfish.strategyMonthInfo.metier"),
+ t("isisfish.common.months")});
// copy sub StrategyMonthInfo's proportionMetier to current
if (getStrategyMonthInfo() != null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.Collection;
@@ -117,14 +117,14 @@
if (result == null) {
result = MatrixFactory.getInstance().create(
- _("isisfish.strategyMonthInfo.proportion"),
+ t("isisfish.strategyMonthInfo.proportion"),
new List[] { metiers },
- new String[] { _("isisfish.strategyMonthInfo.metier") });
+ new String[] { t("isisfish.strategyMonthInfo.metier") });
} else if (!result.getSemantic(0).equals(metiers)) {
MatrixND tmp = MatrixFactory.getInstance().create(
- _("isisfish.strategyMonthInfo.proportion"),
+ t("isisfish.strategyMonthInfo.proportion"),
new List[] { metiers },
- new String[] { _("isisfish.strategyMonthInfo.metier") });
+ new String[] { t("isisfish.strategyMonthInfo.metier") });
tmp.pasteSemantics(result);
result = tmp;
}
@@ -170,7 +170,7 @@
*/
@Override
public String toString() {
- String result = _("isisfish.strategyMonthInfo.toString", this
+ String result = t("isisfish.strategyMonthInfo.toString", this
.getStrategy(), this.getMonth());
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -73,7 +73,7 @@
setTargetFactorEquation(eq);
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.create.equation"), eee);
+ t("isisfish.error.create.equation"), eee);
}
}
@@ -102,7 +102,7 @@
} catch (TopiaException eee) {
throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
+ t("isisfish.error.change.equation"), eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/VariableImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/entities/VariableImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/entities/VariableImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entities;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.beanutils.BeanUtils;
import org.nuiton.topia.TopiaException;
@@ -115,7 +115,7 @@
fireOnPostWrite("content", _oldValue, content);
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.change.equation"), eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/equation/Language.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/equation/Language.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/equation/Language.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,8 +40,6 @@
/** Java language. */
final static public String JAVA = "java";
- /** Bean shell language. */
- final static public String BSH = "BSH";
/** ECMAScript language. */
final static public String ECMASCRIPT = "ECMAScript";
/** GROOVY language. */
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -26,8 +26,8 @@
package fr.ifremer.isisfish.logging;
/**
- * abstraction of a log level
- * <p/>
+ * abstraction of a log level.
+ *
* a LogLevel is defined by 3 properties :
* <ul>
* <li> his name (given by {@link #name()}) </li>
@@ -36,10 +36,10 @@
* <li> his mask value (given by {@link #mask()}) </li>
* </ul>
* The mask value is introduced to make possible some performant search.
- * <p/>
- * Using the <b>"<code>1 << ordinal()</code>"</b> idiom is the easiest manner to manage
+ *
+ * Using the <b>"<code>1 << ordinal()</code>"</b> idiom is the easiest manner to manage
* operations of set of LogLevels.
- * <p/>
+ * <p>
* To obtain a LogLevel from his severity, use {@link #getLogLevel(int)}
*
* @author chemit
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevelUtil.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevelUtil.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/LogLevelUtil.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,17 +35,17 @@
* To make performant filtering operations on a lots of LogRecord,
* we use as representation for set of LogLevel an integer
* as the sum of the {@link LogLevel#mask()} values.
- * <p/>
+ *
* The <code>0</code> value correspond to all levels and is a violating the rule
* (but how to make a search with no level ?)
- * <p/>
+ *
* to test if a set of LogLevel contains a given LogLevel use
* {@link #contains(int, int)}
- * <p/>
+ *
* to add a level in a set of LogLevel use {@link #addToSet(int, int)}
- * <p/>
+ *
* to remove a level in a set of LogLevel use {@link #removeFromSet(int, int)}
- * <p/>
+ *
* to obtain all levels contained in a set of LogLevel use
* {@link #getLogLevels(int)}
*
@@ -80,7 +80,7 @@
/**
* Compute the sum of levels toInit() value for
* all given levels (given with their ordinal value).
- * <p/>
+ * <p>
* This value will be used for a performant filter process.
*
* @param firstOrdinal the first level of levels to use
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -36,7 +36,7 @@
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.IOException;
@@ -51,15 +51,15 @@
*
* Usefull class for dealing with hot configuration of log4J. this is temporary
* we must find a way to abstract this layer.
- * <p/>
+ *
* the class offers three public static methods :
- * <p/>
+ *
* {@link #addSimulationAppender(String, String, String, String, String, String)}
* to add a logger for a given simulation in a given thread, with simulLogLevel,
* scriptLogLvel and libLogLevel given.
- * <p/>
- * {@link #removeAppender(String, String)} to remove a appender of a simulation
- * <p/>
+ *
+ * {@code #removeAppender(String, String)} to remove a appender of a simulation
+ *
* {@link #showSimulationLogConsole(String)} to display the log console of
* a simulation, given his name.
*
@@ -137,10 +137,10 @@
Logger.getRootLogger().addAppender(appender);
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.log.addAppender", appenderId));
+ log.debug(t("isisfish.log.addAppender", appenderId));
}
} catch (IOException ex) {
- log.error(_("isisfish.error.log.createAppender", appenderId, ex.getMessage()));
+ log.error(t("isisfish.error.log.createAppender", appenderId, ex.getMessage()));
throw new IsisFishException("Can't add appender", ex);
}
@@ -153,7 +153,7 @@
*/
public static void removeSimulationAppender(String appenderId) {
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.log.removeAppender", appenderId));
+ log.debug(t("isisfish.log.removeAppender", appenderId));
}
removeAppender(null, appenderId);
// push back to original levels
@@ -182,12 +182,12 @@
String smtpServer = IsisFish.config.getSmtpServer();
String defaultFrom = IsisFish.config.getUserMail();
- String title = _("isisfish.simulation.log.console.title", simulationName);
+ String title = t("isisfish.simulation.log.console.title", simulationName);
LogConsole.newConsole(logFile, smtpServer, defaultFrom, null, title);
if (log.isInfoEnabled()) {
- log.info(_("isisfish.simulation.log.showConsole", simulationName));
+ log.info(t("isisfish.simulation.log.showConsole", simulationName));
}
}
@@ -218,7 +218,7 @@
// we found a logger to keep at his level
result.put(logger.getName(), logger.getLevel());
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.log.swapLogLevel", loggerName, logger.getLevel(), logLevel));
+ log.debug(t("isisfish.log.swapLogLevel", loggerName, logger.getLevel(), logLevel));
}
// change to new level
logger.setLevel(level);
@@ -242,7 +242,7 @@
if (logger != null) {
Level oldLevel = entry.getValue();
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.log.restoreLogLevel", logger.getName(), logger.getLevel(), oldLevel));
+ log.debug(t("isisfish.log.restoreLogLevel", logger.getName(), logger.getLevel(), oldLevel));
}
logger.setLevel(oldLevel);
}
@@ -262,16 +262,16 @@
// get logger for the category
Logger logger = category == null ? Logger.getRootLogger() : Logger.getLogger(category);
if (logger == null) {
- Logger.getRootLogger().warn(_("isisfish.error.log.closeAppender", name, category));
+ Logger.getRootLogger().warn(t("isisfish.error.log.closeAppender", name, category));
return;
}
// get the required appender
Appender app = logger.getAppender(name);
if (app == null) {
- logger.warn(_("isisfish.error.log.foundAppender", name, category));
+ logger.warn(t("isisfish.error.log.foundAppender", name, category));
return;
}
- logger.info(_("isisfish.log.closeAppender", name, category));
+ logger.info(t("isisfish.log.closeAppender", name, category));
// close appender
app.close();
// and remove it from the logger
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsole.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsole.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsole.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.logging.console;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
@@ -96,7 +96,7 @@
defaultFrom, String defaultTo, String title) throws IOException, IllegalArgumentException {
if (!logFile.exists()) {
- String message1 = _("could not found log file %1$s", logFile);
+ String message1 = t("could not found log file %1$s", logFile);
log.warn(message1);
throw new IllegalArgumentException(message1);
}
@@ -179,8 +179,8 @@
protected boolean disableScroll = true;
/**
- * the console listen the change on the model
- * <p/>
+ * the console listen the change on the model.
+ *
* TODO Deal with ui data update : use a Timer (or a Worker)
*
* @param e change event
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,7 +29,7 @@
import static fr.ifremer.isisfish.logging.console.LogConsole.RESET_CHANGED_PROPERTY;
import static fr.ifremer.isisfish.logging.console.LogConsole.TEXT_CHANGED_PROPERTY;
import static org.apache.commons.logging.LogFactory.getLog;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
@@ -61,7 +61,7 @@
/**
* This class is responsible of provinding LogRecord, it deals with LogReecord
* stored in a file with a serializedForm for performance issue.
- * <p/>
+ *
* <b>Use one LogConsoleHandler for one log file</b>
*
* @author chemit
@@ -143,7 +143,7 @@
try {
levelsReader.close();
} catch (IOException e) {
- log.warn(_("could not close reader %1$s", levelsReader));
+ log.warn(t("could not close reader %1$s", levelsReader));
}
}
@@ -151,7 +151,7 @@
try {
reader.close();
} catch (IOException e) {
- log.warn(_("could not close reader %1$s", reader));
+ log.warn(t("could not close reader %1$s", reader));
}
}
}
@@ -212,7 +212,7 @@
dontAdjust = true;
read(newOffset);
} catch (IOException e1) {
- log.warn(_("could not read at offset %1$s for reason %2$s", newOffset, e1.getMessage()));
+ log.warn(t("could not read at offset %1$s for reason %2$s", newOffset, e1.getMessage()));
}
}
@@ -225,7 +225,7 @@
dontAdjust = true;
read(e.getValue());
} catch (IOException e1) {
- log.warn(_("could not read at offset %1$s for reason %2$s", e.getValue(), e1.getMessage()));
+ log.warn(t("could not read at offset %1$s for reason %2$s", e.getValue(), e1.getMessage()));
}
}
@@ -240,7 +240,7 @@
try {
close();
} catch (Exception e) {
- log.warn(_("isisfish.error.log.console.dispose" ,this,e.getMessage()));
+ log.warn(t("isisfish.error.log.console.dispose" ,this,e.getMessage()));
}
return;
}
@@ -360,7 +360,7 @@
read(0);
dontAdjust = true;
model.fireStateChanged();
- getStatusBar().setStatus(_("filter loaded in %1$s ms : found %2$s lines.", (System.currentTimeMillis() - t0), reader.getNbLines()));
+ getStatusBar().setStatus(t("filter loaded in %1$s ms : found %2$s lines.", (System.currentTimeMillis() - t0), reader.getNbLines()));
} catch (IOException e) {
log.warn("could not open reader [" + this.reader + "] for reason " + e.getMessage());
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,7 +34,7 @@
/**
* This class is the model used in LogConsole.
- * <p/>
+ *
* The model deals with ChangeEvent to notify ui, model has changed.
*
* @author chemit
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/console/LogMail.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.logging.console;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -57,6 +57,7 @@
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.FileUtil;
@@ -70,7 +71,6 @@
*
* @author chemit
*/
-
public class LogMail extends LogMailUI {
/** serialVersionUID */
@@ -97,7 +97,7 @@
protected StatusBar statusBar;
public LogMail(final StatusBar statusBar, String from, File logFile, File simulationFile, final String smtpServer) {
- setTitle(_("isisfish.log.mail.send.title", simulationFile.getName()));
+ setTitle(t("isisfish.log.mail.send.title", simulationFile.getName()));
this.from = from;
this.logFile = logFile;
this.simulationFile = simulationFile;
@@ -108,9 +108,9 @@
public void actionPerformed(ActionEvent e) {
try {
sendMail(mailTo.getText(), content.getText(), sendAll.isSelected());
- statusBar.setStatus(_("isisfish.log.mail.send" , to));
+ statusBar.setStatus(t("isisfish.log.mail.send" , to));
} catch (Exception eee) {
- statusBar.setStatus(_("isisfish.log.mail.failed", smtpServer));
+ statusBar.setStatus(t("isisfish.log.mail.failed", smtpServer));
} finally {
dispose();
}
@@ -157,7 +157,7 @@
BodyPart attPart = new MimeBodyPart();
// -- Set the subject and body text --
- String subject = _("isisfish.log.simulation.name",simulationFile.getName());
+ String subject = t("isisfish.log.simulation.name",simulationFile.getName());
msg.setSubject(subject);
final File zipFile;
@@ -174,7 +174,7 @@
ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);
BufferedWriter zipWriter = new BufferedWriter(new OutputStreamWriter(zipOutputStream));
zipOutputStream.putNextEntry(new ZipEntry(zipFile.getName()));
- String content = FileUtil.readAsString(zipFile);
+ String content = FileUtils.readFileToString(zipFile);
zipWriter.write(content);
zipWriter.flush();
@@ -251,8 +251,8 @@
Transport.send(msg);
if (tmpDirectory != null) {
- if (!FileUtil.deleteRecursively(tmpDirectory)) {
- log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ if (!FileUtils.deleteQuietly(tmpDirectory)) {
+ log.warn(t("isisfish.error.remove.directory", tmpDirectory));
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -37,7 +37,7 @@
/**
* A simple implementation of {@link OffsetReader} using a file for
* dealing with offsets.
- * <p/>
+ *
* The offset of lines are pre-computed in a file {@link #offsetFile}, generated
* by {@link #createOffsets(LineReader)}. or
* {@link #createOffsets(LineReader , LineReader)}.
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/io/LineReader.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,10 +35,10 @@
/**
* A lineReader reads lines from a file using a {@link java.io.RandomAccessFile}.
- * <p/>
- * To perfrom efficient io operations, we use a {@link OffsetReader} to obtain
+ *
+ * To perform efficient io operations, we use a {@link OffsetReader} to obtain
* the offset of the first char of a line.
- * <p/>
+ *
* You can create a new LineReader from a previous one, the matchings lines of
* the new LineReader will all match the parent one (subset LineReader).
*
Modified: trunk/src/main/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,9 +34,8 @@
/**
* This class is a Offset Reader using a memory cache.
- * <p/>
+ *
* All offsets are saved in memory.
- * <p/>
*
* @author chemit
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/map/CellSelectionLayer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/map/CellSelectionLayer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/map/CellSelectionLayer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -227,13 +227,11 @@
* listener is interested in.
* Layers interested in receiving events should register for
* receiving events in "select" mode.
- * <code>
* <pre>
* return new String[1] {
* SelectMouseMode.modeID
* };
* </pre>
- * <code>
* @see NavMouseMode#modeID
* @see SelectMouseMode#modeID
* @see NullMouseMode#modeID
Modified: trunk/src/main/java/fr/ifremer/isisfish/map/CopyMapToClipboardListener.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/map/CopyMapToClipboardListener.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/map/CopyMapToClipboardListener.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.map;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
@@ -87,7 +87,7 @@
menu = new JPopupMenu();
JMenuItem copyClicboardItem = new JMenuItem();
- copyClicboardItem.setText(_("isisfish.input.map.copytoclicboard"));
+ copyClicboardItem.setText(t("isisfish.input.map.copytoclicboard"));
copyClicboardItem.setActionCommand(COPY_TO_CLICBOARD_COMMAND);
copyClicboardItem.addActionListener(this);
menu.add(copyClicboardItem);
Modified: trunk/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2002 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Copyright (C) 2002 - 2014 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -25,27 +25,32 @@
package fr.ifremer.isisfish.map;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
+import java.awt.Color;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import com.bbn.openmap.BufferedMapBean;
import com.bbn.openmap.Layer;
import com.bbn.openmap.LayerHandler;
+import com.bbn.openmap.MapBean;
import com.bbn.openmap.MouseDelegator;
+import com.bbn.openmap.PropertyHandler;
+import com.bbn.openmap.event.CoordMouseMode;
import com.bbn.openmap.event.MapMouseListener;
import com.bbn.openmap.event.MapMouseMode;
import com.bbn.openmap.event.NavMouseMode;
+import com.bbn.openmap.gui.OverlayMapPanel;
import com.bbn.openmap.layer.GraticuleLayer;
import com.bbn.openmap.layer.dted.DTEDLayer;
import com.bbn.openmap.layer.e00.E00Layer;
@@ -68,13 +73,13 @@
*
* Created: 16 mai 2005
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
* par : $Author$
*/
-public class IsisMapBean extends BufferedMapBean {
+public class IsisMapBean extends OverlayMapPanel {
/** serialVersionUID. */
private static final long serialVersionUID = -4162103384132928473L;
@@ -101,24 +106,36 @@
protected static final float SCALE = 9500000f;
public IsisMapBean() {
+ super(new PropertyHandler(new Properties()), true);
+ create();
init();
- setActiveMouseMode(new NavMouseMode());
}
- protected void init() {
- setScale(SCALE);
+ public void init() {
+ MapBean mapBean = getMapBean();
+ mapBean.setScale(SCALE);
// Let the LayerHandler know who is interested in Layers.
//MapBean is just one component
- layerHandler.addLayerListener(this);
+ //layerHandler.addLayerListener(this);
- md = new MouseDelegator(this);
+ md = new MouseDelegator(mapBean);
// md.addMouseMode(selectMouseMode);
// Tell the delegator to use the default modes: Navigation
// and Selection
md.setDefaultMouseModes();
+ addMapComponent(md);
+ addMapComponent(layerHandler);
+
+ getMapBean().setBackgroundColor(new Color(0x99b3cc));
+
+ NavMouseMode mouseMode = new NavMouseMode();
+ setActiveMouseMode(mouseMode);
+
+ // add copy to clipboard support
+ addMapMouseListener(new CopyMapToClipboardListener(mapBean));
}
- public void setActiveMouseMode(MapMouseMode mode) {
+ public void setActiveMouseMode(CoordMouseMode mode) {
md.setActiveMouseMode(mode);
currentMouseMode = mode;
// il faut remettre les listeners
@@ -278,7 +295,7 @@
public void addResultatLayer(String id, ResultatLayer layer) {
layer.setName(id);
addMapMouseListener(layer);
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
public void removeAllResultatLayer() {
@@ -304,25 +321,27 @@
Layer layer = null;
// get layer depending on type
- if (mapFile.endsWith(".shp")) {
+ switch (FilenameUtils.getExtension(mapFile)) {
+ case "shp":
layer = getShapeLayer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".e00")) {
+ break;
+ case "e00":
layer = getE00Layer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".mif")) {
+ break;
+ case "mif":
layer = getMIFLayer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".rpf") || mapFile.endsWith(".cadrg") || mapFile.endsWith(".cib")) {
+ break;
+ case "rpf":
+ case "cadrg":
+ case "cib":
layer = getRPFLayer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".vmap") || mapFile.endsWith(".dcw") || mapFile.endsWith(".vpf")) {
+ break;
+ case "vmap":
+ case "dcw":
+ case "vpf":
layer = getVPFLayer(layerId, mapFile, lineColor, fillColor);
- }
- /*else if (mapFile.endsWith(".dt0")) {
- layer = getDTEDLayer(layerId, mapFile, lineColor, fillColor);
- }*/
- else {
+ break;
+ default:
if (log.isErrorEnabled()) {
log.error("Can't find layer for " + mapFile + " (unknown type)");
}
@@ -333,7 +352,7 @@
if (log.isDebugEnabled()) {
log.debug("Add layer " + layer);
}
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
}
@@ -561,12 +580,12 @@
p.setProperty("." + GraticuleLayer.TextColorProperty, "FF000000");
layer.setProperties("", p);
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
protected void addZoneDelimiterLayer() throws TopiaException {
ZoneDelimiterLayer layer = new ZoneDelimiterLayer(fisheryRegion);
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
protected void addSpecificLayer() {
@@ -595,9 +614,8 @@
// OR this one
//setProjection(new CADRG(new LatLonPoint(centerLat, centerLong), SCALE, 480, 540));
- setCenter(new LatLonPoint.Float(centerLat, centerLong));
+ getMapBean().setCenter(new LatLonPoint.Float(centerLat, centerLong));
//setScale(SCALE);
- addSpecificLayer();
addGraticuleLayer();
// ajout des shapes
@@ -605,7 +623,7 @@
for (String filename : getFisheryRegion().getMapFilePath()) {
if (!StringUtils.isEmpty(filename)) {
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.message.load.map", filename));
+ log.debug(t("isisfish.message.load.map", filename));
}
addLayer(filename, filename, "ff000000", "ffbdde83");
shapeLoaded = true;
@@ -621,10 +639,12 @@
String filename = IsisFish.config.getDefaultMapFilename();
addLayer(filename, filename, "ff000000", "ffbdde83");
}
+
+ addSpecificLayer();
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.init.map"), eee);
+ log.error(t("isisfish.error.init.map"), eee);
}
}
}
@@ -653,7 +673,7 @@
try {
activeSelectionLayer = new CellSelectionLayer(fisheryRegion, getSelectionMode());
addMapMouseListener(activeSelectionLayer);
- layerHandler.addLayer(activeSelectionLayer);
+ addMapComponent(activeSelectionLayer);
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
log.warn("Can't add selection layer", eee);
Copied: trunk/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,129 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2005 - 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.map;
+
+import java.awt.event.MouseEvent;
+
+import com.bbn.openmap.Layer;
+import com.bbn.openmap.event.CoordMouseMode;
+import com.bbn.openmap.event.MapMouseListener;
+import com.bbn.openmap.event.MapMouseMode;
+import com.bbn.openmap.event.ProjectionEvent;
+import com.bbn.openmap.event.SelectMouseMode;
+
+/**
+ * OpenMapEvents.java
+ *
+ * Created: 5 septembre 2005 03:21:41 CEST
+ *
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @version $Revision: 202 $
+ *
+ * Last update: $Date: 2006-06-30 18:39:09 +0200 (ven, 30 jun 2006) $
+ * by : $Author: bpoussin $
+ */
+public abstract class OpenMapEvents extends Layer implements MapMouseListener { // OpenMapEvents
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -8365120112075269288L;
+
+ /**
+ * SelectMouseMode property: Null, Distance, Nav, Select
+ */
+ protected MapMouseMode mouseMode;
+ protected IsisMapBean map;
+
+ protected int selectMode = CellSelectionLayer.SINGLE_SELECTION;
+
+ /**
+ * Constructor.
+ *
+ * Register himself to {@code map} mapMouseListener.
+ * Also set mouseMode and selectMode on map.
+ *
+ * @param map map bean
+ * @param mouseMode mouse mode
+ * @param selectMode select mode
+ */
+ public OpenMapEvents(IsisMapBean map, CoordMouseMode mouseMode, int selectMode) {
+ super();
+ this.mouseMode = mouseMode;
+ this.map = map;
+ this.selectMode = selectMode;
+ map.setSelectionMode(selectMode);
+ map.setActiveMouseMode(mouseMode);
+ map.addMapMouseListener(this);
+
+ }
+
+ @Override
+ public void projectionChanged(ProjectionEvent e) {
+ // do nothing, it's not reel layer
+ }
+
+ @Override
+ public String[] getMouseModeServiceList() {
+ return new String[] { SelectMouseMode.modeID };
+ }
+
+ @Override
+ public boolean mouseClicked(MouseEvent e) {
+ return true;
+ }
+
+ @Override
+ public boolean mouseDragged(MouseEvent e) {
+ return false;
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseMoved() {
+ }
+
+ @Override
+ public boolean mouseMoved(MouseEvent e) {
+ return false;
+ }
+
+ @Override
+ public boolean mousePressed(MouseEvent e) {
+ return false;
+ }
+
+ @Override
+ public boolean mouseReleased(MouseEvent e) {
+ return false;
+ }
+
+} // OpenMapEvents
Modified: trunk/src/main/java/fr/ifremer/isisfish/map/ResultatLayer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/map/ResultatLayer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/map/ResultatLayer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.map;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Color;
import java.awt.Component;
@@ -298,11 +298,10 @@
* The source MouseEvents will only get sent to the MapMouseListener if the
* mode is set to one that the listener is interested in. Layers interested
* in receiving events should register for receiving events in "select"
- * mode. <code>
+ * mode.
* <pre>
* return new String[1] { SelectMouseMode.modeID };
* </pre>
- * <code>
* @see SelectMouseMode#modeID
*/
public String[] getMouseModeServiceList() {
@@ -359,11 +358,11 @@
for (Object datamap : datamaps) {
DefaultDataMap dataMap = (DefaultDataMap) datamap;
if (dataMap.getInfo() != null) {
- info += _("Info") + ": " + dataMap.getInfo().getLabels()
- + " " + _("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
+ info += t("Info") + ": " + dataMap.getInfo().getLabels()
+ + " " + t("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
}
else {
- info += " " + _("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
+ info += " " + t("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -46,9 +46,8 @@
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
@@ -61,7 +60,6 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
import org.xml.sax.InputSource;
import fr.ifremer.isisfish.IsisFishDAOHelper;
@@ -97,11 +95,12 @@
* Get xml representation of a design plan.
*
* @param designPlan design plan
+ * @param args some meta information to put into generated xml (author, date, id, license)
* @return xml design plan representation
*/
- public static String getDesignPlanAsXML(DesignPlan designPlan) {
+ public static String getDesignPlanAsXML(DesignPlan designPlan, String... args) {
- DesignPlanXMLVisitor visitor = new DesignPlanXMLVisitor();
+ DesignPlanXMLVisitor visitor = new DesignPlanXMLVisitor(args);
designPlan.accept(visitor);
String designPlanXml = visitor.getXML();
@@ -181,23 +180,23 @@
*
* Format is :
* <pre>
- * <mx name="une matrice">
- * <dimension name="classe" size="2">
- * <label>jeune</label>
- * <label>vieux</label>
- * </dimension>
- * <dimension name="x" size="3">
- * <label>0</label>
- * <label>1</label>
- * <label>2</label>
- * </dimension>
- * <d>2.0</d>
- * <d>3.1415</d>
- * <d>2.0</d>
- * <d>3.1415</d>
- * <d>2.0</d>
- * <d>3.1415</d>
- * </mx>
+ * <mx name="une matrice">
+ * <dimension name="classe" size="2">
+ * <label>jeune</label>
+ * <label>vieux</label>
+ * </dimension>
+ * <dimension name="x" size="3">
+ * <label>0</label>
+ * <label>1</label>
+ * <label>2</label>
+ * </dimension>
+ * <d>2.0</d>
+ * <d>3.1415</d>
+ * <d>2.0</d>
+ * <d>3.1415</d>
+ * <d>2.0</d>
+ * <d>3.1415</d>
+ * </mx>
* </pre>
*
* @param matrix matrix
@@ -266,23 +265,23 @@
*
* Format is :
* <pre>
- * <mx name="une matrice">
- * <dimension name="classe" size="2">
- * <label>jeune</label>
- * <label>vieux</label>
- * </dimension>
- * <dimension name="x" size="3">
- * <label>0</label>
- * <label>1</label>
- * <label>2</label>
- * </dimension>
- * <d>2.0</d>
- * <d>3.1415</d>
- * <d>2.0</d>
- * <d>3.1415</d>
- * <d>2.0</d>
- * <d>3.1415</d>
- * </mx>
+ * <mx name="une matrice">
+ * <dimension name="classe" size="2">
+ * <label>jeune</label>
+ * <label>vieux</label>
+ * </dimension>
+ * <dimension name="x" size="3">
+ * <label>0</label>
+ * <label>1</label>
+ * <label>2</label>
+ * </dimension>
+ * <d>2.0</d>
+ * <d>3.1415</d>
+ * <d>2.0</d>
+ * <d>3.1415</d>
+ * <d>2.0</d>
+ * <d>3.1415</d>
+ * </mx>
* </pre>
*
* @param mxElement dom element
@@ -387,16 +386,16 @@
*
* Format is :
* <pre>
- * <rules>
- * <rule name="RuleName1">
- * <param key="rule.0.parameter.param1">param1</param>
- * <param key="rule.0.parameter.pop">topiaId1</param>
- * </rule>
- * <rule name="RuleName2">
- * <param key="rule.0.parameter.param1">param2</param>
- * <param key="rule.0.parameter.pop">topiaId2</param>
- * </rule>
- * </rules>
+ * <rules>
+ * <rule name="RuleName1">
+ * <param key="rule.0.parameter.param1">param1</param>
+ * <param key="rule.0.parameter.pop">topiaId1</param>
+ * </rule>
+ * <rule name="RuleName2">
+ * <param key="rule.0.parameter.param1">param2</param>
+ * <param key="rule.0.parameter.pop">topiaId2</param>
+ * </rule>
+ * </rules>
* </pre>
*
* @param rules rules list
@@ -430,16 +429,16 @@
*
* Format is :
* <pre>
- * <rules>
- * <rule name="RuleName1">
- * <param key="rule.0.parameter.param1">param1</param>
- * <param key="rule.0.parameter.pop">topiaId1</param>
- * </rule>
- * <rule name="RuleName2">
- * <param key="rule.0.parameter.param1">param2</param>
- * <param key="rule.0.parameter.pop">topiaId2</param>
- * </rule>
- * </rules>
+ * <rules>
+ * <rule name="RuleName1">
+ * <param key="rule.0.parameter.param1">param1</param>
+ * <param key="rule.0.parameter.pop">topiaId1</param>
+ * </rule>
+ * <rule name="RuleName2">
+ * <param key="rule.0.parameter.param1">param2</param>
+ * <param key="rule.0.parameter.pop">topiaId2</param>
+ * </rule>
+ * </rules>
* </pre>
*
* @param rulesElement rules dom element
@@ -452,7 +451,7 @@
for (Element ruleElement : ruleElements) {
String name = ruleElement.attributeValue("name");
try {
- Rule rule = RuleStorage.getRule(name).getNewRuleInstance();
+ Rule rule = RuleStorage.getRule(name).getNewInstance();
// get properties
Properties props = new Properties();
@@ -485,7 +484,7 @@
* <li>Species:Nephrops</li>
* <li>Population:Anchois</li>
* <li>TimeStep:21</li>
- * <li>...
+ * <li>...</li>
* </ul>
*
* @param content content to parse
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -44,9 +44,9 @@
import fr.ifremer.isisfish.entities.StrategyMonthInfo;
import fr.ifremer.isisfish.entities.TargetSpecies;
import fr.ifremer.isisfish.mexico.MexicoHelper;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
import fr.ifremer.isisfish.types.RangeOfValues;
import fr.ifremer.isisfish.types.TimeUnit;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityUtils;
/**
* Export implementation for factor into xml.
@@ -110,7 +110,6 @@
String factorName = factorClass + "." + propertyName;
// test if factor name is enabled
- // TODO move SensitivityUtils outside of UI
boolean enabled = SensitivityUtils.isSensitivityFactorEnabled(factorName);
if (log.isDebugEnabled()) {
@@ -186,7 +185,7 @@
/**
* Get factor name.
*
- * Dans la majorité des cas, on a un {@link lastReadName} défini. Dans les
+ * Dans la majorité des cas, on a un {@link #lastReadName} défini. Dans les
* autre cas, il faut chercher un meilleur nom.
*
* @param entity entity to get factor name
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/package-info.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/package-info.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/package-info.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 1999 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * Copyright (C) 1999 - 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
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/AbstractXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/AbstractXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/AbstractXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2011 - 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
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, Code Lutin, Chatellier Eric
+ * Copyright (C) 2009 - 2012 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
@@ -25,6 +25,11 @@
package fr.ifremer.isisfish.mexico.xml;
+import java.util.Map.Entry;
+
+import org.nuiton.math.matrix.MatrixND;
+
+import fr.ifremer.isisfish.mexico.MexicoHelper;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
@@ -44,33 +49,31 @@
*/
@Override
public void start(Domain domain) {
- xmlBuffer.append("<domain>");
- xmlBuffer.append("<fixed>");
-
ContinuousDomain cDomain = (ContinuousDomain)domain;
- appendDomain(cDomain);
+ xmlBuffer.append("<domain distributionName=\"" + cDomain.getDistribution().toString().toLowerCase() + "\">");
+ for (Entry<String, Object> distributionParameterEntry : cDomain.getDistributionParameters().entrySet()) {
+ String name = distributionParameterEntry.getKey();
+ Object value = distributionParameterEntry.getValue();
+ xmlBuffer.append("<distributionParameter name=\"" + name + "\"");
+ appendParamValue(xmlBuffer, value);
+ xmlBuffer.append("</distributionParameter>");
+ }
}
/**
- * Default ContinuousDomain implementation for double.
- * Maybe overridden by specific continuous domains.
+ * Append value type and value content.
*
- * @param domain domain to print
+ * @param xmlBuffer buffer
+ * @param value value to append
*/
- protected void appendDomain(ContinuousDomain domain) {
- // facteur continue pourcentage
- if (domain.isPercentageType()) {
- xmlBuffer.append("<reference coefficient=\"" + domain.getCoefficient() + "\">");
- xmlBuffer.append(domain.getReferenceValue());
- xmlBuffer.append("</reference>");
+ protected void appendParamValue(StringBuffer xmlBuffer, Object value) {
+ if (value instanceof MatrixND) {
+ xmlBuffer.append(" type=\"matrix\">");
+ xmlBuffer.append(MexicoHelper.getMatrixAsXML((MatrixND)value));
+ } else {
+ xmlBuffer.append(" type=\"decimal\">");
+ xmlBuffer.append(value.toString());
}
- else {
- // facteur continue min/max
- xmlBuffer.append("<range>");
- xmlBuffer.append("<min>" + domain.getMinBound() + "</min>");
- xmlBuffer.append("<max>" + domain.getMaxBound() + "</max>");
- xmlBuffer.append("</range>");
- }
}
/**
@@ -81,12 +84,11 @@
}
- /**
- * {@inheritDoc}
+ /*
+ * @see fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor#end(fr.ifremer.isisfish.simulator.sensitivity.Domain)
*/
@Override
public void end(Domain domain) {
- xmlBuffer.append("</fixed>");
xmlBuffer.append("</domain>");
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, Code Lutin, Chatellier Eric
+ * Copyright (C) 2009 - 2012 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
@@ -25,6 +25,10 @@
package fr.ifremer.isisfish.mexico.xml;
+import java.util.Date;
+
+import org.apache.commons.lang3.ArrayUtils;
+
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
import fr.ifremer.isisfish.simulator.sensitivity.visitor.DesignPlanVisitor;
@@ -40,28 +44,50 @@
*/
public class DesignPlanXMLVisitor extends AbstractXMLVisitor implements DesignPlanVisitor {
+ protected String[] args;
+
+ public DesignPlanXMLVisitor(String... args) {
+ this.args = args;
+ }
+
/**
* {@inheritDoc}
*
* Changes :
- * v2 : depuis la v2, meilleur gestion des min/max, pourcentage poru quasiment
+ * v3 : depuis la v3, les min/max, pourcentage, coefficient... ont été
+ * remplacé par les distributions et leur parametres
+ * v2 : depuis la v2, meilleur gestion des min/max, pourcentage pour quasiment
* tous les facteurs continue
* v0 : version original
*/
@Override
public void start(DesignPlan designPlan) {
- xmlBuffer.append("<experimentalDesign version=\"2\">");
+
+ int authorIndex = ArrayUtils.indexOf(args, "author");
+ int licenseIndex = ArrayUtils.indexOf(args, "license");
+ int dateIndex = ArrayUtils.indexOf(args, "date");
+ int idIndex = ArrayUtils.indexOf(args, "id");
+
+ xmlBuffer.append("<experimentalDesign");
+ // for validation (tests)
+ //xmlBuffer.append(" xmlns='http://www.reseau-mexico.fr/sites/reseau-mexico.fr/files/expDesign.xsd'");
+ xmlBuffer.append(" version=\"3\"");
+ xmlBuffer.append(" author=\"" + (authorIndex != -1 ? args[authorIndex + 1] : "") + "\"");
+ xmlBuffer.append(" license=\"" + (licenseIndex != -1 ? args[licenseIndex + 1] : "") + "\"");
+ xmlBuffer.append(" date=\"" + (dateIndex != -1 ? args[dateIndex + 1] : new Date()) + "\"");
+ xmlBuffer.append(" id=\"" + (idIndex != -1 ? args[idIndex + 1] : "") + "\">");
}
/**
* {@inheritDoc}
*/
@Override
- public void visit(DesignPlan designPlan,
- FactorGroup factorGroup) {
+ public void visit(DesignPlan designPlan, FactorGroup factorGroup) {
+ xmlBuffer.append("<factors>");
FactorGroupXMLVisitor visitor = new FactorGroupXMLVisitor();
factorGroup.accept(visitor);
xmlBuffer.append(visitor.getXML());
+ xmlBuffer.append("</factors>");
}
/**
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -27,6 +27,7 @@
import fr.ifremer.isisfish.mexico.MexicoHelper;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
/**
* XML discrete domain visitor.
@@ -39,14 +40,31 @@
*/
public class DiscreteDomainXMLVisitor extends DomainXMLVisitor {
- /**
- * {@inheritDoc}
+ /*
+ * @see fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor#start(fr.ifremer.isisfish.simulator.sensitivity.Domain)
*/
@Override
public void start(Domain domain) {
- xmlBuffer.append("<domain>");
- xmlBuffer.append("<fixed>");
- xmlBuffer.append("<enumeration>");
+ DiscreteDomain discreteDomain = (DiscreteDomain)domain;
+
+ // lorsque le facteur est catégoriel, la liste de ses niveaux, par une
+ // liste ouverte d'éléments 'level', d'attributs 'value' et 'weight')
+ xmlBuffer.append("<domain distributionName=\"categorical\" type=\"");
+
+ if (!discreteDomain.getValues().isEmpty()) {
+ Object first = discreteDomain.getValues().firstKey();
+ Object firstValue = discreteDomain.getValues().get(first);
+
+ if (firstValue instanceof Integer) {
+ xmlBuffer.append("integer");
+ } else if (firstValue instanceof Double) {
+ xmlBuffer.append("double");
+ } else {
+ xmlBuffer.append("string");
+ }
+ }
+
+ xmlBuffer.append("\">");
}
/**
@@ -54,17 +72,16 @@
*/
@Override
public void visit(Domain domain, Object label, Object value) {
- String stringValue = MexicoHelper.getStringFromObject(value);
- xmlBuffer.append("<value>" + stringValue + "</value>");
+ xmlBuffer.append("<level>");
+ xmlBuffer.append(MexicoHelper.getStringFromObject(value));
+ xmlBuffer.append("</level>");
}
- /**
- * {@inheritDoc}
+ /*
+ * @see fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor#end(fr.ifremer.isisfish.simulator.sensitivity.Domain)
*/
@Override
public void end(Domain domain) {
- xmlBuffer.append("</enumeration>");
- xmlBuffer.append("</fixed>");
xmlBuffer.append("</domain>");
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -25,10 +25,14 @@
package fr.ifremer.isisfish.mexico.xml;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.dom4j.Element;
import org.nuiton.math.matrix.MatrixND;
import org.nuiton.topia.TopiaContext;
@@ -36,13 +40,13 @@
import fr.ifremer.isisfish.mexico.MexicoHelper;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution.DistributionParam;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
/**
@@ -58,32 +62,7 @@
*/
public class DomXMLParser {
- public static final String DISCRETE = "discrete";
- public static final String ENUMERATION = "enumeration";
- public static final String DOMAIN = "domain";
- public static final String FIXED = "fixed";
- public static final String VALUE = "value";
- public static final String RULE = "rule";
- public static final String RULES = "rules";
- public static final String VERSION = "version";
- public static final String NAME = "name";
- public static final String TYPE = "type";
- public static final String PROPERTY = "property";
- public static final String TARGET = "target";
- public static final String CONTINUOUS = "continuous";
- public static final String MATRIXCONTINUOUS = "matrixcontinuous";
- public static final String COEFFICIENT = "coefficient";
- public static final String EQUATIONCONTINUOUS = "equationcontinuous";
- public static final String EQUATION = "equation";
- public static final String VARIABLE = "variable";
- public static final String PERCENTAGE = "percentage";
- public static final String REFERENCE = "reference";
- public static final String RANGE = "range";
- public static final String MIN = "min";
- public static final String MAX = "max";
- public static final String CARDINALITY = "cardinality";
- public static final String INTEGER = "integer";
- public static final String MX = "mx";
+ private static Log log = LogFactory.getLog(DomXMLParser.class);
/**
* Parse element root node as Design plan.
@@ -97,12 +76,14 @@
DesignPlan plan = new DesignPlan();
// could return "2" or null
- String version = rootElement.attributeValue(VERSION);
+ String version = rootElement.attributeValue("version");
- List<Element> factorGroupElements = rootElement.selectNodes("child::factors");
+ List<Element> factorGroupElements = rootElement.elements("factors");
FactorGroup factorGroup = null;
if (!factorGroupElements.isEmpty()) {
- if ("2".equals(version)) {
+ if ("3".equals(version)) {
+ factorGroup = parseFactorGroupV3(factorGroupElements.get(0), topiaContext);
+ } else if ("2".equals(version)) {
factorGroup = parseFactorGroupV2(factorGroupElements.get(0), topiaContext);
}
else {
@@ -128,7 +109,7 @@
@Deprecated
protected static FactorGroup parseFactorGroup(Element fgElement, TopiaContext topiaContext) {
- String factorGroupName = fgElement.attributeValue(NAME);
+ String factorGroupName = fgElement.attributeValue("name");
String factorGroupType = fgElement.attributeValue("type");
boolean continuous = "continuous".equalsIgnoreCase(factorGroupType);
FactorGroup factorGroup = new FactorGroup(factorGroupName, continuous);
@@ -144,141 +125,140 @@
List<Element> factorElements = fgElement.selectNodes("child::factor");
for (Element factorElement : factorElements) {
- String type = factorElement.attributeValue(TYPE);
- String name = factorElement.attributeValue(NAME);
- String property = factorElement.attributeValue(PROPERTY);
- String path = factorElement.element(TARGET).getText().trim();
+ String type = factorElement.attributeValue("type");
+ String name = factorElement.attributeValue("name");
+ String property = factorElement.attributeValue("property");
+ String path = factorElement.element("target").getTextTrim();
// double
if ("real".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
+ Element fixedElement = factorElement.element("domain").element("fixed");
// tous les domaines continues
- if (property.endsWith(CONTINUOUS)) {
+ if (property.endsWith("continuous")) {
ContinuousDomain domain;
- if (property.equals(MATRIXCONTINUOUS)) {
+ if (property.equals("matrixcontinuous")) {
// matrix specific
// <coefficient operator="-" value="0.799"/>
- MatrixContinuousDomain mdomain = new MatrixContinuousDomain(true);
- Element coefficientElement = fixedElement.element(COEFFICIENT);
- mdomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE)));
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
// <mx name="test1" step="0">...
- Element matrixElement = fixedElement.element(MX);
+ Element matrixElement = fixedElement.element("mx");
MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext);
- mdomain.setReferenceValue(matrix);
-
- domain = mdomain;
+ domain.addDistributionParam("reference", matrix);
+
+ Element coefficientElement = fixedElement.element("coefficient");
+ domain.addDistributionParam("coefficient", Double.valueOf(coefficientElement.attributeValue("value")));
}
- else if (property.equals(EQUATIONCONTINUOUS)) {
+ else if (property.equals("equationcontinuous")) {
// equation specific
- EquationContinuousDomain edomain = new EquationContinuousDomain(true);
- Element coefficientElement = fixedElement.element(COEFFICIENT);
- edomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE)));
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+
+ Element equationElement = fixedElement.element("equation");
+ domain.addDistributionParam("reference", Double.valueOf(equationElement.attributeValue("reference")));
+ String variable = equationElement.attributeValue("variable");
+ factor.setEquationVariableName(variable);
+ // hack since 4.0.1, factor name doesn't contains variable
+ name = StringUtils.removeEnd(name, "." + variable);
+ factor.setName(name);
+
+ Element coefficientElement = fixedElement.element("coefficient");
+ domain.addDistributionParam("coefficient", Double.valueOf(coefficientElement.attributeValue("value")));
- Element equationElement = fixedElement.element(EQUATION);
- edomain.setReferenceValue(Double.valueOf(equationElement.attributeValue(REFERENCE)));
- edomain.setVariableName(equationElement.attributeValue(VARIABLE));
- domain = edomain;
}
else {
// continous domain
- domain = new ContinuousDomain();
- Element percentageElement = fixedElement.element(PERCENTAGE);
+ Element percentageElement = fixedElement.element("percentage");
if (percentageElement != null) {
- domain.setCoefficient(Double.valueOf(percentageElement.attributeValue(COEFFICIENT)));
- domain.setReferenceValue(Double.valueOf(percentageElement.attributeValue(REFERENCE)));
- domain.setPercentageType(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", Double.valueOf(percentageElement.attributeValue("reference")));
+ domain.addDistributionParam("coefficient", Double.valueOf(percentageElement.attributeValue("coefficient")));
}
else {
// <range max="1.0" min="0.0"/>
- Element rangeElement = fixedElement.element(RANGE);
- domain.setMinBound(Double.valueOf(rangeElement.attributeValue(MIN)));
- domain.setMaxBound(Double.valueOf(rangeElement.attributeValue(MAX)));
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ domain.addDistributionParam("min", Double.valueOf(rangeElement.attributeValue("min")));
+ domain.addDistributionParam("max", Double.valueOf(rangeElement.attributeValue("max")));
}
}
- factor.setCardinality(Integer.valueOf(fixedElement.attributeValue(CARDINALITY)));
+ factor.setCardinality(Integer.valueOf(fixedElement.attributeValue("cardinality")));
factor.setDomain(domain);
- } else if (DISCRETE.equals(property)) {
+ } else if ("discrete".equals(property)) {
DiscreteDomain domain = new DiscreteDomain();
- List<Element> valueElements = fixedElement.element(
- ENUMERATION).elements(VALUE);
+ List<Element> valueElements = fixedElement.element("enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
- domain.getValues().put(label,
- Double.valueOf(valueElement.getTextTrim()));
+ domain.getValues().put(label, Double.valueOf(valueElement.getTextTrim()));
++label;
}
factor.setDomain(domain);
}
factorGroup.addFactor(factor);
- } else if (INTEGER.equals(type)) {
+ } else if ("integer".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
- if (CONTINUOUS.equals(property)) {
+ Element fixedElement = factorElement.element("domain").element("fixed");
+ if ("continuous".equals(property)) {
ContinuousDomain domain;
- if(property.equals(MATRIXCONTINUOUS)) {
+ if(property.equals("matrixcontinuous")) {
// matrix specific
- MatrixContinuousDomain mdomain = new MatrixContinuousDomain(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
- Element coefficientElement = fixedElement.element(COEFFICIENT);
- mdomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE)));
-
// matrix specific
- Element matrixElement = fixedElement.element(MX);
+ Element matrixElement = fixedElement.element("mx");
MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext);
- mdomain.setReferenceValue(matrix);
-
- domain = mdomain;
+ domain.addDistributionParam("reference", matrix);
+
+ Element coefficientElement = fixedElement.element("coefficient");
+ domain.addDistributionParam("coefficient", Double.valueOf(coefficientElement.attributeValue("value")));
}
- else if (property.equals(EQUATIONCONTINUOUS)) {
+ else if (property.equals("equationcontinuous")) {
// equation specific
-
- EquationContinuousDomain edomain = new EquationContinuousDomain(true);
-
- Element coefficientElement = fixedElement.element(COEFFICIENT);
- edomain.setCoefficient(Double.valueOf(coefficientElement.attributeValue(VALUE)));
-
- Element equationElement = fixedElement.element(EQUATION);
- edomain.setReferenceValue(Double.valueOf(equationElement.attributeValue(REFERENCE)));
- edomain.setVariableName(equationElement.attributeValue(VARIABLE));
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
- domain = edomain;
+ Element equationElement = fixedElement.element("equation");
+ domain.addDistributionParam("reference", Double.valueOf(equationElement.attributeValue("reference")));
+ String variable = equationElement.attributeValue("variable");
+ factor.setEquationVariableName(variable);
+ // hack since 4.0.1, factor name doesn't contains variable
+ name = StringUtils.removeEnd(name, "." + variable);
+ factor.setName(name);
+
+ Element coefficientElement = fixedElement.element("coefficient");
+ domain.addDistributionParam("coefficient", Double.valueOf(coefficientElement.attributeValue("value")));
}
else {
// continous domain
- domain = new ContinuousDomain();
-
- Element percentageElement = fixedElement.element(PERCENTAGE);
+ Element percentageElement = fixedElement.element("percentage");
if (percentageElement != null) {
- domain.setCoefficient(Double.valueOf(percentageElement.attributeValue(COEFFICIENT)));
- domain.setReferenceValue(Double.valueOf(percentageElement.attributeValue(REFERENCE)));
- domain.setPercentageType(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", Double.valueOf(percentageElement.attributeValue("reference")));
+ domain.addDistributionParam("coefficient", Double.valueOf(percentageElement.attributeValue("coefficient")));
}
else {
// <range max="1" min="3"/>
- Element rangeElement = fixedElement.element(RANGE);
- domain.setMinBound(Integer.valueOf(rangeElement.attributeValue(MIN)));
- domain.setMaxBound(Integer.valueOf(rangeElement.attributeValue(MAX)));
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ domain.addDistributionParam("min", Integer.valueOf(rangeElement.attributeValue("min")));
+ domain.addDistributionParam("max", Integer.valueOf(rangeElement.attributeValue("max")));
}
-
}
- factor.setCardinality(Integer.valueOf(fixedElement.attributeValue(CARDINALITY)));
+ factor.setCardinality(Integer.valueOf(fixedElement.attributeValue("cardinality")));
factor.setDomain(domain);
- } else if (DISCRETE.equals(property)) {
+ } else if ("discrete".equals(property)) {
DiscreteDomain domain = new DiscreteDomain();
List<Element> valueElements = fixedElement.element(
- ENUMERATION).elements(VALUE);
+ "enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
domain.getValues().put(label,
@@ -288,16 +268,16 @@
factor.setDomain(domain);
}
factorGroup.addFactor(factor);
- } else if (RULE.equals(type)) {
+ } else if ("rule".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
- if (DISCRETE.equals(property)) {
+ Element fixedElement = factorElement.element("domain").element("fixed");
+ if ("discrete".equals(property)) {
RuleDiscreteDomain domain = new RuleDiscreteDomain();
- List<Element> valueElements = fixedElement.element(ENUMERATION).elements(VALUE);
+ List<Element> valueElements = fixedElement.element("enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
- Element rulesElement = valueElement.element(RULES);
+ Element rulesElement = valueElement.element("rules");
List<Rule> rulesValue = MexicoHelper.getRulesFromXml(rulesElement, topiaContext);
domain.getValues().put(label, rulesValue);
++label;
@@ -320,10 +300,14 @@
* @param fgElement factor group element (>factors<)
* @param topiaContext context
* @return factor group
+ *
+ * @deprecated since 4.0.1.0, this parsing method parse experimentalDesign
+ * in version "2", don't remove for
+ * data reading purpose, but could be removed in a future version
*/
protected static FactorGroup parseFactorGroupV2(Element fgElement, TopiaContext topiaContext) {
- String factorGroupName = fgElement.attributeValue(NAME);
+ String factorGroupName = fgElement.attributeValue("name");
String factorGroupType = fgElement.attributeValue("type");
boolean continuous = "continuous".equalsIgnoreCase(factorGroupType);
FactorGroup factorGroup = new FactorGroup(factorGroupName, continuous);
@@ -339,11 +323,11 @@
List<Element> factorElements = fgElement.selectNodes("child::factor");
for (Element factorElement : factorElements) {
- String type = factorElement.attributeValue(TYPE);
- String name = factorElement.attributeValue(NAME);
- String property = factorElement.attributeValue(PROPERTY);
- String path = factorElement.element(TARGET).getText().trim();
- String cardinalityString = factorElement.attributeValue(CARDINALITY);
+ String type = factorElement.attributeValue("type");
+ String name = factorElement.attributeValue("name");
+ String property = factorElement.attributeValue("property");
+ String path = factorElement.element("target").getTextTrim();
+ String cardinalityString = factorElement.attributeValue("cardinality");
Integer cardinality = 0;
if (StringUtils.isNotEmpty(cardinalityString)) {
cardinality = Integer.valueOf(cardinalityString);
@@ -353,82 +337,84 @@
if ("real".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
+ Element fixedElement = factorElement.element("domain").element("fixed");
// tous les domaines continues
- if (property.endsWith(CONTINUOUS)) {
+ if (property.endsWith("continuous")) {
ContinuousDomain domain;
- if(property.equals(MATRIXCONTINUOUS)) {
-
- MatrixContinuousDomain mdomain = new MatrixContinuousDomain();
- Element referenceElement = fixedElement.element(REFERENCE);
+ if(property.equals("matrixcontinuous")) {
+
+ Element referenceElement = fixedElement.element("reference");
if (referenceElement != null) {
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
// matrix specific
// <coefficient operator="-" value="0.799"/>
- mdomain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT)));
// <mx name="test1" step="0">...
- Element matrixElement = referenceElement.element(MX);
+ Element matrixElement = referenceElement.element("mx");
MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext);
- mdomain.setReferenceValue(matrix);
- mdomain.setPercentageType(true);
+ domain.addDistributionParam("reference", matrix);
+
+ domain.addDistributionParam("coefficient", Double.valueOf(referenceElement.attributeValue("coefficient")));
}
else {
- Element rangeElement = fixedElement.element(RANGE);
- Element minElement = rangeElement.element(MIN);
- Element maxElement = rangeElement.element(MAX);
- MatrixND minMatrix = MexicoHelper.getMatrixFromXml(minElement.element(MX), topiaContext);
- MatrixND maxMatrix = MexicoHelper.getMatrixFromXml(maxElement.element(MX), topiaContext);
- mdomain.setMinBound(minMatrix);
- mdomain.setMaxBound(maxMatrix);
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ Element minElement = rangeElement.element("min");
+ Element maxElement = rangeElement.element("max");
+ MatrixND minMatrix = MexicoHelper.getMatrixFromXml(minElement.element("mx"), topiaContext);
+ MatrixND maxMatrix = MexicoHelper.getMatrixFromXml(maxElement.element("mx"), topiaContext);
+ domain.addDistributionParam("min", minMatrix);
+ domain.addDistributionParam("max", maxMatrix);
}
-
- domain = mdomain;
}
- else if (property.equals(EQUATIONCONTINUOUS)) {
+ else if (property.equals("equationcontinuous")) {
// equation specific
- EquationContinuousDomain edomain = new EquationContinuousDomain();
- edomain.setVariableName(fixedElement.attributeValue(VARIABLE));
- Element referenceElement = fixedElement.element(REFERENCE);
+
+ String variable = fixedElement.attributeValue("variable");
+ factor.setEquationVariableName(variable);
+ // hack since 4.0.1, factor name doesn't contains variable
+ name = StringUtils.removeEnd(name, "." + variable);
+ factor.setName(name);
+
+ Element referenceElement = fixedElement.element("reference");
if (referenceElement != null) {
- edomain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT)));
- edomain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim()));
- edomain.setPercentageType(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", Double.valueOf(referenceElement.getTextTrim()));
+ domain.addDistributionParam("coefficient", Double.valueOf(referenceElement.attributeValue("coefficient")));
}
else {
- Element rangeElement = fixedElement.element(RANGE);
- Element minElement = rangeElement.element(MIN);
- Element maxElement = rangeElement.element(MAX);
- edomain.setMinBound(Double.valueOf(minElement.getTextTrim()));
- edomain.setMaxBound(Double.valueOf(maxElement.getTextTrim()));
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ Element minElement = rangeElement.element("min");
+ Element maxElement = rangeElement.element("max");
+ domain.addDistributionParam("min", minElement.getTextTrim());
+ domain.addDistributionParam("max", maxElement.getTextTrim());
}
-
- domain = edomain;
}
else {
// continous domain
- domain = new ContinuousDomain();
-
- Element referenceElement = fixedElement.element(REFERENCE);
+ Element referenceElement = fixedElement.element("reference");
if (referenceElement != null) {
- domain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT)));
- domain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim()));
- domain.setPercentageType(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", Double.valueOf(referenceElement.getTextTrim()));
+ domain.addDistributionParam("coefficient", Double.valueOf(referenceElement.attributeValue("coefficient")));
}
else {
// <range max="1.0" min="0.0"/>
- Element rangeElement = fixedElement.element(RANGE);
- Element minElement = rangeElement.element(MIN);
- Element maxElement = rangeElement.element(MAX);
- domain.setMinBound(Double.valueOf(minElement.getTextTrim()));
- domain.setMaxBound(Double.valueOf(maxElement.getTextTrim()));
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ Element minElement = rangeElement.element("min");
+ Element maxElement = rangeElement.element("max");
+ domain.addDistributionParam("min", Double.valueOf(minElement.getTextTrim()));
+ domain.addDistributionParam("max", Double.valueOf(maxElement.getTextTrim()));
}
}
factor.setDomain(domain);
- } else if (DISCRETE.equals(property)) {
+ } else if ("discrete".equals(property)) {
DiscreteDomain domain = new DiscreteDomain();
List<Element> valueElements = fixedElement.element(
- ENUMERATION).elements(VALUE);
+ "enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
domain.getValues().put(label,
@@ -439,84 +425,85 @@
}
factor.setCardinality(cardinality);
factorGroup.addFactor(factor);
- } else if (INTEGER.equals(type)) {
+ } else if ("integer".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
- if (CONTINUOUS.equals(property)) {
+ Element fixedElement = factorElement.element("domain").element("fixed");
+ if ("continuous".equals(property)) {
ContinuousDomain domain;
- if(property.equals(MATRIXCONTINUOUS)) {
+ if(property.equals("matrixcontinuous")) {
- MatrixContinuousDomain mdomain = new MatrixContinuousDomain();
- Element referenceElement = fixedElement.element(REFERENCE);
+
+ Element referenceElement = fixedElement.element("reference");
if (referenceElement != null) {
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
// matrix specific
// <coefficient operator="-" value="0.799"/>
- mdomain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT)));
// <mx name="test1" step="0">...
- Element matrixElement = referenceElement.element(MX);
+ Element matrixElement = referenceElement.element("mx");
MatrixND matrix = MexicoHelper.getMatrixFromXml(matrixElement, topiaContext);
- mdomain.setReferenceValue(matrix);
- mdomain.setPercentageType(true);
+ domain.addDistributionParam("reference", matrix);
+ domain.addDistributionParam("coefficient", Double.valueOf(referenceElement.attributeValue("coefficient")));
}
else {
- Element rangeElement = fixedElement.element(RANGE);
- Element minElement = rangeElement.element(MIN);
- Element maxElement = rangeElement.element(MAX);
- MatrixND minMatrix = MexicoHelper.getMatrixFromXml(minElement.element(MX), topiaContext);
- MatrixND maxMatrix = MexicoHelper.getMatrixFromXml(maxElement.element(MX), topiaContext);
- mdomain.setMinBound(minMatrix);
- mdomain.setMaxBound(maxMatrix);
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ Element minElement = rangeElement.element("min");
+ Element maxElement = rangeElement.element("max");
+ MatrixND minMatrix = MexicoHelper.getMatrixFromXml(minElement.element("mx"), topiaContext);
+ MatrixND maxMatrix = MexicoHelper.getMatrixFromXml(maxElement.element("mx"), topiaContext);
+ domain.addDistributionParam("min", minMatrix);
+ domain.addDistributionParam("max", maxMatrix);
}
-
- domain = mdomain;
}
- else if (property.equals(EQUATIONCONTINUOUS)) {
+ else if (property.equals("equationcontinuous")) {
// equation specific
- EquationContinuousDomain edomain = new EquationContinuousDomain();
- edomain.setVariableName(fixedElement.attributeValue(VARIABLE));
- Element referenceElement = fixedElement.element(REFERENCE);
+ String variable = fixedElement.attributeValue("variable");
+ factor.setEquationVariableName(variable);
+ // hack since 4.0.1, factor name doesn't contains variable
+ name = StringUtils.removeEnd(name, "." + variable);
+ factor.setName(name);
+
+ Element referenceElement = fixedElement.element("reference");
if (referenceElement != null) {
- edomain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT)));
- edomain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim()));
- edomain.setPercentageType(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", Double.valueOf(referenceElement.getTextTrim()));
+ domain.addDistributionParam("coefficient", Double.valueOf(referenceElement.attributeValue("coefficient")));
}
else {
- Element rangeElement = fixedElement.element(RANGE);
- Element minElement = rangeElement.element(MIN);
- Element maxElement = rangeElement.element(MAX);
- edomain.setMinBound(Double.valueOf(minElement.getTextTrim()));
- edomain.setMaxBound(Double.valueOf(maxElement.getTextTrim()));
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ Element minElement = rangeElement.element("min");
+ Element maxElement = rangeElement.element("max");
+ domain.addDistributionParam("min", Double.valueOf(minElement.getTextTrim()));
+ domain.addDistributionParam("max", Double.valueOf(maxElement.getTextTrim()));
}
-
- domain = edomain;
}
else {
// continous domain
- domain = new ContinuousDomain();
-
- Element referenceElement = fixedElement.element(REFERENCE);
+ Element referenceElement = fixedElement.element("reference");
if (referenceElement != null) {
- domain.setCoefficient(Double.valueOf(referenceElement.attributeValue(COEFFICIENT)));
- domain.setReferenceValue(Double.valueOf(referenceElement.getTextTrim()));
- domain.setPercentageType(true);
+ domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", Double.valueOf(referenceElement.getTextTrim()));
+ domain.addDistributionParam("coefficient", Double.valueOf(referenceElement.attributeValue("coefficient")));
}
else {
// <range max="1.0" min="0.0"/>
- Element rangeElement = fixedElement.element(RANGE);
- Element minElement = rangeElement.element(MIN);
- Element maxElement = rangeElement.element(MAX);
- domain.setMinBound(Integer.valueOf(minElement.getTextTrim()));
- domain.setMaxBound(Integer.valueOf(maxElement.getTextTrim()));
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ Element rangeElement = fixedElement.element("range");
+ Element minElement = rangeElement.element("min");
+ Element maxElement = rangeElement.element("max");
+ domain.addDistributionParam("min", Integer.valueOf(minElement.getTextTrim()));
+ domain.addDistributionParam("max", Integer.valueOf(maxElement.getTextTrim()));
}
}
factor.setDomain(domain);
- } else if (DISCRETE.equals(property)) {
+ } else if ("discrete".equals(property)) {
DiscreteDomain domain = new DiscreteDomain();
List<Element> valueElements = fixedElement.element(
- ENUMERATION).elements(VALUE);
+ "enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
domain.getValues().put(label,
@@ -527,16 +514,16 @@
}
factor.setCardinality(cardinality);
factorGroup.addFactor(factor);
- } else if (RULE.equals(type)) {
+ } else if ("rule".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
- if (DISCRETE.equals(property)) {
+ Element fixedElement = factorElement.element("domain").element("fixed");
+ if ("discrete".equals(property)) {
RuleDiscreteDomain domain = new RuleDiscreteDomain();
- List<Element> valueElements = fixedElement.element(ENUMERATION).elements(VALUE);
+ List<Element> valueElements = fixedElement.element("enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
- Element rulesElement = valueElement.element(RULES);
+ Element rulesElement = valueElement.element("rules");
List<Rule> rulesValue = MexicoHelper.getRulesFromXml(rulesElement, topiaContext);
domain.getValues().put(label, rulesValue);
++label;
@@ -545,13 +532,13 @@
}
factor.setCardinality(cardinality);
factorGroup.addFactor(factor);
- } else if (EQUATION.equals(type)) {
+ } else if ("equation".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
- if (DISCRETE.equals(property)) {
+ Element fixedElement = factorElement.element("domain").element("fixed");
+ if ("discrete".equals(property)) {
EquationDiscreteDomain domain = new EquationDiscreteDomain();
- List<Element> valueElements = fixedElement.element(ENUMERATION).elements(VALUE);
+ List<Element> valueElements = fixedElement.element("enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
String content = StringEscapeUtils.unescapeXml(valueElement.getText());
@@ -565,10 +552,10 @@
} else if ("string".equals(type)) {
Factor factor = new Factor(name);
factor.setPath(path);
- Element fixedElement = factorElement.element(DOMAIN).element(FIXED);
- if (DISCRETE.equals(property)) {
+ Element fixedElement = factorElement.element("domain").element("fixed");
+ if ("discrete".equals(property)) {
DiscreteDomain domain = new DiscreteDomain();
- List<Element> valueElements = fixedElement.element(ENUMERATION).elements(VALUE);
+ List<Element> valueElements = fixedElement.element("enumeration").elements("value");
int label = 0;
for (Element valueElement : valueElements) {
String content = valueElement.getText();
@@ -585,4 +572,160 @@
return factorGroup;
}
+
+ /**
+ * Non recursive parse of factor group elements (>factors<).
+ *
+ * This version handle xml file distribution definition in each continuous
+ * factors.
+ *
+ * The parsing is more complicated here because mexico file format is a bit
+ * hard too read (factor groups, features...)
+ *
+ * @param fgElement factor group element (>factors<)
+ * @param topiaContext context
+ * @return factor group
+ * @since 4.0.1.0
+ */
+ protected static FactorGroup parseFactorGroupV3(Element fgElement, TopiaContext topiaContext) {
+
+ FactorGroup rootGroup = new FactorGroup(null); // root group
+ Map<String, FactorGroup> groups = new HashMap<String, FactorGroup>();
+
+ // normal factors
+ List<Element> factorElements = fgElement.elements("factor");
+ for (Element factorElement : factorElements) {
+ String name = factorElement.attributeValue("name");
+ String groupName = null;
+ String groupType = null;
+
+ Factor factor = new Factor(name);
+
+ Element cardinalityElement = (Element)factorElement.selectSingleNode("child::feature[@name='cardinality']");
+ if (cardinalityElement != null) {
+ factor.setCardinality(Integer.valueOf(cardinalityElement.getTextTrim()));
+ }
+ Element targetElement = (Element)factorElement.selectSingleNode("child::feature[@name='target']");
+ if (targetElement != null) {
+ factor.setPath(targetElement.getTextTrim());
+ }
+ Element groupElement = (Element)factorElement.selectSingleNode("child::feature[@name='group']");
+ if (groupElement != null) {
+ groupName = groupElement.getTextTrim();
+ }
+ Element groupTypeElement = (Element)factorElement.selectSingleNode("child::feature[@name='grouptype']");
+ if (groupTypeElement != null) {
+ groupType = groupTypeElement.getTextTrim();
+ }
+ Element varNameElement = (Element)factorElement.selectSingleNode("child::feature[@name='equationVariableName']");
+ if (varNameElement != null) {
+ factor.setEquationVariableName(varNameElement.getTextTrim());
+ }
+
+
+ // parse domain
+ Element domainElement = factorElement.element("domain");
+ String distributionName = domainElement.attributeValue("distributionName");
+ String type = domainElement.attributeValue("type");
+
+ // facteur discret
+ if ("categorical".equals(distributionName)) {
+ DiscreteDomain domain;
+
+ List<Element> levelElements = domainElement.elements("level");
+ if ("rule".equals(type)) {
+ domain = new RuleDiscreteDomain();
+ int valueName = 0;
+ for (Element levelElement : levelElements) {
+ Element rulesElement = levelElement.element("rules");
+ List<Rule> rulesValue = MexicoHelper.getRulesFromXml(rulesElement, topiaContext);
+ domain.getValues().put(valueName++, rulesValue);
+ }
+ } else if ("equation".equals(type)) { // topia entities ...
+ domain = new EquationDiscreteDomain();
+ int valueName = 0;
+ for (Element levelElement : levelElements) { // no trim here
+ Object object = StringEscapeUtils.unescapeXml(levelElement.getText());
+ domain.getValues().put(valueName++, object);
+ }
+ } else if ("string".equals(type)) { // topia entities ...
+ domain = new DiscreteDomain();
+ int valueName = 0;
+ for (Element levelElement : levelElements) {
+ Object object = MexicoHelper.getObjectFromString(levelElement.getTextTrim(), topiaContext);
+ domain.getValues().put(valueName++, object);
+ }
+ } else if ("integer".equals(type)) {
+ domain = new DiscreteDomain();
+ int valueName = 0;
+ for (Element levelElement : levelElements) {
+ Integer levelValue = Integer.valueOf(levelElement.getTextTrim());
+ domain.getValues().put(valueName++, levelValue);
+ }
+ } else {
+ domain = new DiscreteDomain();
+ int valueName = 0;
+ for (Element levelElement : levelElements) {
+ Double levelValue = Double.valueOf(levelElement.getTextTrim());
+ domain.getValues().put(valueName++, levelValue);
+ }
+ }
+
+ factor.setDomain(domain);
+
+ } else if ("sequence".equals(distributionName)) {
+ // can happen in mexico, but not in isis
+ // skip this one
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Skip factor %s : unknown distribution name : %s !", name, distributionName));
+ }
+ } else {
+
+ // facteur continuous with custom distribution
+ Distribution distribution = Distribution.valueOf(distributionName.toUpperCase());
+ if (distribution == null) {
+ if (log.isWarnEnabled()) {
+ log.warn(String.format("Skip factor %s : can't found distribution name : %s !", name, distributionName));
+ }
+ continue;
+ }
+
+ ContinuousDomain domain = new ContinuousDomain(distribution);
+
+ // ne tient pas compte de l'ordre des parametres
+ // dans le fichier xml
+ DistributionParam[] paramsDef = distribution.getDistibutionParams();
+ for (DistributionParam paramDef : paramsDef) {
+ Element paramElement = (Element)domainElement.selectSingleNode("distributionParameter[@name='" + paramDef.getName() + "']");
+ String paramName = paramElement.attributeValue("name");
+ String paramType = paramElement.attributeValue("type");
+
+ if ("matrix".equals(paramType)) {
+ Element mxElement = paramElement.element("mx");
+ MatrixND mxMatrix = MexicoHelper.getMatrixFromXml(mxElement, topiaContext);
+ domain.addDistributionParam(paramName, mxMatrix);
+ } else if ("decimal".equals(paramType)) {
+ Double doubleValue = Double.parseDouble(paramElement.getTextTrim());
+ domain.addDistributionParam(paramName, doubleValue);
+ }
+ }
+
+ factor.setDomain(domain);
+ }
+
+ // add factor to existing or new group
+ FactorGroup group = rootGroup;
+ if (StringUtils.isNotBlank(groupName)) {
+ group = groups.get(group);
+ if (group == null) {
+ group = new FactorGroup(groupName, "continuous".equals(groupType));
+ groups.put(groupName, group);
+ rootGroup.addFactor(group);
+ }
+ }
+ group.addFactor(factor);
+ }
+
+ return rootGroup;
+ }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, CodeLutin, Chatellier Eric
+ * 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
Deleted: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationContinuousDomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationContinuousDomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationContinuousDomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,88 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 1999 - 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.mexico.xml;
-
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-
-/**
- * XML domain visitor for Equation Continous Domain.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 30 mars 2009 $
- * By : $Author: chatellier $
- */
-public class EquationContinuousDomainXMLVisitor extends ContinuousDomainXMLVisitor {
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void start(Domain domain) {
- xmlBuffer.append("<domain>");
- xmlBuffer.append("<fixed");
-
- EquationContinuousDomain eDomain = (EquationContinuousDomain)domain;
- // this version add variable name
- xmlBuffer.append(" variable=\"")
- .append(eDomain.getVariableName())
- .append("\">");
-
- appendDomain(eDomain);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void appendDomain(ContinuousDomain domain) {
-
- EquationContinuousDomain eDomain = (EquationContinuousDomain)domain;
-
- // facteur continue pourcentage
- if (domain.isPercentageType()) {
- xmlBuffer.append("<reference coefficient=\"")
- .append(eDomain.getCoefficient())
- .append( "\">");
- xmlBuffer.append(eDomain.getReferenceValue());
- xmlBuffer.append("</reference>");
- }
- else {
- // facteur continue min/max
- xmlBuffer.append("<range>");
- xmlBuffer.append("<min>")
- .append(domain.getMinBound())
- .append("</min>");
- xmlBuffer.append("<max>")
- .append(domain.getMaxBound())
- .append("</max>");
- xmlBuffer.append("</range>");
- }
- }
-}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationDiscreteDomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationDiscreteDomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/EquationDiscreteDomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,14 +40,21 @@
*/
public class EquationDiscreteDomainXMLVisitor extends DiscreteDomainXMLVisitor {
+ @Override
+ public void start(Domain domain) {
+ // lorsque le facteur est catégoriel, la liste de ses niveaux, par une
+ // liste ouverte d'éléments 'level', d'attributs 'value' et 'weight')
+ xmlBuffer.append("<domain distributionName=\"categorical\" type=\"equation\">");
+ }
+
/**
* {@inheritDoc}
*/
@Override
public void visit(Domain domain, Object label, Object value) {
String content = (String)value;
- xmlBuffer.append("<value>");
- xmlBuffer.append(StringEscapeUtils.escapeXml(content));
- xmlBuffer.append("</value>");
+ xmlBuffer.append("<level>");
+ xmlBuffer.append(StringEscapeUtils.escapeXml11(content));
+ xmlBuffer.append("</level>");
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorGroupXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorGroupXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorGroupXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Ifremer, CodeLutin, Chatellier Eric
+ * Copyright (C) 2011 - 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
@@ -45,16 +45,7 @@
*/
@Override
public void start(FactorGroup factorGroup) {
- xmlBuffer.append("<factors");
- if (factorGroup.getName() != null) {
- xmlBuffer.append(" name=\"" + factorGroup.getName() + "\"");
- }
- if (factorGroup.isContinuous()) {
- xmlBuffer.append(" type=\"continuous\"");
- } else {
- xmlBuffer.append(" type=\"discrete\"");
- }
- xmlBuffer.append(">");
+
}
/*
@@ -64,12 +55,10 @@
public void visit(FactorGroup factorGroup, Factor factor) {
if (factor instanceof FactorGroup) {
FactorGroup factorGroup2 = (FactorGroup)factor;
- FactorGroupXMLVisitor visitor = new FactorGroupXMLVisitor();
- factorGroup2.accept(visitor);
- xmlBuffer.append(visitor.getXML());
+ factorGroup2.accept(this);
}
else {
- FactorXMLVisitor visitor = new FactorXMLVisitor();
+ FactorXMLVisitor visitor = new FactorXMLVisitor(factorGroup);
factor.accept(visitor);
xmlBuffer.append(visitor.getXML());
}
@@ -80,6 +69,6 @@
*/
@Override
public void end(FactorGroup factorGroup) {
- xmlBuffer.append("</factors>");
+
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -25,20 +25,16 @@
package fr.ifremer.isisfish.mexico.xml;
-import org.nuiton.math.matrix.MatrixND;
-import org.nuiton.topia.persistence.TopiaEntity;
+import org.apache.commons.lang3.StringUtils;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.simulator.sensitivity.visitor.FactorVisitor;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.types.TimeStep;
/**
* XML factor visitor.
@@ -51,65 +47,57 @@
*/
public class FactorXMLVisitor extends AbstractXMLVisitor implements FactorVisitor {
+ protected FactorGroup group;
+
+ /**
+ * Factor constructor with group (for mexico features).
+ *
+ * @param group group
+ */
+ public FactorXMLVisitor(FactorGroup group) {
+ this.group = group;
+ }
+
/*
* @see fr.ifremer.isisfish.simulator.sensitivity.visitor.FactorVisitor#start(fr.ifremer.isisfish.simulator.sensitivity.Factor)
*/
@Override
public void start(Factor factor) {
+
+ // required by mexico, must be unique, but not used by isis
+ String factorId = factor.getPath();
+ if (StringUtils.isNotBlank(factor.getEquationVariableName())) {
+ factorId += "." + factor.getEquationVariableName();
+ }
+
xmlBuffer.append("<factor");
+ xmlBuffer.append(" id=\"").append(factorId).append("\"");
xmlBuffer.append(" name=\"").append(factor.getName()).append("\"");
- Object referenceValueForType = null;
- // property attribute
+ if (StringUtils.isNotBlank(factor.getComment())) {
+ xmlBuffer.append(" description=\"").append(factor.getComment()).append("\"");
+ }
+ xmlBuffer.append(">");
- Domain domain = factor.getDomain();
-
- if (domain instanceof ContinuousDomain) {
- if (domain instanceof MatrixContinuousDomain) {
- xmlBuffer.append(" property=\"matrixcontinuous\"");
- } else if (domain instanceof EquationContinuousDomain) {
- xmlBuffer.append(" property=\"equationcontinuous\"");
+ // other things are features
+ //cardinality
+ xmlBuffer.append("<feature name=\"cardinality\">" + factor.getCardinality() + "</feature>");
+ // group
+ if (StringUtils.isNotBlank(group.getName())) {
+ xmlBuffer.append("<feature name=\"group\">" + group.getName() + "</feature>");
+ xmlBuffer.append("<feature name=\"grouptype\">");
+ if (group.isContinuous()) {
+ xmlBuffer.append("continuous");
} else {
- xmlBuffer.append(" property=\"continuous\"");
+ xmlBuffer.append("discrete");
}
- referenceValueForType = ((ContinuousDomain) domain).getReferenceValue();
- if (referenceValueForType == null) {
- referenceValueForType = ((ContinuousDomain) domain).getMinBound();
- }
- } else if (domain instanceof DiscreteDomain) {
- xmlBuffer.append(" property=\"discrete\"");
- Object firstKey = ((DiscreteDomain) domain).getValues().firstKey();
- referenceValueForType = ((DiscreteDomain) domain).getValues().get(firstKey);
+ xmlBuffer.append("</feature>");
}
- // type attribute
- if (referenceValueForType instanceof Double || referenceValueForType instanceof Float
- || referenceValueForType instanceof MatrixND) {
- xmlBuffer.append(" type=\"real\"");
- } else if (referenceValueForType instanceof Integer) {
- xmlBuffer.append(" type=\"integer\"");
- } else if (domain instanceof RuleDiscreteDomain) {
- xmlBuffer.append(" type=\"rule\"");
- } else if (domain instanceof EquationDiscreteDomain) {
- xmlBuffer.append(" type=\"equation\"");
- } else if (referenceValueForType instanceof TopiaEntity ||
- referenceValueForType instanceof TimeStep ||
- referenceValueForType instanceof Month) {
- xmlBuffer.append(" type=\"string\"");
+ //path
+ xmlBuffer.append("<feature name=\"target\">" + factor.getPath() + "</feature>");
+ // equation variable name
+ if (StringUtils.isNotBlank(factor.getEquationVariableName())) {
+ xmlBuffer.append("<feature name=\"equationVariableName\">" + factor.getEquationVariableName() + "</feature>");
}
-
- //cardinality
- xmlBuffer.append(" cardinality=\"");
- xmlBuffer.append(factor.getCardinality());
- xmlBuffer.append("\"");
-
- xmlBuffer.append(">");
- // target element
- xmlBuffer.append("<target>").append(factor.getPath()).append("</target>");
- // value element
- /* TODO value should be only in simulation export,
- not in design plan export
- if (factor.getValue() != null) {
- xmlBuffer.append("<value>" + factor.getValue() + "</value>");
- }*/
}
/*
@@ -118,11 +106,7 @@
@Override
public void visit(Factor factor, Domain domain) {
DomainXMLVisitor visitor = null;
- if (factor.getDomain() instanceof MatrixContinuousDomain) {
- visitor = new MatrixContinuousDomainXMLVisitor();
- } else if (factor.getDomain() instanceof EquationContinuousDomain) {
- visitor = new EquationContinuousDomainXMLVisitor();
- } else if (factor.getDomain() instanceof ContinuousDomain) {
+ if (factor.getDomain() instanceof ContinuousDomain) {
visitor = new ContinuousDomainXMLVisitor();
} else if (factor.getDomain() instanceof RuleDiscreteDomain) {
visitor = new RuleDiscreteDomainXMLVisitor();
Deleted: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/MatrixContinuousDomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/MatrixContinuousDomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/MatrixContinuousDomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,73 +0,0 @@
-/*
- * #%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.mexico.xml;
-
-import org.nuiton.math.matrix.MatrixND;
-
-import fr.ifremer.isisfish.mexico.MexicoHelper;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
-
-/**
- * XML domain visitor for Matrix continuous.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 5 mars 2009 $
- * By : $Author: chatellier $
- */
-public class MatrixContinuousDomainXMLVisitor extends ContinuousDomainXMLVisitor {
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void appendDomain(ContinuousDomain domain) {
-
- MatrixContinuousDomain mDomain = (MatrixContinuousDomain)domain;
-
- // facteur continue pourcentage
- if (domain.isPercentageType()) {
- xmlBuffer.append("<reference coefficient=\"")
- .append(mDomain.getCoefficient())
- .append("\">");
- xmlBuffer.append(MexicoHelper.getMatrixAsXML((MatrixND)mDomain.getReferenceValue()));
- xmlBuffer.append("</reference>");
- }
- else {
- // facteur continue min/max
- xmlBuffer.append("<range>");
- xmlBuffer.append("<min>")
- .append(MexicoHelper.getMatrixAsXML((MatrixND)mDomain.getMinBound()))
- .append("</min>");
- xmlBuffer.append("<max>")
- .append(MexicoHelper.getMatrixAsXML((MatrixND)mDomain.getMaxBound()))
- .append("</max>");
- xmlBuffer.append("</range>");
- }
- }
-}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/RuleDiscreteDomainXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/RuleDiscreteDomainXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/RuleDiscreteDomainXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Ifremer, CodeLutin, Chatellier Eric
+ * Copyright (C) 2011 - 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
@@ -42,6 +42,13 @@
*/
public class RuleDiscreteDomainXMLVisitor extends DiscreteDomainXMLVisitor {
+ @Override
+ public void start(Domain domain) {
+ // lorsque le facteur est catégoriel, la liste de ses niveaux, par une
+ // liste ouverte d'éléments 'level', d'attributs 'value' et 'weight')
+ xmlBuffer.append("<domain distributionName=\"categorical\" type=\"rule\">");
+ }
+
/**
* {@inheritDoc}
*/
@@ -50,8 +57,8 @@
List<Rule> rulesList = (List<Rule>)value;
String rulesAsXml = MexicoHelper.getRulesAsXml(rulesList);
- xmlBuffer.append("<value>");
+ xmlBuffer.append("<level>");
xmlBuffer.append(rulesAsXml);
- xmlBuffer.append("</value>");
+ xmlBuffer.append("</level>");
}
}
Deleted: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,68 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 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.mexico.xml;
-
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.visitor.ScenarioVisitor;
-
-/**
- * XML domain visitor.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 5 mars 2009 $
- * By : $Author: chatellier $
- */
-public class ScenarioXMLVisitor extends AbstractXMLVisitor implements ScenarioVisitor {
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void start(Scenario scenario) {
- xmlBuffer.append("<scenario>");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void visit(Scenario scenario, Factor factor) {
- FactorXMLVisitor visitor = new FactorXMLVisitor();
- factor.accept(visitor);
- xmlBuffer.append(visitor.getXML());
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void end(Scenario scenario) {
- xmlBuffer.append("</scenario>");
- }
-}
Deleted: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,70 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 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.mexico.xml;
-
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.visitor.SensitivityScenariosVisitor;
-
-/**
- * XML sensitivity scenarios visitor.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 5 mars 2009 $
- * By : $Author: chatellier $
- */
-public class SensitivityScenariosXMLVisitor extends AbstractXMLVisitor implements SensitivityScenariosVisitor {
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void start(SensitivityScenarios scenarios) {
- xmlBuffer.append("<experimentalScenarios>");
- xmlBuffer.append("<scenarios>");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void visit(SensitivityScenarios scenarios, Scenario scenario) {
- ScenarioXMLVisitor visitor = new ScenarioXMLVisitor();
- scenario.accept(visitor);
- xmlBuffer.append(visitor.getXML());
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void end(SensitivityScenarios scenarios) {
- xmlBuffer.append("</scenarios>");
- xmlBuffer.append("</experimentalScenarios>");
- }
-}
Modified: trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/package-info.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/package-info.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/package-info.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
Modified: trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -37,15 +37,17 @@
* ait, doivent etre des attributs public commencant par param.
*
* <p> Les types acceptable pour un parametre sont:
- * <li> un nombre (int, long, float, double, ...)
- * <li> un boolean
- * <li> une chaine String
- * <li> un objet Date ({@link fr.ifremer.isisfish.types.TimeStep})
- * <li> un objet Month ({@link fr.ifremer.isisfish.types.Month})
- * <li> Le type d'une entité (@see fr.ifremer.isisfish.entities)
+ * <ul>
+ * <li> un nombre (int, long, float, double, ...)</li>
+ * <li> un boolean</li>
+ * <li> une chaine String</li>
+ * <li> un objet Date ({@link fr.ifremer.isisfish.types.TimeStep})</li>
+ * <li> un objet Month ({@link fr.ifremer.isisfish.types.Month})</li>
+ * <li> Le type d'une entité (@see fr.ifremer.isisfish.entities)</li>
+ * </ul>
*
* <p> Pour supporter d'autre type il faut créer des converters commons-beanutils
- * //{@link fr.ifremer.isisfish.simulator.SimulationParameter#ruleParametertoProperties(int, Rule)}
+ * //{@link fr.ifremer.isisfish.rule.RuleHelper#getRuleAsProperties(int, org.nuiton.topia.TopiaContext, Rule)}
*
* Created: 12 janv. 2006 17:02:43
*
@@ -84,7 +86,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: trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,8 +27,6 @@
import java.util.Properties;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaContext;
import fr.ifremer.isisfish.datastore.RegionStorage;
@@ -52,9 +50,6 @@
*/
public class RuleHelper extends StorageHelper {
- /** Logger for this class. */
- private static final Log log = LogFactory.getLog(RuleHelper.class);
-
/**
* Recupere dans propriétés les valeurs des champs spécifiques à la règle et
* met à jour les champs de la règle.
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/MetierMonitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/MetierMonitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/MetierMonitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.n;
import java.util.ArrayList;
import java.util.Collection;
@@ -35,9 +35,9 @@
import java.util.Map;
import java.util.Set;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.keyvalue.MultiKey;
-import org.apache.commons.collections.map.MultiKeyMap;
+import org.apache.commons.collections4.MapIterator;
+import org.apache.commons.collections4.keyvalue.MultiKey;
+import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixFactory;
@@ -160,7 +160,7 @@
result = MatrixFactory.getInstance().create(
name,
new List[] {strategies, metiers},
- new String[] {n_("isisfish.metierMonitor.strategies"), n_("isisfish.metierMonitor.metiers")});
+ new String[] {n("isisfish.metierMonitor.strategies"), n("isisfish.metierMonitor.metiers")});
setNoActivity(step, result);
}
return result;
@@ -179,7 +179,7 @@
//
//////////////////////////////////////////////////////////////////////////
- /** key <Metier, Month, Month> value: <Licence> */
+ /** key <Metier, Month, Month> value: <Licence> */
protected MultiKeyMap list = new MultiKeyMap();
class Licence {
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/Objective.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/Objective.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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 org.nuiton.math.matrix.MatrixND;
+
+/**
+ * Interface des fonctions d'objectifs.
+ *
+ * @author Eric Chatellier
+ * @since 4.3.0.0
+ */
+public interface Objective {
+
+ /**
+ * Return plan necessary Results.
+ *
+ * @return the necessaryResult name
+ */
+ public String[] getNecessaryResult();
+
+ /**
+ * Return plan description.
+ *
+ * @return plan description
+ * @throws Exception
+ */
+ public String getDescription() throws Exception;
+
+ /**
+ * Effectue une evaluation entre les exports et les observations.
+ *
+ * @param context optimisation context
+ * @param exports exports
+ * @param observations observations
+ * @return double value
+ */
+ double eval(OptimizationContext context, List<MatrixND> exports, List<MatrixND> observations);
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,87 @@
+/*
+ * #%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;
+
+/**
+ * Script d'optimisation.
+ *
+ * @author Eric Chatellier
+ * @since 4.3.0.0
+ */
+public interface Optimization {
+
+ /**
+ * Return plan necessary Results.
+ *
+ * @return the necessaryResult name
+ */
+ public String[] getNecessaryResult();
+
+ /**
+ * Return plan description.
+ *
+ * @return plan description
+ * @throws Exception
+ */
+ public String getDescription() throws Exception;
+
+ /**
+ * Appele lors de l'initialisation. La premiere generation doit etre construite
+ * dans l'init.
+ *
+ * @param context
+ */
+ void init(OptimizationContext context) throws Exception;
+
+ /**
+ * La premiere generation doit etre construite dans cette methode
+ * dans l'init.
+ *
+ * @param context
+ */
+ void firstSimulation(OptimizationContext context) throws Exception;
+
+ /**
+ * Génère une nouvelle série de simulation suivant le context d'optimisation.
+ *
+ * @param context context
+ */
+ void nextSimulation(OptimizationContext context) throws Exception;
+
+ /**
+ * Cette methode est appelee après chaque serie de simulation soit apres firstSimulation et
+ * nextSimulation.
+ *
+ * @param context
+ */
+ void endSimulation(OptimizationContext context) throws Exception;
+
+ /**
+ * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire
+ * (init ou nextSimulation n'ont pas fait appel a context.addSimulation)
+ * @param context
+ */
+ void finish(OptimizationContext context) throws Exception;
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,153 @@
+/*
+ * #%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 fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorHelper;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+
+/**
+ * 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 extends SimulationPlanContext {
+
+ protected SimulationJob job;
+
+ protected List<List<SimulationStorage>> generations =
+ new ArrayList<List<SimulationStorage>>();
+
+ /** Simulation to do during next generation simulation */
+ protected List<SimulationStorage> nextSimulations;
+
+ public OptimizationContext(String id, SimulationParameter param, SimulationJob job) {
+ super(id, param);
+ this.job = job;
+ }
+
+ public List<SimulationStorage> getNextSimulations() {
+ if (nextSimulations == null) {
+ nextSimulations = new ArrayList<SimulationStorage>();
+ }
+ return nextSimulations;
+ }
+
+ /**
+ * Get simulation to do, put it generations and increment currentGeneration
+ * This method must be call be Simulator when it want to get next simulations
+ * to do.
+ * @return null or empty collection if no more simulation to do
+ */
+ public List<SimulationStorage> clearNextSimulation() {
+ List<SimulationStorage> result = nextSimulations;
+
+ if (CollectionUtils.isNotEmpty(result)) {
+ generations.add(result);
+ nextSimulations = null;
+ }
+
+ return result;
+ }
+
+ public List<SimulationStorage> getLastSimulations() {
+ List<SimulationStorage> result = getGeneration(generations.size() - 1);
+ return result;
+ }
+
+ /**
+ * Return new simulation. This new simulation is automaticaly added to
+ * next simulation.
+ *
+ * @return new Simulation
+ */
+ public SimulationStorage newSimulation() {
+ try {
+ String simId = id + "_" + number;
+ SimulationParameter childParam = param.copy();
+ childParam.setSimulationPlanNumber(number);
+ SimulationStorage result = SimulationStorage.importAndRenameZip(job.getItem().getSimulationZip(), simId);
+
+ incNumber();
+ addSimulation(result);
+
+ return result;
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException("can't create new simulation", eee);
+ }
+ }
+
+ protected void addSimulation(SimulationStorage s) {
+ getNextSimulations().add(s);
+ }
+
+ /**
+ * Create simulation. This new simulation is automatically added to
+ * next simulations. Database will be modified with factors in parameters
+ */
+ public void newSimulation(Factor ... factors) {
+ SimulationStorage s = newSimulation();
+
+ Collection<Factor> colFactors = new ArrayList<Factor>();
+ Collections.addAll(colFactors, factors);
+ String script = FactorHelper.generatePreScript(colFactors);
+
+ SimulationParameter childParam = s.getParameter();
+ childParam.setGeneratedPreScript(script);
+ }
+
+ /**
+ * Return the current generation.
+ * 0 for no generation
+ * 1 for one generation simulation
+ * ...
+ * @return
+ */
+ public int getCurrentGeneration() {
+ return generations.size();
+ }
+
+ public int getSimulationNumber() {
+ return number;
+ }
+
+ public List<SimulationStorage> getGeneration(int n) {
+ List<SimulationStorage> result = null;
+ if (n >= 0 && CollectionUtils.isNotEmpty(generations)) {
+ result = generations.get(n);
+ }
+
+ return result;
+ }
+
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,6 +25,7 @@
package fr.ifremer.isisfish.simulator;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -43,6 +44,7 @@
import fr.ifremer.isisfish.entities.Zone;
import fr.ifremer.isisfish.types.TimeStep;
import fr.ifremer.isisfish.types.Month;
+import java.util.AbstractMap;
import java.util.Collections;
/**
@@ -70,10 +72,10 @@
protected List<Population> pops = null;
/** current number of fish by Pop */
protected Map<Population, MatrixND> Ns = new HashMap<Population, MatrixND>();
- /** reproduction key: <date, pop> value:<MatrixND> */
+ /** reproduction key: <date, pop> value:<MatrixND> */
protected Map<Population, Map<TimeStep, MatrixND>> reproductions = new HashMap<Population, Map<TimeStep, MatrixND>>();
- /** discard key: <date, pop> value:<MatrixND> */
- protected Map<Population, Map<TimeStep, MatrixND>> discards = new HashMap<Population, Map<TimeStep, MatrixND>>();
+ /** discard key: <date, pop> value:<MatrixND> */
+ protected Map<Population, Map.Entry<TimeStep, MatrixND>> discards = new HashMap<Population, Map.Entry<TimeStep, MatrixND>>();
/** catch per population, only last catch is remaining */
protected Map<Population, MatrixND> catchs = new HashMap<Population, MatrixND>();
/** catch per population, only last catch is remaining */
@@ -97,7 +99,6 @@
.unmodifiableList(new ArrayList<Population>(pops));
for (Population pop : this.pops) {
reproductions.put(pop, new HashMap<TimeStep, MatrixND>());
- discards.put(pop, new HashMap<TimeStep, MatrixND>());
}
}
@@ -222,7 +223,7 @@
/**
*
* TODO les reproductions qui sont trop veille pour encore servir
- * doivent être supprimées. c-a-d date < currentDate - etalement - gap between repro recru
+ * doivent être supprimées. c-a-d date < currentDate - etalement - gap between repro recru
* Une autre facon de faire est de supprimer les repro == 0 car normalement
* toute la repro doit etre utilisé au bout d'un certain temps
*
@@ -395,12 +396,21 @@
* @return le discard
*/
public MatrixND getDiscard(TimeStep step, Population pop) {
- MatrixND result = discards.get(pop).get(step);
+ checkStep(step, "You can only get discard for current step simulation, for old discard you must use ResultStorage");
+
+ MatrixND result = null;
+ // seul le discard de l'annee en cours est disponible, sinon on doit
+ // aller le chercher dans les resultats
+ Map.Entry<TimeStep, MatrixND> discard = discards.get(pop);
+ if (discard != null && discard.getValue().equals(step)) {
+ result = discard.getValue();
+ }
return result;
}
/**
* Set discard.
+ * Only work for current step simulation
*
* Force discard at date for population.
*
@@ -409,33 +419,37 @@
* @param discard le discard
*/
public void setDiscard(TimeStep step, Population pop, MatrixND discard) {
- Map<TimeStep, MatrixND> oneDiscard = discards.get(pop);
- synchronized (oneDiscard) {
- // meme si discards.get(pop) != null
- // replace toujours le précédent
- MatrixND tmp = discard.copy();
- discards.get(pop).put(step, tmp);
- }
+ checkStep(step, "You can only change discard for current step simulation");
+ // meme si discards.get(pop) != null
+ // replace toujours le précédent
+ MatrixND tmp = discard.copy();
+ discards.put(pop, new AbstractMap.SimpleEntry<TimeStep, MatrixND>(step, tmp));
}
/**
- * FIXME: discards n'est jamais vider, on le conserve pour toutes les annees
- * il serait bon de faire un peu le menage de temps en temps.
+ * Only work for current step simulation
*
* @param step
* @param pop
* @param discard
*/
public void addDiscard(TimeStep step, Population pop, MatrixND discard) {
- Map<TimeStep, MatrixND> oneDiscard = discards.get(pop);
- synchronized (oneDiscard) {
- MatrixND tmp = oneDiscard.get(step);
- if (tmp == null) {
- tmp = discard.copy();
- discards.get(pop).put(step, tmp);
- } else {
- tmp.add(discard);
- }
+ checkStep(step, "You can only add discard for current step simulation");
+
+ MatrixND oneDiscard = getDiscard(step, pop);
+ if (oneDiscard == null) {
+ oneDiscard = discard.copy();
+ } else {
+ oneDiscard.add(discard);
}
+ setDiscard(step, pop, oneDiscard);
}
+
+ public void checkStep(TimeStep step, String msg) {
+ SimulationContext sim = SimulationContext.get();
+ TimeStep simStep = sim.getSimulationControl().getStep();
+ if (!step.equals(simStep )) {
+ throw new IsisFishRuntimeException(msg);
+ }
+ }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,12 +25,13 @@
package fr.ifremer.isisfish.simulator;
-import static org.nuiton.i18n.I18n._;
+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;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -39,6 +40,7 @@
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.rule.Rule;
@@ -123,13 +125,13 @@
for (String exportName : exportNames) {
ExportStorage storage = ExportStorage.getExport(exportName);
try {
- Export export = storage.getNewExportInstance();
+ Export export = storage.getNewInstance();
for (String resultName : export.getNecessaryResult()) {
enabledResult.add(resultName);
}
} catch (IsisFishException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("Can't instanciate export %1$s", exportName), eee);
+ log.warn(t("Can't instanciate export %1$s", exportName), eee);
}
}
}
@@ -150,7 +152,33 @@
}
}
}
- log.info("Enabled result: " + enabledResult);
+
+ // on objective and optimization
+ Objective objective = param.getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = param.getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ // optimization export
+ Map<Export, Observation> optimizationExportsObservations = param.getOptimizationExportsObservations();
+ if (optimizationExportsObservations != null) {
+ for (Export export : optimizationExportsObservations.keySet()) {
+ for (String resultName : export.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+ }
+
+ log.info("Enabled result: " + enabledResult);
}
boolean result = enabledResult.contains(name);
return result;
@@ -203,7 +231,7 @@
/**
* Retourne la matrice stocke pour un pas de temps
- * @param date le pas de temps que l'on souhaite
+ * @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
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/RuleMonitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/RuleMonitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/RuleMonitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator;
-import org.apache.commons.collections.map.MultiKeyMap;
+import org.apache.commons.collections4.map.MultiKeyMap;
import fr.ifremer.isisfish.entities.Metier;
import fr.ifremer.isisfish.rule.Rule;
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -46,11 +46,13 @@
/**
* Keep all information on one simulation.
*
- * <li> Launch parameter
- * <li> Database (TopiaContext)
- * <li> SimulationControl
- * <li> Effective by pop (N)
- * <li> Result
+ * <ul>
+ * <li> Launch parameter</li>
+ * <li> Database (TopiaContext)</li>
+ * <li> SimulationControl</li>
+ * <li> Effective by pop (N)</li>
+ * <li> Result</li>
+ * </ul>
*
* Created: 3 juil. 2006 17:05:27
*
@@ -86,7 +88,7 @@
/** TopiaContext must be used to save result */
protected TopiaContext dbResult = null;
- /** CacheAspect des variables d'entités. Topia id > map of attributes. */
+ /** CacheAspect des variables d'entités. Topia id > map of attributes. */
protected Map<TopiaEntity, SimulationVariable> variablesCache = new HashMap<TopiaEntity, SimulationVariable>();
/** Context value used in equation. */
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationControl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,6 +28,7 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
+import java.util.Objects;
import java.util.Properties;
import org.apache.commons.logging.Log;
@@ -41,7 +42,7 @@
*
* Created: Fri Oct 6 2000
*
- * @author POUSSIN Benjamin <poussin(a)codelutin.com>
+ * @author POUSSIN Benjamin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
@@ -198,7 +199,8 @@
* @param text The text to set.
*/
public void setText(String text) {
- if (log.isInfoEnabled()) {
+ // pevent multiples logging of same string during remote simulations
+ if (!Objects.equals(this.text, text) && log.isInfoEnabled()) {
log.info(text);
}
String oldValue = this.text;
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationException.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationException.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationException.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,7 +30,7 @@
*
* Created: Wed Aug 14 2002
*
- * @author <poussin(a)codelutin.com>
+ * @author <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,11 +25,14 @@
package fr.ifremer.isisfish.simulator;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
+
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
+import org.apache.commons.collections4.ListUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -78,7 +81,7 @@
for (String exportName : parameters.getExportNames()) {
try {
ExportStorage storage = ExportStorage.getExport(exportName);
- Export export = storage.getNewExportInstance();
+ Export export = storage.getNewInstance();
allExports.add(export);
} catch (IsisFishException e) {
if (log.isErrorEnabled()) {
@@ -94,10 +97,20 @@
if (sensitivityExports != null) {
allExports.addAll(sensitivityExports);
}
-
+
+ // third, optimization export
+ Set<Export> optimizationExports = parameters.getOptimizationExportsObservations().keySet();
+ for (Export export : optimizationExports) {
+ // exclude export already added with regular exports
+ String exportName = ExportStorage.getName(export);
+ if (parameters.getExportNames() == null || !parameters.getExportNames().contains(exportName)) {
+ allExports.add(export);
+ }
+ }
+
// make exports
if (!allExports.isEmpty()) {
- control.setText(_("isisfish.message.export.export"));
+ control.setText(t("isisfish.message.export.export"));
File exportDir = SimulationStorage
.getResultExportDirectory(rootDirectory);
exportDir.mkdirs();
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationMeta.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationMeta.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationMeta.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,7 +29,7 @@
import fr.ifremer.isisfish.ui.widget.filter.FilterParamModel;
import fr.ifremer.isisfish.ui.widget.filter.ValueGetter;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,7 +40,7 @@
/**
* This enum represents all properties on which we can perform search.
- * <p/>
+ *
* Each constant is also used as acceptor for the property it represents (using {@link FilterAcceptor#accept(Object, Object)}
* and permit to access SimulationProperties values with methods
* {@link #getValue(SimulationProperties)}
@@ -116,7 +116,7 @@
result = dateFormat.parse(d);
} catch (ParseException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.parse.date", d), eee);
+ log.warn(t("isisfish.error.parse.date", d), eee);
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,8 +35,10 @@
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
@@ -236,23 +238,23 @@
public void clearRules();
/**
- * Return if optimization sould be used.
+ * Return if cache should be used.
*
* Default to : true.
*
- * @return use optimization
+ * @return use cache
*/
- public boolean getUseOptimization();
+ public boolean getUseCache();
/**
* Change use optimization parameter.
*
- * @param useOptimization use optimization to set
+ * @param useCache use cache to set
*/
- public void setUseOptimization(boolean useOptimization);
+ public void setUseCache(boolean useCache);
/**
- * Return if statistic sould be used.
+ * Return if statistic should be used.
*
* Default to false;
*
@@ -340,10 +342,55 @@
/**
* @param sensitivityExport the sensitivityExportNames to set
*/
- public void setSensitivityExport(
- List<SensitivityExport> sensitivityExport);
+ public void setSensitivityExport(List<SensitivityExport> sensitivityExport);
+ public boolean getUseOptimization();
+
+ public void setUseOptimization(boolean useOptimization);
+
/**
+ * Return used optimization script.
+ *
+ * @return optimization method
+ */
+ public Optimization getOptimization();
+
+ /**
+ * Set simulation optimization.
+ *
+ * @param optimization optimization
+ */
+ public void setOptimization(Optimization optimization);
+
+ /**
+ * Return used objective.
+ *
+ * @return
+ */
+ public Objective getObjective();
+
+ /**
+ * Set objective.
+ *
+ * @param objective objective
+ */
+ public void setObjective(Objective objective);
+
+ /**
+ * Get exports and observations map.
+ *
+ * @return exports and observations map
+ */
+ public Map<Export, Observation> getOptimizationExportsObservations();
+
+ /**
+ * Set exports and observations map.
+ *
+ * @param exportsObservations exports and observations map
+ */
+ public void setOptimizationExportsObservations(Map<Export, Observation> exportsObservations);
+
+ /**
* Get use simulation plans property.
*
* @return use simulation plan.
@@ -410,12 +457,28 @@
/**
* Set pre script content.
- *
+ *
* @param preScript prescript content
*/
public void setPreScript(String preScript);
/**
+ * Generated pre script is internal script generated by isis. This script
+ * must be executed before user defined preScript.
+ *
+ * @return generated pre script
+ */
+ public String getGeneratedPreScript();
+
+ /**
+ * Generated pre script is internal script generated by isis. This script
+ * must be executed before user defined preScript
+ *
+ * @param preScript prescript content
+ */
+ public void setGeneratedPreScript(String preScript);
+
+ /**
* Get region name.
*
* @return region name
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -45,8 +45,10 @@
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
@@ -87,8 +89,7 @@
paramFile = File.createTempFile("isis-fish-param", ".properties");
paramFile.deleteOnExit();
store(param);
- }
- catch (IOException eee) {
+ } catch (IOException eee) {
throw new IsisFishRuntimeException("Can't cache param to disk", eee);
}
@@ -101,11 +102,9 @@
try {
writer = new BufferedWriter(new FileWriter(paramFile));
prop.store(writer, "Parameter cache");
- }
- catch (IOException eee) {
+ } catch (IOException eee) {
throw new IsisFishRuntimeException("Can't cache param to disk", eee);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(writer);
}
}
@@ -122,11 +121,9 @@
result = new SimulationParameterImpl();
result.fromProperties(prop);
ref = new SoftReference<SimulationParameter>(result);
- }
- catch (IOException eee) {
+ } catch (IOException eee) {
throw new IsisFishRuntimeException("Can't cache param to disk", eee);
- }
- finally {
+ } finally {
IOUtils.closeQuietly(reader);
}
@@ -179,7 +176,6 @@
SimulationParameter param = getParam();
param.setDescription(description);
store(param);
-
}
/*
@@ -217,7 +213,6 @@
SimulationParameter param = getParam();
param.addExtraRules(extraRules);
store(param);
-
}
/*
@@ -237,7 +232,6 @@
SimulationParameter param = getParam();
param.setPopulations(populations);
store(param);
-
}
/*
@@ -257,7 +251,6 @@
SimulationParameter param = getParam();
param.setStrategies(strategies);
store(param);
-
}
/*
@@ -268,7 +261,6 @@
SimulationParameter param = getParam();
param.addSimulationPlan(plan);
store(param);
-
}
/*
@@ -299,7 +291,6 @@
SimulationParameter param = getParam();
param.setSimulationPlans(plans);
store(param);
-
}
/*
@@ -319,7 +310,6 @@
SimulationParameter param = getParam();
param.clearPlans();
store(param);
-
}
/*
@@ -330,7 +320,6 @@
SimulationParameter param = getParam();
param.addRule(rule);
store(param);
-
}
/*
@@ -361,7 +350,6 @@
SimulationParameter param = getParam();
param.setRules(rules);
store(param);
-
}
/*
@@ -372,7 +360,6 @@
SimulationParameter param = getParam();
param.clearRules();
store(param);
-
}
/*
@@ -392,7 +379,6 @@
SimulationParameter param = getParam();
param.setUseOptimization(useOptimization);
store(param);
-
}
/*
@@ -412,7 +398,6 @@
SimulationParameter param = getParam();
param.setUseStatistic(useStatistic);
store(param);
-
}
/*
@@ -432,7 +417,6 @@
SimulationParameter param = getParam();
param.setExportNames(exportNames);
store(param);
-
}
/*
@@ -453,7 +437,6 @@
SimulationParameter param = getParam();
param.setNumberOfSensitivitySimulation(numberOfSensitivitySimulation);
store(param);
-
}
/*
@@ -473,7 +456,6 @@
SimulationParameter param = getParam();
param.setSensitivityAnalysis(sensitivityAnalysis);
store(param);
-
}
/*
@@ -493,7 +475,6 @@
SimulationParameter param = getParam();
param.setSensitivityExport(sensitivityExport);
store(param);
-
}
/*
@@ -513,7 +494,6 @@
SimulationParameter param = getParam();
param.setUseSimulationPlan(useSimulationPlan);
store(param);
-
}
/*
@@ -605,10 +585,29 @@
SimulationParameter param = getParam();
param.setPreScript(preScript);
store(param);
-
+
}
/*
+ * @see fr.ifremer.isisfish.simulator.SimulationParameter#getGeneratedPreScript()
+ */
+ @Override
+ public String getGeneratedPreScript() {
+ SimulationParameter param = getParam();
+ return param.getGeneratedPreScript();
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.simulator.SimulationParameter#setGeneratedPreScript(java.lang.String)
+ */
+ @Override
+ public void setGeneratedPreScript(String preScript) {
+ SimulationParameter param = getParam();
+ param.setGeneratedPreScript(preScript);
+ store(param);
+ }
+
+ /*
* @see fr.ifremer.isisfish.simulator.SimulationParameter#getRegionName()
*/
@Override
@@ -900,7 +899,6 @@
SimulationParameter param = getParam();
param.fromProperties(props);
store(param);
-
}
/*
@@ -912,4 +910,56 @@
param.reloadContextParameters();
store(param);
}
+
+ @Override
+ public Optimization getOptimization() {
+ SimulationParameter param = getParam();
+ return param.getOptimization();
+ }
+
+ @Override
+ public Objective getObjective() {
+ SimulationParameter param = getParam();
+ return param.getObjective();
+ }
+
+ @Override
+ public void setOptimization(Optimization optimization) {
+ SimulationParameter param = getParam();
+ param.setOptimization(optimization);
+ store(param);
+ }
+
+ @Override
+ public void setObjective(Objective objective) {
+ SimulationParameter param = getParam();
+ param.setObjective(objective);
+ store(param);
+ }
+
+ @Override
+ public Map<Export, Observation> getOptimizationExportsObservations() {
+ SimulationParameter param = getParam();
+ return param.getOptimizationExportsObservations();
+ }
+
+ @Override
+ public void setOptimizationExportsObservations(Map<Export, Observation> exportsObservations) {
+ SimulationParameter param = getParam();
+ param.setOptimizationExportsObservations(exportsObservations);
+ store(param);
+ }
+
+ @Override
+ public boolean getUseCache() {
+ SimulationParameter param = getParam();
+ return param.getUseCache();
+ }
+
+ @Override
+ public void setUseCache(boolean useCache) {
+ SimulationParameter param = getParam();
+ param.setUseCache(useCache);
+ store(param);
+ }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -50,20 +50,26 @@
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.util.SortedProperties;
import org.nuiton.util.StringUtil;
+import org.nuiton.util.VersionUtil;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFishDAOHelper;
import fr.ifremer.isisfish.IsisFishException;
+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.RuleStorage;
import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
import fr.ifremer.isisfish.datastore.StorageHelper;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationDAO;
import fr.ifremer.isisfish.entities.Strategy;
import fr.ifremer.isisfish.entities.StrategyDAO;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.ExportHelper;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
@@ -105,8 +111,8 @@
/** Le nom de l'objet script a utiliser pour faire la simulation. */
protected String simulatorName;
- /** Utilisation ou non des optimisations. */
- protected Boolean useOptimization;
+ /** Utilisation ou non du cache. */
+ protected Boolean useCache;
/** Utilisation ou non des statistiques. */
protected Boolean useStatistic;
@@ -138,6 +144,9 @@
/** Le script de pre simulation a utiliser. */
protected String preScript;
+ /** Le script de pre simulation defini par Isis */
+ protected String generatedPreScript;
+
/** Utilisation du plan de simulation. */
protected Boolean useSimulationPlan;
@@ -171,6 +180,18 @@
/** Script utilisé pour les analyses de sensibilités. */
protected SensitivityAnalysis sensitivityAnalysis;
+ /** Utilisation d'un script de simulation. */
+ protected Boolean useOptimization;
+
+ /** Script d'optimisation. */
+ protected Optimization optimization;
+
+ /** Fonction d'objectif. */
+ protected Objective objective;
+
+ /** Exports et observations (optimisation). */
+ protected Map<Export, Observation> optimizationExportsObservations;
+
/** La liste des resultats qui nous interesse. */
protected Collection<String> resultEnabled;
@@ -268,7 +289,7 @@
region = RegionStorage.getRegion(getRegionName());
} else {
if (log.isDebugEnabled()) {
- log.debug(_("Region %s already inited", getRegionName()));
+ log.debug(t("Region %s already inited", getRegionName()));
}
}
return this.region;
@@ -498,7 +519,7 @@
try {
SimulationPlanStorage planStorage = SimulationPlanStorage.getSimulationPlan(name);
if (planStorage != null) { // since 4.0.0.3 can return null
- SimulationPlan plan = planStorage.getNewSimulationPlanInstance();
+ SimulationPlan plan = planStorage.getNewInstance();
StorageHelper.populateStorageParams(planIndex++,
getRegion().getStorage(), plan, propertiesParameters, "plan");
simulationPlans.add(plan);
@@ -596,7 +617,7 @@
for (String name : ruleList) {
if (name != null && !"".equals(name)) {
try {
- Rule rule = RuleStorage.getRule(name).getNewRuleInstance();
+ Rule rule = RuleStorage.getRule(name).getNewInstance();
RuleHelper.populateRule(ruleIndex++, tx, rule, propertiesParameters);
rules.add(rule);
} catch (IsisFishException eee) {
@@ -644,28 +665,27 @@
}
}
- /*
- * @see fr.ifremer.isisfish.simulator.SimulationParameter#getUseOptimization()
- */
@Override
- public boolean getUseOptimization() {
-
- if (useOptimization == null) {
+ public boolean getUseCache() {
+ if (useCache == null) {
if (propertiesParameters != null) {
- useOptimization = Boolean.valueOf(propertiesParameters.getProperty("useOptimization", "true"));
+ // en version < 4.3, le parametre était nommé 'useOptimization'
+ // qualifiait le cache, il été renommé ensuite
+ if (VersionUtil.smallerThan(getIsisFishVersion(), "4.3.0.0")) {
+ useCache = Boolean.valueOf(propertiesParameters.getProperty("useOptimization", "true"));
+ } else {
+ useCache = Boolean.valueOf(propertiesParameters.getProperty("useCache", "true"));
+ }
} else {
- useOptimization = Boolean.TRUE;
+ useCache = Boolean.TRUE;
}
}
- return useOptimization.booleanValue();
+ return useCache.booleanValue();
}
- /*
- * @see fr.ifremer.isisfish.simulator.SimulationParameter#setUseOptimization(boolean)
- */
@Override
- public void setUseOptimization(boolean useOptimization) {
- this.useOptimization = useOptimization;
+ public void setUseCache(boolean useCache) {
+ this.useCache = useCache;
}
/*
@@ -762,7 +782,7 @@
if (!StringUtils.isEmpty(analysisName)) {
try {
SensitivityAnalysisStorage sensitivityStorage = SensitivityAnalysisStorage.getSensitivityAnalysis(analysisName);
- sensitivityAnalysis = sensitivityStorage.getNewSensitivityAnalysisInstance();
+ sensitivityAnalysis = sensitivityStorage.getNewInstance();
// 0 = only single sensitivity
StorageHelper.populateStorageParams(0, getRegion().getStorage(), sensitivityAnalysis,
propertiesParameters, "sensitivity");
@@ -819,7 +839,7 @@
if (!StringUtils.isEmpty(name)) {
SensitivityExport sensitivityExport = SensitivityExportStorage
.getSensitivityExport(name)
- .getNewSensitivityExportInstance();
+ .getNewInstance();
ExportHelper.populateSensitivityExport(
sensitivityExportIndex++, tx,
sensitivityExport,
@@ -860,6 +880,151 @@
this.sensitivityExports = sensitivityExport;
}
+ @Override
+ public Optimization getOptimization() {
+ if (optimization == null) {
+ if (propertiesParameters != null) {
+ String optimizationName = propertiesParameters.getProperty("optimization");
+ if (!StringUtils.isEmpty(optimizationName)) {
+ try {
+ OptimizationStorage optimizationStorage = OptimizationStorage.getOptimization(optimizationName);
+ optimization = optimizationStorage.getNewInstance();
+ // 0 = only single optimization
+ StorageHelper.populateStorageParams(0, getRegion().getStorage(), optimization,
+ propertiesParameters, "optimization");
+ } catch (IsisFishException eee) {
+ optimization = null;
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find optimization: " + optimization, eee);
+ }
+ }
+ }
+ }
+ }
+
+ return optimization;
+ }
+
+ @Override
+ public boolean getUseOptimization() {
+ if (useOptimization == null) {
+ if (propertiesParameters != null) {
+ // en version < 4.3, le parametre était nommé 'useOptimization'
+ // qualifiant le cache, il a été renommé ensuite
+ if (VersionUtil.smallerThan(getIsisFishVersion(), "4.3.0.0")) {
+ useOptimization = Boolean.FALSE;
+ } else {
+ useOptimization = Boolean.valueOf(propertiesParameters.getProperty("useOptimization", "false"));
+ }
+ } else {
+ useOptimization = Boolean.FALSE;
+ }
+ }
+ return useOptimization.booleanValue();
+ }
+
+ @Override
+ public void setUseOptimization(boolean useOptimization) {
+ this.useOptimization = useOptimization;
+ }
+
+ @Override
+ public void setOptimization(Optimization optimization) {
+ this.optimization = optimization;
+ }
+
+ @Override
+ public Objective getObjective() {
+ if (objective == null) {
+ if (propertiesParameters != null) {
+ String objectiveName = propertiesParameters.getProperty("objective");
+ if (!StringUtils.isEmpty(objectiveName)) {
+ try {
+ ObjectiveStorage objectiveStorage = ObjectiveStorage.getObjective(objectiveName);
+ objective = objectiveStorage.getNewInstance();
+ // 0 = only single objective
+ StorageHelper.populateStorageParams(0, getRegion().getStorage(), objective,
+ propertiesParameters, "objective");
+ } catch (IsisFishException eee) {
+ objective = null;
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find objective: " + objective, eee);
+ }
+ }
+ }
+ }
+ }
+ return objective;
+ }
+
+ @Override
+ public void setObjective(Objective objective) {
+ this.objective = objective;
+ }
+
+ @Override
+ public Map<Export, Observation> getOptimizationExportsObservations() {
+ if (optimizationExportsObservations == null) {
+ // must be sorted for ui (LinkedHashMap)
+ optimizationExportsObservations = new LinkedHashMap<>();
+
+ if (propertiesParameters != null) {
+ try {
+ // On verifie tout d'abord que l'on ai pas dans une simulation
+ // si on y es, on utilise le context static non null du thread local
+ // Resoud les lazy exceptions des parametres des regles
+ boolean mustClose = false;
+ TopiaContext tx = SimulationContext.get().getDB();
+
+ if (tx == null) {
+ // not in simulation, create transaction
+ tx = getRegion().getStorage().beginTransaction();
+ mustClose = true;
+ }
+
+ // rules
+ String[] optimizationExportList = propertiesParameters.getProperty("optimizationexports", "").split(",");
+ int optimizationExportIndex = 0;
+ for (String name : optimizationExportList) {
+ if (name != null && !"".equals(name)) {
+ try {
+ Export export = ExportStorage.getExport(name).getNewInstance();
+ Observation observation = null;
+ String observationId = propertiesParameters.getProperty("optimizationobservation." + optimizationExportIndex);
+ if (StringUtils.isNotBlank(observationId)) {
+ observation = (Observation)tx.findByTopiaId(observationId);
+ }
+ optimizationExportsObservations.put(export, observation);
+ } catch (IsisFishException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find rule: " + name, eee);
+ }
+ }
+ }
+ optimizationExportIndex++;
+ }
+
+ // si la transaction a été ouverte (pas dans une simulation)
+ // on la referme
+ if (mustClose) {
+ tx.closeContext();
+ }
+ } catch (TopiaException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't get TopiaContext", eee);
+ }
+ }
+ }
+ }
+
+ return optimizationExportsObservations;
+ }
+
+ @Override
+ public void setOptimizationExportsObservations(Map<Export, Observation> optimizationExportsObservations) {
+ this.optimizationExportsObservations = optimizationExportsObservations;
+ }
+
/*
* @see fr.ifremer.isisfish.simulator.SimulationParameter#getUseAnalysePlan()
*/
@@ -1007,6 +1172,26 @@
this.preScript = preScript;
}
+ @Override
+ public String getGeneratedPreScript() {
+
+ if (generatedPreScript == null) {
+
+ if (propertiesParameters != null) {
+ generatedPreScript = propertiesParameters.getProperty("generatedPreScript", "");
+ } else {
+ generatedPreScript = "";
+ }
+ }
+
+ return generatedPreScript;
+ }
+
+ @Override
+ public void setGeneratedPreScript(String preScript) {
+ this.generatedPreScript = preScript;
+ }
+
/*
* @see fr.ifremer.isisfish.simulator.SimulationParameter#getRegionName()
*/
@@ -1143,7 +1328,7 @@
@Override
public void setSimulLogLevel(String logLevel) {
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.params.changeLogLev", simulLogLevel,
+ log.debug(t("isisfish.params.changeLogLev", simulLogLevel,
logLevel));
}
this.simulLogLevel = logLevel;
@@ -1173,7 +1358,7 @@
@Override
public void setScriptLogLevel(String logLevel) {
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.params.changeLogLev", scriptLogLevel,
+ log.debug(t("isisfish.params.changeLogLev", scriptLogLevel,
logLevel));
}
this.scriptLogLevel = logLevel;
@@ -1201,7 +1386,7 @@
@Override
public void setLibLogLevel(String logLevel) {
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.params.changeLogLev", libLogLevel, logLevel));
+ log.debug(t("isisfish.params.changeLogLev", libLogLevel, logLevel));
}
this.libLogLevel = logLevel;
}
@@ -1337,10 +1522,11 @@
result.regionName = getRegionName();
result.numberOfYear = getNumberOfYear();
result.simulatorName = getSimulatorName();
- result.useOptimization = getUseOptimization();
+ result.useCache = getUseCache();
result.useStatistic = getUseStatistic();
result.usePreScript = getUsePreScript();
result.preScript = getPreScript();
+ result.generatedPreScript = getGeneratedPreScript();
result.useSimulationPlan = getUseSimulationPlan();
result.simulationPlanNumber = getSimulationPlanNumber();
if (exportNames != null) {
@@ -1358,6 +1544,16 @@
if (simulationPlans != null) {
result.simulationPlans = new LinkedList<SimulationPlan>(simulationPlans);
}
+ if (objective != null) {
+ result.objective = objective;
+ }
+ result.useOptimization = getUseOptimization();
+ if (optimization != null) {
+ result.optimization = optimization;
+ }
+ if (optimizationExportsObservations != null) {
+ result.optimizationExportsObservations = new LinkedHashMap<Export, Observation>(optimizationExportsObservations);
+ }
if (resultEnabled != null) {
result.resultEnabled = new LinkedList<String>(resultEnabled);
}
@@ -1397,25 +1593,30 @@
public String toString() {
StringBuffer result = new StringBuffer();
result.append(
- _("isisfish.params.toString.simulation.done",
+ t("isisfish.params.toString.simulation.done",
getIsisFishVersion())).append('\n');
result.append("--------------------\n");
result.append(getDescription()).append('\n');
result.append("--------------------\n");
if (getUseSimulationPlan()) {
- result.append(_("isisfish.params.toString.plan.number",
+ result.append(t("isisfish.params.toString.plan.number",
getSimulationPlanNumber()));
}
+ if (getUseCache()) {
+ result.append(t("isisfish.params.toString.use.cache",
+ getUseCache()));
+ }
+
RegionStorage region = getRegion();
- result.append(_("isisfish.params.toString.fishery", region.getName()));
- result.append(_("isisfish.params.toString.number.years",
+ result.append(t("isisfish.params.toString.fishery", region.getName()));
+ result.append(t("isisfish.params.toString.number.years",
getNumberOfYear()));
// startegies
List<Strategy> strs = getStrategies();
- result.append(_("isisfish.params.toString.strategies"));
+ result.append(t("isisfish.params.toString.strategies"));
String sep = "";
for (Strategy str : strs) {
result.append(sep).append(str.getName());
@@ -1424,7 +1625,7 @@
result.append("\n\n");
// populations
- result.append(_("isisfish.params.toString.populations"));
+ result.append(t("isisfish.params.toString.populations"));
sep = "";
for (Population pop : getPopulations()) {
result.append(sep).append(pop.getName());
@@ -1444,7 +1645,7 @@
+ name, eee);
}
}
- result.append(_("isisfish.params.toString.rule", name));
+ result.append(t("isisfish.params.toString.rule", name));
result.append('\n');
result.append(param);
result.append("\n");
@@ -1454,7 +1655,7 @@
// simulation plans
for (SimulationPlan plan : getSimulationPlans()) {
- String name = RuleStorage.getName(plan);
+ String name = SimulationPlanStorage.getName(plan);
String param = "";
try {
param = SimulationPlanStorage.getParamAsString(plan);
@@ -1464,24 +1665,80 @@
+ name, eee);
}
}
- result.append(_("isisfish.params.toString.plan", name));
+ result.append(t("isisfish.params.toString.plan", name));
result.append('\n');
result.append(param);
result.append('\n');
}
+
+ if (getUseOptimization()) {
+ result.append(t("isisfish.params.toString.use.optimization",
+ getUseOptimization()));
+ }
+ if (objective != null) {
+ String name = ObjectiveStorage.getName(objective);
+ String param = "";
+ try {
+ param = ObjectiveStorage.getParamAsString(objective);
+ } catch (IsisFishException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't convert objective parameter to string for "
+ + name, eee);
+ }
+ }
+ result.append(t("isisfish.params.toString.objective", name));
+ result.append('\n');
+ result.append(param);
+ result.append('\n');
+ }
+
+ if (optimization != null) {
+ String name = OptimizationStorage.getName(optimization);
+ String param = "";
+ try {
+ param = OptimizationStorage.getParamAsString(optimization);
+ } catch (IsisFishException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't convert optimization parameter to string for "
+ + name, eee);
+ }
+ }
+ result.append(t("isisfish.params.toString.optimization", name));
+ result.append('\n');
+ result.append(param);
+ result.append('\n');
+ }
+
+ for (Map.Entry<Export, Observation> exportObservationEntry : getOptimizationExportsObservations().entrySet()) {
+ Export export = exportObservationEntry.getKey();
+ Observation observation = exportObservationEntry.getValue();
+
+ String name = ExportStorage.getName(export);
+ result.append(t("isisfish.params.toString.optimizationExport", name));
+ result.append('\n');
+ if (observation != null) {
+ result.append(t("isisfish.params.toString.optimizationObservation", observation.getName()));
+ result.append('\n');
+ }
+ }
+
result.append('\n');
- result.append(_("isisfish.params.toString.script.presimulation"))
+ result.append(t("isisfish.params.toString.script.generatedpresimulation"))
.append(":\n");
+ result.append(getGeneratedPreScript());
+ result.append('\n');
+ result.append(t("isisfish.params.toString.script.presimulation"))
+ .append(":\n");
result.append(getPreScript());
result.append('\n');
- result.append(_("isisfish.params.toString.simul.logger.level",
+ result.append(t("isisfish.params.toString.simul.logger.level",
simulLogLevel));
result.append('\n');
- result.append(_("isisfish.params.toString.script.logger.level",
+ result.append(t("isisfish.params.toString.script.logger.level",
scriptLogLevel));
result.append('\n');
- result.append(_("isisfish.params.toString.lib.logger.level",
+ result.append(t("isisfish.params.toString.lib.logger.level",
libLogLevel));
result.append('\n');
return result.toString();
@@ -1499,7 +1756,7 @@
result.setProperty("regionName", getRegionName());
result.setProperty("numberOfYear", String.valueOf(getNumberOfYear()));
result.setProperty("simulatorName", getSimulatorName());
- result.setProperty("useOptimization", String.valueOf(getUseOptimization()));
+ result.setProperty("useCache", String.valueOf(getUseCache()));
result.setProperty("useStatistic", String.valueOf(getUseStatistic()));
// strategies
@@ -1587,6 +1844,75 @@
}
}
+ // objective
+ if (objective != null) {
+ String objectiveName = ObjectiveStorage.getName(objective);
+ Properties objectiveProp = StorageHelper.getParamsAsProperties(0,
+ getRegion().getStorage(), objective, "objective");
+ result.putAll(objectiveProp);
+ result.setProperty("objective", objectiveName);
+ } else {
+ if (propertiesParameters != null
+ && propertiesParameters.containsKey("objective")) {
+ result.setProperty("objective", propertiesParameters
+ .getProperty("objective"));
+ for (String key : propertiesParameters.stringPropertyNames()) {
+ if (key.startsWith("objective.")) {
+ result.setProperty(key, propertiesParameters.getProperty(key));
+ }
+ }
+ }
+ }
+
+ // optimization
+ if (optimization != null) {
+ String optimizationName = ObjectiveStorage.getName(optimization);
+ Properties optimizationProp = StorageHelper.getParamsAsProperties(0,
+ getRegion().getStorage(), optimization, "optimization");
+ result.putAll(optimizationProp);
+ result.setProperty("optimization", optimizationName);
+ } else {
+ if (propertiesParameters != null
+ && propertiesParameters.containsKey("optimization")) {
+ result.setProperty("optimization", propertiesParameters
+ .getProperty("optimization"));
+ for (String key : propertiesParameters.stringPropertyNames()) {
+ if (key.startsWith("optimization.")) {
+ result.setProperty(key, propertiesParameters.getProperty(key));
+ }
+ }
+ }
+ }
+
+ // optimization export and observations
+ if (optimizationExportsObservations != null) {
+ String optimizationExportsList = "";
+ int optimizationExportIndex = 0;
+ for (Map.Entry<Export, Observation> exportObservationEntry : optimizationExportsObservations.entrySet()) {
+ Export export = exportObservationEntry.getKey();
+ optimizationExportsList += ExportStorage.getName(export) + ",";
+
+ // add in props observation id export index
+ Observation observation = exportObservationEntry.getValue();
+ if (observation != null) {
+ result.setProperty("optimizationobservation." + optimizationExportIndex, observation.getTopiaId());
+ }
+ optimizationExportIndex++;
+ }
+ result.setProperty("optimizationexports", optimizationExportsList);
+ } else {
+ if (propertiesParameters != null) {
+ if (propertiesParameters.containsKey("optimizationexports")) {
+ result.setProperty("optimizationexports", propertiesParameters.getProperty("optimizationexports"));
+ }
+ for (String key : propertiesParameters.stringPropertyNames()) {
+ if (key.startsWith("optimizationobservation.")) {
+ result.setProperty(key, propertiesParameters.getProperty(key));
+ }
+ }
+ }
+ }
+
// export names
String exportList = "";
for (String export : getExportNames()) {
@@ -1650,10 +1976,12 @@
// sensitivity params
result.setProperty("sensitivityAnalysisOnlyKeepFirst", String.valueOf(isSensitivityAnalysisOnlyKeepFirst()));
+ result.setProperty("generatedPreScript", getGeneratedPreScript());
result.setProperty("usePreScript", String.valueOf(getUsePreScript()));
result.setProperty("preScript", getPreScript());
result.setProperty("useSimulationPlan", String.valueOf(getUseSimulationPlan()));
result.setProperty("simulationPlanNumber", String.valueOf(getSimulationPlanNumber()));
+ result.setProperty("useOptimization", String.valueOf(getUseOptimization()));
String resultList = "";
for (String r : getResultEnabled()) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -3,9 +3,9 @@
* IsisFish
*
* $Id$
- * $HeadURL$
+ * $HeadURL: http://svn.forge.codelutin.com/svn/isis-fish/branches/4.0.1/src/main/java/f… $
* %%
- * Copyright (C) 2007 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -22,71 +22,26 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-
package fr.ifremer.isisfish.simulator;
-import static org.nuiton.i18n.I18n._;
-
+import fr.ifremer.isisfish.util.Args;
import org.nuiton.topia.TopiaContext;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-import bsh.Interpreter;
-
/**
- * SimulationPreScript.
+ * Interface d'utilisation d'un prescript.
*
- * Created: 14 nov. 07 00:06:18
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
+ * @author Eric Chatellier
*/
-public class SimulationPreScript implements SimulationListener {
+public interface SimulationPreScript {
- /*
- * @see fr.ifremer.isisfish.simulator.SimulationListener#afterSimulation(fr.ifremer.isisfish.simulator.SimulationContext)
+ /**
+ * Compute prescript
+ *
+ * @param context simulation context
+ * @param db database use during simulation
+ * @throws Exception
*/
- @Override
- public void afterSimulation(SimulationContext context) {
- }
+ @Args({"context", "db"})
+ public void compute(SimulationContext context, TopiaContext db) throws Exception;
- /*
- * @see fr.ifremer.isisfish.simulator.SimulationListener#beforeSimulation(fr.ifremer.isisfish.simulator.SimulationContext)
- */
- @Override
- public void beforeSimulation(SimulationContext context) {
- try {
- context.message(_("isisfish.message.presimulation.script.execution"));
-
- SimulationStorage simulation = context.getSimulationStorage();
- SimulationParameter parameters = simulation.getParameter();
- String presimulationScript = parameters.getPreScript();
- if ((parameters.getUsePreScript() || parameters.getUseSimulationPlan())
- && presimulationScript != null
- && !"".equals(presimulationScript)) {
-
- // utilisation de la db en memoire que l'on commitera
- TopiaContext tx = context.getDB();
-
- Interpreter bsh = new Interpreter();
- bsh.set("context", context);
- bsh.set("db", tx);
- bsh.eval("import org.nuiton.topia.*;");
- bsh.eval("import org.nuiton.topia.persistence.*;");
- bsh.eval("import fr.ifremer.isisfish.*;");
- bsh.eval("import fr.ifremer.isisfish.types.*;");
- bsh.eval("import fr.ifremer.isisfish.entities.*;");
- bsh.eval("import java.util.*;");
- bsh.eval(presimulationScript);
-
- tx.commitTransaction();
- }
- } catch (Exception eee) {
- throw new SimulationException(
- _("Can't evaluate simulation prescript"), eee);
- }
- }
}
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,100 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * %%
+ * 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 static org.nuiton.i18n.I18n.t;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.topia.TopiaContext;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.util.EvaluatorHelper;
+
+/**
+ * SimulationPreScript.
+ *
+ * Created: 14 nov. 07 00:06:18
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationPreScriptListener implements SimulationListener {
+
+ /*
+ * @see fr.ifremer.isisfish.simulator.SimulationListener#afterSimulation(fr.ifremer.isisfish.simulator.SimulationContext)
+ */
+ @Override
+ public void afterSimulation(SimulationContext context) {
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.simulator.SimulationListener#beforeSimulation(fr.ifremer.isisfish.simulator.SimulationContext)
+ */
+ @Override
+ public void beforeSimulation(SimulationContext context) {
+ try {
+ context.message(t("isisfish.message.presimulation.script.execution"));
+
+ SimulationStorage simulation = context.getSimulationStorage();
+ SimulationParameter parameters = simulation.getParameter();
+
+ String generatedPreScript = parameters.getGeneratedPreScript();
+ String presimulationScript = parameters.getPreScript();
+
+ if (StringUtils.isNotBlank(generatedPreScript) ||
+ (parameters.getUsePreScript() && StringUtils.isNotBlank(presimulationScript))) {
+
+ // utilisation de la db en memoire que l'on commitera
+ TopiaContext tx = context.getDB();
+
+ Map<String, Object> args = new HashMap<>();
+ args.put("context", context);
+ args.put("db", tx);
+
+ if (StringUtils.isNotBlank(generatedPreScript)) {
+ EvaluatorHelper.evaluate(SimulationPreScript.class.getPackage().getName(),
+ "GeneratedPreScript", SimulationPreScript.class, generatedPreScript, args);
+ }
+
+ if (parameters.getUsePreScript() && StringUtils.isNotBlank(presimulationScript)) {
+ EvaluatorHelper.evaluate(SimulationPreScript.class.getPackage().getName(),
+ "PreScript", SimulationPreScript.class, presimulationScript, args);
+ }
+
+ tx.commitTransaction();
+ }
+ } catch (Exception eee) {
+ throw new SimulationException(
+ t("Can't evaluate simulation prescript"), eee);
+ }
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationProperties.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationProperties.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationProperties.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.BufferedReader;
import java.io.File;
@@ -42,14 +42,14 @@
/**
* This class contains all usefull informations about a simulation.
- * <p/>
+ *
* This is used for filter or search a simulation.
- * <p/>
+ * <p>
* This is a mix of SimulationParameter and SimulationInformation.
- * <p/>
- * The class is only a properties container, no method to acces a data directly
+ * <p>
+ * The class is only a properties container, no method to access a data directly
* (except to obtain name of underlying simulation).
- * <p/>
+ * <p>
* For this purpose use {@link SimulationMeta#getValue(SimulationProperties)}
* and {@link SimulationMeta#getDateValue(SimulationProperties)}
*/
@@ -81,7 +81,7 @@
} catch (IOException e) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.load.file", file));
+ log.warn(t("isisfish.error.load.file", file));
}
} finally {
IOUtils.closeQuietly(reader);
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,7 +35,7 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixIterator;
import org.nuiton.math.matrix.MatrixND;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.datastore.SimulationStorage;
@@ -43,29 +43,29 @@
/**
- * <!ELEMENT outData (m,d,i,s)*>
- * <!ELEMENT m (dim+, (d|i|s)+)>
- * <!ELEMENT dim (label)+)>
- * <!ELEMENT d (#PCDATA)>
- * <!ELEMENT i (#PCDATA)>
- * <!ELEMENT s (#PCDATA)>
+ * <!ELEMENT outData (m,d,i,s)*>
+ * <!ELEMENT m (dim+, (d|i|s)+)>
+ * <!ELEMENT dim (label)+)>
+ * <!ELEMENT d (#PCDATA)>
+ * <!ELEMENT i (#PCDATA)>
+ * <!ELEMENT s (#PCDATA)>
*
- * <!ATTLIST m
+ * <!ATTLIST m
* name CDATA #REQUIRED
- * step CDATA #IMPLIED>
+ * step CDATA #IMPLIED>
*
- * <!ATTLIST dim
+ * <!ATTLIST dim
* name CDATA #REQUIRED
- * size CDATA #REQUIRED>
+ * size CDATA #REQUIRED>
*
- * <!ATTLIST d
- * step CDATA #IMPLIED>
+ * <!ATTLIST d
+ * step CDATA #IMPLIED>
*
- * <!ATTLIST i
- * step CDATA #IMPLIED>
+ * <!ATTLIST i
+ * step CDATA #IMPLIED>
*
- * <!ATTLIST s
- * step CDATA #IMPLIED>
+ * <!ATTLIST s
+ * step CDATA #IMPLIED>
*
* @author poussin
*/
@@ -111,7 +111,7 @@
out.close();
} catch (IOException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.simulation.resultXml.close",eee.getMessage()), eee);
+ log.warn(t("isisfish.error.simulation.resultXml.close",eee.getMessage()), eee);
}
}
}
@@ -133,7 +133,7 @@
out.write("<outData>\n");
} catch (IOException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.simulation.resultXml.open",eee.getMessage()), eee);
+ log.warn(t("isisfish.error.simulation.resultXml.open",eee.getMessage()), eee);
}
}
}
@@ -158,7 +158,7 @@
out.write(" </m>\n");
} catch (IOException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.simulation.resultXml.write",eee.getMessage()), eee);
+ log.warn(t("isisfish.error.simulation.resultXml.write",eee.getMessage()), eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationVariable.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationVariable.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationVariable.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -56,7 +56,7 @@
/** Managed entity id. */
protected TopiaEntity topiaEntity;
- /** Variable name > variable entity. */
+ /** Variable name > variable entity. */
protected Map<String, Variable> variablesCache = new HashMap<String, Variable>();
public SimulationVariable(SimulationContext simulationContext, TopiaEntity topiaEntity) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,7 +30,7 @@
*
* Created: Fri Sep 6 2002
*
- * @author <poussin(a)codelutin.com>
+ * @author Benjamin Poussin : poussin(a)codelutin.com
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.net.MalformedURLException;
@@ -36,6 +36,8 @@
import java.util.Arrays;
import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
@@ -45,14 +47,13 @@
import org.nuiton.topia.event.TopiaTransactionEvent;
import org.nuiton.topia.event.TopiaTransactionListener;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.ObjectUtil;
import org.nuiton.util.StringUtil;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.aspect.AspectClassLoader;
+import fr.ifremer.isisfish.aspect.AspectJUrlClassLoader;
import fr.ifremer.isisfish.aspect.CacheAspect;
import fr.ifremer.isisfish.aspect.RuleAspect;
import fr.ifremer.isisfish.aspect.TraceAspect;
@@ -65,7 +66,7 @@
import fr.ifremer.isisfish.simulator.SimulationExportResultWrapper;
import fr.ifremer.isisfish.simulator.SimulationListener;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.SimulationPreScript;
+import fr.ifremer.isisfish.simulator.SimulationPreScriptListener;
import fr.ifremer.isisfish.simulator.Simulator;
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.types.TimeStep;
@@ -100,7 +101,7 @@
String id = control.getId();
if (log.isInfoEnabled()) {
- log.info(_("simulate %s with file %s", id, simulationZip));
+ log.info(t("simulate %s with file %s", id, simulationZip));
}
try {
@@ -115,7 +116,7 @@
SimulationStorage storage = SimulationStorage.getSimulation(id);
storage.closeStorage();
- FileUtil.deleteRecursively(storage.getFile());
+ FileUtils.deleteQuietly(storage.getFile());
}
if (log.isDebugEnabled()) {
@@ -146,7 +147,7 @@
simulation = localSimulate(control, simulation);
} catch (Exception eee) {
- log.error(_("Can't do simulation %s", id), eee);
+ log.error(t("Can't do simulation %s", id), eee);
if (simulation != null) {
simulation.getInformation().setException(eee);
}
@@ -188,7 +189,7 @@
@Override
public String toString() {
- return _("isisfish.simulator.launcher.inprocess");
+ return t("isisfish.simulator.launcher.inprocess");
}
/**
@@ -231,7 +232,7 @@
libLogLevel, simThread.getName());
} catch (Exception e) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.add.logger.simulation", e));
+ log.warn(t("isisfish.error.add.logger.simulation", e));
}
}
try {
@@ -240,7 +241,7 @@
simThread.join();
} catch (InterruptedException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.wait.simThread"), eee);
+ log.warn(t("isisfish.error.wait.simThread"), eee);
}
}
} finally {
@@ -276,17 +277,14 @@
* @param directory le répertoire qui servira pour le classloader
* @return le classe loader modifié
*/
- protected AspectClassLoader changeClassLoader(Thread thread, File directory) {
+ protected AspectJUrlClassLoader changeClassLoader(Thread thread, File directory) {
try {
URL[] classpath = new URL[] { directory.toURI().toURL(),
// poussin 20080821 : il semble ne plus trouve les formules,
// est-ce mieux avec le compile dir ?
IsisFish.config.getCompileDirectory().toURI().toURL() };
- //URL [] classpath = new URL[]{directory.toURL()};
- AspectClassLoader loader = new AspectClassLoader(classpath,
- IsisFish.class.getClassLoader()); //new URLClassLoader(classpath);
- //AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader());
- //new URLClassLoader(classpath);
+ AspectJUrlClassLoader loader = new AspectJUrlClassLoader(classpath,
+ IsisFish.class.getClassLoader());
thread.setContextClassLoader(loader);
log.info("Classloader used for simulation: " + loader + " "
+ Arrays.toString(loader.getURLs()));
@@ -295,7 +293,7 @@
// on leve un runtime, car normalement cette erreur est pratiquement
// impossible car on creer l'url a partir d'un File ce qui ne pose
// noralement pas de probleme
- throw new IsisFishRuntimeException(_("isisfish.error.change.classloader", directory), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.change.classloader", directory), eee);
}
}
@@ -318,7 +316,7 @@
+ IsisConfig.getVersion());
long start = System.nanoTime();
simulation.getInformation().setSimulationStart(new java.util.Date());
- AspectClassLoader classLoader;
+ AspectJUrlClassLoader classLoader = null;
try {
File rootDirectory = simulation.getDirectory();
@@ -329,6 +327,10 @@
context.setSimulationControl(control != null ? control
: new SimulationControl(simulation.getName()));
+ // make compile directory outside getCompileDirectory() to improve performance
+ File compileDirectory = IsisFish.config.getCompileDirectory();
+ compileDirectory.mkdirs();
+
// changement de classloader
// IMPORTANT : must be set AFTER :
// - SimulationContext.get();
@@ -352,23 +354,25 @@
//
// Activation de l'OAP demandée
//
- if (parameters.getUseStatistic() || parameters.getUseOptimization()) {
+ if (parameters.getUseStatistic() || parameters.getUseCache()) {
if (parameters.getUseStatistic()) {
- message(control, _("isisfish.message.setting.trace.aspects"));
+ message(control, t("isisfish.message.setting.trace.aspects"));
classLoader.deploy(TraceAspect.class);
}
- if (parameters.getUseOptimization()) {
- message(control, _("isisfish.message.setting.cache.aspects"));
+ if (parameters.getUseCache()) {
+ message(control, t("isisfish.message.setting.cache.aspects"));
classLoader.deploy(CacheAspect.class);
}
}
+ classLoader.prepare();
+
// recherche du simulateur a utiliser
String simulatorName = parameters.getSimulatorName();
SimulatorStorage simulator = SimulatorStorage
.getSimulator(simulatorName);
- Simulator simulatorObject = simulator.getNewSimulatorInstance();
+ Simulator simulatorObject = simulator.getNewInstance();
// on se met listener sur tc pour connaitre tous les nouveaux objets
ObjectCreationListener objectCreationListener = new ObjectCreationListener();
@@ -382,7 +386,7 @@
//
// Lancement du script de simulation selectionné
//
- message(control, _("isisfish.message.simulation.execution"));
+ message(control, t("isisfish.message.simulation.execution"));
//
// Call listener simulation (used per example for prescript)
@@ -393,7 +397,7 @@
//
// Ajout des nouveaux objets créés durant la simulation
//
- message(control, _("isisfish.message.add.objets.simulation"));
+ message(control, t("isisfish.message.add.objets.simulation"));
// on ajoute sur le DBResult car pour les exports peut-etre auront
// nous besoin de ces nouveaux objets, et durant la simulation
// les resultats sont recuperer dans le DBResult
@@ -410,7 +414,7 @@
//
context.fireAfterSimulation();
- message(control, _("isisfish.message.simulation.ended"));
+ message(control, t("isisfish.message.simulation.ended"));
simulation.getInformation().setSimulationEnd(new java.util.Date());
@@ -428,14 +432,14 @@
resultStorage.close();
} catch (OutOfMemoryError eee) {
- log.error(_("isisfish.error.during.simulation"), eee);
+ log.error(t("isisfish.error.during.simulation"), eee);
simulation.getInformation().setException(eee);
- throw new SimulationException(_("isisfish.error.out.memory"), eee);
+ throw new SimulationException(t("isisfish.error.out.memory"), eee);
} catch (Exception eee) {
- log.error(_("isisfish.error.during.simulation"), eee);
+ log.error(t("isisfish.error.during.simulation"), eee);
simulation.getInformation().setException(eee);
throw new SimulationException(
- _("isisfish.error.during.simulation"), eee);
+ t("isisfish.error.during.simulation"), eee);
} finally {
//
// Finaly close all TopiaContext used during simulation
@@ -474,12 +478,18 @@
simulation.getInformation().setOptimizationUsage(cache);
}
+ // try to fix memory leak
+ LogFactory.release(classLoader);
+
+ // close classloader to release resource
+ IOUtils.closeQuietly(classLoader);
+
// cleanup specific context build directory
File simulationBuildDirectory = IsisFish.config.getCompileDirectory();
if (log.isDebugEnabled()) {
log.debug("Delete simulation build directory : " + simulationBuildDirectory.getAbsolutePath());
}
- FileUtil.deleteRecursively(simulationBuildDirectory);
+ FileUtils.deleteQuietly(simulationBuildDirectory);
// context is used in TraceAspect.printStatistiqueAndClear()
SimulationContext.remove();
@@ -509,7 +519,7 @@
// enregistrement des listeners de simulation
// - prescript (before simulation)
// - export (after simulation)
- context.addSimulationListener(new SimulationPreScript());
+ context.addSimulationListener(new SimulationPreScriptListener());
// si le simulateur est de type SimulationStep il faut ajouter les regles
context.addSimulationListener(new SimulationExportResultWrapper());
}
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,215 @@
+package fr.ifremer.isisfish.simulator.launcher;
+
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Ifremer, Code Lutin, Benjamin Poussin
+ * %%
+ * 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%
+ */
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.math.matrix.MatrixND;
+
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.export.Export;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
+import fr.ifremer.isisfish.simulator.OptimizationContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+
+/**
+ * Permet de generer l'enchainement des simulations d'optimisation.
+ * Gere les differentes generation (plusieurs simulations par generation)
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class OptimizationPrepareJob implements Runnable, SimulationJob.PostAction {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private final Log log = LogFactory.getLog(OptimizationPrepareJob.class);
+
+ protected SimulationService simulationService;
+ protected OptimizationContext optimizationContext;
+ protected SimulationJob job;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected Objective objective;
+ protected Optimization optimization;
+
+ /** nombre de simulation faite ou en cours */
+ protected int simNumber = 0;
+ /** nombre de simulation faite */
+ protected int done = 0;
+ /** true if exception occure in one simulation */
+ protected boolean exception = false;
+
+ public OptimizationPrepareJob(SimulationService simulationService, SimulationJob job) {
+ this.simulationService = simulationService;
+ this.job = job;
+
+ id = job.getItem().getControl().getId();
+ control = job.getItem().getControl();
+ param = job.getItem().getParameter();
+
+ objective = param.getObjective();
+ optimization = param.getOptimization();
+ optimizationContext = new OptimizationContext(id, param, job);
+ }
+
+ @Override
+ public void run() {
+ try {
+ optimization.init(optimizationContext);
+ optimization.firstSimulation(optimizationContext);
+
+ List<SimulationStorage> sims = optimizationContext.clearNextSimulation();
+ while (!exception && !control.isStopSimulationRequest()
+ && CollectionUtils.isNotEmpty(sims)) {
+ for (SimulationStorage s : sims) {
+ if (!exception && !control.isStopSimulationRequest()) {
+ String simId = s.getName();
+
+ File zip = s.createZip();
+ SimulationParameter childParam = s.getParameter();
+ int childNumber = childParam.getSimulationPlanNumber();
+ SimulationControl childControl = new SimulationControl(simId);
+ SimulationItem item = new SimulationItem(childControl, childParam);
+ item.setStandaloneSimulation(false);
+ item.setSimulationNumber(childNumber);
+ item.setSimulationZip(zip);
+
+ SimulationJob subJob = new SimulationJob(simulationService, job, item, job.getPriority());
+ subJob.setLauncher(job.getLauncher());
+
+ subJob.addPostAction(this);
+ simulationService.submitSubJob(subJob);
+
+ simNumber++;
+ }
+ }
+
+ control.setProgressMax(simNumber);
+
+ // wait until wall simulation for this generation are done
+ while(!exception && !control.isStopSimulationRequest()
+ && simNumber > done) {
+ Thread.sleep(2000);
+ }
+
+ if (!exception && !control.isStopSimulationRequest()) {
+ optimization.endSimulation(optimizationContext);
+ optimization.nextSimulation(optimizationContext);
+ sims = optimizationContext.clearNextSimulation();
+ }
+ }
+
+ if (!exception && !control.isStopSimulationRequest()) {
+ optimization.finish(optimizationContext);
+ }
+
+ } catch (Exception eee) {
+ // add manual log
+ // we are in a thread, IsisFishRuntimeException is displayed
+ // outside a log
+ if (log.isErrorEnabled()) {
+ log.error(t("isisfish.error.evaluate.optimization.script"), eee);
+ }
+ throw new IsisFishRuntimeException(t("isisfish.error.evaluate.optimization.script"), eee);
+ } finally {
+ // on enleve le master plan des simulations en cours, vu que
+ // toutes les simu sont terminees (correctement ou echouee)
+ simulationService.fireStopEvent(this.job);
+ }
+ }
+
+ @Override
+ public void finished(SimulationJob job, SimulationStorage sim) {
+ if (objective != null) {
+
+ // appel de la methode d'objectif
+ try {
+ List<MatrixND> exports = new ArrayList<>();
+ List<MatrixND> observations = new ArrayList<>();
+
+ // recuperation des exports et observations
+ Map<Export, Observation> exportsObservations = sim.getParameter().getOptimizationExportsObservations();
+ for (Map.Entry<Export, Observation> exportObservation : exportsObservations.entrySet()) {
+ Export export = exportObservation.getKey();
+ Observation observation = exportObservation.getValue();
+
+ File rootDirectory = sim.getDirectory();
+ File resultExportDirectory = SimulationStorage.getResultExportDirectory(rootDirectory);
+ String fullFilename = export.getExportFilename() + export.getExtensionFilename();
+ File exportFile = new File(resultExportDirectory, fullFilename);
+
+ // read matrix file
+ MatrixND exportMatrix = null;
+ if (observation.getValue() != null) {
+
+ // on fait ici un clone, car on ne connait pas les dimensions de la
+ // matrix à importer; cela n'a peut être aucun sens.
+ exportMatrix = observation.getValue().clone();
+
+ // import
+ exportMatrix.importCSV(exportFile, new int[] {0, 0});
+ }
+
+ exports.add(exportMatrix);
+ observations.add(observation.getValue());
+ }
+
+ double obj = objective.eval(optimizationContext, exports, observations);
+ sim.setObjective(obj);
+ } catch (IOException eee) {
+ throw new IsisFishRuntimeException("Can't evaluate objective", eee);
+ }
+ }
+ done++;
+ control.setProgress(done);
+ }
+
+ @Override
+ public void exception(SimulationJob job, Throwable eee) {
+ // il y a une simulation d'echoue, on ne fait pas les suivantes
+ // cela n'impacte pas les plan independant puisque toutes les
+ // simulation on deja ete generee
+ exception = true;
+ }
+
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.BufferedInputStream;
import java.io.File;
@@ -44,7 +44,6 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.MD5InputStream;
import org.nuiton.util.StringUtil;
import org.nuiton.util.ZipUtil;
@@ -76,22 +75,22 @@
*
* Caparmor file layout ($i = plan/as increment) :
* <ul>
- * <li>$ISIS-TMP/simulation-$id-preparation.zip
- * <li>$ISIS-TMP/simulation-$id-prescript.bsh
- * <li>$ISIS-TMP/simulation-$id-script.seq
- * <li>$ISIS-TMP/simulation-$id-result.zip
- * <li>$ISIS-TMP/simulation-$id-result.zip.md5
- * <li>$ISIS-TMP/simulation-$id-output.txt
- * <li>$ISIS-TMP/simulation-$id-pbs.id
+ * <li>$ISIS-TMP/simulation-$id-preparation.zip</li>
+ * <li>$ISIS-TMP/simulation-$id-prescript.bsh</li>
+ * <li>$ISIS-TMP/simulation-$id-script.seq</li>
+ * <li>$ISIS-TMP/simulation-$id-result.zip</li>
+ * <li>$ISIS-TMP/simulation-$id-result.zip.md5</li>
+ * <li>$ISIS-TMP/simulation-$id-output.txt</li>
+ * <li>$ISIS-TMP/simulation-$id-pbs.id</li>
* </ul>
* All $ISIS-TMP/simulation-$id-* files are deteled after result download.
*
* Special case :
* <ul>
* <li>standalone zip : $ISIS-TMP/simulation-$shortid-result.zip
- * (uploaded at first simulation)
+ * (uploaded at first simulation)</li>
* <li>standalone simulations : $ISIS-TMP/simulation-$shortid-script.seq
- * (uploaded at last simulation)
+ * (uploaded at last simulation)</li>
* </ul>
* where {@code $shortid} is id of parent job (without increment), they are not
* deleted after result download.
@@ -204,7 +203,7 @@
*/
@Override
public String toString() {
- return _("isisfish.simulator.launcher.remote");
+ return t("isisfish.simulator.launcher.remote");
}
/**
@@ -255,16 +254,16 @@
*
* Dans le cas de ssh:
* <ul>
- * <li>upload la simulation
- * <li>construit le script pour qsub
- * <li>upload le script qsub
- * <li>ajoute le script a qsub
- * <ul>
+ * <li>upload la simulation</li>
+ * <li>construit le script pour qsub</li>
+ * <li>upload le script qsub</li>
+ * <li>ajoute le script a qsub</li>
+ * </ul>
*
* Et :
* <ul>
- * <li>lance le thread de control de la simulation
- * <ul>
+ * <li>lance le thread de control de la simulation</li>
+ * </ul>
*/
@Override
public void simulate(SimulationService simulationService,
@@ -286,18 +285,18 @@
String simulationid = control.getId();
// connection
- message(control, _("isisfish.simulation.remote.message.connection"));
+ message(control, t("isisfish.simulation.remote.message.connection"));
Session sshSession = getSSHSession();
//Session sshSftpSession = getSSHSftpSession();
// upload simulation on server
- message(control, _("isisfish.simulation.remote.message.upload"));
+ message(control, t("isisfish.simulation.remote.message.upload"));
String simulationRemotePath = uploadSimulationIfNecessary(sshSession, simulationItem, simulationid, simulationZip);
String remoteResultZip = getRemoteResultArchivePath(simulationid);
// build du contenu du script
- message(control,_("isisfish.simulation.remote.message.waitingstart"));
+ message(control,t("isisfish.simulation.remote.message.waitingstart"));
String simulationPreScriptPath = uploadPreScriptIfNecessary(
sshSession, control.getId(), simulationPrescript);
@@ -306,10 +305,10 @@
} catch (Exception e) {
if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.simulation.remote.global"));
+ log.error(t("isisfish.error.simulation.remote.global"));
}
throw new RemoteException(
- _("isisfish.error.simulation.remote.global"), e);
+ t("isisfish.error.simulation.remote.global"), e);
}
}
@@ -389,7 +388,7 @@
// file doesn't exist
if (log.isDebugEnabled()) {
// not add ,e plz :)
- log.debug(_("Remote control file doesn't exists %s", e.getMessage()));
+ log.debug(t("Remote control file doesn't exists %s", e.getMessage()));
}
}
@@ -398,13 +397,15 @@
// try do download md5 control file
// MD5 + SIMULATION zip file
+ // FIXME echatellier 20140402 check not yet existing md5ControlFile and simulation ended
+ // simulation result will never be downloaded
try {
File md5ControlFile = downloadResultsMD5File(sshSession, control.getId());
if (md5ControlFile != null) {
- control.setText(_("isisfish.simulation.remote.message.downloadresults"));
+ control.setText(t("isisfish.simulation.remote.message.downloadresults"));
- String md5sum = FileUtil.readAsString(md5ControlFile);
+ String md5sum = FileUtils.readFileToString(md5ControlFile);
if (log.isDebugEnabled()) {
log.debug("MD5 Control file have been downloaded : " + md5ControlFile.getAbsolutePath());
@@ -445,7 +446,7 @@
}
catch(SSHException e) {
if (log.isDebugEnabled()) {
- log.debug(_("Can't download archive : %s", e.getMessage()));
+ log.debug(t("Can't download archive : %s", e.getMessage()));
}
}
@@ -482,14 +483,14 @@
// file doesn't exist
if (log.isDebugEnabled()) {
// not add ,e plz :)
- log.debug(_("Remote information file doesn't exists %s", e
+ log.debug(t("Remote information file doesn't exists %s", e
.getMessage()));
}
}
} catch (IOException e) {
if (log.isErrorEnabled()) {
// not add ,e plz :)
- log.error(_("Can't download file"), e);
+ log.error(t("Can't download file"), e);
}
}
}
@@ -534,7 +535,7 @@
port = Integer.parseInt(sPort);
} catch (NumberFormatException e) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.simulation.remote.wrongportvalue",
+ log.warn(t("isisfish.error.simulation.remote.wrongportvalue",
sPort));
}
}
@@ -542,7 +543,7 @@
}
if (log.isInfoEnabled()) {
- log.info(_("Try to log on %s@%s:%d", username, host, port));
+ log.info(t("Try to log on %s@%s:%d", username, host, port));
}
// add ssh key
@@ -550,7 +551,7 @@
File sshKey = IsisFish.config.getSSHPrivateKeyFilePath();
if (sshKey.canRead()) {
if (log.isInfoEnabled()) {
- log.info(_("Ssh key found '%s' will be used to connect to",
+ log.info(t("Ssh key found '%s' will be used to connect to",
sshKey.getAbsoluteFile(), host));
}
jsch.addIdentity(sshKey.getAbsolutePath());
@@ -558,7 +559,7 @@
}
else {
if (log.isInfoEnabled()) {
- log.info(_("Can't read ssh key : %s", sshKey));
+ log.info(t("Can't read ssh key : %s", sshKey));
}
}
@@ -601,7 +602,7 @@
/**
* Add ssh key into $HOME/.ssh/authorized_keys file.
*
- * Just connect and do an "echo xx >> .ssh/authorized_keys"
+ * Just connect and do an "echo xx >> .ssh/authorized_keys"
*
* @param session opened session
* @param sshKey
@@ -639,12 +640,12 @@
}
} catch (IOException e) {
if (log.isErrorEnabled()) {
- log.error(_("Error while uploading public key to remote serveur authorized_keys"),
+ log.error(t("Error while uploading public key to remote serveur authorized_keys"),
e);
}
} catch (SSHException e) {
if (log.isErrorEnabled()) {
- log.error(_("Error while uploading public key to remote serveur authorized_keys"),
+ log.error(t("Error while uploading public key to remote serveur authorized_keys"),
e);
}
}
@@ -716,7 +717,7 @@
int exit = SSHUtils.exec(session, command);
if (exit != 0) {
- throw new SSHException(_("Command '%s' fail to execute", command));
+ throw new SSHException(t("Command '%s' fail to execute", command));
}
SSHUtils.scpTo(session, simulationFile, remoteSimulationZipPath);
@@ -892,7 +893,7 @@
protected void clearSimulationFiles(Session session,
SimulationControl control) throws IOException, SSHException {
- control.setText(_("isisfish.simulation.remote.message.deletingfiles"));
+ control.setText(t("isisfish.simulation.remote.message.deletingfiles"));
// execute rm -f "isis-tmp/simulation-$id-"*
// on remote. Note * outside quotes !!!
@@ -967,7 +968,7 @@
File tempPreScriptFile = File.createTempFile("simulation-" + simulationId
+ "-prescript", ".bsh");
tempPreScriptFile.deleteOnExit();
- FileUtil.writeString(tempPreScriptFile, simulationPreScript);
+ FileUtils.writeStringToFile(tempPreScriptFile, simulationPreScript, "utf-8");
// remote temp directory should have been created
// by #uploadSimulation(Session, String)
@@ -1061,7 +1062,7 @@
String fileContent = getSimulationScriptLaunchContent(
QSUB_SCRIPT_TEMPLATE, simuationId, simulationZip, standaloneZip, simulationResultZip, preScriptPath, multipleSimulationScript);
- FileUtil.writeString(tempScript, fileContent);
+ FileUtils.writeStringToFile(tempScript, fileContent, "utf-8");
return tempScript;
}
@@ -1120,10 +1121,10 @@
} catch (TemplateException e) {
if (log.isErrorEnabled()) {
- log.error(_("Process template error"), e);
+ log.error(t("Process template error"), e);
}
- throw new IOException(_("Process template error"), e);
+ throw new IOException(t("Process template error"), e);
}
return scriptContent;
@@ -1169,12 +1170,12 @@
int exit = SSHUtils.exec(session, command, output);
if (exit != 0) {
- throw new SSHException(_("Command '%s' fail to execute", command));
+ throw new SSHException(t("Command '%s' fail to execute", command));
}
String out = output.toString();
- // multiple jobs id are like : 78600[].service4
- if (out.trim().matches("\\d+\\.\\[\\]\\w+") && log.isInfoEnabled()) {
+ // multiple jobs id are like : 78600[].service4 ou 6199230.service0
+ if (out.trim().matches("\\d+(\\[\\])?\\.\\w+") && log.isInfoEnabled()) {
log.info("Job submitted with job id : " + out);
}
}
@@ -1205,14 +1206,14 @@
// can fail, already stopped
/*if (exit != 0) {
- throw new SSHException(_("Command '%s' fail to execute", command));
+ throw new SSHException(t("Command '%s' fail to execute", command));
}*/
}
/**
* Get remote directory absolute path.
*
- * Don't use {@link java.io.File.separator} here, caparmor is always unix.
+ * Don't use {@link java.io.File#separator} here, caparmor is always unix.
*
* @return remote temp directory path
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,7 +27,7 @@
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@@ -40,9 +40,11 @@
* executer les jobs soumis dans la queue de {@link SimulationService}
* <p>
* Les fonctionnalites en plus par rapport a un {@link ThreadPoolExecutor} sont:
- * <li> la possibilite de suspendre l'executor puis ensuite de le relancer
+ * <ul>
+ * <li> la possibilite de suspendre l'executor puis ensuite de le relancer</li>
* <li> l'utilisation de beforeExecute pour fixer le {@link SimulatorLauncher}
- * du job
+ * du job</li>
+ * </ul>
* <p>
* Il est aussi possible d'ecoute l'etat de l'attribut pause
*
@@ -70,12 +72,13 @@
public SimulationExecutor(SimulationService simulationService,
SimulatorLauncher launcher, SimulationQueue workQueue) {
- super(launcher.maxSimulationThread(), launcher.maxSimulationThread(),
+ // need 2 threads for Optimization simulation, ensure that executor has 2 threads (Math.max)
+ super(Math.max(2, launcher.maxSimulationThread()), Math.max(2, launcher.maxSimulationThread()),
0L, TimeUnit.MILLISECONDS, (BlockingQueue) workQueue);
this.simulationService = simulationService;
this.launcher = launcher;
lastCorePoolSize = prestartAllCoreThreads();
- log.info(_("SimulationExecutor started with %s thread for %s",
+ log.info(t("SimulationExecutor started with %s thread for %s",
lastCorePoolSize, launcher));
}
@@ -132,7 +135,7 @@
SimulationService.getService().resubmit((SimulationJob) r);
}
throw new RuntimeException(
- _("Normal stop thread, this is not an error"));
+ t("Normal stop thread, this is not an error"));
}
if (r instanceof SimulationJob) {
SimulationJob job = (SimulationJob) r;
@@ -154,7 +157,7 @@
job.setLauncher(launcher);
}
} else {
- log.warn(_("Jobs submited is not ItemSimulation but was %s", r
+ log.warn(t("Jobs submited is not ItemSimulation but was %s", r
.getClass().getName()));
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.rmi.RemoteException;
import java.util.HashSet;
@@ -201,7 +201,7 @@
if (control.isStopSimulationRequest()
|| (getParentJob() != null && getParentJob().getItem()
.getControl().isStopSimulationRequest())) {
- log.info(_("Not start simulation %s because user ask stop",
+ log.info(t("Not start simulation %s because user ask stop",
id));
return;
}
@@ -215,10 +215,10 @@
&& param.getUseSimulationPlan() && !param.isIndependentPlan()) {
// on est sur un plan de simulation dependant, il faut generer les
// simulation les unes apres les autres
- SimulationService.PrepareSimulationJob i = new SimulationService.PrepareSimulationJob(
+ SimulationPlanPrepareJob i = new SimulationPlanPrepareJob(
simulationService, this);
while (!control.isStopSimulationRequest() && i.hasNext()) {
- log.info(_("Generate next simulation"));
+ log.info(t("Generate next simulation"));
SimulationJob subjob = i.next();
subjob.setLauncher(getLauncher());
// c'est bloquant seulement le temps du lancement
@@ -261,6 +261,12 @@
}
}
+ } else if (!onlyCheckControl && getParentJob() == null
+ && param.getUseOptimization()) {
+ // on est sur une optimisation, il faut faire toutes les simulations demandees
+ OptimizationPrepareJob optiPreJob =
+ new OptimizationPrepareJob(simulationService, this);
+ optiPreJob.run();
} else {
// on est sur une simple simulation, ou le resultat d'un plan
@@ -320,7 +326,7 @@
.getName(), id);
}
} catch (Exception eee) {
- log.error(_("Can't export simulation %s", id), eee);
+ log.error(t("Can't export simulation %s", id), eee);
}
try {
@@ -335,20 +341,20 @@
}
}
} catch (Exception eee) {
- log.error(_("Can't delete simulation %s ", id), eee);
+ log.error(t("Can't delete simulation %s ", id), eee);
}
for (PostAction action : postActions) {
try {
action.finished(this, simulation);
} catch (Exception eee) {
- log.error(_("Can't do post action %s", action), eee);
+ log.error(t("Can't do post action %s", action), eee);
}
}*/
}
} catch (Throwable eee) {
- log.warn(_("Can't simulate %s", item.getControl().getId()), eee);
+ log.warn(t("Can't simulate %s", item.getControl().getId()), eee);
if (eee instanceof RemoteException) {
simulationService.reportError(getLauncher(), this);
} else {
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -425,7 +425,7 @@
waitAndCheckProgression();
} catch (Exception e) {
if (log.isErrorEnabled()) {
- log.error("An exception occurs durring monitoring", e);
+ log.error("An exception occurs during monitoring", e);
}
}
}
@@ -506,7 +506,7 @@
*
* @param job job to check progression
* @param launcher SimulatorLauncher that manage simulation
- * @return <tt>true</tt> is simulation is finished, <tt>false<tt> otherwise
+ * @return {@code true} is simulation is finished, {@code false} otherwise
*/
protected boolean checkProgression(SimulationJob job,
SimulatorLauncher launcher) {
@@ -551,6 +551,9 @@
File informationFile = SimulationStorage.getSimulationInformationFile(simulationRoot);
SimulationInformation information = new SimulationInformation(informationFile);
if (StringUtils.isNotEmpty(information.getException())) {
+ if (log.isWarnEnabled()) {
+ log.warn("Simulation exception : " + information.getException());
+ }
simulationEnded = true;
}
}
@@ -615,7 +618,7 @@
action.finished(job, simulation);
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("Can't do post action %s", action), eee);
+ log.error(t("Can't do post action %s", action), eee);
}
}
}
@@ -680,7 +683,7 @@
// display user text "Looking for last simulation"
SimulationControl control = job.getItem().getControl();
- control.setText(_("isisfish.simulation.message.lookingforlast"));
+ control.setText(t("isisfish.simulation.message.lookingforlast"));
// this is a sensitivity simulation
String simulationId = job.getId();
@@ -694,7 +697,7 @@
// et on l'envoie au script d'analyse de sensibilite
if (numberFinished == numberOfSimulation) {
- control.setText(_("isisfish.simulation.message.analyzeResults"));
+ control.setText(t("isisfish.simulation.message.analyzeResults"));
SensitivityAnalysis sensitivityAnalysis = params.getSensitivityAnalysis();
if (sensitivityAnalysis != null) {
@@ -723,7 +726,7 @@
}
}
- control.setText(_("isisfish.message.simulation.ended"));
+ control.setText(t("isisfish.message.simulation.ended"));
}
}
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,279 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Ifremer, Code Lutin, Benjamin Poussin
+ * %%
+ * 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.launcher;
+
+import static org.nuiton.i18n.I18n.t;
+
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.SimulationPlan;
+import fr.ifremer.isisfish.simulator.SimulationPlanContext;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.util.FileUtil;
+
+/**
+ * Permet de genere les sous simulations d'un plan de simulation. Pour les
+ * plan independant, on l'utilise en Runnable pour genere tous les plans
+ * possible et les soumettre a la queue. Pour les plans dependant
+ * on l'utilise seulement comme iterator. La methode afterSimulation des plans
+ * est appelee automatiquement a la fin de la simulation grace au mecanisme
+ * de PostAction sur les {@link SimulationJob}.
+ */
+public class SimulationPlanPrepareJob implements Runnable, Iterator<SimulationJob>, SimulationJob.PostAction {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static final Log log = LogFactory.getLog(SimulationPlanPrepareJob.class);
+
+ protected SimulationService simulationService;
+ protected SimulationPlanContext planContext;
+ protected SimulationJob job;
+ protected SimulationJob nextJob;
+ protected boolean doNext = true;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected int done = 0;
+ protected List<SimulationPlan> simulationPlan;
+
+ public SimulationPlanPrepareJob(SimulationService simulationService, SimulationJob job) {
+ this.simulationService = simulationService;
+ this.job = job;
+ id = job.getItem().getControl().getId();
+ control = job.getItem().getControl();
+ param = job.getItem().getParameter();
+ // take a copy of simulation paln list
+ // because they a freed during simulation (soft reference)
+ // is there is not enought memory available
+ simulationPlan = param.getSimulationPlans();
+ this.planContext = new SimulationPlanContext(control.getId(), param);
+ try {
+ // appel de init sur chaque plan
+ for (SimulationPlan plan : simulationPlan) {
+ plan.init(planContext);
+ }
+ } catch (Exception eee) {
+ // add manual log
+ // we are in a thread, IsisFishRuntimeException is displayed
+ // outside a log
+ if (log.isErrorEnabled()) {
+ log.error(t("isisfish.error.evaluate.preplan.script"), eee);
+ }
+ throw new IsisFishRuntimeException(t("isisfish.error.evaluate.preplan.script"), eee);
+ }
+ }
+
+ /**
+ * Genere toutes les sous simulations et les places dans la queue.
+ *
+ * Cette methode {@code run()} est appelée seulement dans le cas de la
+ * génération de plans indépendants.
+ *
+ * @see SimulationJob#run() pour les plans dépendants
+ */
+ public void run() {
+ /* Original code
+ while (hasNext()) {
+ try {
+ SimulationJob subJob = next();
+ if (log.isInfoEnabled()) {
+ log.info("Simulation generee: " + subJob.getId());
+ }
+ simulationService.submitSubJob(subJob);
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("Can't add simulation: %s", job.getItem()
+ .getControl().getId()), eee);
+ }
+ }
+ }*/
+ // New iteration remember always simulation N and N+1
+ // needed to know witch simulation is the last one
+ // get simulation N
+ SimulationJob subJobN = null;
+ if (hasNext()) {
+ subJobN = next();
+ }
+ while (subJobN != null) {
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("Simulation generated: " + subJobN.getId());
+ }
+ // set item additionnal informations
+ SimulationItem itemN = subJobN.getItem();
+ itemN.setStandaloneSimulation(false); // independant plan
+ // - 1 because planContext.getNumber() is set to next simulation to generate
+ itemN.setSimulationNumber(planContext.getNumber() - 1);
+ // job N+1
+ // carefull call this next after itemN.setSimulationNumber()
+ SimulationJob subJobNp1 = next();
+ if (subJobNp1 == null) {
+ // there is no N+1 job, N is the last one
+ itemN.setLastSimulation(true);
+ }
+ simulationService.submitSubJob(subJobN);
+ subJobN = subJobNp1;
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(t("Can't add simulation: %s", job.getItem().getControl().getId()), eee);
+ }
+ }
+ }
+ }
+
+ /**
+ * Indique s'il y a encore des simulations dans le plan. Par defaut pour
+ * Eviter les plans sans fin, le nombre de plan genere par simulation
+ * est limite a {@link SimulationService#MAX_PLAN_SIMULATION}
+ *
+ * @return <tt>true</tt> if has next
+ */
+ public boolean hasNext() {
+ try {
+ // if user request stop simulation, stop all futur planned simulation
+ // and if last doNext is false not do next simulation
+ boolean result = !control.isStopSimulationRequest() && doNext;
+ if (result) {
+ // hasNext() est appelee par un autre thread concurrent
+ // via la methode finished(SimulationJob, SimulationStorage)
+ synchronized (this) {
+ // si deja creer on ne le refait pas
+ if (nextJob == null) {
+ // Prepration de la simulation a faire
+ // create next id simulation
+ // this start a 0
+ int planNumber = planContext.getNumber();
+ if (planNumber > SimulationService.MAX_PLAN_SIMULATION) {
+ log.error(t("Analyse plan error, too many simulation for %s : %s", id, planNumber));
+ doNext = false;
+ result = false;
+ } else {
+ String simId = id + "_" + planNumber;
+ param.setSimulationPlanNumber(planNumber);
+ File tmpDirectory = FileUtil.createTempDirectory("isisfish-simulation-", "-preparation");
+ SimulationStorage sim = SimulationStorage.importAndRenameZip(tmpDirectory, job.getItem().getSimulationZip(), simId);
+ sim.getParameter().setSimulationPlanNumber(planNumber);
+ // appel de tous les plans pour modifier la simulation
+ for (SimulationPlan plan : simulationPlan) {
+ result = result && plan.beforeSimulation(planContext, sim);
+ if (!result) {
+ nextJob = null;
+ break;
+ }
+ }
+ doNext = result;
+ if (result) {
+ File zip = sim.createZip();
+ SimulationControl childControl = new SimulationControl(simId);
+ SimulationParameter childParam = param.copy();
+ SimulationItem item = new SimulationItem(childControl, childParam);
+ item.setSimulationZip(zip);
+ nextJob = new SimulationJob(simulationService, job, item, job.getPriority());
+ nextJob.setLauncher(job.getLauncher());
+ // FIXME on retire la post action pour les plan dépendants
+ // sera appelé directement par le job de preparations
+ if (param.isIndependentPlan()) {
+ nextJob.addPostAction(this); // pour l'appel des after des plans
+ }
+ }
+ // close context for plan generator
+ // FIXME echatellier 20120904 could throw
+ //org.nuiton.topia.TopiaException: Ce contexte a deja ete ferme
+ sim.closeStorage();
+ // quoi qu'il arrive on supprime le repertoire temporaire
+ if (!FileUtils.deleteQuietly(tmpDirectory)) {
+ log.warn(t("isisfish.error.remove.directory", tmpDirectory));
+ }
+ }
+ // increment number for next simulation job
+ planContext.incNumber();
+ }
+ }
+ }
+ return result;
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException(I18n._("isisfish.error.evalute.plan.script"), eee);
+ }
+ }
+
+ public SimulationJob next() {
+ hasNext(); // pour etre sur qu'il a ete appele au moins une fois
+ SimulationJob result = null;
+ // next est appelee par un autre thread concurrent
+ // via la methode finished(SimulationJob, SimulationStorage)
+ synchronized (this) {
+ result = nextJob;
+ nextJob = null;
+ }
+ return result;
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("Not supported.");
+ }
+
+ @Override
+ public void finished(SimulationJob job, SimulationStorage sim) {
+ // doNext = true;
+ // appel de tous les plans pour modifier la simulation
+ // EC20090716 : use param.getSimulationPlans() instances,
+ // not sim.getParameters().getSimulationPlans() not sames !!!
+ for (SimulationPlan plan : simulationPlan) {
+ try {
+ boolean result = plan.afterSimulation(planContext, sim);
+ doNext = doNext && result;
+ } catch (Exception eee) {
+ log.error(t("Stop simulation plan, because can't call afterSimulation correctly on plan %s", plan.getClass().getName()), eee);
+ doNext = false;
+ }
+ }
+ // une sim vient de se finir, on incremente le compteur
+ done++;
+ if (!hasNext() && (done + 1 == planContext.getNumber())) {
+ // on enleve le master plan des simulations en cours, vu que
+ // toutes les simu sont terminees
+ simulationService.fireStopEvent(this.job);
+ }
+ }
+
+ @Override
+ public void exception(SimulationJob job, Throwable eee) {
+ // il y a une simulation d'echoue, on ne fait pas les suivantes
+ // cela n'impacte pas les plan independant puisque toutes les
+ // simulation on deja ete generee
+ doNext = false;
+ simulationService.fireStopEvent(this.job);
+ }
+
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2002 - 2011 Ifremer, Code Lutin, Benjamin Poussin, Chatellier Eric
+ * Copyright (C) 2002 - 2012 Ifremer, Code Lutin, Benjamin Poussin, 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,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
@@ -37,7 +37,6 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -46,19 +45,15 @@
import java.util.TreeSet;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.ConvertUtilsBean;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaEntity;
@@ -67,6 +62,7 @@
import org.nuiton.util.ObjectUtil;
import org.nuiton.util.ZipUtil;
+import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.ExportStorage;
@@ -78,28 +74,24 @@
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.SensitivityExport;
import fr.ifremer.isisfish.mexico.MexicoHelper;
import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.rule.RuleHelper;
import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationPlan;
-import fr.ifremer.isisfish.simulator.SimulationPlanContext;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorHelper;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.util.CompileHelper;
-import fr.ifremer.isisfish.util.ConverterUtil;
/**
* Cette classe est responsable de conservation de toutes les simulations faites
@@ -194,7 +186,7 @@
.newInstance(value);
addSimulationLauncher(sl);
} catch (Exception eee) {
- log.warn(_("Can't instantiate %s", value), eee);
+ log.warn(t("Can't instantiate %s", value), eee);
}
}
@@ -384,6 +376,9 @@
// make deep copy, ui, still work with
// copy need to be deep for simulation plan to reload
SimulationParameter localParameters = param.deepCopy();
+
+ // for migration purpose, we need to override IsisFishVersion here
+ localParameters.setIsisFishVersion(IsisConfig.getVersion());
// on l'ajoute tout de suite a la liste des simulations demandee
SimulationControl control = new SimulationControl(id);
@@ -392,12 +387,12 @@
job.setLauncher(launcher);
fireStartEvent(job);
- // Attention, dans le cas d'un plan de simulation, le new PrepareSimulationJob
+ // Attention, dans le cas d'un plan de simulation, le new SimulationPlanPrepareJob
// doit etre fait AVANT de faire le prepareSimulationZipFile
// car, il est possible que l'init des plans ajoute des regles !!!
- PrepareSimulationJob task = null;
+ SimulationPlanPrepareJob task = null;
if (localParameters.getUseSimulationPlan()) {
- task = new PrepareSimulationJob(this, job);
+ task = new SimulationPlanPrepareJob(this, job);
}
// on construit le zip de la simulation
@@ -434,6 +429,9 @@
// copy need to be deep for simulation plan to reload
SimulationParameter localParameters = param.deepCopy();
+ // for migration purpose, we need to override IsisFishVersion here
+ localParameters.setIsisFishVersion(IsisConfig.getVersion());
+
try {
// build master sensitivity export directory
@@ -488,10 +486,9 @@
// subParam only convenient for add pre script
// for launcher
SimulationParameter subParam = localParameters.copy();
- String preScriptContent = generatePreScript(scenario);
+ String generatedScriptContent = FactorHelper.generatePreScript(scenario);
// usefull next two line ?
- subParam.setUsePreScript(true);
- subParam.setPreScript(preScriptContent);
+ subParam.setGeneratedPreScript(generatedScriptContent);
// build new simulation id
String subsimulationId = id + "_" + simulationIndex;
@@ -512,7 +509,7 @@
if (subParam.getUseSimulationPlan()
&& subParam.isIndependentPlan()) {
// c un plan de simulation independant, on construit toute les sous simu
- Runnable task = new PrepareSimulationJob(this, job);
+ Runnable task = new SimulationPlanPrepareJob(this, job);
subSimulationComputationExecutor.execute(task);
} else {
// l'item est fini d'etre initialise, on peut l'ajouter a la queue
@@ -565,154 +562,6 @@
}
}
- /** Permet de manipuler un int entre plusieurs appele de methodes recursive. */
- public static class Counter {
- protected int counter = 0;
- public void inc() {
- counter++;
- }
- public int getCounter() {
- return counter;
- }
- }
-
- /**
- * Generate prescript to set factor values before simulation start.
- *
- * @param scenario to generate prescript
- * @return simulation pre script with correct values
- */
- protected String generatePreScript(Scenario scenario) {
- ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
-
- // n'utilise plus freemarker, car il y avait plus d'instruction
- // freemarker compliqué que de code a afficher
- StringBuffer buffer = new StringBuffer();
- buffer.append("import org.apache.commons.beanutils.BeanUtils;\n");
- buffer.append("import org.apache.commons.beanutils.ConvertUtilsBean;\n");
- buffer.append("import fr.ifremer.isisfish.util.ConverterUtil;\n");
- buffer.append("import fr.ifremer.isisfish.simulator.SimulationParameter;\n");
- buffer.append("ConvertUtilsBean beanUtils = ConverterUtil.getConverter(db);\n");
- buffer.append("SimulationParameter params = context.getSimulationStorage().getParameter();\n");
-
- generatePreScript(beanUtils, buffer, new Counter(), scenario.getFactors());
-
- String scriptContent = buffer.toString();
- if (log.isTraceEnabled()) {
- log.trace("Simulation prescript content = " + scriptContent);
- }
- return scriptContent;
- }
-
- /**
- * Generate prescript for a factor list that can be called recursively to
- * manage factor group.
- *
- * @param beanUtils beanUtils converter
- * @param buffer buffer to fill
- * @param counter call counter used to avoid variables name collision
- * @param factors factor list to manage
- */
- protected void generatePreScript(ConvertUtilsBean beanUtils, StringBuffer buffer, Counter counter, Collection<Factor> factors) {
-
- for (Factor factor : factors) {
- if (factor instanceof FactorGroup) {
- buffer.append("/* factor group : ").append(factor.getName()).append(" */\n");
- FactorGroup factorGroup = (FactorGroup)factor;
- generatePreScript(beanUtils, buffer, counter, factorGroup.getFactors());
- }
- else {
- int factorIndex = counter.getCounter();
- buffer.append("/* factor : ").append(factor.getName()).append(" */\n");
-
- // cas special 1 : population de départ
- if (factor.getPath().matches("parameters.population\\.\\w+\\.number")) {
- String paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
- // pas de convert, c'est fait comme ca dans
- // SimulationParameters.toProperties();
- MatrixND matrix = (MatrixND)factor.getValue();
- Object stringValue = String.valueOf(matrix.toList());
- buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
- }
- // cas special 2 : regles
- else if (factor.getPath().equals("parameters.rules")) {
- List<Rule> rules = (List<Rule>)factor.getValue();
- List<String> rulesNames = new ArrayList<String>();
- int ruleIndex = 0;
- for (Rule rule : rules) {
- rulesNames.add(rule.getClass().getSimpleName());
- Properties rulesProps = RuleHelper.getRuleAsProperties(ruleIndex++, null, rule);
- for (String rulesProp : rulesProps.stringPropertyNames()) {
- String value = rulesProps.getProperty(rulesProp);
- buffer.append("params.setProperty(\"").append(rulesProp).append("\",\"").append(value).append("\");\n");
- }
- }
- buffer.append("params.setProperty(\"rules\",\"").append(StringUtils.join(rulesNames, ",")).append("\");\n");
- }
- // cas special 3 : facteur sur les parametres des regles
- else if (factor.getPath().startsWith("parameters.rule.")) {
- // special case for rule parameter with
- Pattern pattern = Pattern.compile("^parameters\\.(rule\\.\\d+\\.parameter\\.\\w+)\\..+$");
- Matcher matcher = pattern.matcher(factor.getPath());
- String paramName = null;
- if (matcher.matches()) {
- paramName = matcher.group(1);
- } else {
- paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
- }
- String stringValue = ConvertUtils.convert(factor.getValue());
- buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
- }
- // cas special 4 : equation
- else if (factor.getDomain() instanceof EquationContinuousDomain) {
- buffer.append("context.setComputeValue(\"").append(factor.getName());
- buffer.append("\",").append(factor.getValue()).append(");\n");
- }
- // cas pas si special
- else {
- Object value = factor.getValue();
- String stringValue = beanUtils.convert(value);
- String escValue = stringValue;
- if (factor.getDomain() instanceof EquationDiscreteDomain) {
- // echatellier: equation can contains quotes that break
- // prescript, only quote, not all java replacements
- // a ne pas faire pour le reste, pour les
- // matrice par exemple, ca passe mal
- escValue = StringUtils.replace(escValue, "\n", "");
- escValue = StringUtils.replace(escValue, "\r", "");
- escValue = StringUtils.replace(escValue, "\"", "\\\"");
- }
- String path = factor.getPath();
- String topiaId = path.substring(0, path.lastIndexOf('#'));
- String property = path.substring(path.lastIndexOf('#') + 1);
- // Double value123 = beanUtils.convert("mystringvalue", Double.class);
- buffer.append(value.getClass().getName()).append(" value");
- buffer.append(factorIndex).append(" = beanUtils.convert(\"");
- buffer.append(escValue).append("\", ").append(value.getClass().getName());
- buffer.append(".class);\n");
- // TopiaEntity entity123 = db.findByTopiaId(topiaId);
- buffer.append("TopiaEntity entity").append(factorIndex);
- buffer.append(" = db.findByTopiaId(\"").append(topiaId);
- buffer.append("\");\n");
-
- if (factor.getDomain() instanceof EquationDiscreteDomain) {
- // BeanUtils.setProperty(entity123, "propertyContent", value123);
- buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
- buffer.append(", \"").append(property).append("Content\", ");
- buffer.append("value").append(factorIndex).append(");\n");
- } else {
- // BeanUtils.setProperty(entity123, "property", value123);
- buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
- buffer.append(", \"").append(property).append("\", ");
- buffer.append("value").append(factorIndex).append(");\n");
- }
- }
- }
-
- counter.inc();
- }
- }
-
protected void submit(SimulationJob job) {
SimulatorLauncher launcher = job.getLauncher();
// on ajoute a la queue qui utilise le launcher defini dans le job
@@ -726,7 +575,7 @@
}
}
// dernier recours on ajoute a la queue sans launcher
- log.info(_("Add to default queue"));
+ log.info(t("Add to default queue"));
queue.add(job);
}
@@ -813,7 +662,7 @@
i.setValue(i.intValue() + 1);
// si on a plus de N error, on stop l'executor associe
if (i.intValue() >= 50) {
- log.error(_("Launcher %s will be stopped because there are too many error (%s)",
+ log.error(t("Launcher %s will be stopped because there are too many error (%s)",
launcher, i.intValue()));
SimulationExecutor e = executors.get(launcher);
e.pause();
@@ -827,282 +676,16 @@
}
/**
- * Permet de genere les sous simulations d'un plan de simulation. Pour les
- * plan independant, on l'utilise en Runnable pour genere tous les plans
- * possible et les soumettre a la queue. Pour les plans dependant
- * on l'utilise seulement comme iterator. La methode afterSimulation des plans
- * est appelee automatiquement a la fin de la simulation grace au mecanisme
- * de PostAction sur les {@link SimulationJob}.
- */
- public static class PrepareSimulationJob implements Runnable,
- Iterator<SimulationJob>, SimulationJob.PostAction {
-
- protected SimulationService simulationService;
- protected SimulationPlanContext planContext;
- protected SimulationJob job;
- protected SimulationJob nextJob;
- protected boolean doNext = true;
- protected String id;
- protected SimulationControl control;
- protected SimulationParameter param;
- protected int done = 0;
- protected List<SimulationPlan> simulationPlan;
-
- public PrepareSimulationJob(SimulationService simulationService,
- SimulationJob job) {
- this.simulationService = simulationService;
- this.job = job;
- id = job.getItem().getControl().getId();
- control = job.getItem().getControl();
- param = job.getItem().getParameter();
- // take a copy of simulation paln list
- // because they a freed during simulation (soft reference)
- // is there is not enought memory available
- simulationPlan = param.getSimulationPlans();
- this.planContext = new SimulationPlanContext(control.getId(), param);
-
- try {
- // appel de init sur chaque plan
- for (SimulationPlan plan : simulationPlan) {
- plan.init(planContext);
- }
- } catch (Exception eee) {
- // add manual log
- // we are in a thread, IsisFishRuntimeException is displayed
- // outside a log
- if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.evaluate.preplan.script"), eee);
- }
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.preplan.script"), eee);
- }
- }
-
- /**
- * Genere toutes les sous simulations et les places dans la queue.
- *
- * Cette methode {@code run()} est appelée seulement dans le cas de la
- * génération de plans indépendants.
- *
- * @see SimulationJob#run() pour les plans dépendants
- */
- public void run() {
- /* Original code
- while (hasNext()) {
- try {
- SimulationJob subJob = next();
-
- if (log.isInfoEnabled()) {
- log.info("Simulation generee: " + subJob.getId());
- }
- simulationService.submitSubJob(subJob);
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("Can't add simulation: %s", job.getItem()
- .getControl().getId()), eee);
- }
- }
- }*/
-
- // New iteration remember always simulation N and N+1
- // needed to know witch simulation is the last one
- // get simulation N
- SimulationJob subJobN = null;
- if (hasNext()) {
- subJobN = next();
- }
-
- while (subJobN != null) {
-
- try {
- if (log.isInfoEnabled()) {
- log.info("Simulation generated: " + subJobN.getId());
- }
-
- // set item additionnal informations
- SimulationItem itemN = subJobN.getItem();
- itemN.setStandaloneSimulation(false); // independant plan
- // - 1 because planContext.getNumber() is set to next simulation to generate
- itemN.setSimulationNumber(planContext.getNumber() - 1);
-
- // job N+1
- // carefull call this next after itemN.setSimulationNumber()
- SimulationJob subJobNp1 = next();
- if (subJobNp1 == null) {
- // there is no N+1 job, N is the last one
- itemN.setLastSimulation(true);
- }
-
- simulationService.submitSubJob(subJobN);
-
- subJobN = subJobNp1;
- }
- catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("Can't add simulation: %s", job.getItem()
- .getControl().getId()), eee);
- }
- }
- }
- }
-
- /**
- * Indique s'il y a encore des simulations dans le plan. Par defaut pour
- * Eviter les plans sans fin, le nombre de plan genere par simulation
- * est limite a {@link SimulationService#MAX_PLAN_SIMULATION}
- *
- * @return <tt>true</tt> if has next
- */
- public boolean hasNext() {
- try {
- // if user request stop simulation, stop all futur planned simulation
- // and if last doNext is false not do next simulation
- boolean result = !control.isStopSimulationRequest() && doNext;
- if (result) {
-
- // hasNext() est appelee par un autre thread concurrent
- // via la methode finished(SimulationJob, SimulationStorage)
- synchronized (this) {
-
- // si deja creer on ne le refait pas
- if (nextJob == null) {
- // Prepration de la simulation a faire
- // create next id simulation
-
- // this start a 0
- int planNumber = planContext.getNumber();
-
- if (planNumber > MAX_PLAN_SIMULATION) {
- log.error(_("Analyse plan error, too many simulation for %s : %s",
- id, planNumber));
- doNext = false;
- result = false;
- } else {
- String simId = id + "_" + planNumber;
- param.setSimulationPlanNumber(planNumber);
-
- File tmpDirectory = FileUtil.createTempDirectory(
- "isisfish-simulation-", "-preparation");
- SimulationStorage sim = SimulationStorage
- .importAndRenameZip(tmpDirectory, job
- .getItem().getSimulationZip(),
- simId);
- sim.getParameter().setSimulationPlanNumber(planNumber);
-
- // appel de tous les plans pour modifier la simulation
- for (SimulationPlan plan : simulationPlan) {
- result = result
- && plan.beforeSimulation(planContext, sim);
- if (!result) {
- nextJob = null;
- break;
- }
- }
- doNext = result;
- if (result) {
-
- File zip = sim.createZip();
- SimulationControl childControl = new SimulationControl(simId);
- SimulationParameter childParam = param.copy();
- SimulationItem item = new SimulationItem(childControl, childParam);
- item.setSimulationZip(zip);
-
- nextJob = new SimulationJob(simulationService, job, item, job.getPriority());
- nextJob.setLauncher(job.getLauncher());
-
- // FIXME on retire la post action pour les plan dépendants
- // sera appelé directement par le job de preparations
- if (param.isIndependentPlan()) {
- nextJob.addPostAction(this); // pour l'appel des after des plans
- }
- }
-
- // close context for plan generator
- // FIXME echatellier 20120904 could throw
- //org.nuiton.topia.TopiaException: Ce contexte a deja ete ferme
- sim.closeStorage();
-
- // quoi qu'il arrive on supprime le repertoire temporaire
- if (!FileUtil.deleteRecursively(tmpDirectory)) {
- log.warn(_("isisfish.error.remove.directory",
- tmpDirectory));
- }
- }
-
- // increment number for next simulation job
- planContext.incNumber();
- }
- }
- }
- return result;
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(
- _("isisfish.error.evalute.plan.script"), eee);
- }
-
- }
-
- public SimulationJob next() {
- hasNext(); // pour etre sur qu'il a ete appele au moins une fois
- SimulationJob result = null;
-
- // next est appelee par un autre thread concurrent
- // via la methode finished(SimulationJob, SimulationStorage)
- synchronized (this) {
- result = nextJob;
- nextJob = null;
- }
-
- return result;
-
- }
-
- public void remove() {
- throw new UnsupportedOperationException("Not supported.");
- }
-
- public void finished(SimulationJob job, SimulationStorage sim) {
- // doNext = true;
-
- // appel de tous les plans pour modifier la simulation
- // EC20090716 : use param.getSimulationPlans() instances,
- // not sim.getParameters().getSimulationPlans() not sames !!!
- for (SimulationPlan plan : simulationPlan) {
- try {
- boolean result = plan.afterSimulation(planContext, sim);
- doNext = doNext && result;
- } catch (Exception eee) {
- log.error(_("Stop simulation plan, because can't call afterSimulation correctly on plan %s",
- plan.getClass().getName()), eee);
- doNext = false;
- }
- }
-
- // une sim vient de se finir, on incremente le compteur
- done++;
- if (!hasNext() && (done + 1 == planContext.getNumber())) {
- // on enleve le master plan des simulations en cours, vu que
- // toutes les simu sont terminees
- simulationService.fireStopEvent(this.job);
- }
- }
-
- public void exception(SimulationJob job, Throwable eee) {
- // il y a une simulation d'echoue, on ne fait pas les suivantes
- // cela n'impacte pas les plan independant puisque toutes les
- // simulation on deja ete generee
- doNext = false;
- simulationService.fireStopEvent(this.job);
- }
- }
-
- /**
* Prepare les fichiers qui seront utilsé à la simulation:
- * <li> scripts
- * <li> rules
- * <li> exports
- * <li> simulators
- * <li> export de la database de la region
- * <li> simultionplan
+ * Prepare les fichiers qui seront utilsé à la simulation:
+ * <ul>
+ * <li> scripts</li>
+ * <li> rules</li>
+ * <li> exports</li>
+ * <li> simulators</li>
+ * <li> export de la database de la region</li>
+ * <li> simultionplan</li>
+ * </ul>
* <p>
* Le tout est zippé et le zip est retourné, il peut-être directement
* importé dans le {@link SimulationStorage} (en le renommant comme
@@ -1144,13 +727,13 @@
// backup pour toutes les simulations, pour eviter que l'utilisateur
// ne puisse le modifier en meme temps
- control.setText(_("isisfish.message.backup.database.progress"));
+ control.setText(t("isisfish.message.backup.database.progress"));
RegionStorage region = RegionStorage.getRegion(param
.getRegionName());
TopiaContext tc = region.getStorage().beginTransaction();
tc.backup(regionXML, true);
tc.closeContext();
- control.setText(_("isisfish.message.backup.database.finished"));
+ control.setText(t("isisfish.message.backup.database.finished"));
// copie de toutes regles a utiliser
List<Rule> rules = param.getRules();
@@ -1173,7 +756,7 @@
if (!ruleFile.isFile()) {
ruleFile = new File(RuleStorage.getCommunityRuleDirectory(), name + ".java");
}
- FileUtil.copy(ruleFile, new File(tmpDirectory, RuleStorage.RULE_PATH
+ FileUtils.copyFile(ruleFile, new File(tmpDirectory, RuleStorage.RULE_PATH
+ File.separator + name + ".java"));
}
@@ -1183,7 +766,7 @@
if (!ruleFile.isFile()) {
ruleFile = new File(RuleStorage.getCommunityRuleDirectory(), name + ".java");
}
- FileUtil.copy(ruleFile, new File(tmpDirectory, RuleStorage.RULE_PATH
+ FileUtils.copyFile(ruleFile, new File(tmpDirectory, RuleStorage.RULE_PATH
+ File.separator + name + ".java"));
}
@@ -1195,7 +778,7 @@
if (!planFile.isFile()) {
planFile = new File(SimulationPlanStorage.getCommunitySimulationPlanDirectory(), name + ".java");
}
- FileUtil.copy(planFile, new File(tmpDirectory, SimulationPlanStorage.SIMULATION_PLAN_PATH
+ FileUtils.copyFile(planFile, new File(tmpDirectory, SimulationPlanStorage.SIMULATION_PLAN_PATH
+ File.separator + name + ".java"));
}
@@ -1206,7 +789,7 @@
if (!exportFile.isFile()) {
exportFile = new File(ExportStorage.getCommunityExportDirectory(), name);
}
- FileUtil.copy(exportFile,
+ FileUtils.copyFile(exportFile,
new File(tmpDirectory, ExportStorage.EXPORT_PATH
+ File.separator + name));
}
@@ -1219,11 +802,27 @@
if (!sensitivityFile.isFile()) {
sensitivityFile = new File(SensitivityExportStorage.getCommunitySensitivityExportDirectory(), name);
}
- FileUtil.copy(sensitivityFile,
+ FileUtils.copyFile(sensitivityFile,
new File(tmpDirectory, SensitivityExportStorage.SENSITIVITY_EXPORT_PATH
+ File.separator + name));
}
+ // copie des export d'optimisation
+ for (Export export : param.getOptimizationExportsObservations().keySet()) {
+ String name = ExportStorage.getName(export);
+ if (!param.getExportNames().contains(name)) {
+ // duplicated code
+ name = name.endsWith(".java") ? name : name + ".java";
+ File exportFile = new File(ExportStorage.getExportDirectory(), name);
+ if (!exportFile.isFile()) {
+ exportFile = new File(ExportStorage.getCommunityExportDirectory(), name);
+ }
+ FileUtils.copyFile(exportFile,
+ new File(tmpDirectory, ExportStorage.EXPORT_PATH
+ + File.separator + name));
+ }
+ }
+
// copie de tous les scripts a utiliser
// les script officiel prevalent sur les scripts communautés
FileUtil.copyRecursively(ScriptStorage.getCommunityScriptDirectory(),
@@ -1236,7 +835,7 @@
if (!simulatorFile.isFile()) {
simulatorFile = new File(SimulatorStorage.getCommunitySimulatorDirectory(), param.getSimulatorName());
}
- FileUtil.copy(simulatorFile, new File(tmpDirectory,
+ FileUtils.copyFile(simulatorFile, new File(tmpDirectory,
SimulatorStorage.SIMULATOR_PATH + File.separator
+ param.getSimulatorName()));
@@ -1250,7 +849,7 @@
// Sauvegarde du design plan en XML
if (!StringUtils.isEmpty(xmlDesignPlan)) {
File simulationDesignPlanFile = SimulationStorage.getMexicoDesignPlan(tmpDirectory);
- FileUtil.writeString(simulationDesignPlanFile, xmlDesignPlan, "utf-8");
+ FileUtils.writeStringToFile(simulationDesignPlanFile, xmlDesignPlan, "utf-8");
}
// creation du zip
@@ -1259,17 +858,17 @@
ZipUtil.compress(result, tmpDirectory, null);
// poussin 20071015: remove temp directory
- if (!FileUtil.deleteRecursively(tmpDirectory)) {
- log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ if (!FileUtils.deleteQuietly(tmpDirectory)) {
+ log.warn(t("isisfish.error.remove.directory", tmpDirectory));
}
return result;
} catch (IOException eee) {
throw new SimulationException(
- _("isisfish.error.prepare.information.simulation"), eee);
+ t("isisfish.error.prepare.information.simulation"), eee);
} catch (TopiaException eee) {
throw new SimulationException(
- _("isisfish.error.prepare.information.simulation"), eee);
+ t("isisfish.error.prepare.information.simulation"), eee);
}
}
@@ -1329,7 +928,7 @@
*/
protected void compileAllFile(SimulationControl control, File directory) {
- control.setText(_("isisfish.simulation.message.scriptscompilation"));
+ control.setText(t("isisfish.simulation.message.scriptscompilation"));
long currentTime = System.nanoTime();
//
@@ -1361,7 +960,7 @@
CompileHelper.compile(directory, fileToCompile, directory, null);
long time = System.nanoTime() - currentTime;
- control.setText(_("isisfish.message.compilation.time",
+ control.setText(t("isisfish.message.compilation.time",
DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -69,11 +69,11 @@
/** Columns names. */
protected final static String[] columnHeader = new String[] {
- _("isisfish.queue.id"),
- _("isisfish.queue.plan"),
- _("isisfish.queue.launcher"),
- _("isisfish.queue.status"),
- _("isisfish.queue.progression"), };
+ t("isisfish.queue.id"),
+ t("isisfish.queue.plan"),
+ t("isisfish.queue.launcher"),
+ t("isisfish.queue.status"),
+ t("isisfish.queue.progression"), };
/** Columns types. */
protected Class<?>[] columnClass = new Class[] {
@@ -249,9 +249,9 @@
case 2:
if (job.getLauncher() == null) {
if (param.getUseSimulationPlan()) {
- result = _("isisfish.queue.masterplan");
+ result = t("isisfish.queue.masterplan");
} else {
- result = _("isisfish.queue.notstarted");
+ result = t("isisfish.queue.notstarted");
}
} else {
result = job.getLauncher().toString();
@@ -259,7 +259,7 @@
break;
case 3:
if (control.isStopSimulationRequest()) {
- result = _("isisfish.launch.stop");
+ result = t("isisfish.launch.stop");
} else {
result = control.getText();
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.BufferedReader;
import java.io.File;
@@ -38,10 +38,10 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.SimulationStorage;
@@ -73,7 +73,7 @@
@Override
public String toString() {
- return _("isisfish.simulator.launcher.subprocess");
+ return t("isisfish.simulator.launcher.subprocess");
}
@Override
@@ -93,7 +93,7 @@
simulation = subProcessSimulate(control, simulationZip, simulationPrescript);
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("Can't do simulation %s", simulationId), eee);
+ log.error(t("Can't do simulation %s", simulationId), eee);
}
// FIXME simulation is always null if exception
if (simulation != null) {
@@ -151,7 +151,7 @@
public SimulationStorage subProcessSimulate(SimulationControl control,
File simulationZip, String simulationPrescript) throws Exception {
- message(control, _("isisfish.message.simulation.prepare"));
+ message(control, t("isisfish.message.simulation.prepare"));
String simulationId = control.getId();
// on ferme le SimulationStorage pour ne pas interferer avec le process
@@ -162,7 +162,7 @@
if (!StringUtils.isEmpty(simulationPrescript)) {
tempPrescriptFile = File.createTempFile("isis", ".prescript");
tempPrescriptFile.deleteOnExit();
- FileUtil.writeString(tempPrescriptFile, simulationPrescript);
+ FileUtils.writeStringToFile(tempPrescriptFile, simulationPrescript, "utf-8");
}
String java = System.getProperty("java.home") + File.separator + "bin"
@@ -239,7 +239,7 @@
// demarrage du process
Process process = processBuilder.start();
if (log.isInfoEnabled()) {
- log.info(_("SubProcess start: %s %s", process, processBuilder.command()));
+ log.info(t("SubProcess start: %s %s", process, processBuilder.command()));
}
// prepare de thread de surveillance du process si control n'est pas null
@@ -325,7 +325,7 @@
}
} catch (IOException e) {
if (log.isErrorEnabled()) {
- log.error( _("isisfish.simulator.subprocess.readoutput.error"),
+ log.error( t("isisfish.simulator.subprocess.readoutput.error"),
e);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/package-info.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/package-info.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/package-info.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 1999 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * Copyright (C) 1999 - 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
@@ -54,7 +54,7 @@
* </ul>
*
* <h2>Architecture global</h2>
- * <img src="doc-files/isis-simulation.png" alt="archi"/>
+ * <img src="doc-files/isis-simulation.png" alt="archi">
*
* <h2>Principe general</h2>
* <p>
@@ -98,7 +98,7 @@
* fr.ifremer.isisfish.simulator.launcher.SimulationExecutor} sont responsable de l'execution des simulations de la
* queue. Chaque {@link fr.ifremer.isisfish.simulator.launcher.SimulationExecutor} a un
* {@link fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher} qu'il utilise
- * si la simulation n'a pas encore de {@link SimulatorLauncher}
+ * si la simulation n'a pas encore de {@code SimulatorLauncher}
* d'assigne.
* </p>
* <p>
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, CodeLutin
+ * 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
@@ -25,10 +25,13 @@
package fr.ifremer.isisfish.simulator.sensitivity;
+import static org.nuiton.i18n.I18n.t;
+
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import javax.swing.Box;
import javax.swing.JLabel;
@@ -36,12 +39,14 @@
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.j2r.REngine;
import org.nuiton.j2r.RException;
import org.nuiton.j2r.RProxy;
-import org.nuiton.util.FileUtil;
+import org.nuiton.math.matrix.MatrixND;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.export.SensitivityExport;
@@ -49,21 +54,21 @@
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
public abstract class AbstractSensitivityAnalysis implements
- SensitivityAnalysis {
+ SensitivityAnalysis {
/** to use log facility, just put in your code: log.info("..."); */
- private static Log log = LogFactory
- .getLog(AbstractSensitivityAnalysis.class);
-
+ private static Log log = LogFactory.getLog(AbstractSensitivityAnalysis.class);
+
/**
* Method to create the isis.factors dataframe in R.
*
* @param plan Design plan of the sensitivity analysis
- * @param outputdirectory the directory on which we will calculate the
- * destination RData file. The RData file will be named directory.RData and
- * saved in the directory parent.
+ * @param outputdirectory the directory on which we will calculate the destination RData
+ * file. The RData file will be named directory.RData and saved
+ * in the directory parent.
*
- * @throws SensitivityException if an error occur while talking to R
+ * @throws SensitivityException
+ * if an error occur while talking to R
*/
public void setIsisFactorsR(DesignPlan plan, File outputdirectory)
throws SensitivityException {
@@ -79,24 +84,23 @@
String bsup = "Bsup<-c(%s)";
String bsupValues = "";
String attribute = "attr(isis.factors,\"%s\")<-\"%s\"";
- String isisfactors = "isis.factors<-data.frame(" +
- "\"nomFacteur\"=nomFacteur," +
- "\"Nominal\"=Nominal," +
- "\"Continu\"=Continu," +
- "\"Binf\"=Binf," +
- "\"Bsup\"=Bsup)";
+ String isisfactors = "isis.factors<-data.frame("
+ + "\"nomFacteur\"=nomFacteur," + "\"Nominal\"=Nominal,"
+ + "\"Continu\"=Continu," + "\"Binf\"=Binf," + "\"Bsup\"=Bsup)";
- //Create the vectors
+ // Create the vectors
List<Factor> factors = plan.getFactors();
- for (Factor factor:factors){
- if (factor instanceof FactorGroup && ((FactorGroup) factor).isDiscrete()) {
+ for (Factor factor : factors) {
+ if (factor instanceof FactorGroup
+ && ((FactorGroup) factor).isDiscrete()) {
List<Factor> subfactors = ((FactorGroup) factor).getFactors();
int cardinality = subfactors.get(0).getCardinality();
- for (Factor subfactor:subfactors) {
+ for (Factor subfactor : subfactors) {
if (subfactor.getCardinality() != cardinality) {
- throw new SensitivityException("All the factors of group " +
- factor.getName() + " do not have the same cardinality");
+ throw new SensitivityException(
+ "All the factors of group " + factor.getName()
+ + " do not have the same cardinality");
}
}
}
@@ -112,36 +116,35 @@
bsupValues += ",";
}
- //Factor names
+ // Factor names
factorNames += "\"" + factor.getName() + "\"";
if (factor.getDomain() instanceof ContinuousDomain) {
- //Continu values, binf values, bsup values and discrete factors attributes
+ // Continu values, binf values, bsup values and discrete factors
+ // attributes
nominalValues += "\"" + factor.getNominalValue() + "\"";
- //Continu values
+ // Continu values
continuValues += "TRUE";
- //Binf values
+ // Binf values
- binfValues += ((ContinuousDomain) factor.getDomain())
- .getCalculatorMinBound();
+ // FIXME echatellier to replace since 4.0.1
+ binfValues += "0.0"; //((ContinuousDomain) factor.getDomain()).getCalculatorMinBound();
+ //Bsup values bsupValues += ((ContinuousDomain)
+ bsupValues += "0.0"; //factor.getDomain()) .getCalculatorMaxBound();
- //Bsup values
- bsupValues += ((ContinuousDomain) factor.getDomain())
- .getCalculatorMaxBound();
-
} else {
nominalValues += "\"" + factor.getNominalValue() + "\"";
- //Continu values
+ // Continu values
continuValues += "FALSE";
- //Binf values
+ // Binf values
binfValues += "0.0";
- //Bsup values
+ // Bsup values
bsupValues += ((DiscreteDomain) factor.getDomain()).getValues()
.size();
}
@@ -149,11 +152,10 @@
String Rcall;
-
try {
REngine engine = new RProxy();
- //clear the engine (to be sure it's empty)
+ // clear the engine (to be sure it's empty)
engine.clearSession();
Rcall = String.format(nomFacteur, factorNames);
@@ -176,12 +178,12 @@
Rcall = String.format(attribute, "nomModel", "isis-fish-externeR");
engine.voidEval(Rcall);
- for (Factor factor:factors) {
+ for (Factor factor : factors) {
if (factor.getDomain() instanceof DiscreteDomain) {
String attributeValues = "list(";
- Collection<Object> values = ((DiscreteDomain) factor.getDomain())
- .getValues().values();
- for (Object j:values) {
+ Collection<Object> values = ((DiscreteDomain) factor
+ .getDomain()).getValues().values();
+ for (Object j : values) {
attributeValues += j + ",";
}
attributeValues = attributeValues.substring(0,
@@ -194,9 +196,9 @@
}
}
- //Save the Isis R session
+ // Save the Isis R session
engine.saveRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
+ outputdirectory.getName());
} catch (RException eee) {
if (log.isErrorEnabled()) {
@@ -208,45 +210,158 @@
}
- protected String editRInstruction(String rCall){
- JLabel label = new JLabel(
- "Modifier le code R envoyé si vous le souhaitez");
- JTextPane text = new JTextPane();
- text.setText(rCall);
- text.setSize(400, 400);
- text.setPreferredSize(text.getSize());
+ /**
+ * Open R engine and load RData file.
+ *
+ * @param outputDirectory save directory
+ * @return rengine
+ * @throws RException
+ */
+ protected REngine openEngine(File outputDirectory) throws RException {
+ REngine engine = new RProxy();
- Box box = Box.createVerticalBox();
- box.add(label);
- box.add(new JScrollPane(text));
+ // Clear session
+ engine.clearSession();
- JOptionPane.showMessageDialog(null, box, "R modif",
- JOptionPane.QUESTION_MESSAGE);
- return text.getText();
+ String sensitivityAnalysisName = outputDirectory.getName();
+ // Get Isis R session
+ engine.loadRData(outputDirectory.getParentFile(), sensitivityAnalysisName);
+
+ // - is a non allowed character name in R
+ String prefixName = sensitivityAnalysisName.replaceAll("-", "");
+
+ // Rename R objects for manipulation purpose (if exists)
+ String renameIsisSimule = "if (exists(\"%1$s.isis.simule\")) isis.simule<-%1$s.isis.simule";
+ String renameIsisFactorDistribution = "if (exists(\"%1$s.isis.factor.distribution\")) isis.factor.distribution<-%1$s.isis.factor.distribution";
+ String renameIsisFactor = "if (exists(\"%1$s.isis.factors\")) isis.factors<-%1$s.isis.factors";
+ String renameIsisMethodExp = "if (exists(\"%1$s.isis.methodExp\")) isis.methodExp<-%1$s.isis.methodExp";
+ String renameIsisMethodAnalyse = "if (exists(\"%1$s.isis.methodAnalyse\")) isis.methodAnalyse<-%1$s.isis.methodAnalyse";
+ engine.voidEval(String.format(renameIsisSimule, prefixName));
+ engine.voidEval(String.format(renameIsisFactorDistribution, prefixName));
+ engine.voidEval(String.format(renameIsisFactor, prefixName));
+ engine.voidEval(String.format(renameIsisMethodExp, prefixName));
+ engine.voidEval(String.format(renameIsisMethodAnalyse, prefixName));
+
+ return engine;
}
- protected void testNoDiscrete(List<Factor> factors) throws SensitivityException{
- for (Factor factor:factors) {
+ /**
+ * Save RData file and close Rengine.
+ *
+ * @param engine r engine
+ * @param outputDirectory save directory
+ * @throws RException
+ */
+ protected void closeEngine(REngine engine, File outputDirectory) throws RException {
+
+ String sensitivityAnalysisName = outputDirectory.getName();
+ // - is a non allowed character name in R
+ String prefixName = sensitivityAnalysisName.replaceAll("-", "");
+
+ // Rename R objects for saving purpose
+ String renameIsisSimule = "%s.isis.simule<-isis.simule";
+ String renameIsisFactorDistribution = "%s.isis.factor.distribution<-isis.factor.distribution";
+ String renameIsisFactor = "%s.isis.factors<-isis.factors";
+ String renameIsisMethodExp = "%s.isis.methodExp<-isis.methodExp";
+ String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
+ engine.voidEval(String.format(renameIsisSimule, prefixName));
+ engine.voidEval(String.format(renameIsisFactorDistribution, prefixName));
+ engine.voidEval(String.format(renameIsisFactor, prefixName));
+ engine.voidEval(String.format(renameIsisMethodExp, prefixName));
+ engine.voidEval(String.format(renameIsisMethodAnalyse, prefixName));
+
+ // Clean temporary R objects
+ for (String object : engine.ls()) {
+ if (!object.startsWith(prefixName)) {
+ engine.remove(object);
+ }
+ }
+
+ // Save Isis R session
+ engine.saveRData(outputDirectory.getParentFile(), sensitivityAnalysisName);
+
+ engine.terminate();
+ }
+
+ /**
+ * Affiche une boite de dialogue modale permettant de modifier l'expression
+ * R.
+ *
+ * @param rCall r instruction to edit
+ * @return user edited r instruction
+ */
+ protected String editRInstruction(String rCall) {
+ JLabel label = new JLabel(t("Modifier le code R envoyé si vous le souhaitez"));
+ JTextPane text = new JTextPane();
+ text.setText(rCall);
+ text.setSize(400, 400);
+ text.setPreferredSize(text.getSize());
+
+ Box box = Box.createVerticalBox();
+ box.add(label);
+ box.add(new JScrollPane(text));
+
+ JOptionPane.showMessageDialog(null, box, t("R modif"), JOptionPane.QUESTION_MESSAGE);
+ return text.getText();
+ }
+
+ /**
+ * Test que tous les facteurs sont continues. Leve une exception si un
+ * facteur discret est présent.
+ *
+ * @param factors factor list to check
+ * @throws SensitivityException
+ */
+ protected void checkAllFactorContinuous(List<Factor> factors)
+ throws SensitivityException {
+ for (Factor factor : factors) {
if (factor.getDomain() instanceof DiscreteDomain) {
- throw new SensitivityException(factor.getName() +
- " has a discrete domain, this is not acceptable for " +
- "this method.");
+ throw new SensitivityException(t("%s has a discrete domain, this is not acceptable for this method.", factor.getName()));
}
}
}
- protected String createImportInstruction(
- SensitivityExport export,
+ /**
+ * Test que tous les facteurs sont continues. Leve une exception si un
+ * facteur discret est présent.
+ *
+ * @param factors factor list to check
+ * @throws SensitivityException
+ */
+ protected void checkAllUniformDistribution(List<Factor> factors)
+ throws SensitivityException {
+ for (Factor factor : factors) {
+ if (factor.getDomain() instanceof ContinuousDomain) {
+ ContinuousDomain domain = (ContinuousDomain)factor.getDomain();
+ Distribution distribution = domain.getDistribution();
+ if (distribution != Distribution.QUNIFPC && distribution != Distribution.QUNIFMM) {
+ throw new SensitivityException(t("%s has a non uniform distribution, this is not acceptable for this method.", factor.getName()));
+ }
+ } else {
+ throw new SensitivityException(t("%s has a discrete domain, this is not acceptable for this method.", factor.getName()));
+ }
+ }
+ }
+
+ /**
+ * Cree l'instruction R qui permet de relire le contenu d'un fichier genere
+ * par un Export Isis.
+ *
+ * @param export export to get filename to read
+ * @param simulationStorages simulation list to read export
+ * @return r instruction
+ */
+ protected String createImportInstruction(SensitivityExport export,
List<SimulationStorage> simulationStorages) {
- //the filename to read
+ // the filename to read
String name = export.getExportFilename();
- //the extension to read
+ // the extension to read
String extension = export.getExtensionFilename();
- //the rInstruction
+ // the rInstruction
String rInstruction = name + "<-c(";
- //iterate on all the simulations and read the value for each one
+ // iterate on all the simulations and read the value for each one
for (int l = 0; l < simulationStorages.size(); l++) {
SimulationStorage simulationStorage = simulationStorages.get(l);
@@ -257,15 +372,13 @@
File importFile = new File(directoryPath, name + extension);
- String simulResult="";
- try{
- simulResult = FileUtil.readAsString(importFile);
+ String simulResult = "";
+ try {
+ simulResult = FileUtils.readFileToString(importFile);
} catch (IOException ioe) {
- log.error ("An error occured trying to read a result file : " +
- ioe.getMessage());
+ log.error("An error occured trying to read a result file : ", ioe);
}
-
double simulationResult = Double.valueOf(simulResult);
if (l < simulationStorages.size() - 1) {
@@ -279,23 +392,95 @@
return rInstruction;
}
- protected void renameObjects(REngine engine, String simulationName)
- throws RException {
+ /**
+ * Get factor domain min bound depending on distribution.
+ */
+ protected double getMinBound(Factor factor) {
+ return getBound(factor, true);
+ }
- String renameIsisSimule = "%s.isis.simule<-isis.simule";
- String renameIsisFactorDistribution = "%s.isis.factor.distribution" +
- "<-isis.factor.distribution";
- String renameIsisFactor = "%s.isis.factor<-isis.factors";
- String renameIsisMethodExp = "%s.isis.methodExp<-isis.MethodExp";
+ /**
+ * Get factor domain max bound depending on distribution.
+ */
+ protected double getMaxBound(Factor factor) {
+ return getBound(factor, false);
+ }
+
+ /**
+ * Get factor domain bound depending on distribution.
+ *
+ * @param min min or max
+ */
+ protected double getBound(Factor factor, boolean min) {
+ ContinuousDomain domain = (ContinuousDomain)factor.getDomain();
+ Distribution distribution = domain.getDistribution();
+ double result = 0;
+ if (distribution == Distribution.QUNIFPC) {
+ Object reference = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[0].getName());
+ if (reference instanceof MatrixND) {
+ result = min ? 0 : 1;
+ } else {
+ Double coefficient = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[1].getName());
+ if (min) {
+ result = (Double)reference - ((Double)reference * coefficient);
+ } else {
+ result = (Double)reference + ((Double)reference * coefficient);
+ }
+ }
+ } else if (distribution == Distribution.QUNIFMM) {
+ Object value = domain.getDistributionParameter(Distribution.QUNIFMM.getDistibutionParams()[min ? 0 : 1].getName());
+ // pour les matrices, on prend 1 et on multipliera le retour
+ // de R sur la matrice pour faire varier la matrice completement
+ // note: on ne fait pas ca pour les réels car les utilisateurs
+ // prefere avoir les valeurs réelles dans le RData.
+ if (value instanceof MatrixND) {
+ result = min ? 0 : 1;
+ } else {
+ result = (Double)value;
+ }
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't call getBound for distribution " + distribution);
+ }
+ }
+ return result;
+ }
- engine.voidEval(String.format(renameIsisSimule, simulationName));
+ protected String getIsisFactorDistribution(List<Factor> factors){
+ String isisFactorDistribution = "isis.factor.distribution<-" +
+ "data.frame(NomFacteur=c(%s)," +
+ "NomDistribution=c(%s)," +
+ "ParametreDistribution=c(%s))";
- engine.voidEval(String.format(renameIsisFactorDistribution,
- simulationName));
+ // Creating the vectors.
+ String distribution = "";
+ String parameters = "";
+ String factorNames = "";
- engine.voidEval(String.format(renameIsisFactor, simulationName));
+ for (int i = 0; i < factors.size(); i++) {
+ Factor factor = factors.get(i);
+ ContinuousDomain domain = (ContinuousDomain)factor.getDomain();
+ if (i != 0) {
+ distribution += ",";
+ parameters += ",";
+ factorNames += ",";
+ }
- engine.voidEval(String.format(renameIsisMethodExp, simulationName));
+ Distribution r_distribution = domain.getDistribution();
+
+ distribution += "\""+ r_distribution.getInstruction() +"\"";
+ parameters += "\"[";
+
+ for (Map.Entry<String,Object> param:domain.getDistributionParameters().entrySet()){
+ parameters += param.getKey() + "=" + param.getValue() + ";";
+ }
+
+ parameters = StringUtils.removeEnd(parameters, ";");
+ parameters += "]\"";
+
+ factorNames += "\"" + factor.getName() + "\"";
+ }
+
+ return String.format(isisFactorDistribution, factorNames, distribution, parameters);
}
-
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -34,6 +34,8 @@
/**
* Design plan contenant toutes les valeurs de facteurs possible.
*
+ * It's equivalent to "experimentalDesign" in mexico.
+ *
* @author chatellier
* @version $Revision: 1.0 $
*
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Distribution.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Distribution.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Distribution.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Distribution.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,167 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 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.simulator.sensitivity;
+
+import static org.nuiton.i18n.I18n.t;
+import jdistlib.Binomial;
+import jdistlib.Cauchy;
+import jdistlib.ChiSquare;
+import jdistlib.Exponential;
+import jdistlib.F;
+import jdistlib.Gamma;
+import jdistlib.Geometric;
+import jdistlib.HyperGeometric;
+import jdistlib.Normal;
+import jdistlib.Uniform;
+
+/**
+ * Distribution used in sensitivity analysis (for continuous domain).
+ *
+ * @author chatellier
+ * @version $Revision$
+ * @since 4.0.1.0
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public enum Distribution {
+
+ QUNIFPC(t("QUnif %"),
+ "runif",
+ Uniform.class,
+ new DistributionParam("reference", t("Reference value"), true),
+ new DistributionParam("coefficient", t("Coefficient"), false)),
+ QUNIFMM(t("QUnif Min/Max"),
+ "runif",
+ Uniform.class,
+ new DistributionParam("min", t("Minimum value"), true),
+ new DistributionParam("max", t("Maximum value"), true)),
+ DBINOM(t("Dbimom"),
+ "rbinom",
+ Binomial.class,
+ new DistributionParam("size", t("number of trials (zero or more)")),
+ new DistributionParam("prob", t("probability of success on each trial"))),
+ DCAUCHY(t("dcauchy"),
+ "rcauchy",
+ Cauchy.class,
+ new DistributionParam("location", t("location and scale parameters. (location = 0, scale = 1)")),
+ new DistributionParam("scale", t("location and scale parameters. (location = 0, scale = 1)"))),
+ DCHISQ(t("dchisq"),
+ "rchisq",
+ ChiSquare.class,
+ new DistributionParam("df", t("degrees of freedom (non-negative, but can be non-integer)"))),
+ DEXP(t("dexp"),
+ "rexp",
+ Exponential.class,
+ new DistributionParam("rate", t("vector of rates"))),
+ DF(t("df"),
+ "rf",
+ F.class,
+ new DistributionParam("df1", t("degrees of freedom. 'Inf' is allowed")),
+ new DistributionParam("df2", t("degrees of freedom. 'Inf' is allowed")),
+ new DistributionParam("ncp", t("non-centrality parameter. If omitted the central F is assumed"))),
+ DGAMMA(t("dgamma"),
+ "rgamma",
+ Gamma.class,
+ new DistributionParam("shape", t("shape and scale parameters. Must be positive, 'scale' strictly")),
+ new DistributionParam("rate", t("an alternative way to specify the scale.")),
+ new DistributionParam("scale", t("shape and scale parameters. Must be positive, 'scale' strictly"))),
+ DGEOM(t("dgeom"),
+ "rgeom",
+ Geometric.class,
+ new DistributionParam("prob", t("probability of success in each trial. '0 < prob <= 1'"))),
+ DHYPER(t("dhyper"),
+ "rhyper",
+ HyperGeometric.class,
+ new DistributionParam("m", t("the number of white balls in the urn.")),
+ new DistributionParam("n", t("the number of black balls in the urn.")),
+ new DistributionParam("k", t("the number of balls drawn from the urn."))),
+ DLNORM(t("dlnorm"),
+ "rlnorm",
+ Normal.class,
+ new DistributionParam("meanlog", t("mean and standard deviation of the distribution on the log scale with default values of '0' and '1' respectively."), false),
+ new DistributionParam("sdlog", t("mean and standard deviation of the distribution on the log scale with default values of '0' and '1' respectively."), false));
+
+ protected String description;
+
+ protected String instruction;
+
+ protected Class distClass;
+
+ protected DistributionParam[] params;
+
+ private Distribution(String description, String instruction, Class distClass, DistributionParam... params) {
+ this.description = description;
+ this.instruction = instruction;
+ this.distClass = distClass;
+ this.params = params;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getInstruction() {
+ return instruction;
+ }
+
+ public Class getDistClass() {
+ return distClass;
+ }
+
+ public DistributionParam[] getDistibutionParams() {
+ return params;
+ }
+
+ public static class DistributionParam {
+ protected String name;
+
+ protected String description;
+
+ /** If original value must be set in UI (matrix). */
+ protected boolean originalValue;
+
+ public DistributionParam(String name, String description, boolean originalValue) {
+ this.name = name;
+ this.description = description;
+ this.originalValue = originalValue;
+ }
+
+ public DistributionParam(String name, String description) {
+ this(name, description, false);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public boolean isOriginalValue() {
+ return originalValue;
+ }
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -25,13 +25,12 @@
package fr.ifremer.isisfish.simulator.sensitivity;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
+import java.io.Serializable;
+
+import org.nuiton.math.matrix.MatrixND;
+
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import java.io.Serializable;
-
import fr.ifremer.isisfish.simulator.sensitivity.visitor.FactorVisitor;
/**
@@ -98,14 +97,17 @@
*
* Par exemple: topiaID#gear aura pour effet de recuperer l'objet
* correspondant au topiaID fournit et d'appeler le propriete
- * <tt>setGear(value)</tt> dessus.
+ * {@code setGear(value)} dessus.
*/
protected String path;
/** Cardinality */
protected int cardinality;
- /**
+ /** Variable name in case of equation factor (must be java valid identifier) */
+ protected String equationVariableName;
+
+ /**
* Constructor with name.
*
* @param name factor name
@@ -179,25 +181,28 @@
/**
* Get the factor value for displaying (for example in R).
- *
+ *
* @return the value
*/
public Object getDisplayedValue() {
- if (domain instanceof MatrixContinuousDomain) {
- return identifier;
- } if (domain instanceof EquationDiscreteDomain ||
- domain instanceof EquationContinuousDomain) {
- return "\"" + getValue() + "\"";
+ Object result;
+ // add quotes for equation, but why ?
+ if (equationVariableName != null) {
+ result = "\"" + getValue() + "\"";
} else {
- return getValue();
+ result = getValue();
+
+ // no idea either
+ if (result instanceof MatrixND) {
+ result = identifier;
+ }
}
+ return result;
}
/**
* Set value.
*
- * FIXME JC 2011-10-24 Unused (or only for test ?).
- *
* @param value new value
*/
public void setValue(Object value) {
@@ -243,10 +248,11 @@
}
public int getCardinality() {
+ int result = cardinality;
if (domain instanceof DiscreteDomain) {
- return ((DiscreteDomain)domain).getValues().size();
+ result = ((DiscreteDomain)domain).getValues().size();
}
- return cardinality;
+ return result;
}
public void setCardinality(int cardinality) {
@@ -254,6 +260,24 @@
}
/**
+ * Get variable name.
+ *
+ * @return the variableName
+ */
+ public String getEquationVariableName() {
+ return equationVariableName;
+ }
+
+ /**
+ * Set variable name.
+ *
+ * @param equationVariableName the variableName to set
+ */
+ public void setEquationVariableName(String equationVariableName) {
+ this.equationVariableName = equationVariableName;
+ }
+
+ /**
* Accept a new visitor.
*
* @param visitor
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -251,9 +251,10 @@
public Domain getDomain() {
Domain domain = null;
if (isContinuous()) {
- domain = new ContinuousDomain(0.0, 1.0);
- }
- else if (isDiscrete()) {
+ domain = new ContinuousDomain(Distribution.QUNIFMM);
+ ((ContinuousDomain)domain).addDistributionParam("min", 0.0);
+ ((ContinuousDomain)domain).addDistributionParam("max", 1.0);
+ } else if (isDiscrete()) {
// les domaines doivent avoir les même domaines
// et pour l'utilisation quand fera l'appelant
// de getDomain(), on peut en retourner un au hazard
@@ -284,7 +285,7 @@
public String toString() {
return "FactorGroup(" + name + ")";
}
-
+
/**
* Set value for label.
*
@@ -297,7 +298,7 @@
factor.setValueForIdentifier(valueIdentifier);
}
}
-
+
/**
* Get the factor value for displaying (for example in R).
*
Copied: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,170 @@
+package fr.ifremer.isisfish.simulator.sensitivity;
+
+
+import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.rule.RuleHelper;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
+import fr.ifremer.isisfish.util.ConverterUtil;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.ConvertUtilsBean;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.math.matrix.MatrixND;
+
+/**
+ * Useful method for factor
+ * - create prescript with factor list
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class FactorHelper {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static final Log log = LogFactory.getLog(FactorHelper.class);
+
+ /**
+ * Generate prescript to set factor values before simulation start.
+ *
+ * @param scenario to generate prescript
+ * @return simulation pre script with correct values
+ */
+ public static String generatePreScript(Scenario scenario) {
+ return generatePreScript(scenario.getFactors());
+ }
+
+ public static String generatePreScript(Collection<Factor> factors) {
+ ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
+ // n'utilise plus freemarker, car il y avait plus d'instruction
+ // freemarker compliqué que de code a afficher
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("import org.apache.commons.beanutils.BeanUtils;\n");
+ buffer.append("import org.apache.commons.beanutils.ConvertUtilsBean;\n");
+ buffer.append("import fr.ifremer.isisfish.util.ConverterUtil;\n");
+ buffer.append("import fr.ifremer.isisfish.simulator.SimulationParameter;\n");
+ buffer.append("ConvertUtilsBean beanUtils = ConverterUtil.getConverter(db);\n");
+ buffer.append("SimulationParameter params = context.getSimulationStorage().getParameter();\n");
+ generatePreScript(beanUtils, buffer, new AtomicInteger(), factors);
+ String scriptContent = buffer.toString();
+ if (log.isTraceEnabled()) {
+ log.trace("Simulation prescript content = " + scriptContent);
+ }
+ return scriptContent;
+ }
+
+ /**
+ * Generate prescript for a factor list that can be called recursively to
+ * manage factor group.
+ *
+ * @param beanUtils beanUtils converter
+ * @param buffer buffer to fill
+ * @param counter call counter used to avoid variables name collision
+ * @param factors factor list to manage
+ */
+ protected static void generatePreScript(ConvertUtilsBean beanUtils, StringBuffer buffer, AtomicInteger counter, Collection<Factor> factors) {
+ for (Factor factor : factors) {
+ if (factor instanceof FactorGroup) {
+ buffer.append("/* factor group : ").append(factor.getName()).append(" */\n");
+ FactorGroup factorGroup = (FactorGroup) factor;
+ generatePreScript(beanUtils, buffer, counter, factorGroup.getFactors());
+ } else {
+ int factorIndex = counter.get();
+ buffer.append("/* factor : ").append(factor.getName()).append(" */\n");
+ // cas special 1 : population de départ
+ if (factor.getPath().matches("parameters.population\\.\\w+\\.number")) {
+ String paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
+ // pas de convert, c'est fait comme ca dans
+ // SimulationParameters.toProperties();
+ MatrixND matrix = (MatrixND) factor.getValue();
+ Object stringValue = String.valueOf(matrix.toList());
+ buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
+ }
+ // cas special 2 : regles
+ else if (factor.getPath().equals("parameters.rules")) {
+ List<Rule> rules = (List<Rule>) factor.getValue();
+ List<String> rulesNames = new ArrayList<String>();
+ int ruleIndex = 0;
+ for (Rule rule : rules) {
+ rulesNames.add(rule.getClass().getSimpleName());
+ Properties rulesProps = RuleHelper.getRuleAsProperties(ruleIndex++, null, rule);
+ for (String rulesProp : rulesProps.stringPropertyNames()) {
+ String value = rulesProps.getProperty(rulesProp);
+ buffer.append("params.setProperty(\"").append(rulesProp).append("\",\"").append(value).append("\");\n");
+ }
+ }
+ buffer.append("params.setProperty(\"rules\",\"").append(StringUtils.join(rulesNames, ",")).append("\");\n");
+ }
+ // cas special 3 : facteur sur les parametres des regles
+ else if (factor.getPath().startsWith("parameters.rule.")) {
+ // special case for rule parameter with
+ Pattern pattern = Pattern.compile("^parameters\\.(rule\\.\\d+\\.parameter\\.\\w+)(\\..+)?$");
+ Matcher matcher = pattern.matcher(factor.getPath());
+ String paramName = null;
+ if (matcher.matches()) {
+ paramName = matcher.group(1);
+ } else {
+ paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
+ }
+ String stringValue = ConvertUtils.convert(factor.getValue());
+ buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
+ }
+ // cas special 4 : equation
+ else if (StringUtils.isNotBlank(factor.getEquationVariableName())) {
+ buffer.append("context.setComputeValue(\"").append(factor.getName() + "." + factor.getEquationVariableName());
+ buffer.append("\",").append(factor.getValue()).append(");\n");
+ }
+ // cas pas si special
+ else {
+ Object value = factor.getValue();
+ String stringValue = beanUtils.convert(value);
+ String escValue = stringValue;
+ if (factor.getDomain() instanceof EquationDiscreteDomain) {
+ // echatellier: equation can contains quotes that break
+ // prescript, only quote, not all java replacements
+ // a ne pas faire pour le reste, pour les
+ // matrice par exemple, ca passe mal
+ escValue = StringUtils.replace(escValue, "\n", "");
+ escValue = StringUtils.replace(escValue, "\r", "");
+ escValue = StringUtils.replace(escValue, "\"", "\\\"");
+ }
+ String path = factor.getPath();
+ String topiaId = path.substring(0, path.lastIndexOf('#'));
+ String property = path.substring(path.lastIndexOf('#') + 1);
+ // Double value123 = beanUtils.convert("mystringvalue", Double.class);
+ buffer.append(value.getClass().getName()).append(" value");
+ buffer.append(factorIndex).append(" = beanUtils.convert(\"");
+ buffer.append(escValue).append("\", ").append(value.getClass().getName());
+ buffer.append(".class);\n");
+ // TopiaEntity entity123 = db.findByTopiaId(topiaId);
+ buffer.append("TopiaEntity entity").append(factorIndex);
+ buffer.append(" = db.findByTopiaId(\"").append(topiaId);
+ buffer.append("\");\n");
+ if (factor.getDomain() instanceof EquationDiscreteDomain) {
+ // BeanUtils.setProperty(entity123, "propertyContent", value123);
+ buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
+ buffer.append(", \"").append(property).append("Content\", ");
+ buffer.append("value").append(factorIndex).append(");\n");
+ } else {
+ // BeanUtils.setProperty(entity123, "property", value123);
+ buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
+ buffer.append(", \"").append(property).append("\", ");
+ buffer.append("value").append(factorIndex).append(");\n");
+ }
+ }
+ }
+ counter.incrementAndGet();
+ }
+ }
+
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -65,7 +65,7 @@
* scenarios à prendre en compte pour les simulations.
*
* @param plan plan a analyser
- * @param outputdirectory master sensitivity export directory
+ * @param outputDirectory master sensitivity export directory
*
* @return un {@link SensitivityScenarios}
* @throws SensitivityException if calculator impl fail to execute
@@ -74,7 +74,7 @@
* @see Scenario
* @see SensitivityScenarios
*/
- SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
+ SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
throws SensitivityException;
/**
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,8 +23,18 @@
package fr.ifremer.isisfish.simulator.sensitivity;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import fr.ifremer.isisfish.entities.Equation;
+import fr.ifremer.isisfish.types.RangeOfValues;
+import fr.ifremer.isisfish.types.TimeUnit;
+
/**
* Utility methods for sensitivity analysis.
*
@@ -36,6 +46,14 @@
*/
public class SensitivityUtils {
+ private static final Log log = LogFactory.getLog(SensitivityUtils.class);
+
+ /** Properties file resource path. */
+ protected final static String PROPERTIES_PATH = "/sensitivity.properties";
+
+ /** Cached properties. */
+ protected static Properties sensitivityProperties;
+
/**
* Escape factor name.
*
@@ -49,4 +67,106 @@
name = name.replaceAll("\\W", "_");
return name;
}
+
+ /**
+ * Is field sensitivity enabled.
+ *
+ * Return true, if field name is present in properties file.
+ *
+ * @param sensitivityFactorName name
+ * @return <tt>true</tt> if factor name is sensitivity enabled
+ */
+ public static boolean isSensitivityFactorEnabled(String sensitivityFactorName) {
+ Properties data = getProperties();
+ return data.getProperty(sensitivityFactorName) != null;
+
+ }
+
+ /**
+ * Return cached properties file.
+ * Load it at first call.
+ *
+ * @return properties
+ */
+ public static Properties getProperties() {
+
+ if (sensitivityProperties == null) {
+ sensitivityProperties = new Properties();
+ InputStream stream = null;
+ try {
+ 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;
+ }
+
+ /**
+ * Return true if value can be defined in continuous factor.
+ *
+ * Il serait plus interessant de le faire sur les types et non sur les
+ * valeur mais pour {@link RangeOfValues} par exemple, seule la valeur
+ * a un type Float... donc pas evident.
+ *
+ * @param value value
+ * @return continuous enabled
+ */
+ public static boolean canBeContinue(Object value) {
+ boolean result = false;
+
+ if (value instanceof Double) {
+ result = true;
+ } else if (value instanceof Long) {
+ result = true;
+ } else if (value instanceof Equation) {
+ result = true;
+ } else if (value instanceof RangeOfValues) {
+ RangeOfValues rangeOfValues = (RangeOfValues)value;
+ if (rangeOfValues.getType().equals("Float")) {
+ result = true;
+ }
+ } else if (value instanceof TimeUnit) {
+ result = true;
+ } else if (value instanceof String) {
+ // todo fix string value :(
+ result = true;
+ }
+
+ return result;
+ }
+
+ /**
+ * Return if value is is continue factor enable.
+ *
+ * @param value value to test
+ * @return {@code true} if value is is continue factor enable
+ */
+ public static boolean isContinue(Object value) {
+ boolean result = false;
+ if (value instanceof RangeOfValues) {
+ RangeOfValues range = (RangeOfValues)value;
+ if (range.getType().equals(RangeOfValues.TYPE_FLOAT)) {
+ String textValue = range.getValues();
+ // TODO need comment !!!
+ if (textValue.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
+ result = true;
+ }
+ }
+ }
+ return result;
+ }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -25,25 +25,25 @@
package fr.ifremer.isisfish.simulator.sensitivity.domain;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.SortedMap;
+
+import org.apache.commons.beanutils.MethodUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution.DistributionParam;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor;
/**
- *
- * All the continuous domains can be of 2 different types (min/max or
- * percentage).
- *
- * A min/max domain can take 2 values : {@link #minBound} and {@link #maxBound}.
- * A percentage domain got 2 values {@link #coefficient} and
- * {@link #referenceValue} that are the basis to calculate the {@link #minBound}
- * and {@link #maxBound} values.
- *
- * A continuous domain also got a cardinality, either filled in by the user or
- * the sensitivity method if it manages it.
- *
- * To do sensitivity calculations, you MUST use {@link #getCalculatorMinBound()},
- * {@link #getCalculatorMaxBound()}.
+ * All the continuous domains are based on distribution definition.
*
* @author chatellier
* @version $Revision: 1.0 $
@@ -53,195 +53,169 @@
*/
public class ContinuousDomain implements Domain {
+ private static Log log = LogFactory.getLog(ContinuousDomain.class);
+
/** serialVersionUID. */
private static final long serialVersionUID = -2037768174807839046L;
- /** Min value. */
- protected Object minBound;
+ /** Continuous domain distribution. */
+ protected Distribution distribution;
- /** Max value. */
- protected Object maxBound;
+ /** Distribution params (param name > param value). */
+ protected Map<String, Object> distributionParameters = new HashMap<String, Object>();
- /** Value used to create the factor. */
- protected Object referenceValue;
-
- /** Coefficient in percent */
- protected Double coefficient;
-
- /** Flag to know the type of the domain **/
- protected boolean percentageType;
-
/**
- * Min/max type constructor.
+ * Default constructor.
*/
public ContinuousDomain() {
- this(false);
+
}
/**
- * Constructor with bounds.
+ * Constructor with distribution.
*
- * @param minBound min bound
- * @param maxBound max bound
+ * @param distribution distribution
*/
- public ContinuousDomain(Object minBound, Object maxBound) {
+ public ContinuousDomain(Distribution distribution) {
this();
- this.minBound = minBound;
- this.maxBound = maxBound;
+ this.distribution = distribution;
}
/**
- * Constructor with type.
+ * Constructor with distribution and parameters.
*
- * @param percentageType if {@code true} percentage type
+ * @param distribution distribution
+ * @param distributionParameters distribution params
*/
- public ContinuousDomain(boolean percentageType) {
- this.percentageType = percentageType;
+ public ContinuousDomain(Distribution distribution, SortedMap<String, Object> distributionParameters) {
+ this(distribution);
+ setDistributionParams(distributionParameters);
}
/**
- * Return factor type (min/max or percentage).
+ * Get distribution.
*
- * @return {@code true} if percentage type
+ * @return distribution
*/
- public boolean isPercentageType() {
- return percentageType;
+ public Distribution getDistribution() {
+ return distribution;
}
/**
- * Set domain type (min/max or percentage).
+ * Get distribution parameters.
*
- * @param percentageType new type value
+ * @return distribution parameters
*/
- public void setPercentageType(boolean percentageType) {
- this.percentageType = percentageType;
+ public Map<String, Object> getDistributionParameters() {
+ return distributionParameters;
}
-
+
/**
- * Return the minimum bound of the domain. Do not use this value for
- * sensitivity calculation, prefer using {@link #getCalculatorMinBound}.
+ * Return distribution parameter value by parameter name.
*
- * @return the minimum bound
+ * @param name name
+ * @return param value
*/
- public Object getMinBound() {
- Object result;
- if (isPercentageType()) {
- result = ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * getCalculatorMinBound() - 1))));
- } else {
- result = minBound;
- }
- return result;
+ public Object getDistributionParameter(String name) {
+ return distributionParameters.get(name);
}
-
- /**
- * Return the minimum bound for sensitivity calculators. It always returns 0.
- *
- * @return the minimum bound for sensitivity analysis.
- */
- public double getCalculatorMinBound() {
- return 0;
- }
/**
- * Set the minimum bound of the domain.
+ * Set distribution parameters (clear previous).
*
- * @param minBound the minimum bound.
+ * @param distributionParameters distribution params
*/
- public void setMinBound(Object minBound) {
- this.minBound = minBound;
+ public void setDistributionParams(SortedMap<String, Object> distributionParameters) {
+ distributionParameters.clear();
+ addDistributionParams(distributionParameters);
}
/**
- * Return the maximum bound of the domain. Do not use this value for
- * sensitivity calculation, prefer using {@link #getCalculatorMaxBound}.
+ * Add distribution parameters.
*
- * @return the maximum bound
+ * @param distributionParameters distribution parameters.
*/
- public Object getMaxBound() {
- Object result;
- if (isPercentageType()) {
- result = ((Double) referenceValue +
- (((Double) referenceValue * coefficient)
- * ((2 * getCalculatorMaxBound() - 1))));
- } else {
- result = maxBound;
+ public void addDistributionParams(SortedMap<String, Object> distributionParameters) {
+ for (Entry<String, Object> entry : distributionParameters.entrySet()) {
+ addDistributionParam(entry.getKey(), entry.getValue());
}
- return result;
}
-
- /**
- * Return the minimum bound for sensitivity calculators. It always returns 1.
- *
- * @return the maximum bound for sensitivity analysis.
- */
- public double getCalculatorMaxBound() {
- return 1;
- }
/**
- * Set max value.
+ * Add distribution parameter.
*
- * @param maxBound the maxBound to set
- */
- public void setMaxBound(Object maxBound) {
- this.maxBound = maxBound;
- }
-
-
- /**
- * Get coefficient.
+ * Parameter name must be in current distribution parameter list.
*
- * @return the coefficient
+ * @param name parameter name
+ * @param value parameter value
*/
- public Double getCoefficient() {
- return coefficient;
- }
+ public void addDistributionParam(String name, Object value) {
+
+ if (distribution == null) {
+ throw new IllegalStateException("Distribution not set");
+ }
- /**
- * Set coefficient.
- *
- * @param coefficient the coefficient to set
- */
- public void setCoefficient(Double coefficient) {
- this.coefficient = coefficient;
- }
+ // get current parameter definition
+ boolean found = false;
+ DistributionParam[] defDistribParams = distribution.getDistibutionParams();
+ for (DistributionParam defDistribParam : defDistribParams) {
+ if (defDistribParam.getName().equals(name)) {
+ found = true;
+ }
+ }
+ if (!found) {
+ throw new IllegalArgumentException(String.format("Wrong parameter name, %s not supported by distribution", name));
+ }
- /**
- * Get reference value.
- *
- * @return the reference value
- */
- public Object getReferenceValue() {
- return referenceValue;
+ distributionParameters.put(name, value);
}
- /**
- * Set reference value.
- *
- * @param referenceValue the reference value.to set
- */
- public void setReferenceValue(Object referenceValue) {
- this.referenceValue = referenceValue;
- }
-
- /**
- * {@inheritDoc}.
- */
+ @Override
public Object getValueForIdentifier(Object identifier) {
- Double result;
+ // first quantite args is always identifier value
+ List<Object> args = new ArrayList<Object>();
+ args.add(identifier);
- if (isPercentageType()) {
- // since 3.4.0.0, operator is always *
- result = ((Double)referenceValue + (((Double)referenceValue * coefficient)
- * ((2 * (Double)identifier - 1))));
+ // build distribution param args list
+ Class distClass = distribution.getDistClass();
+ if (distribution == Distribution.QUNIFPC) {
+ // special management : % to min/max
+ Object reference = distributionParameters.get(Distribution.QUNIFPC.getDistibutionParams()[0].getName());
+ double coef = (Double)distributionParameters.get(Distribution.QUNIFPC.getDistibutionParams()[1].getName());
+ double ref = (Double)reference;
+ args.add(ref * (1.0 - coef)); // min
+ args.add(ref * (1.0 + coef)); // max
+ } else if (distribution == Distribution.QUNIFMM) {
+ Object min = distributionParameters.get(Distribution.QUNIFMM.getDistibutionParams()[0].getName());
+ args.add(min);
+ Object max = distributionParameters.get(Distribution.QUNIFMM.getDistibutionParams()[1].getName());
+ args.add(max);
} else {
- result = ((Double)identifier * ((Double)maxBound - (Double)minBound))
- + (Double)minBound;
+ for (DistributionParam param : distribution.getDistibutionParams()) {
+ String name = param.getName();
+ Object value = distributionParameters.get(name);
+ args.add(value);
+ }
}
+
+ // add default value for lower.tail = TRUE, log.p = FALSE
+ args.add(true);
+ args.add(false);
+
+ // invoke quantile method
+ Object result = null;
+ try {
+ result = MethodUtils.invokeStaticMethod(distClass, "quantile", args.toArray());
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't invoke quantile method : args was " + args, ex);
+ }
+ }
+
return result;
}
-
+
/**
* Accept a new visitor.
*
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,7 +35,7 @@
/**
* Un domain discret a un ensemble de valeur.
- * Chaque valeur est identifiée par un label pour sont utilisation par les
+ * Chaque valeur est identifiée par un label pour son utilisation par les
* script d'AS.
*
* @author chatellier
@@ -62,7 +62,7 @@
}
/**
- * Get domaine values.
+ * Get domain values.
*
* @return the values
*/
@@ -80,6 +80,25 @@
}
/**
+ * Set domain value.
+ *
+ * @param key the key
+ * @param value the value
+ */
+ public void putValue(Object key, Object value) {
+ this.values.put(key, value);
+ }
+
+ /**
+ * Get domain value count.
+ *
+ * @return domain value count
+ */
+ public int getValuesCount() {
+ return values.size();
+ }
+
+ /**
* {@inheritDoc}.
*
* @throws IllegalArgumentException if identifier is not a valid key
Deleted: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,99 +0,0 @@
-/*
- * #%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.simulator.sensitivity.domain;
-
-/**
- * Domaine continu portant sur variable pouvant prendre diférente valeur par
- * rapport à une valeur initiale.
- *
- * Composé d'un borne min et max et d'un opération.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 24 févr. 2009 $ By : $Author: chatellier $
- */
-public class EquationContinuousDomain extends ContinuousDomain {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -2037768174807839046L;
-
- /** Variable name (must be java valid identifier) */
- protected String variableName;
-
- /**
- * Min/max type constructor.
- */
- public EquationContinuousDomain() {
- super();
- }
-
- /**
- * Constructor with type.
- *
- * @param percentageType if {@code true} percentage type
- */
- public EquationContinuousDomain(boolean percentageType) {
- super(percentageType);
- }
-
- /**
- * Get variable name.
- *
- * @return the variableName
- */
- public String getVariableName() {
- return variableName;
- }
-
- /**
- * Set variable name.
- *
- * @param variableName the variableName to set
- */
- public void setVariableName(String variableName) {
- this.variableName = variableName;
- }
-
- @Override
- public EquationContinuousDomain clone() {
- EquationContinuousDomain cloned = (EquationContinuousDomain)super.clone();
- cloned.setMaxBound(this.maxBound);
- cloned.setMinBound(this.minBound);
- cloned.setCoefficient(this.coefficient);
- cloned.setReferenceValue(this.referenceValue);
- cloned.setVariableName(this.variableName);
- return cloned;
- }
-
- @Override
- public String toString() {
- String result = "variableName=" + variableName +
- " coefficient=" + coefficient + " referenceValue=" + referenceValue +
- " min=" + minBound + "max=" + maxBound;
- return result;
- }
-}
Deleted: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/MatrixContinuousDomain.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,132 +0,0 @@
-/*
- * #%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.simulator.sensitivity.domain;
-
-import org.nuiton.math.matrix.MapFunction;
-import org.nuiton.math.matrix.MatrixND;
-
-/**
- * Domaine continu portant sur une matrice.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 24 févr. 2009 $ By : $Author: chatellier $
- */
-public class MatrixContinuousDomain extends ContinuousDomain {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -2037768174807839046L;
-
- /**
- * Min/max type constructor.
- */
- public MatrixContinuousDomain() {
- super();
- }
-
- /**
- * Constructor with type.
- *
- * @param percentageType if {@code true} percentage type
- */
- public MatrixContinuousDomain(boolean percentageType) {
- super(percentageType);
- }
-
- @Override
- public Object getValueForIdentifier(Object identifier) {
- return getValueForIdentifier((Double)identifier);
- }
-
- /**
- * In matrix continuous domain, return a new matrix.
- *
- * @param identifier identifier
- * @return a new computed matrix
- */
- public MatrixND getValueForIdentifier(final Double identifier) {
- MatrixND temp = ((MatrixND)getReferenceValue()).copy();
-
- // since 3.4.0.0, operator is always *
- temp.map(new MapFunction() {
- public double apply(double val) {
- return (val + ((val * coefficient) * ((2 * identifier - 1))));
- }
- });
- return temp;
- }
-
- @Override
- public MatrixContinuousDomain clone() {
- MatrixContinuousDomain cloned = (MatrixContinuousDomain)super.clone();
- return cloned;
- }
-
- /**
- * {@inheritDoc}
- *
- * @return the minimum bound
- */
- public Object getMinBound() {
-
- if (minBound == null) {
- MatrixND temp = ((MatrixND) getReferenceValue()).copy();
-
- // since 3.4.0.0, operator is always *
- temp.map(new MapFunction() {
- public double apply(double val) {
- return (val + ((val * coefficient) * ((2 * getCalculatorMinBound() - 1))));
- }
- });
- return temp;
- } else {
- return minBound;
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @return the maximum bound
- */
- public Object getMaxBound() {
-
- if (maxBound == null) {
- MatrixND temp = ((MatrixND) getReferenceValue()).copy();
-
- // since 3.4.0.0, operator is always *
- temp.map(new MapFunction() {
- public double apply(double val) {
- return (val + ((val * coefficient) * ((2 * getCalculatorMaxBound() - 1))));
- }
- });
- return temp;
- } else {
- return maxBound;
- }
- }
-}
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/Month.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/Month.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/Month.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.types;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.Serializable;
import java.util.ArrayList;
@@ -146,29 +146,29 @@
public String toString() {
switch (getMonthNumber()) {
case 0:
- return _("isisfish.month.january");
+ return t("isisfish.month.january");
case 1:
- return _("isisfish.month.february");
+ return t("isisfish.month.february");
case 2:
- return _("isisfish.month.march");
+ return t("isisfish.month.march");
case 3:
- return _("isisfish.month.april");
+ return t("isisfish.month.april");
case 4:
- return _("isisfish.month.may");
+ return t("isisfish.month.may");
case 5:
- return _("isisfish.month.june");
+ return t("isisfish.month.june");
case 6:
- return _("isisfish.month.july");
+ return t("isisfish.month.july");
case 7:
- return _("isisfish.month.august");
+ return t("isisfish.month.august");
case 8:
- return _("isisfish.month.september");
+ return t("isisfish.month.september");
case 9:
- return _("isisfish.month.october");
+ return t("isisfish.month.october");
case 10:
- return _("isisfish.month.november");
+ return t("isisfish.month.november");
case 11:
- return _("isisfish.month.december");
+ return t("isisfish.month.december");
default:
return "" + getMonthNumber();
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/TimeStep.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/TimeStep.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/TimeStep.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -26,7 +26,7 @@
package fr.ifremer.isisfish.types;
import java.io.Serializable;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
/**
* This object can't be modified. If this behavior is modified pay attention
@@ -184,7 +184,7 @@
*/
@Override
public String toString() {
- String result = _("isisfish.date.toString", getMonth(), getYear());
+ String result = t("isisfish.date.toString", getMonth(), getYear());
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/TimeUnit.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/TimeUnit.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/TimeUnit.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.types;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.Serializable;
@@ -111,9 +111,9 @@
public String toString() {
String result = "";
if (getDay() >= 1) {
- result += getDay() + _("isisfish.timeUnit.day");
+ result += getDay() + t("isisfish.timeUnit.day");
} else {
- result += getHour() + _("isisfish.timeUnit.hours");
+ result += getHour() + t("isisfish.timeUnit.hours");
}
return result;
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MatrixType.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MatrixType.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MatrixType.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.util.StringUtil;
import org.hibernate.HibernateException;
-import org.hibernate.engine.SessionImplementor;
+import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.engine.jdbc.NonContextualLobCreator;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;
@@ -56,7 +56,7 @@
*
* Created: 23 janv. 2006
*
- * @author Arnaud Thimel <thimel(a)codelutin.com>
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
@@ -69,9 +69,6 @@
*/
private static final Log log = LogFactory.getLog(MatrixType.class);
- public MatrixType() {
- }
-
public boolean isMutable() {
return true;
}
@@ -92,7 +89,7 @@
if(str.startsWith("[") && str.endsWith("]")) {
str = str.substring(1, str.length()-1); // remove [ and ]
}
- String [] dimAsString = StringUtil.split(str, ",");
+ String [] dimAsString = StringUtil.split(str, ",");
int[] result = new int[dimAsString.length];
int i = 0;
for (String dim : dimAsString) {
@@ -285,8 +282,8 @@
private static final Type[] hibernateTypes = {
StandardBasicTypes.STRING, //name (String)
StandardBasicTypes.STRING, //dim (int[])
- StandardBasicTypes.CLOB, //dimNames (String[])
- StandardBasicTypes.CLOB, //semantics (List[])
+ StandardBasicTypes.CLOB, //dimNames (String[])
+ StandardBasicTypes.CLOB, //semantics (List[])
StandardBasicTypes.CLOB //data (List<List<...>>)
};
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MonthType.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MonthType.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/MonthType.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
*
* Created: 19 janv. 2006
*
- * @author Arnaud Thimel <thimel(a)codelutin.com>
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
*
* Created: 19 janv. 2006
*
- * @author Arnaud Thimel <thimel(a)codelutin.com>
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeStepType.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeStepType.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeStepType.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
*
* Created: 19 janv. 2006
*
- * @author Arnaud Thimel <thimel(a)codelutin.com>
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
*
* Created: 19 janv. 2006
*
- * @author Arnaud Thimel <thimel(a)codelutin.com>
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -69,8 +69,13 @@
public abstract void setEnabledSimulationPlanTab(boolean selected);
/**
+ * Change optimization tab enabled property.
+ */
+ public abstract void setEnabledOptimizationTab(boolean selected);
+
+ /**
* Open user dialog to selected a parameter file.
- * Reload it, and call {@link refresh()}.
+ * Reload it, and call {@link #refresh()}.
*/
protected void importSimulation() {
JFileChooser fc = new JFileChooser();
@@ -111,5 +116,5 @@
<JMenuItem id="miImport" text="isisfish.simulation.menu.import" onActionPerformed="importSimulation()"/>
</JMenu>
</JMenuBar>
- <JTabbedPane id="bodyTabbedPane" constraints='BorderLayout.CENTER'/>
+ <JTabbedPane id="bodyTabbedPane" constraints='BorderLayout.CENTER' decorator="boxed"/>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.Color;
@@ -41,8 +41,8 @@
import javax.swing.ToolTipManager;
import jaxx.runtime.context.JAXXInitialContext;
-import jaxx.runtime.swing.editor.config.ConfigUI;
-import jaxx.runtime.swing.editor.config.ConfigUIHelper;
+import jaxx.runtime.swing.config.ConfigUI;
+import jaxx.runtime.swing.config.ConfigUIHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -137,7 +137,7 @@
context.add(new SimulAction());
context.add(this);
SimulUI simulUI = new SimulUI(context);
- openFrame(welcomeUI, simulUI, _("isisfish.simulation.title"));
+ openFrame(welcomeUI, simulUI, t("isisfish.simulation.title"));
}
/**
@@ -145,7 +145,7 @@
* @param welcomeUI
*/
public void newResultFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new ResultUI(), _("isisfish.result.title"));
+ openFrame(welcomeUI, new ResultUI(), t("isisfish.result.title"));
}
/**
@@ -153,7 +153,7 @@
* @param welcomeUI
*/
public void newInputFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new InputUI(new JAXXInitialContext().add(verifier).add(new InputAction()).add(new InputSaveVerifier()).add(this)), _("isisfish.input.title"));
+ openFrame(welcomeUI, new InputUI(new JAXXInitialContext().add(verifier).add(new InputAction()).add(new InputSaveVerifier()).add(this)), t("isisfish.input.title"));
}
/**
@@ -161,7 +161,7 @@
* @param welcomeUI
*/
public void newScriptFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new ScriptUI(), _("isisfish.script.title"));
+ openFrame(welcomeUI, new ScriptUI(), t("isisfish.script.title"));
}
/**
@@ -169,7 +169,7 @@
* @param welcomeUI
*/
public void newSensitivityFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new SensitivityUI(new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add(new SimulAction()).add(this)), _("isisfish.sensitivity.title"));
+ openFrame(welcomeUI, new SensitivityUI(new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add(new SimulAction()).add(this)), t("isisfish.sensitivity.title"));
}
/**
@@ -177,7 +177,7 @@
* @param welcomeUI
*/
public void newQueueFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new QueueUI(), _("isisfish.queue.title"));
+ openFrame(welcomeUI, new QueueUI(), t("isisfish.queue.title"));
}
/**
@@ -208,7 +208,7 @@
ConfigUIHelper modelBuilder = new ConfigUIHelper(IsisFish.config);
// category main
- modelBuilder.addCategory(_("isisfish.config.category.main"), _("isisfish.config.category.main.description"));
+ modelBuilder.addCategory(t("isisfish.config.category.main"), t("isisfish.config.category.main.description"));
modelBuilder.addOption(IsisConfig.Option.CONFIG_FILE);
modelBuilder.addOption(IsisConfig.Option.DATABASE_DIRECTORY);
modelBuilder.addOption(IsisConfig.Option.COMMUNITY_DATABASE_DIRECTORY);
@@ -221,14 +221,14 @@
modelBuilder.addOption(IsisConfig.Option.SIMULATION_SCRIPT_AUTOCONFIG);
// category simulation
- modelBuilder.addCategory(_("isisfish.config.category.simulation"), _("isisfish.config.category.simulation.description"));
+ modelBuilder.addCategory(t("isisfish.config.category.simulation"), t("isisfish.config.category.simulation.description"));
modelBuilder.addOption(IsisConfig.Option.SIMULATOR_IN_MAXTHREADS);
modelBuilder.addOption(IsisConfig.Option.SIMULATOR_SUB_MAXPROCESS);
modelBuilder.addOption(IsisConfig.Option.SIMULATOR_SUB_MAXMEMORY);
modelBuilder.addOption(IsisConfig.Option.MAPPED_RESULT_MATRIX_VECTOR_CLASS);
// category database vcs
- modelBuilder.addCategory(_("isisfish.config.category.officialvcs"), _("isisfish.config.category.officialvcs.description"));
+ modelBuilder.addCategory(t("isisfish.config.category.officialvcs"), t("isisfish.config.category.officialvcs.description"));
modelBuilder.addOption(IsisConfig.Option.VCS_TYPE);
modelBuilder.addOption(IsisConfig.Option.VCS_PROTOCOL);
modelBuilder.addOption(IsisConfig.Option.VCS_HOST_NAME);
@@ -237,7 +237,7 @@
modelBuilder.addOption(IsisConfig.Option.VCS_USER_PASSWORD);
// category community vcs
- modelBuilder.addCategory(_("isisfish.config.category.communityvcs"), _("isisfish.config.category.communityvcs.description"));
+ modelBuilder.addCategory(t("isisfish.config.category.communityvcs"), t("isisfish.config.category.communityvcs.description"));
modelBuilder.addOption(IsisConfig.Option.VCS_COMMUNITY_TYPE);
modelBuilder.addOption(IsisConfig.Option.VCS_COMMUNITY_PROTOCOL);
modelBuilder.addOption(IsisConfig.Option.VCS_COMMUNITY_HOST_NAME);
@@ -246,14 +246,14 @@
modelBuilder.addOption(IsisConfig.Option.VCS_COMMUNITY_PASSWORD);
// category misc
- modelBuilder.addCategory(_("isisfish.config.category.misc"), _("isisfish.config.category.misc.description"));
+ modelBuilder.addCategory(t("isisfish.config.category.misc"), t("isisfish.config.category.misc.description"));
modelBuilder.addOption(IsisConfig.Option.SSH_KEY_FILE);
modelBuilder.addOption(IsisConfig.Option.USER_NAME);
modelBuilder.addOption(IsisConfig.Option.SMTP_SERVER);
modelBuilder.addOption(IsisConfig.Option.USER_MAIL);
- ConfigUI configUI = modelBuilder.buildUI(welcomeUI, _("isisfish.config.category.main"));
- JDialog dialogUI = new JDialog(welcomeUI, _("isisfish.config.title"));
+ ConfigUI configUI = modelBuilder.buildUI(welcomeUI, t("isisfish.config.category.main"));
+ JDialog dialogUI = new JDialog(welcomeUI, t("isisfish.config.title"));
dialogUI.add(configUI);
dialogUI.pack();
dialogUI.setLocationRelativeTo(welcomeUI);
@@ -328,10 +328,10 @@
*/
public void about(WelcomeUI welcomeUI) {
AboutFrame about = new AboutFrame();
- about.setTitle(_("isisfish.about.title"));
+ about.setTitle(t("isisfish.about.title"));
about.setIconPath("images/isislogo.png");
- about.setAboutHtmlText(_("isisfish.about.abouthtmltext", IsisConfig.getVersion()));
- about.setLicenseText(_("isisfish.about.licensetext"));
+ about.setAboutHtmlText(t("isisfish.about.abouthtmltext", IsisConfig.getVersion()));
+ about.setLicenseText(t("isisfish.about.licensetext"));
about.setBackgroundColor(Color.WHITE);
about.setSize(640, 520);
about.setLocationRelativeTo(welcomeUI);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomePanelUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2006 - 2010 Ifremer, Code Lutin
+ Copyright (C) 2006 - 2013 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
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeSaveVerifier.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeSaveVerifier.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeSaveVerifier.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -56,7 +56,7 @@
/**
* Check that all 'input' opened interface has no non-saved modification.
*
- * @return <tt>true> if interface can be closed
+ * @return {@code true} if interface can be closed
*/
public boolean allIsSaved() {
boolean canExit = true;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2006 - 2010 Ifremer, Code Lutin
+ Copyright (C) 2006 - 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
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.config;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Color;
import java.io.File;
@@ -73,11 +73,11 @@
String systemPath = System.getenv("PATH");
String rBinPath = rHome + File.separator + "bin";
if (systemPath.contains(rBinPath)) {
- rconfigUI.getSystemPathField().setText(_("isisfish.simulator.configuration.r.systempathok", rBinPath));
+ rconfigUI.getSystemPathField().setText(t("isisfish.simulator.configuration.r.systempathok", rBinPath));
}
else {
rconfigUI.getSystemPathField().setBackground(Color.RED);
- rconfigUI.getSystemPathField().setText(_("isisfish.simulator.configuration.r.systempathnok", rBinPath));
+ rconfigUI.getSystemPathField().setText(t("isisfish.simulator.configuration.r.systempathnok", rBinPath));
}
rconfigUI.getSystemPathField().setToolTipText(systemPath);
}
@@ -100,8 +100,8 @@
if (log.isWarnEnabled()) {
log.warn("Can find 'lhs'", ex);
}
- JOptionPane.showMessageDialog(rconfigUI, _("isisfish.simulator.configuration.r.lhsnotinstalled"),
- _("isisfish.simulator.configuration.r.title"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(rconfigUI, t("isisfish.simulator.configuration.r.lhsnotinstalled"),
+ t("isisfish.simulator.configuration.r.title"), JOptionPane.ERROR_MESSAGE);
error = true;
}
try {
@@ -111,22 +111,22 @@
if (log.isWarnEnabled()) {
log.warn("Can find 'sensitivity'", ex);
}
- JOptionPane.showMessageDialog(rconfigUI, _("isisfish.simulator.configuration.r.sensitivitynotinstalled"),
- _("isisfish.simulator.configuration.r.title"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(rconfigUI, t("isisfish.simulator.configuration.r.sensitivitynotinstalled"),
+ t("isisfish.simulator.configuration.r.title"), JOptionPane.ERROR_MESSAGE);
error = true;
}
if (!error) {
- JOptionPane.showMessageDialog(rconfigUI, _("isisfish.simulator.configuration.r.testok"),
- _("isisfish.simulator.configuration.r.title"), JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(rconfigUI, t("isisfish.simulator.configuration.r.testok"),
+ t("isisfish.simulator.configuration.r.title"), JOptionPane.INFORMATION_MESSAGE);
}
}
catch (RException ex) {
if (log.isWarnEnabled()) {
log.warn("Can find call R", ex);
}
- JOptionPane.showMessageDialog(rconfigUI, _("isisfish.simulator.configuration.r.cantinit", ex.getMessage()),
- _("isisfish.simulator.configuration.r.title"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(rconfigUI, t("isisfish.simulator.configuration.r.cantinit", ex.getMessage()),
+ t("isisfish.simulator.configuration.r.title"), JOptionPane.ERROR_MESSAGE);
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.config;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Color;
import java.io.File;
@@ -122,8 +122,8 @@
configUI.setConnected(false);
configUI.getMessageLabel().setText("");
- configUI.getStatusFreeDatabaseLabel().setText(_("isisfish.simulator.ssh.configuration.freespace.label", "isis-database", "0"));
- configUI.getStatusFreeTempLabel().setText(_("isisfish.simulator.ssh.configuration.freespace.label", "isis-tmp", "0"));
+ configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", "isis-database", "0"));
+ configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", "isis-tmp", "0"));
}
@@ -275,14 +275,14 @@
boolean sshKeyUsed = false;
if (currentSSHKey.canRead()) {
if (log.isInfoEnabled()) {
- log.info(_("Ssh key found '%s' will be used to connect to",
+ log.info(t("Ssh key found '%s' will be used to connect to",
currentSSHKey.getAbsoluteFile(), host));
}
jsch.addIdentity(currentSSHKey.getAbsolutePath());
sshKeyUsed = true;
} else {
if (log.isInfoEnabled()) {
- log.info(_("Can't read ssh key : %s", currentSSHKey));
+ log.info(t("Can't read ssh key : %s", currentSSHKey));
}
}
@@ -294,14 +294,14 @@
String passphrase = null;
passphrase = SSHAgent.getAgent().getPassphrase(currentSSHKey);
ui.setPassphrase(passphrase);
- setTestMessage(_("isisfish.simulator.ssh.configuration.connectingpk"), false);
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectingpk"), false);
} else {
- setTestMessage(_("isisfish.simulator.ssh.configuration.connecting"), false);
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connecting"), false);
}
session.setUserInfo(ui);
session.connect(10000); // timeout
- setTestMessage(_("isisfish.simulator.ssh.configuration.connectionok"), false);
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionok"), false);
// get user home
currentSSHUserhome = getUserHomeDirectory(session);
@@ -309,8 +309,8 @@
// get space disk
String databaseSize = getFolderSize(session, currentSSHDatapath);
String temppathSize = getFolderSize(session, currentSSHTempPath);
- configUI.getStatusFreeDatabaseLabel().setText(_("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
- configUI.getStatusFreeTempLabel().setText(_("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
+ configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
+ configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
session.disconnect();
configUI.setConnected(true);
@@ -318,26 +318,26 @@
if (log.isErrorEnabled()) {
log.error("Can't connect", e);
}
- setTestMessage(_("isisfish.error.simulation.remote.wrongportvalue",
+ setTestMessage(t("isisfish.error.simulation.remote.wrongportvalue",
sPort), true);
} catch (JSchException e) {
if (log.isErrorEnabled()) {
log.error("Can't connect", e);
}
- setTestMessage(_("isisfish.simulator.ssh.configuration.connectionerror", e
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e
.getMessage()), true);
} catch (SSHException e) {
if (log.isErrorEnabled()) {
log.error("Can't connect", e);
}
- setTestMessage(_("isisfish.simulator.ssh.configuration.connectionerror", e
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e
.getMessage()), true);
} catch (InvalidPassphraseException e) {
if (log.isErrorEnabled()) {
log.error("Can't connect", e);
}
setTestMessage(
- _("isisfish.simulator.ssh.configuration.invalidpassphrase"),
+ t("isisfish.simulator.ssh.configuration.invalidpassphrase"),
true);
}
}
@@ -356,7 +356,7 @@
int exit = SSHUtils.exec(session, command, output);
if (exit != 0) {
- throw new SSHException(_("Command '%s' fail to execute", command));
+ throw new SSHException(t("Command '%s' fail to execute", command));
}
String out = output.toString();
@@ -408,8 +408,8 @@
throw new IllegalArgumentException("Can't delete directory : " + path);
}
- int response = JOptionPane.showConfirmDialog(configUI, _("isisfish.simulator.ssh.configuration.freespace.confirmdelete", path),
- _("isisfish.common.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
+ int response = JOptionPane.showConfirmDialog(configUI, t("isisfish.simulator.ssh.configuration.freespace.confirmdelete", path),
+ t("isisfish.common.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
if (response == JOptionPane.YES_OPTION) {
JSch jsch = new JSch();
@@ -429,14 +429,14 @@
boolean sshKeyUsed = false;
if (currentSSHKey.canRead()) {
if (log.isInfoEnabled()) {
- log.info(_("Ssh key found '%s' will be used to connect to",
+ log.info(t("Ssh key found '%s' will be used to connect to",
currentSSHKey.getAbsoluteFile(), host));
}
jsch.addIdentity(currentSSHKey.getAbsolutePath());
sshKeyUsed = true;
} else {
if (log.isInfoEnabled()) {
- log.info(_("Can't read ssh key : %s", currentSSHKey));
+ log.info(t("Can't read ssh key : %s", currentSSHKey));
}
}
@@ -463,20 +463,20 @@
// get space disk
String databaseSize = getFolderSize(session, currentSSHDatapath);
String temppathSize = getFolderSize(session, currentSSHTempPath);
- configUI.getStatusFreeDatabaseLabel().setText(_("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
- configUI.getStatusFreeTempLabel().setText(_("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
+ configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
+ configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
session.disconnect();
session.disconnect();
if (exit != 0) {
- throw new SSHException(_("Command '%s' fail to execute", command));
+ throw new SSHException(t("Command '%s' fail to execute", command));
}
}
catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("Can't connect", e);
}
- setTestMessage(_("isisfish.simulator.ssh.configuration.connectionerror", e.getMessage()), true);
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e.getMessage()), true);
}
}
else {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2009 - 2012 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
@@ -24,7 +24,9 @@
-->
<JDialog resizable="false" title="isisfish.simulator.ssh.configuration.title"
layout="{new javax.swing.BoxLayout(this.getContentPane(), javax.swing.BoxLayout.PAGE_AXIS)}">
-
+ <import>
+ static org.nuiton.i18n.I18n.t
+ </import>
<SSHLauncherConfigAction id="action" javaBean="new SSHLauncherConfigAction(this)" />
<Boolean id="connected" javaBean="false" />
@@ -35,7 +37,7 @@
]]></script>
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.simulator.ssh.configuration.connection"))}'
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.simulator.ssh.configuration.connection"))}'
fill='horizontal'>
<row>
<cell>
@@ -70,7 +72,7 @@
</cell>
</row>
</Table>
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.simulator.ssh.configuration.environment"))}'>
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.simulator.ssh.configuration.environment"))}'>
<row fill='horizontal'>
<cell>
<JLabel id='sshUserhomeLabel' text='isisfish.config.main.simulation.ssh.userhome'
@@ -194,7 +196,7 @@
</cell>
</row>
</Table>
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.simulator.ssh.configuration.status"))}'>
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.simulator.ssh.configuration.status"))}'>
<row fill='horizontal'>
<cell columns="2" fill='horizontal'>
<JLabel id='messageLabel' text=' ' font-weight='bold' opaque='true' horizontalAlignment='center'
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,18 +28,18 @@
<fr.ifremer.isisfish.entities.Cell id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
- java.awt.event.MouseEvent;
- fr.ifremer.isisfish.entities.Cell;
- com.bbn.openmap.gui.Tool;
- com.bbn.openmap.gui.OMToolSet;
- com.bbn.openmap.event.SelectMouseMode;
- fr.ifremer.isisfish.map.CellSelectionLayer;
- fr.ifremer.isisfish.map.CopyMapToClipboardListener;
- fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
- java.beans.PropertyChangeEvent;
- java.beans.PropertyChangeListener;
- javax.swing.DefaultComboBoxModel;
+ static org.nuiton.i18n.I18n.n
+ static org.nuiton.i18n.I18n.t
+ java.awt.event.MouseEvent
+ fr.ifremer.isisfish.entities.Cell
+ com.bbn.openmap.event.SelectMouseMode
+ fr.ifremer.isisfish.map.CellSelectionLayer
+ fr.ifremer.isisfish.map.OpenMapEvents
+ fr.ifremer.isisfish.map.CopyMapToClipboardListener
+ fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
+ javax.swing.DefaultComboBoxModel
</import>
<BeanValidator id='validator'
@@ -49,14 +49,13 @@
</BeanValidator>
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
-
boolean cellChanged = true;
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueZones"));
- setNextPath(n_("isisfish.input.tree.zones"));
+ setButtonTitle(t("isisfish.input.continueZones"));
+ setNextPath(n("isisfish.input.tree.zones"));
+ //cellMap.init(cellMapInfo);
new OpenMapEvents(cellMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
@@ -77,11 +76,6 @@
}
};
- // add copy to clipboard support
- cellMap.addMapMouseListener(new CopyMapToClipboardListener(cellMap));
- toolSet.setupListeners(cellMap);
- toolMap.add((Tool)toolSet);
-
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
@@ -207,12 +201,11 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap' javaBean='new com.bbn.openmap.gui.ToolPanel()'
- constraints='BorderLayout.NORTH' decorator='boxed' enabled='{getBean() != null}' />
<fr.ifremer.isisfish.map.IsisMapBean id='cellMap' javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.SINGLE_SELECTION}"
fisheryRegion='{getFisheryRegion()}' selectedCells='{getBean()}'
constraints='BorderLayout.CENTER' decorator='boxed' enabled='{getBean() != null}'/>
+ <com.bbn.openmap.InformationDelegator id="cellMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,6 +30,7 @@
<fr.ifremer.isisfish.entities.EffortDescription id='effortDescription' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
java.util.ArrayList;
fr.ifremer.isisfish.entities.EffortDescription;
fr.ifremer.isisfish.entities.SetOfVessels;
@@ -148,7 +149,7 @@
</JScrollPane>
</cell>
<cell columns='2' fill='both' weightx='1.0'>
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.effortDescription.effortTitle"))}'>
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.effortDescription.effortTitle"))}'>
<row>
<cell anchor='east'>
<JLabel text="isisfish.effortDescription.fishingOperation" enabled='{getEffortDescription() != null}'/>
@@ -193,7 +194,7 @@
</row>
<row>
<cell columns='2' fill='both' weighty='1.0'>
- <Table anchor='north' fill='both' weighty='1.0' border='{BorderFactory.createTitledBorder(_("isisfish.effortDescription.economicTitle"))}'>
+ <Table anchor='north' fill='both' weighty='1.0' border='{BorderFactory.createTitledBorder(t("isisfish.effortDescription.economicTitle"))}'>
<row>
<cell anchor='east' fill='none' weighty='0.0'>
<JLabel text="isisfish.effortDescription.crewSize" enabled='{getEffortDescription() != null}'/>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,11 +28,10 @@
<fr.ifremer.isisfish.entities.FisheryRegion id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.n
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.FisheryRegion;
fr.ifremer.isisfish.map.CopyMapToClipboardListener;
- com.bbn.openmap.gui.Tool;
- com.bbn.openmap.gui.OMToolSet;
java.beans.PropertyChangeEvent;
java.beans.PropertyChangeListener;
javax.swing.DefaultListModel
@@ -46,18 +45,14 @@
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
protected void $afterCompleteSetup() {
- toolSet.setupListeners(cellMap);
- toolMap.add((Tool)toolSet);
+
+ //cellMap.init(cellMapInfo);
- // add copy to clipboard support
- cellMap.addMapMouseListener(new CopyMapToClipboardListener(cellMap));
+ setButtonTitle(t("isisfish.input.continueCells"));
+ setNextPath(n("isisfish.input.tree.cells"));
- setButtonTitle(_("isisfish.input.continueCells"));
- setNextPath(n_("isisfish.input.tree.cells"));
-
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
@@ -119,11 +114,11 @@
protected void check() {
getContextValue(InputAction.class).checkFisheryRegion(getBean());
- setInfoText(_("isisfish.message.check.finished"));
+ setInfoText(t("isisfish.message.check.finished"));
}
protected void save() {
- setInfoText(_("isisfish.message.checking.cell"));
+ setInfoText(t("isisfish.message.checking.cell"));
// this make save done by verifier instead of saveFisheryRegion
// and refresh tree is not working
@@ -136,7 +131,7 @@
InputUI inputUI = getParentContainer(InputUI.class);
inputUI.getHandler().reloadFisheryTree(inputUI);
- setInfoText(_("isisfish.message.save.finished"));
+ setInfoText(t("isisfish.message.save.finished"));
}
]]></script>
<JPanel id="body">
@@ -313,12 +308,11 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap' javaBean='new com.bbn.openmap.gui.ToolPanel()'
- constraints='BorderLayout.NORTH' decorator='boxed'/>
<fr.ifremer.isisfish.map.IsisMapBean id='cellMap'
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.NO_SELECTION}"
javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
fisheryRegion='{getBean()}' constraints='BorderLayout.CENTER' decorator='boxed'/>
+ <com.bbn.openmap.InformationDelegator id="cellMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearTabUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearTabUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,7 +29,6 @@
<import>
fr.ifremer.isisfish.entities.Gear;
- jaxx.runtime.swing.editor.NumberEditor;
java.beans.PropertyChangeEvent;
java.beans.PropertyChangeListener;
</import>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,15 +27,16 @@
<fr.ifremer.isisfish.entities.Gear id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
java.beans.PropertyChangeEvent;
java.beans.PropertyChangeListener;
</import>
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueMetiers"));
- setNextPath(n_("isisfish.input.tree.metiers"));
+ setButtonTitle(t("isisfish.input.continueMetiers"));
+ setNextPath(n("isisfish.input.tree.metiers"));
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2005 - 2010 Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
+ * Copyright (C) 2005 - 2012 Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin, 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,7 +25,7 @@
package fr.ifremer.isisfish.ui.input;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.geom.Point2D;
import java.io.File;
@@ -35,6 +35,8 @@
import javax.swing.JOptionPane;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixFactory;
@@ -59,17 +61,16 @@
import fr.ifremer.isisfish.entities.Metier;
import fr.ifremer.isisfish.entities.MetierSeasonInfo;
import fr.ifremer.isisfish.entities.MetierSeasonInfoDAO;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationDAO;
import fr.ifremer.isisfish.entities.PopulationGroup;
import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
import fr.ifremer.isisfish.entities.PopulationSeasonInfoDAO;
-import fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl;
import fr.ifremer.isisfish.entities.Selectivity;
import fr.ifremer.isisfish.entities.SelectivityDAO;
import fr.ifremer.isisfish.entities.SetOfVessels;
import fr.ifremer.isisfish.entities.Species;
-import fr.ifremer.isisfish.entities.SpeciesDAO;
import fr.ifremer.isisfish.entities.TargetSpecies;
import fr.ifremer.isisfish.entities.TargetSpeciesDAO;
import fr.ifremer.isisfish.entities.Zone;
@@ -85,7 +86,7 @@
*
* Created: 1 aout 2005 18:37:25 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
* @version $Revision: 1312 $
*
* Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
@@ -128,7 +129,7 @@
if (log.isErrorEnabled()) {
log.error("Can't create entity", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.region.new"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.region.new"), eee);
}
return null;
}*/
@@ -159,7 +160,7 @@
if (log.isErrorEnabled()) {
log.error("Can't save region", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.save"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.save"), eee);
}
return selected;
}*/
@@ -188,7 +189,7 @@
if (log.isErrorEnabled()) {
log.error("Can't cancel modification in region", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.region.cancel"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.region.cancel"), eee);
}
return selected;
}*/
@@ -211,21 +212,21 @@
boolean doDelete;
List<TopiaEntity> allWillBeRemoved = selected.getComposite();
if (allWillBeRemoved.size() > 0) {
- String text = _("isisfish.message.delete.object", selected
+ String text = t("isisfish.message.delete.object", selected
.toString());
for (TopiaEntity e : allWillBeRemoved) {
text += ClassUtils.getShortClassName(e.getClass()) + " - "
+ e.toString() + "\n";
}
int resp = JOptionPane.showConfirmDialog(null, text,
- _("isisfish.message.delete.entities"),
+ t("isisfish.message.delete.entities"),
JOptionPane.YES_NO_OPTION);
doDelete = resp == JOptionPane.YES_OPTION;
} else {
- String text = _("isisfish.message.confirm.delete.object",
+ String text = t("isisfish.message.confirm.delete.object",
selected.toString());
int resp = JOptionPane.showConfirmDialog(null, text,
- _("isisfish.message.delete.entity"),
+ t("isisfish.message.delete.entity"),
JOptionPane.YES_NO_OPTION);
doDelete = resp == JOptionPane.YES_OPTION;
}
@@ -233,9 +234,9 @@
if (doDelete) {
selected.delete();
selected.getTopiaContext().commitTransaction();
- msg = _("isisfish.message.remove.finished");
+ msg = t("isisfish.message.remove.finished");
} else {
- msg = _("isisfish.message.remove.canceled");
+ msg = t("isisfish.message.remove.canceled");
}
} catch (Exception eee) {
if (log.isErrorEnabled()) {
@@ -257,7 +258,7 @@
if (eq != null) {
String name = showInputDialog("");
//if ("".equals(name)) {
- // showMsgBox("Error " +_("isisfish.error.invalid.equation.name"));
+ // showMsgBox("Error " +t("isisfish.error.invalid.equation.name"));
//}
if (name != null) {
FormuleStorage storage = FormuleStorage.createFormule(eq
@@ -285,9 +286,9 @@
public Object saveAsModel(String category, String language, String content) {
try {
String name = JOptionPane
- .showInputDialog(_("isisfish.message.saveModel.dialog"));
+ .showInputDialog(t("isisfish.message.saveModel.dialog"));
/*if ("".equals(name)) {
- showMsgBox("Error " +_("isisfish.error.invalid.equation.name"));
+ showMsgBox("Error " +t("isisfish.error.invalid.equation.name"));
}*/
if (name != null) {
FormuleStorage storage = FormuleStorage.createFormule(category,
@@ -299,7 +300,7 @@
if (log.isErrorEnabled()) {
log.error("Can't save equation as model", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.equation.savemodel"),
+ ErrorHelper.showErrorDialog(t("isisfish.error.equation.savemodel"),
eee);
}
return null;
@@ -324,7 +325,7 @@
log.error("Can't open editor", eee);
}
ErrorHelper.showErrorDialog(
- _("isisfish.error.equation.openeditor"), eee);
+ t("isisfish.error.equation.openeditor"), eee);
}
return null;
}
@@ -354,7 +355,7 @@
if (log.isErrorEnabled()) {
log.error("Can't add selectivity", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"Selectivity"), eee);
}
return null;
@@ -372,7 +373,7 @@
if (log.isErrorEnabled()) {
log.error("Can't remove TargetSpecies", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"Selectivity"), eee);
}
return null;
@@ -399,7 +400,7 @@
if (log.isErrorEnabled()) {
log.error("Can't create MetierSeasonInfo", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity", "SeasonInfo"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity", "SeasonInfo"), eee);
}
return null;
}*/
@@ -416,7 +417,7 @@
if (log.isErrorEnabled()) {
log.error("Can't create MetierSeasonInfo", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity", "SeasonInfo"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity", "SeasonInfo"), eee);
}
return null;
}*/
@@ -449,7 +450,7 @@
if (log.isErrorEnabled()) {
log.error("Can't add TargetSpecies", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"TargetSpecies"), eee);
}
return null;
@@ -468,7 +469,7 @@
if (log.isErrorEnabled()) {
log.error("Can't remove TargetSpecies", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"TargetSpecies"), eee);
}
return null;
@@ -497,7 +498,7 @@
if (log.isErrorEnabled()) {
log.error("Can't create EffortDescription", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"EffortDescription"), eee);
}
}
@@ -516,7 +517,7 @@
if (log.isErrorEnabled()) {
log.error("Can't remove entity: " + effort, eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"EffortDescription"), eee);
}
return null;
@@ -539,7 +540,7 @@
species.update();
pop.update();
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.input.addentity", "Population"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.input.addentity", "Population"), eee);
}
return pop;
}
@@ -574,7 +575,7 @@
if (log.isErrorEnabled()) {
log.error("Can't create PopulationSeasonInfo", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"PopulationSeasonInfo"), eee);
}
return seasonInfo;
@@ -593,7 +594,7 @@
if (log.isErrorEnabled()) {
log.error("Can't remove PopulationSeasonInfo", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"PopulationSeasonInfo"), eee);
}
}
@@ -635,18 +636,18 @@
if (log.isErrorEnabled()) {
log.error("Can't remove MetierSeasonInfo", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"MetierSeasonInfo"), eee);
}
}
- public Object createRecruitmentDistribution(Population pop) {
+ public void createRecruitmentDistribution(Population pop) {
if (log.isTraceEnabled()) {
log.trace("createRecruitmentDistributionon called: " + pop);
}
try {
String val = JOptionPane
- .showInputDialog(_("isisfish.message.recruitment.number.month"));
+ .showInputDialog(t("isisfish.message.recruitment.number.month"));
int num = -1;
if (val != null && !"".equals(val)) {
try {
@@ -661,7 +662,7 @@
if (num > 0) {
List<String> sem = new ArrayList<String>(num);
for (int i = 0; i < num; i++) {
- sem.add(_("isisfish.common.month", i));
+ sem.add(t("isisfish.common.month", i));
}
MatrixND newMat = MatrixFactory.getInstance().create(
new List[] { sem });
@@ -677,12 +678,47 @@
if (log.isErrorEnabled()) {
log.error("Can't remove RecruitmentDistribution", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.removeentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"RecruitmentDistribution"), eee);
}
- return null;
}
+ public void createObservationValueMatrix(Observation observation) {
+ try {
+ String val = JOptionPane.showInputDialog(t("isisfish.message.observation.value.dimensions"));
+
+ if (StringUtils.isNotBlank(val)) {
+ String[] values = val.trim().split("(,|;|\\*|x|\\s)");
+
+ List<Integer> dims = new ArrayList<Integer>();
+ for (String value : values) {
+ if (!value.isEmpty() && StringUtils.isNumeric(value)) {
+ dims.add(Integer.valueOf(value));
+ }
+ }
+
+ int[] dim = new int[dims.size()];
+ for (int i = 0; i < dims.size(); i++) {
+ dim[i] = dims.get(i).intValue();
+ }
+ MatrixND newMat = MatrixFactory.getInstance().create(dim);
+
+ MatrixND mat = observation.getValue();
+ if (mat != null) {
+ newMat.paste(mat);
+ }
+ observation.setValue(newMat);
+ observation.update();
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove RecruitmentDistribution", eee);
+ }
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
+ "RecruitmentDistribution"), eee);
+ }
+ }
+
// Migration
public Object addMigration(PopulationSeasonInfo info,
@@ -699,7 +735,7 @@
if (log.isErrorEnabled()) {
log.error("Can't add migration", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"Migration"), eee);
}
return null;
@@ -719,7 +755,7 @@
if (log.isErrorEnabled()) {
log.error("Can't add emigration", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"Emigration"), eee);
}
return null;
@@ -739,7 +775,7 @@
if (log.isErrorEnabled()) {
log.error("Can't add immigration", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.addentity",
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.addentity",
"Immigration"), eee);
}
return null;
@@ -793,7 +829,7 @@
// copy map file
File destMap = new File(destDir, filename);
- FileUtil.copy(inputMap, destMap);
+ FileUtils.copyFile(inputMap, destMap);
List<String> maps = fisheryRegion.getMapFileList();
maps.add(filename);
@@ -803,7 +839,7 @@
if (log.isErrorEnabled()) {
log.error("Can't copy map file for : " + inputMap, eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.region.addmap"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.region.addmap"), eee);
}
}
@@ -851,7 +887,7 @@
if (log.isErrorEnabled()) {
log.error("Can't remove map", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.region.removemap"),
+ ErrorHelper.showErrorDialog(t("isisfish.error.region.removemap"),
eee);
}
}
@@ -877,7 +913,7 @@
try {
TopiaContext isisContext = fisheryRegion.getTopiaContext();
- // frame.setInfoText(_("isisfish.message.checking.cell"));
+ // frame.setInfoText(t("isisfish.message.checking.cell"));
int latNumber = (int) Math
.round((fisheryRegion.getMaxLatitude() - fisheryRegion
.getMinLatitude())
@@ -944,9 +980,9 @@
isisContext.commitTransaction();
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.region.save"), eee);
+ log.error(t("isisfish.error.region.save"), eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.region.save"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.region.save"), eee);
}
}
@@ -963,9 +999,9 @@
dialog.setVisible(true);
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.region.check"), eee);
+ log.error(t("isisfish.error.region.check"), eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.region.check"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.region.check"), eee);
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -64,7 +64,7 @@
javax.swing.JComponent
javax.swing.event.ChangeListener
fr.ifremer.isisfish.entities.FisheryRegion
- fr.ifremer.isisfish.ui.sensitivity.SensitivityUtils
+ fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils
fr.ifremer.isisfish.ui.WelcomePanelUI
org.nuiton.topia.persistence.TopiaEntityContextable
org.nuiton.topia.TopiaContext
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2011 - 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
@@ -23,8 +23,8 @@
package fr.ifremer.isisfish.ui.input;
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.n;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
@@ -66,6 +66,7 @@
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Port;
import fr.ifremer.isisfish.entities.SetOfVessels;
@@ -86,9 +87,9 @@
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeRenderer;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeSelectionModel;
import fr.ifremer.isisfish.ui.input.tree.loadors.PopulationsNodeLoador;
-import fr.ifremer.isisfish.ui.models.common.StringComboModel;
-import fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputHandler;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil;
import fr.ifremer.isisfish.vcs.VCSException;
@@ -208,11 +209,11 @@
}
// long operation, run status bar
- setStatusMessage(inputUI, _("isisfish.message.loading.region", name), true);
+ setStatusMessage(inputUI, t("isisfish.message.loading.region", name), true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
loadRegion(inputUI, name);
- setStatusMessage(inputUI, _("isisfish.message.load.finished"));
+ setStatusMessage(inputUI, t("isisfish.message.load.finished"));
}
});
}
@@ -225,10 +226,10 @@
*/
public void createNewRegion(InputUI inputUI) {
String name = inputUI.getFieldNewRegion().getText();
- setStatusMessage(inputUI, _("isisfish.message.creating.region", name), true);
+ setStatusMessage(inputUI, t("isisfish.message.creating.region", name), true);
if (RegionStorage.getRegionNames().contains(name)) {
- JOptionPane.showMessageDialog(inputUI, _("isisfish.error.region.already.exists"));
+ JOptionPane.showMessageDialog(inputUI, t("isisfish.error.region.already.exists"));
}
else {
try {
@@ -240,7 +241,7 @@
refreshRegionList(inputUI, name);
}
- setStatusMessage(inputUI, _("isisfish.message.creation.finished"));
+ setStatusMessage(inputUI, t("isisfish.message.creation.finished"));
}
/**
@@ -251,7 +252,7 @@
*/
protected void refreshRegionList(InputUI inputUI, String selectedItem) {
// refresh region list
- StringComboModel regionsModel = new StringComboModel(RegionStorage.getRegionNames());
+ GenericComboModel regionsModel = new GenericComboModel(RegionStorage.getRegionNames());
inputUI.getFieldCurrentRegion().setModel(regionsModel);
// event is fired by setSelectedItem to call #regionChange
if (selectedItem != null) {
@@ -268,11 +269,11 @@
* @param inputUI inputUI
*/
public void importRegion(InputUI inputUI) {
- setStatusMessage(inputUI, _("isisfish.message.import.zip"), true);
+ setStatusMessage(inputUI, t("isisfish.message.import.zip"), true);
try {
File file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.region.zipped"));
+ t("isisfish.message.import.region.zipped"));
if (file != null) {
RegionStorage.importZip(file);
@@ -280,10 +281,10 @@
}
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.region.import"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.region.import"), eee);
}
- setStatusMessage(inputUI, _("isisfish.message.import.finished"));
+ setStatusMessage(inputUI, t("isisfish.message.import.finished"));
}
/**
@@ -292,24 +293,24 @@
* @param inputUI inputUI
*/
public void importRegionAndRename(InputUI inputUI) {
- setStatusMessage(inputUI, _("isisfish.message.import.zip"), true);
+ setStatusMessage(inputUI, t("isisfish.message.import.zip"), true);
try {
File file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.region.zipped"));
+ t("isisfish.message.import.region.zipped"));
if (file != null) {
String newName = JOptionPane
- .showInputDialog(_("isisfish.message.name.imported.region"));
+ .showInputDialog(t("isisfish.message.name.imported.region"));
RegionStorage.importAndRenameZip(file, newName);
refreshRegionList(inputUI, null);
}
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.region.import"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.region.import"), eee);
}
- setStatusMessage(inputUI, _("isisfish.message.import.finished"));
+ setStatusMessage(inputUI, t("isisfish.message.import.finished"));
}
/**
@@ -319,20 +320,20 @@
*/
public void importV2Region(InputUI inputUI) {
- setStatusMessage(inputUI, _("isisfish.message.import.xml.v2.file"), true);
+ setStatusMessage(inputUI, t("isisfish.message.import.xml.v2.file"), true);
try {
- File file = FileUtil.getFile(".*.xml$", _("isisfish.message.import.region.xml"));
+ File file = FileUtil.getFile(".*.xml$", t("isisfish.message.import.region.xml"));
if (file != null) {
new ImportFromV2(true).importXML(file);
refreshRegionList(inputUI, null);
}
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.region.import"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.region.import"), eee);
}
- setStatusMessage(inputUI, _("isisfish.message.import.finished"));
+ setStatusMessage(inputUI, t("isisfish.message.import.finished"));
}
/**
@@ -343,7 +344,7 @@
*/
public void importRegionFromSimulation(InputUI inputUI) {
- setStatusMessage(inputUI, _("isisfish.message.import"), true);
+ setStatusMessage(inputUI, t("isisfish.message.import"), true);
// first step select a simulation and new region name
try {
@@ -358,12 +359,12 @@
// ask new region name
String regionName = JOptionPane.showInputDialog(
- _("isisfish.message.import.region.name"), "region from "
+ t("isisfish.message.import.region.name"), "region from "
+ simulationName);
if (StringUtils.isNotBlank(regionName)) {
if (RegionStorage.getRegionNames().contains(regionName)) {
- JOptionPane.showMessageDialog(inputUI, _("isisfish.error.region.already.exists"));
+ JOptionPane.showMessageDialog(inputUI, t("isisfish.error.region.already.exists"));
}
else {
SimulationStorage.getSimulation(simulationName).extractRegion(regionName);
@@ -372,10 +373,10 @@
}
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.no.select.simulation"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.no.select.simulation"), eee);
}
- setStatusMessage(inputUI, _("isisfish.message.export.done"));
+ setStatusMessage(inputUI, t("isisfish.message.export.done"));
}
/**
@@ -388,7 +389,7 @@
public void exportRegion(InputUI inputUI) {
try {
File file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.region.zipped"));
+ t("isisfish.message.import.region.zipped"));
if (file != null) {
// add .zip extension is not set
@@ -399,7 +400,7 @@
int resp = JOptionPane.YES_OPTION;
if (file.exists()) {
resp = JOptionPane.showConfirmDialog(inputUI,
- _("isisfish.message.file.overwrite"));
+ t("isisfish.message.file.overwrite"));
}
if (resp == JOptionPane.YES_OPTION) {
RegionStorage regionStorage = inputUI.getContextValue(RegionStorage.class);
@@ -421,7 +422,7 @@
try {
RegionStorage regionStorage = inputUI.getContextValue(RegionStorage.class);
int resp = JOptionPane.showConfirmDialog(inputUI,
- _("isisfish.message.confirm.remove.region", regionStorage.getName()));
+ t("isisfish.message.confirm.remove.region", regionStorage.getName()));
if (resp == JOptionPane.YES_OPTION) {
regionStorage.delete(vcsDelete);
refreshRegionList(inputUI, null);
@@ -439,7 +440,7 @@
public void copyRegion(InputUI inputUI) {
try {
String newName = JOptionPane
- .showInputDialog(_("isisfish.message.new.region.name"));
+ .showInputDialog(t("isisfish.message.new.region.name"));
if (StringUtils.isNotEmpty(newName)) {
RegionStorage regionStorage = inputUI.getContextValue(RegionStorage.class);
@@ -462,27 +463,27 @@
public void commitRegionInCVS(InputUI inputUI) {
try {
RegionStorage regionStorage = inputUI.getContextValue(RegionStorage.class);
- setStatusMessage(inputUI, _("isisfish.message.commiting.region", regionStorage.getName()), true);
+ setStatusMessage(inputUI, t("isisfish.message.commiting.region", regionStorage.getName()), true);
String msg = regionStorage.getCommentForNextCommit();
JTextArea text = new JTextArea(msg);
int resp = JOptionPane.showOptionDialog(null,
- new JScrollPane(text), _("isisfish.commit.message"),
+ new JScrollPane(text), t("isisfish.commit.message"),
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
null, // icon
null, null);
if (resp == JOptionPane.OK_OPTION) {
regionStorage.commit(text.getText());
regionStorage.clearCommentForNextCommit();
- setStatusMessage(inputUI, _("isisfish.message.region.commited"));
+ setStatusMessage(inputUI, t("isisfish.message.region.commited"));
} else {
- setStatusMessage(inputUI, _("isisfish.message.commit.region.canceled"));
+ setStatusMessage(inputUI, t("isisfish.message.commit.region.canceled"));
}
} catch (VCSException eee) {
throw new IsisFishRuntimeException("Can't commit region", eee);
} catch (IOException eee) {
throw new IsisFishRuntimeException("Can't commit region", eee);
}
- setStatusMessage(inputUI, _("isisfish.message.export.done"));
+ setStatusMessage(inputUI, t("isisfish.message.export.done"));
}
/**
@@ -493,8 +494,8 @@
public void exportRegionSensitivityFactors(InputUI inputUI) {
try {
- File exportFile = FileUtil.getFile(_("isisfish.input.sensitivity.export.title"),
- _("isisfish.common.ok"), inputUI, ".*\\.xml", "XML Files");
+ File exportFile = FileUtil.getFile(t("isisfish.input.sensitivity.export.title"),
+ t("isisfish.common.ok"), inputUI, ".*\\.xml", "XML Files");
if (exportFile != null) {
// make sur that filename ends with ".xml"
@@ -503,14 +504,14 @@
}
FisheryRegion fisheryRegion = inputUI.getContextValue(FisheryRegion.class);
- setStatusMessage(inputUI, _("isisfish.input.sensitivity.export.running"), true);
+ setStatusMessage(inputUI, t("isisfish.input.sensitivity.export.running"), true);
RegionExplorer explorer = new RegionExplorer();
RegionExport exportXML = new RegionExportFactorXML(exportFile);
explorer.explore(fisheryRegion, exportXML);
- setStatusMessage(inputUI, _("isisfish.input.sensitivity.export.complete"), true);
+ setStatusMessage(inputUI, t("isisfish.input.sensitivity.export.complete"), true);
}
else {
- setStatusMessage(inputUI, _("isisfish.input.sensitivity.export.cancel"), true);
+ setStatusMessage(inputUI, t("isisfish.input.sensitivity.export.cancel"), true);
}
} catch (TopiaException eee) {
throw new IsisFishRuntimeException("Can't export sensitivity factors", eee);
@@ -572,7 +573,6 @@
* Get ui that can display internalClass.
*
* @param internalClass internal class to get ui
- * @param topiaEntity topia entity to set into ui
* @return ui for class
* @throws Exception
*/
@@ -581,39 +581,30 @@
Class<? extends InputContentUI<?>> uiClass = null;
if (FisheryRegion.class.isAssignableFrom(internalClass)) {
uiClass = FisheryRegionUI.class;
- }
- else if (Cell.class.isAssignableFrom(internalClass)) {
+ } else if (Cell.class.isAssignableFrom(internalClass)) {
uiClass = CellUI.class;
- }
- else if (Gear.class.isAssignableFrom(internalClass)) {
+ } else if (Gear.class.isAssignableFrom(internalClass)) {
uiClass = GearUI.class;
- }
- else if (Metier.class.isAssignableFrom(internalClass)) {
+ } else if (Metier.class.isAssignableFrom(internalClass)) {
uiClass = MetierUI.class;
- }
- else if (Population.class.isAssignableFrom(internalClass)) {
+ } else if (Population.class.isAssignableFrom(internalClass)) {
uiClass = PopulationUI.class;
- }
- else if (Port.class.isAssignableFrom(internalClass)) {
+ } else if (Port.class.isAssignableFrom(internalClass)) {
uiClass = PortUI.class;
- }
- else if (SetOfVessels.class.isAssignableFrom(internalClass)) {
+ } else if (SetOfVessels.class.isAssignableFrom(internalClass)) {
uiClass = SetOfVesselsUI.class;
- }
- else if (Species.class.isAssignableFrom(internalClass)) {
+ } else if (Species.class.isAssignableFrom(internalClass)) {
uiClass = SpeciesUI.class;
- }
- else if (Strategy.class.isAssignableFrom(internalClass)) {
+ } else if (Strategy.class.isAssignableFrom(internalClass)) {
uiClass = StrategyUI.class;
- }
- else if (TripType.class.isAssignableFrom(internalClass)) {
+ } else if (TripType.class.isAssignableFrom(internalClass)) {
uiClass = TripTypeUI.class;
- }
- else if (VesselType.class.isAssignableFrom(internalClass)) {
+ } else if (VesselType.class.isAssignableFrom(internalClass)) {
uiClass = VesselTypeUI.class;
- }
- else if (Zone.class.isAssignableFrom(internalClass)) {
+ } else if (Zone.class.isAssignableFrom(internalClass)) {
uiClass = ZoneUI.class;
+ } else if (Observation.class.isAssignableFrom(internalClass)) {
+ uiClass = ObservationUI.class;
}
// use map to implement UI cache
@@ -712,7 +703,7 @@
fisheryTreeHelper.insertNode(selectedNode, newNode);
if (nodeClass.equals(Species.class)) {
FisheryTreeNode newPopNode = new FisheryTreeNode(
- Population.class, n_("isisfish.input.tree.populations"),
+ Population.class, n("isisfish.input.tree.populations"),
null, new PopulationsNodeLoador((Species)topiaEntity));
fisheryTreeHelper.insertNode(newNode, newPopNode);
}
@@ -771,7 +762,7 @@
if (bean != null) {
FactorWizardUI factorWizardUI = new FactorWizardUI(inputContentUI);
- SensitivityInputHandler handler = factorWizardUI.getHandler();
+ SensitivityWizardHandler handler = factorWizardUI.getHandler();
handler.initNewFactor(factorWizardUI, bean, sensitivityMethod);
factorWizardUI.pack();
factorWizardUI.setLocationRelativeTo(inputContentUI);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -43,6 +43,7 @@
<Boolean id="autoSaveModification" javaBean="true" />
<import>
+ static org.nuiton.i18n.I18n.t
java.lang.reflect.Method;
java.io.File;
fr.ifremer.isisfish.entities.Formule;
@@ -154,7 +155,7 @@
// TODO binding don't work
if (getText() == null) {
- setText(_("isisfish.common.equation"));
+ setText(t("isisfish.common.equation"));
}
editor.getCurrentEditor().removeDocumentListener(listener);
@@ -199,7 +200,7 @@
protected void saveModel() {
getContextValue(InputAction.class).saveAsModel(formuleCategory, "Java", editor.getText());
setComboModel();
- setInfoText(_("isisfish.message.saveModel.finished"));
+ setInfoText(t("isisfish.message.saveModel.finished"));
}
/**
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.input;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.awt.Dimension;
@@ -118,8 +118,8 @@
if (changed) {
// ask user to close edition
// still in edit mode, must warn user
- response = JOptionPane.showConfirmDialog(null, _("isisfish.message.page.modified"),
- _("isisfish.input.menu.commit"), JOptionPane.YES_NO_CANCEL_OPTION,
+ response = JOptionPane.showConfirmDialog(null, t("isisfish.message.page.modified"),
+ t("isisfish.input.menu.commit"), JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE);
if (response == JOptionPane.NO_OPTION) {
cancel();
@@ -146,7 +146,7 @@
/**
* Delete one entity and commit the change, try to selected intelligently
* other node in tree.
- * <p/>
+ * <p>
* Refresh all ui component where name match "input<entity type without
* package >.*"
*/
@@ -157,20 +157,20 @@
TopiaEntityContextable topiaEntity = inputContentUI.getBean();
List<TopiaEntity> allWillBeRemoved = topiaEntity.getComposite();
if (allWillBeRemoved.size() > 0) {
- String label = _("isisfish.message.delete.object", topiaEntity.toString());
+ String label = t("isisfish.message.delete.object", topiaEntity.toString());
String text = "";
for (TopiaEntity e : allWillBeRemoved) {
text += ClassUtils.getShortClassName(e.getClass()) + " - "
+ e.toString() + "\n";
}
int resp = showTextAreaConfirmationMessage(null, label, text,
- _("isisfish.message.delete.entities"),
+ t("isisfish.message.delete.entities"),
JOptionPane.YES_NO_OPTION);
doDelete = resp == JOptionPane.YES_OPTION;
} else {
- String text = _("isisfish.message.confirm.delete.object", topiaEntity.toString());
+ String text = t("isisfish.message.confirm.delete.object", topiaEntity.toString());
int resp = JOptionPane.showConfirmDialog(null, text,
- _("isisfish.message.delete.entity"),
+ t("isisfish.message.delete.entity"),
JOptionPane.YES_NO_OPTION);
doDelete = resp == JOptionPane.YES_OPTION;
}
@@ -183,9 +183,9 @@
InputUI inputUI = inputContentUI.getParentContainer(InputUI.class);
inputUI.getHandler().deleteTreeNode(inputUI, topiaEntity.getTopiaId());
- msg = _("isisfish.message.remove.finished");
+ msg = t("isisfish.message.remove.finished");
} else {
- msg = _("isisfish.message.remove.canceled");
+ msg = t("isisfish.message.remove.canceled");
}
} catch (TopiaException eee) {
throw new IsisFishRuntimeException("Can't remove entity: " + currentEntities.get(0), eee);
@@ -221,9 +221,9 @@
InputUI inputUI = inputContentUI.getContextValue(InputUI.class, JAXXUtil.PARENT);
inputUI.getHandler().insertTreeNode(inputUI, type, topiaEntity);
- //rootUI.setStatusMessage(_("isisfish.message.creation.finished"));
+ //rootUI.setStatusMessage(t("isisfish.message.creation.finished"));
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.input.createentity"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.input.createentity"), eee);
}
}
@@ -255,16 +255,16 @@
noModif();
- //rootUI.setStatusMessage(_("isisfish.message.save.finished"));
+ //rootUI.setStatusMessage(t("isisfish.message.save.finished"));
} catch (TopiaException eee) {
// EC-20100401 : ajouté pour avoir un context
// correct apres un erreur, sinon, on ne peut plus rien faire
// rien sauver d'autre...
try {
topiaContext.rollbackTransaction();
- throw new IsisFishRuntimeException(_("isisfish.error.input.saveentity"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.input.saveentity"), eee);
} catch (TopiaException eee2) {
- throw new IsisFishRuntimeException(_("isisfish.error.input.saveentity"), eee2);
+ throw new IsisFishRuntimeException(t("isisfish.error.input.saveentity"), eee2);
}
}
}
@@ -305,9 +305,9 @@
InputContentUI inputContentUI2 = inputContentUI;
inputContentUI2.setBean(null);
inputContentUI2.setBean(topiaEntity);
- //rootUI.setStatusMessage(_("isisfish.message.cancel.finished"));
+ //rootUI.setStatusMessage(t("isisfish.message.cancel.finished"));
} catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.input.cancelentity"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.input.cancelentity"), eee);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Chatellier Eric
+ Copyright (C) 2009 - 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
@@ -63,8 +63,8 @@
</row>
<row>
<cell columns='2' fill='horizontal' weightx='1.0'>
- <JComboBox id="fieldCurrentRegion" onItemStateChanged='getHandler().regionChange(this, event)'
- model='{new fr.ifremer.isisfish.ui.models.common.StringComboModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'/>
+ <JComboBox id="fieldCurrentRegion" onItemStateChanged='getHandler().regionChange(this, event)' genericType="String"
+ model='{new fr.ifremer.isisfish.ui.models.common.GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'/>
</cell>
</row>
</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -46,7 +46,6 @@
java.util.ArrayList
java.util.List
java.awt.Dimension
- javax.swing.DefaultComboBoxModel
</import>
<BeanValidator id='validator' context="metier"
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,14 +27,14 @@
<fr.ifremer.isisfish.entities.Metier id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n._
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
</import>
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueTripTypes"));
- setNextPath(n_("isisfish.input.tree.triptypes"));
+ setButtonTitle(t("isisfish.input.continueTripTypes"));
+ setNextPath(n("isisfish.input.tree.triptypes"));
// install change listener
// (depends on sensitivity can't be done on constructor)
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,178 @@
+<!--
+ #%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%
+ -->
+<fr.ifremer.isisfish.ui.input.InputContentUI
+ superGenericType='fr.ifremer.isisfish.entities.Observation'>
+
+ <!-- bean property -->
+ <fr.ifremer.isisfish.entities.Observation
+ id='bean' javaBean='null' />
+
+ <import>
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
+ org.nuiton.math.matrix.gui.MatrixPanelEvent
+ org.nuiton.math.matrix.MatrixND
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
+ </import>
+
+ <BeanValidator id='validator'
+ bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Observation'
+ uiClass="jaxx.runtime.validator.swing.ui.ImageValidationUI">
+ <field name="name" component="fieldObservationName" />
+ </BeanValidator>
+
+ <script><![CDATA[
+
+protected void $afterCompleteSetup() {
+ addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getNewValue() == null) {
+ fieldObservationValue.setMatrix(null);
+ }
+ if (evt.getNewValue() != null) {
+ setObservationValueMatrix();
+ }
+ }
+ });
+}
+
+protected void setObservationValueMatrix() {
+ MatrixND prop = getBean().getValue();
+ if (prop != null) {
+ fieldObservationValue.setMatrix(prop.copy());
+ } else {
+ fieldObservationValue.setMatrix(null);
+ }
+}
+
+protected void createObservationValueMatrix() {
+ getAction().createObservationValueMatrix(getBean());
+ setObservationValueMatrix();
+}
+
+protected void observationValueMatrixChanged(MatrixPanelEvent event) {
+ MatrixND mat = fieldObservationValue.getMatrix();
+ if (getBean() != null && mat != null) {
+ getBean().setValue(mat.copy());
+ }
+}
+
+ ]]></script>
+ <JPanel id="body">
+ <Table>
+ <row>
+ <cell fill='both' weightx='1.0' weighty='1.0'>
+ <Table>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JLabel text="isisfish.observation.name" enabled='{isActive()}' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JTextField id="fieldObservationName"
+ text='{SwingUtil.getStringValue(getBean().getName())}'
+ onKeyReleased='getBean().setName(fieldObservationName.getText())'
+ enabled='{isActive()}' decorator='boxed' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JLabel text="isisfish.observation.comment"
+ enabled='{isActive()}' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weighty='0.2' weightx='1.0'>
+ <JScrollPane>
+ <JTextArea id="fieldObservationComment"
+ text='{SwingUtil.getStringValue(getBean().getComment())}'
+ onKeyReleased='getBean().setComment(fieldObservationComment.getText())'
+ enabled='{isActive()}' decorator='boxed' />
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JLabel text="isisfish.observation.value"
+ enabled='{isActive()}' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weighty='1' weightx='1.0'>
+ <org.nuiton.math.matrix.gui.MatrixPanelEditor
+ id="fieldObservationValue" onMatrixChanged="observationValueMatrixChanged(event)"
+ enabled='{isActive()}' decorator='boxed'
+ _sensitivityBean='{fr.ifremer.isisfish.entities.Observation.class}'
+ _sensitivityMethod='"Value"' />
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JPanel/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JButton text="isisfish.common.newMatrix" onActionPerformed='createObservationValueMatrix()' enabled='{isActive()}' decorator='boxed'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1.0'>
+ <Table>
+ <row>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='save' decorator='boxed'
+ text="isisfish.common.save"
+ enabled="{validator.isValid() && validator.isChanged()}"
+ onActionPerformed="getSaveVerifier().save();validator.setChanged(false);" />
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='cancel' decorator='boxed'
+ text="isisfish.common.cancel" enabled="{validator.isChanged()}"
+ onActionPerformed="getSaveVerifier().cancel()" />
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='create' decorator='boxed'
+ text="isisfish.common.new" enabled="{!validator.isChanged()}"
+ onActionPerformed="getSaveVerifier().create(Observation.class)" />
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='delete' decorator='boxed'
+ text="isisfish.common.remove"
+ enabled="{!validator.isChanged() && getBean() != null}"
+ onActionPerformed="getSaveVerifier().delete()" />
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+</fr.ifremer.isisfish.ui.input.InputContentUI>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,131 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2005 - 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.input;
-
-import java.awt.event.MouseEvent;
-
-import com.bbn.openmap.Layer;
-import com.bbn.openmap.event.MapMouseListener;
-import com.bbn.openmap.event.MapMouseMode;
-import com.bbn.openmap.event.ProjectionEvent;
-import com.bbn.openmap.event.SelectMouseMode;
-
-import fr.ifremer.isisfish.map.CellSelectionLayer;
-import fr.ifremer.isisfish.map.IsisMapBean;
-
-/**
- * OpenMapEvents.java
- *
- * Created: 5 septembre 2005 03:21:41 CEST
- *
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
- * @version $Revision: 202 $
- *
- * Last update: $Date: 2006-06-30 18:39:09 +0200 (ven, 30 jun 2006) $
- * by : $Author: bpoussin $
- */
-public abstract class OpenMapEvents extends Layer implements MapMouseListener { // OpenMapEvents
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -8365120112075269288L;
-
- /**
- * SelectMouseMode property: Null, Distance, Nav, Select
- */
- protected MapMouseMode mouseMode;
- protected IsisMapBean map;
-
- protected int selectMode = CellSelectionLayer.SINGLE_SELECTION;
-
- /**
- * Constructor.
- *
- * Register himself to {@code map} mapMouseListener.
- * Also set mouseMode and selectMode on map.
- *
- * @param map map bean
- * @param mouseMode mouse mode
- * @param selectMode select mode
- */
- public OpenMapEvents(IsisMapBean map, MapMouseMode mouseMode, int selectMode) {
- super();
- this.mouseMode = mouseMode;
- this.map = map;
- this.selectMode = selectMode;
- map.setSelectionMode(selectMode);
- map.setActiveMouseMode(mouseMode);
- map.addMapMouseListener(this);
-
- }
-
- @Override
- public void projectionChanged(ProjectionEvent e) {
- // do nothing, it's not reel layer
- }
-
- @Override
- public String[] getMouseModeServiceList() {
- return new String[] { SelectMouseMode.modeID };
- }
-
- @Override
- public boolean mouseClicked(MouseEvent e) {
- return true;
- }
-
- @Override
- public boolean mouseDragged(MouseEvent e) {
- return false;
- }
-
- @Override
- public void mouseEntered(MouseEvent e) {
- }
-
- @Override
- public void mouseExited(MouseEvent e) {
- }
-
- @Override
- public void mouseMoved() {
- }
-
- @Override
- public boolean mouseMoved(MouseEvent e) {
- return false;
- }
-
- @Override
- public boolean mousePressed(MouseEvent e) {
- return false;
- }
-
- @Override
- public boolean mouseReleased(MouseEvent e) {
- return false;
- }
-
-} // OpenMapEvents
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.Species;
fr.ifremer.isisfish.entities.PopulationGroup;
fr.ifremer.isisfish.entities.Population;
@@ -82,8 +83,8 @@
*/
protected void createGroups() {
- int response = JOptionPane.showConfirmDialog(this, _("isisfish.populationBasics.confirmCreateGroups"),
- _("isisfish.common.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
+ int response = JOptionPane.showConfirmDialog(this, t("isisfish.populationBasics.confirmCreateGroups"),
+ t("isisfish.common.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
if (response == JOptionPane.YES_OPTION) {
JFrame wizardFrame = new JFrame();
@@ -91,7 +92,7 @@
WizardGroupCreationUI wizard = new WizardGroupCreationUI(this);
wizard.init(this);
wizardFrame.add(wizard, BorderLayout.CENTER);
- wizardFrame.setTitle(_("isisfish.wizardGroupCreation.title"));
+ wizardFrame.setTitle(t("isisfish.wizardGroupCreation.title"));
Species species = getBean().getSpecies();
wizard.setAgeType(species.getAgeGroupType());
if (wizard.isAgeType()) {
@@ -129,7 +130,7 @@
// create node and select it
Population population = getContextValue(InputAction.class).createPopulation(getTopiaContext(), species);
inputUI.getHandler().insertTreeNode(inputUI, Population.class, population);
- setInfoText(_("isisfish.message.creation.finished"));
+ setInfoText(t("isisfish.message.creation.finished"));
}
]]>
</script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,6 +30,7 @@
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='popInfo' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.PopulationSeasonInfo;
fr.ifremer.isisfish.entities.Population;
fr.ifremer.isisfish.ui.input.model.PopulationSeasonInfoComboModel;
@@ -163,17 +164,17 @@
<cell columns='2' fill='both' weightx='1.0' weighty='0.7'>
<JPanel id="hidablePanel" layout='{new CardLayout()}'>
<JTabbedPane id="fieldUseMatrix" constraints='"fieldUseMatrix"' enabled='{getPopInfo() != null}'>
- <tab title='{_("isisfish.populationMigrationMigration.title")}'>
+ <tab title='{t("isisfish.populationMigrationMigration.title")}'>
<PopulationMigrationMigrationUI id="populationMigrationMigrationUI" constructorParams='this' decorator='boxed'
bean="{getBean()}" popInfo="{getPopInfo()}" active="{isActive() && getPopInfo() != null}"
_sensitivityBean='{PopulationSeasonInfo.class}' _sensitivityMethod='"MigrationMatrix"' />
</tab>
- <tab title='{_("isisfish.populationMigrationImmigration.title")}'>
+ <tab title='{t("isisfish.populationMigrationImmigration.title")}'>
<PopulationMigrationImmigrationUI id="populationMigrationImmigrationUI" constructorParams='this' decorator='boxed'
bean="{getBean()}" popInfo="{getPopInfo()}" active="{isActive() && getPopInfo() != null}"
_sensitivityBean='{PopulationSeasonInfo.class}' _sensitivityMethod='"ImmigrationMatrix"' />
</tab>
- <tab title='{_("isisfish.populationMigrationEmigration.title")}'>
+ <tab title='{t("isisfish.populationMigrationEmigration.title")}'>
<PopulationMigrationEmigrationUI id="populationMigrationEmigrationUI" constructorParams='this' decorator='boxed'
bean="{getBean()}" popInfo="{getPopInfo()}" active="{isActive() && getPopInfo() != null}"
_sensitivityBean='{PopulationSeasonInfo.class}' _sensitivityMethod='"EmigrationMatrix"' />
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -32,6 +32,7 @@
<Boolean id='ageGroupType' javaBean='false'/>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.PopulationSeasonInfo;
fr.ifremer.isisfish.ui.util.ErrorHelper;
org.nuiton.math.matrix.MatrixND;
@@ -77,7 +78,7 @@
if (log.isErrorEnabled()) {
log.error("Can't (un)spacialize Matrix Change Of Group", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.input.spacializematrix"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.spacializematrix"), eee);
}
}
@@ -98,7 +99,7 @@
}
MatrixPanelEditor panel = new MatrixPanelEditor(false, 800, 300);
panel.setMatrix(lengthChangeMatrix);
- JOptionPane.showMessageDialog(this, panel, _("isisfish.populationSeasons.spacialized.visualisation"), JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(this, panel, t("isisfish.populationSeasons.spacialized.visualisation"), JOptionPane.INFORMATION_MESSAGE);
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,13 +28,14 @@
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
</import>
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueGears"));
- setNextPath(n_("isisfish.input.tree.gears"));
+ setButtonTitle(t("isisfish.input.continueGears"));
+ setNextPath(n("isisfish.input.tree.gears"));
// install change listener
// (depends on sensitivity can't be done on constructor)
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,13 +28,13 @@
<fr.ifremer.isisfish.entities.Port id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.Port
fr.ifremer.isisfish.entities.Cell
- com.bbn.openmap.gui.Tool
- com.bbn.openmap.gui.OMToolSet
fr.ifremer.isisfish.map.CellSelectionLayer
fr.ifremer.isisfish.map.CopyMapToClipboardListener
+ fr.ifremer.isisfish.map.OpenMapEvents
com.bbn.openmap.event.SelectMouseMode
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
@@ -49,16 +49,11 @@
</BeanValidator>
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
-
boolean portChanged = true;
protected void $afterCompleteSetup() {
- toolSet.setupListeners(portMap);
- toolMap.add((Tool)toolSet);
-
- // add copy to clipboard support
- portMap.addMapMouseListener(new CopyMapToClipboardListener(portMap));
+
+ //portMap.init(portMapInfo);
new OpenMapEvents(portMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
@@ -80,8 +75,8 @@
}
};
- setButtonTitle(_("isisfish.input.continueSpecies"));
- setNextPath(n_("isisfish.input.tree.species"));
+ setButtonTitle(t("isisfish.input.continueSpecies"));
+ setNextPath(n("isisfish.input.tree.species"));
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
@@ -191,12 +186,11 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap' javaBean='new com.bbn.openmap.gui.ToolPanel()'
- constraints='BorderLayout.NORTH' decorator='boxed' enabled='{getBean() != null}' />
<fr.ifremer.isisfish.map.IsisMapBean id='portMap' javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
constraints='BorderLayout.CENTER' selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.SINGLE_SELECTION}"
decorator='boxed' enabled='{getBean() != null}' fisheryRegion='{getFisheryRegion()}'
selectedCells='{getBean() == null ? null : bean.getCell()}' />
+ <com.bbn.openmap.InformationDelegator id="portMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -33,7 +33,6 @@
fr.ifremer.isisfish.entities.SetOfVessels
fr.ifremer.isisfish.ui.input.model.PortComboModel
fr.ifremer.isisfish.ui.input.model.VesselTypeComboModel
- jaxx.runtime.swing.editor.NumberEditor
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
</import>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,13 +27,14 @@
<fr.ifremer.isisfish.entities.SetOfVessels id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
</import>
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueStrategies"));
- setNextPath(n_("isisfish.input.tree.strategies"));
+ setButtonTitle(t("isisfish.input.continueStrategies"));
+ setNextPath(n("isisfish.input.tree.strategies"));
// install change listener
// (depends on sensitivity can't be done on constructor)
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,9 +28,9 @@
<fr.ifremer.isisfish.entities.Species id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.Species;
- jaxx.runtime.swing.editor.NumberEditor;
java.beans.PropertyChangeEvent;
java.beans.PropertyChangeListener;
</import>
@@ -43,7 +43,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continuePopulations"));
+ setButtonTitle(t("isisfish.input.continuePopulations"));
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
@@ -68,10 +68,10 @@
InputUI inputUI = getParentContainer(InputUI.class);
if (inputUI != null) {
if (getBean() == null) {
- inputUI.getHandler().setTreeSelection(this, n_("isisfish.input.tree.species"), n_("isisfish.input.tree.populations"));
+ inputUI.getHandler().setTreeSelection(this, n("isisfish.input.tree.species"), n("isisfish.input.tree.populations"));
}
else {
- inputUI.getHandler().setTreeSelection(this, getBean().getTopiaId(), n_("isisfish.input.tree.populations"));
+ inputUI.getHandler().setTreeSelection(this, getBean().getTopiaId(), n("isisfish.input.tree.populations"));
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,10 +40,11 @@
<fr.ifremer.isisfish.entities.StrategyMonthInfo id='strategyMonthInfo11' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
org.apache.commons.lang3.StringUtils
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
- static org.nuiton.i18n.I18n._
+ static org.nuiton.i18n.I18n.t
org.nuiton.math.matrix.gui.MatrixPanelEvent
org.nuiton.math.matrix.MatrixND
</import>
@@ -193,55 +194,55 @@
<row>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyJanuary' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo0()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.january"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo0()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.january"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyFebuary' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo1()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.february"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo1()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.february"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyMarch' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo2()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.march"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo2()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.march"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyApril' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo3()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.april"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo3()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.april"))}' />
</cell>
</row>
<row>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyMay' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo4()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.may"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo4()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.may"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyJune' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo5()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.june"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo5()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.june"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyJuly' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo6()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.july"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo6()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.july"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyAugust' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo7()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.august"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo7()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.august"))}' />
</cell>
</row>
<row>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategySeptember' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo8()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.september"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo8()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.september"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyOctober' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo9()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.october"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo9()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.october"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyNovember' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo10()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.november"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo10()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.november"))}' />
</cell>
<cell fill='horizontal' weightx='1' insets='0'>
<StrategyOneMonthInfoUI id='strategyDecember' bean="{getBean()}" active="{isActive()}" constructorParams='this'
- strategyMonthInfo="{getStrategyMonthInfo11()}" strategieMonthText='{StringUtils.capitalize(_("isisfish.month.december"))}' />
+ strategyMonthInfo="{getStrategyMonthInfo11()}" strategieMonthText='{StringUtils.capitalize(t("isisfish.month.december"))}' />
</cell>
</row>
<row>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyOneMonthInfoUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyOneMonthInfoUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyOneMonthInfoUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,7 +34,6 @@
<import>
fr.ifremer.isisfish.entities.Strategy
fr.ifremer.isisfish.entities.StrategyMonthInfo
- jaxx.runtime.swing.editor.NumberEditor
fr.ifremer.isisfish.entities.TripType
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,7 +28,8 @@
<fr.ifremer.isisfish.entities.TripType id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.TripType
fr.ifremer.isisfish.types.TimeUnit
java.beans.PropertyChangeEvent
@@ -43,8 +44,8 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueVesselTypes"));
- setNextPath(n_("isisfish.input.tree.vesseltypes"));
+ setButtonTitle(t("isisfish.input.continueVesselTypes"));
+ setNextPath(n("isisfish.input.tree.vesseltypes"));
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,12 +28,12 @@
<fr.ifremer.isisfish.entities.VesselType id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.VesselType
fr.ifremer.isisfish.entities.TripType
fr.ifremer.isisfish.types.TimeUnit
fr.ifremer.isisfish.ui.input.model.TripTypeListModel
- jaxx.runtime.swing.editor.NumberEditor
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
</import>
@@ -48,8 +48,8 @@
protected boolean init;
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continueSetOfVessels"));
- setNextPath(n_("isisfish.input.tree.setofvessels"));
+ setButtonTitle(t("isisfish.input.continueSetOfVessels"));
+ setNextPath(n("isisfish.input.tree.setofvessels"));
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/WizardGroupCreationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/WizardGroupCreationUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/WizardGroupCreationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -270,10 +270,10 @@
int numberOfGroup = getNumberOfGroup();
double step = getGroupSize();
if (numberOfGroup < 0){
-// return new OutputView("Error.xml", "error", _("isisfish.error.number.classes.upper.zero"));
+// return new OutputView("Error.xml", "error", t("isisfish.error.number.classes.upper.zero"));
}
if (step == 0){
-// return new OutputView("Error.xml", "error", _("isisfish.error.no.null.time.step"));
+// return new OutputView("Error.xml", "error", t"isisfish.error.no.null.time.step"));
}
double maxLength = minLength;
@@ -295,7 +295,7 @@
Equation equation = pop.getGrowth();
if(equation == null){
-// return new OutputView("Error.xml", "error", _("isisfish.error.growth.equation.before.create.group.population"));
+// return new OutputView("Error.xml", "error", t("isisfish.error.growth.equation.before.create.group.population"));
}
double deltat = -1;
double Lmin = minLength;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,16 +28,14 @@
<fr.ifremer.isisfish.entities.Zone id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
javax.swing.event.ListSelectionEvent
fr.ifremer.isisfish.entities.Cell
fr.ifremer.isisfish.entities.Zone
fr.ifremer.isisfish.map.CellSelectionLayer
fr.ifremer.isisfish.map.CopyMapToClipboardListener
+ fr.ifremer.isisfish.map.OpenMapEvents
fr.ifremer.isisfish.ui.input.model.TopiaEntityListModel
com.bbn.openmap.event.SelectMouseMode
- com.bbn.openmap.gui.Tool
- com.bbn.openmap.gui.OMToolSet
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
java.awt.event.MouseEvent
@@ -52,15 +50,9 @@
</BeanValidator>
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
-
protected void $afterCompleteSetup() {
- toolSet.setupListeners(zoneMap);
- toolMap.add((Tool)toolSet);
-
- // add copy to clipboard support
- zoneMap.addMapMouseListener(new CopyMapToClipboardListener(zoneMap));
+ //zoneMap.init(zoneMapInfo);
new OpenMapEvents(zoneMap, new SelectMouseMode(false), CellSelectionLayer.MULT_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
@@ -191,15 +183,12 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap'
- javaBean='new com.bbn.openmap.gui.ToolPanel()'
- decorator='boxed' constraints='BorderLayout.NORTH'/>
<fr.ifremer.isisfish.map.IsisMapBean id='zoneMap'
javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.MULT_SELECTION}"
fisheryRegion='{getFisheryRegion()}' selectedCells='{getBean()==null?null:bean.getCell()}'
decorator='boxed' constraints='BorderLayout.CENTER'/>
- <!-- FIXME echatellier 20110429 : binding -->
+ <com.bbn.openmap.InformationDelegator id="zoneMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,15 +27,14 @@
<fr.ifremer.isisfish.entities.Zone id='bean' javaBean='null'/>
<import>
- static org.nuiton.i18n.I18n.n_
- java.beans.PropertyChangeEvent;
- java.beans.PropertyChangeListener;
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
</import>
<script><![CDATA[
protected void $afterCompleteSetup() {
- setButtonTitle(_("isisfish.input.continuePorts"));
- setNextPath(n_("isisfish.input.tree.ports"));
+ setButtonTitle(t("isisfish.input.continuePorts"));
+ setNextPath(n("isisfish.input.tree.ports"));
// install change listener
// (depends on sensitivity can't be done on constructor)
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.input.check;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.Collection;
import java.util.Collections;
@@ -33,7 +33,7 @@
import java.util.List;
import java.util.Set;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.math.matrix.MatrixIterator;
import org.nuiton.math.matrix.MatrixND;
@@ -66,7 +66,7 @@
*
* Created: 9 janv. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
@@ -95,10 +95,10 @@
static public void check(Object parent, String name, Equation eq, CheckResult result) {
if (eq == null) {
- result.addError(parent, _("isisfish.error.invalid.nullequation", name));
+ result.addError(parent, t("isisfish.error.invalid.nullequation", name));
}
else if (0 != EvaluatorHelper.check(eq.getJavaInterface(), eq.getContent(), null)) {
- result.addError(eq, _("isisfish.error.invalid.equation"));
+ result.addError(eq, t("isisfish.error.invalid.equation"));
}
}
@@ -109,47 +109,47 @@
static public void check(PopulationGroup classPop, CheckResult result){
// error
if (classPop.getMeanWeight() < 0) {
- result.addError(classPop, _("isisfish.error.invalid.mean.weight"));
+ result.addError(classPop, t("isisfish.error.invalid.mean.weight"));
}
// warning
if (classPop.getMeanWeight() == 0) {
- result.addWarning(classPop, _("isisfish.error.not.null.mean.weight"));
+ result.addWarning(classPop, t("isisfish.error.not.null.mean.weight"));
}
}
static public void check(Gear engin, CheckResult result) {
if (StringUtils.isBlank(engin.getName())) {
- result.addWarning(engin, _("isisfish.error.empty.name"));
+ result.addWarning(engin, t("isisfish.error.empty.name"));
}
if (StringUtils.isBlank(engin.getEffortUnit())) {
- result.addWarning(engin, _("isisfish.error.empty.unit"));
+ result.addWarning(engin, t("isisfish.error.empty.unit"));
}
Collection<Selectivity> selectivites = engin.getPopulationSelectivity();
if (CollectionUtils.isEmpty(selectivites)) {
- result.addWarning(engin, _("isisfish.error.empty.selectivity"));
+ result.addWarning(engin, t("isisfish.error.empty.selectivity"));
} else {
for (Selectivity selectivity : selectivites) {
check(selectivity, result);
}
}
if (engin.getPossibleValue() == null) {
- result.addWarning(engin, _("isisfish.error.invalid.range"));
+ result.addWarning(engin, t("isisfish.error.invalid.range"));
}
if (StringUtils.isBlank(engin.getParameterName())) {
- result.addInfo(engin, _("isisfish.error.empty.params.name"));
+ result.addInfo(engin, t("isisfish.error.empty.params.name"));
}
}
static public void check(MetierSeasonInfo infoSaisonMetier, CheckResult result){
if (CollectionUtils.isEmpty(infoSaisonMetier.getZone())) {
- result.addWarning(infoSaisonMetier, _("isisfish.error.no.sector"));
+ result.addWarning(infoSaisonMetier, t("isisfish.error.no.sector"));
}
Collection<TargetSpecies> especeCaptus = infoSaisonMetier.getSpeciesTargetSpecies();
if (CollectionUtils.isEmpty(especeCaptus)) {
- result.addInfo(infoSaisonMetier, _("isisfish.error.empty.species"));
+ result.addInfo(infoSaisonMetier, t("isisfish.error.empty.species"));
} else {
for (TargetSpecies i : especeCaptus) {
check(i, result);
@@ -200,111 +200,111 @@
try {
if (isEmptyMatrix(infoSaisonPop, infoSaisonPop.getMigrationMatrix())) {
- result.addInfo(infoSaisonPop, _("isisfish.error.empty.migration"));
+ result.addInfo(infoSaisonPop, t("isisfish.error.empty.migration"));
} else if(isNullMatrix(infoSaisonPop.getMigrationMatrix())) {
- result.addInfo(infoSaisonPop, _("isisfish.error.empty.migration"));
+ result.addInfo(infoSaisonPop, t("isisfish.error.empty.migration"));
} else if(isNegativeMatrix(infoSaisonPop.getMigrationMatrix())) {
- result.addError(infoSaisonPop, _("isisfish.error.migration.negative"));
+ result.addError(infoSaisonPop, t("isisfish.error.migration.negative"));
}
}
catch (NullPointerException e) {
- result.addError(infoSaisonPop, _("isisfish.error.null.semantics", "MigrationEquation"));
+ result.addError(infoSaisonPop, t("isisfish.error.null.semantics", "MigrationEquation"));
}
try {
if (isEmptyMatrix(infoSaisonPop, infoSaisonPop.getEmigrationMatrix())) {
- result.addInfo(infoSaisonPop, _("isisfish.error.empty.emigration"));
+ result.addInfo(infoSaisonPop, t("isisfish.error.empty.emigration"));
} else if(isNullMatrix(infoSaisonPop.getEmigrationMatrix())) {
- result.addInfo(infoSaisonPop, _("isisfish.error.empty.emigration"));
+ result.addInfo(infoSaisonPop, t("isisfish.error.empty.emigration"));
} else if(isNegativeMatrix(infoSaisonPop.getEmigrationMatrix())) {
- result.addError(infoSaisonPop, _("isisfish.error.emigration.negative"));
+ result.addError(infoSaisonPop, t("isisfish.error.emigration.negative"));
}
}
catch (NullPointerException e) {
- result.addError(infoSaisonPop, _("isisfish.error.null.semantics", "EmigrationEquation"));
+ result.addError(infoSaisonPop, t("isisfish.error.null.semantics", "EmigrationEquation"));
}
try {
if (isEmptyMatrix(infoSaisonPop, infoSaisonPop.getImmigrationMatrix())) {
- result.addInfo(infoSaisonPop, _("isisfish.error.empty.immigration"));
+ result.addInfo(infoSaisonPop, t("isisfish.error.empty.immigration"));
} else if(isNullMatrix(infoSaisonPop.getImmigrationMatrix())) {
- result.addInfo(infoSaisonPop, _("isisfish.error.empty.immigration"));
+ result.addInfo(infoSaisonPop, t("isisfish.error.empty.immigration"));
} else if(isNegativeMatrix(infoSaisonPop.getImmigrationMatrix())) {
- result.addError(infoSaisonPop, _("isisfish.error.immigration.negative"));
+ result.addError(infoSaisonPop, t("isisfish.error.immigration.negative"));
}
}
catch (NullPointerException e) {
- result.addError(infoSaisonPop, _("isisfish.error.null.semantics", "ImmigrationEquation"));
+ result.addError(infoSaisonPop, t("isisfish.error.null.semantics", "ImmigrationEquation"));
}
}
}
static public void check(Cell maille, CheckResult result) {
if (StringUtils.isBlank(maille.getName())) {
- result.addWarning(maille, _("isisfish.error.empty.name"));
+ result.addWarning(maille, t("isisfish.error.empty.name"));
}
}
static public void check(Species metaPop, CheckResult result){
Collection<Population> pops = metaPop.getPopulation();
if (CollectionUtils.isEmpty(pops)) {
- result.addWarning(metaPop, _("isisfish.error.empty.population"));
+ result.addWarning(metaPop, t("isisfish.error.empty.population"));
} else {
for (Population pop : pops) {
check(pop, result);
}
}
if (StringUtils.isBlank(metaPop.getName())) {
- result.addInfo(metaPop, _("isisfish.error.empty.species.name"));
+ result.addInfo(metaPop, t("isisfish.error.empty.species.name"));
}
if (StringUtils.isBlank(metaPop.getScientificName())) {
- result.addInfo(metaPop, _("isisfish.error.empty.scientific.name"));
+ result.addInfo(metaPop, t("isisfish.error.empty.scientific.name"));
}
if (StringUtils.isBlank(metaPop.getCodeRubbin())) {
- result.addInfo(metaPop, _("isisfish.error.empty.code.rubbin"));
+ result.addInfo(metaPop, t("isisfish.error.empty.code.rubbin"));
}
}
static public void check(Metier metier, CheckResult result){
if (StringUtils.isBlank(metier.getName())) {
- result.addWarning(metier, _("isisfish.error.empty.name"));
+ result.addWarning(metier, t("isisfish.error.empty.name"));
}
List<MetierSeasonInfo> infoSaisons = metier.getMetierSeasonInfo();
if (CollectionUtils.isEmpty(infoSaisons)) {
- result.addWarning(metier, _("isisfish.error.empty.season"));
+ result.addWarning(metier, t("isisfish.error.empty.season"));
} else {
Set<Month> months = new HashSet<Month>();
for (MetierSeasonInfo info : infoSaisons) {
if (!Collections.disjoint(months, info.getMonths())) {
- result.addError(info, _("isisfish.error.overlap.season"));
+ result.addError(info, t("isisfish.error.overlap.season"));
}
months.addAll(info.getMonths());
check(info, result);
}
}
if (metier.getGear() == null) {
- result.addError(metier, _("isisfish.error.undefined.gear"));
+ result.addError(metier, t("isisfish.error.undefined.gear"));
} else {
check(metier.getGear(), result);
try {
if (!metier.getGear().getPossibleValue().contains(metier.getGearParameterValue())) {
- result.addWarning(metier, _("isisfish.error.invalid.values.params"));
+ result.addWarning(metier, t("isisfish.error.invalid.values.params"));
}
} catch(Exception e) {
// can't happen StringIndexOutOfBoundsException
// if gear.PossibleValue if not valid
- result.addWarning(metier, _("isisfish.error.invalid.values.params"));
+ result.addWarning(metier, t("isisfish.error.invalid.values.params"));
}
}
}
static public void check(Population pop, CheckResult result){
if (StringUtils.isBlank(pop.getName())) {
- result.addWarning(pop, _("isisfish.error.empty.name"));
+ result.addWarning(pop, t("isisfish.error.empty.name"));
}
if (StringUtils.isBlank(pop.getGeographicId())) {
- result.addInfo(pop, _("isisfish.error.empty.id.geographic"));
+ result.addInfo(pop, t("isisfish.error.empty.id.geographic"));
}
check(pop, "MaturityOgiveEquation", pop.getMaturityOgiveEquation(), result);
check(pop, "ReproductionRateEquation", pop.getReproductionRateEquation(), result);
@@ -312,35 +312,35 @@
check(pop, "GrowthReverse", pop.getGrowthReverse(), result);
List<PopulationGroup> classes = pop.getPopulationGroup();
if (CollectionUtils.isEmpty(classes)) {
- result.addWarning(pop, _("isisfish.error.undefined.classes"));
+ result.addWarning(pop, t("isisfish.error.undefined.classes"));
} else {
for (PopulationGroup group : classes) {
check(group, result);
}
}
if (pop.getMonthGapBetweenReproRecrutement() < 0) {
- result.addWarning(pop, _("isisfish.error.invalid.interval.reproduction.recruitment"));
+ result.addWarning(pop, t("isisfish.error.invalid.interval.reproduction.recruitment"));
}
if (isNullMatrix(pop.getMappingZoneReproZoneRecru())) {
- result.addWarning(pop, _("isisfish.error.undefined.correspondence.zones.reproduction.recruitment"));
+ result.addWarning(pop, t("isisfish.error.undefined.correspondence.zones.reproduction.recruitment"));
}
if (CollectionUtils.isEmpty(pop.getPopulationZone())) {
- result.addWarning(pop, _("isisfish.error.undefined.zone.population"));
+ result.addWarning(pop, t("isisfish.error.undefined.zone.population"));
}
if (CollectionUtils.isEmpty(pop.getRecruitmentZone())) {
- result.addWarning(pop, _("isisfish.error.undefined.zone.recruitment"));
+ result.addWarning(pop, t("isisfish.error.undefined.zone.recruitment"));
}
if (CollectionUtils.isEmpty(pop.getReproductionZone())) {
- result.addWarning(pop, _("isisfish.error.undefined.zone.reproduction"));
+ result.addWarning(pop, t("isisfish.error.undefined.zone.reproduction"));
}
List<PopulationSeasonInfo> infoSaisons = pop.getPopulationSeasonInfo();
if (CollectionUtils.isEmpty(infoSaisons)) {
- result.addWarning(pop, _("isisfish.error.empty.season"));
+ result.addWarning(pop, t("isisfish.error.empty.season"));
} else {
Set<Month> months = new HashSet<Month>();
for (PopulationSeasonInfo info : infoSaisons) {
if (!Collections.disjoint(months, info.getMonths())) {
- result.addError(info, _("isisfish.error.overlap.season"));
+ result.addError(info, t("isisfish.error.overlap.season"));
}
months.addAll(info.getMonths());
check(info, result);
@@ -352,18 +352,18 @@
check(pop, "NaturalDeathRate", pop.getNaturalDeathRate(), result);
if (pop.getRecruitmentDistribution() == null || sumMatrix(pop.getRecruitmentDistribution()) != 1) {
- result.addWarning(pop, _("isisfish.error.invalid.distribution.recruitment"));
+ result.addWarning(pop, t("isisfish.error.invalid.distribution.recruitment"));
}
}
static public void check(FisheryRegion region, CheckResult result){
if (StringUtils.isBlank(region.getName())) {
- result.addWarning(region, _("isisfish.error.empty.name"));
+ result.addWarning(region, t("isisfish.error.empty.name"));
}
List<Zone> secteurs = region.getZone();
if (CollectionUtils.isEmpty(secteurs)) {
- result.addWarning(region, _("isisfish.error.undefined.sector"));
+ result.addWarning(region, t("isisfish.error.undefined.sector"));
} else {
for(Zone zone : secteurs) {
check(zone, result);
@@ -371,7 +371,7 @@
}
List<Cell> mailles = region.getCell();
if (CollectionUtils.isEmpty(mailles)) {
- result.addWarning(region, _("isisfish.error.undefined.mesh"));
+ result.addWarning(region, t("isisfish.error.undefined.mesh"));
} else {
for (Cell cell : mailles) {
check(cell, result);
@@ -379,7 +379,7 @@
}
List<Species> metaPops = region.getSpecies();
if (CollectionUtils.isEmpty(metaPops)) {
- result.addWarning(region, _("isisfish.error.undefined.meta.population"));
+ result.addWarning(region, t("isisfish.error.undefined.meta.population"));
} else {
for (Species species : metaPops) {
check(species, result);
@@ -387,7 +387,7 @@
}
List<Metier> metiers = region.getMetier();
if (CollectionUtils.isEmpty(metiers)) {
- result.addWarning(region, _("isisfish.error.undefined.meta.population"));
+ result.addWarning(region, t("isisfish.error.undefined.meta.population"));
} else {
for (Metier metier : metiers) {
check(metier, result);
@@ -395,7 +395,7 @@
}
List<Strategy> strategies = region.getStrategy();
if (CollectionUtils.isEmpty(strategies)){
- result.addWarning(region, _("isisfish.error.undefined.stategy"));
+ result.addWarning(region, t("isisfish.error.undefined.stategy"));
} else {
for (Strategy strategy : strategies) {
check(strategy, result);
@@ -405,10 +405,10 @@
static public void check(Zone secteur, CheckResult result){
if (StringUtils.isBlank(secteur.getName())) {
- result.addWarning(secteur, _("isisfish.error.empty.name"));
+ result.addWarning(secteur, t("isisfish.error.empty.name"));
}
if (CollectionUtils.isEmpty(secteur.getCell())) {
- result.addWarning(secteur, _("isisfish.error.undefined.mesh.sector"));
+ result.addWarning(secteur, t("isisfish.error.undefined.mesh.sector"));
}
}
@@ -419,13 +419,13 @@
static public void check(Strategy strategy, CheckResult result) {
if (StringUtils.isBlank(strategy.getName())) {
- result.addWarning(strategy, _("isisfish.error.empty.name"));
+ result.addWarning(strategy, t("isisfish.error.empty.name"));
}
check(strategy.getSetOfVessels(), result);
List<StrategyMonthInfo> smi = strategy.getStrategyMonthInfo();
if (smi == null || smi.size() != 12) {
- result.addWarning(strategy, _("isisfish.error.undefined.stategy.months"));
+ result.addWarning(strategy, t("isisfish.error.undefined.stategy.months"));
} else {
for (StrategyMonthInfo info : smi) {
check(info, result);
@@ -437,14 +437,14 @@
static public void check(SetOfVessels sov, CheckResult result){
check(sov.getPort(), result);
if (sov.getNumberOfVessels() < 0) {
- result.addWarning(sov, _("isisfish.error.invalid.number"));
+ result.addWarning(sov, t("isisfish.error.invalid.number"));
}
if (sov.getFixedCosts() < 0) {
- result.addWarning(sov, _("isisfish.error.invalid.costs.fix"));
+ result.addWarning(sov, t("isisfish.error.invalid.costs.fix"));
}
Collection<EffortDescription> efforts = sov.getPossibleMetiers();
if (CollectionUtils.isEmpty(efforts)) {
- result.addWarning(sov, _("isisfish.error.not.possible.metier"));
+ result.addWarning(sov, t("isisfish.error.not.possible.metier"));
} else {
for (EffortDescription effort : efforts) {
check(effort, result);
@@ -467,10 +467,10 @@
}
static public void check(Port port, CheckResult result){
if (StringUtils.isBlank(port.getName())) {
- result.addWarning(port, _("isisfish.error.empty.name"));
+ result.addWarning(port, t("isisfish.error.empty.name"));
}
if (port.getCell() == null) {
- result.addWarning(port, _("isisfish.error.undefined.mesh.sector"));
+ result.addWarning(port, t("isisfish.error.undefined.mesh.sector"));
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResult.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResult.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResult.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,7 +38,7 @@
*
* Created: 9 janv. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
@@ -54,7 +54,7 @@
public StringBuffer getInfo() {
StringBuffer result = new StringBuffer();
- for (Iterator i = order.iterator(); i.hasNext();) {
+ for (Iterator<Object> i = order.iterator(); i.hasNext();) {
Object o = i.next();
StringBuffer tmp = getInfo(o);
if (tmp.length() != 0) {
@@ -73,7 +73,7 @@
public StringBuffer getWarning() {
StringBuffer result = new StringBuffer();
- for (Iterator i = order.iterator(); i.hasNext();) {
+ for (Iterator<Object> i = order.iterator(); i.hasNext();) {
Object o = i.next();
StringBuffer tmp = getWarning(o);
if (tmp.length() != 0) {
@@ -92,7 +92,7 @@
public StringBuffer getError() {
StringBuffer result = new StringBuffer();
- for (Iterator i = order.iterator(); i.hasNext();) {
+ for (Iterator<Object> i = order.iterator(); i.hasNext();) {
Object o = i.next();
StringBuffer tmp = getError(o);
if (tmp.length() != 0) {
@@ -111,11 +111,11 @@
public StringBuffer getInfo(Object o) {
StringBuffer result = new StringBuffer();
- List list = info.get(o);
+ List<String> list = info.get(o);
if (list != null && list.size() != 0) {
result.append("Info\n");
result.append("----\n");
- for (Iterator i = list.iterator(); i.hasNext();) {
+ for (Iterator<String> i = list.iterator(); i.hasNext();) {
result.append(i.next().toString());
result.append("\n");
}
@@ -125,11 +125,11 @@
public StringBuffer getWarning(Object o) {
StringBuffer result = new StringBuffer();
- List list = warning.get(o);
+ List<String> list = warning.get(o);
if (list != null && list.size() != 0) {
result.append("Problème\n");
result.append("--------\n");
- for (Iterator i = list.iterator(); i.hasNext();) {
+ for (Iterator<String> i = list.iterator(); i.hasNext();) {
result.append(i.next().toString());
result.append("\n");
}
@@ -139,11 +139,11 @@
public StringBuffer getError(Object o) {
StringBuffer result = new StringBuffer();
- List list = error.get(o);
+ List<String> list = error.get(o);
if (list != null && list.size() != 0) {
result.append("Erreur\n");
result.append("------\n");
- for (Iterator i = list.iterator(); i.hasNext();) {
+ for (Iterator<String> i = list.iterator(); i.hasNext();) {
result.append(i.next().toString());
result.append("\n");
}
@@ -171,7 +171,7 @@
public StringBuffer getAll() {
StringBuffer result = new StringBuffer();
- for (Iterator i = order.iterator(); i.hasNext();) {
+ for (Iterator<Object> i = order.iterator(); i.hasNext();) {
result.append(getAll(i.next()));
}
return result;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.input.check;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
@@ -37,7 +37,7 @@
*
* Created: 10 janv. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
@@ -56,7 +56,7 @@
}
public CheckResultFrame() {
- super(_("isisfish.message.result.verif.region"));
+ super(t("isisfish.message.result.verif.region"));
model = new CheckResultTableModel(new CheckResult());
JTable table = new JTable(model);
model.addMouseListenerToHeaderInTable(table);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -47,20 +47,20 @@
*
* Created: 10 janv. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
* par : $Author$
*/
public class CheckResultTableModel extends AbstractTableModel implements
- Comparator { // CheckResultTableModel
+ Comparator<Object[]> { // CheckResultTableModel
/** serialVersionUID. */
private static final long serialVersionUID = 328398134761266970L;
protected CheckResult checkResult;
- protected ArrayList data;
+ protected List<Object[]> data;
protected int sortedBy = -1;
protected boolean ascending = true;
@@ -74,23 +74,23 @@
}
protected void computeData() {
- data = new ArrayList();
- for (Iterator i = checkResult.order.iterator(); i.hasNext();) {
+ data = new ArrayList<>();
+ for (Iterator<Object> i = checkResult.order.iterator(); i.hasNext();) {
TopiaEntity o = (TopiaEntity) i.next();
String type = TopiaId.getClassNameAsString(o.getTopiaId());
- addOneData(o, type, "error", (List) checkResult.error.get(o), data);
- addOneData(o, type, "warning", (List) checkResult.warning.get(o),
+ addOneData(o, type, "error", checkResult.error.get(o), data);
+ addOneData(o, type, "warning", checkResult.warning.get(o),
data);
- addOneData(o, type, "info", (List) checkResult.info.get(o), data);
+ addOneData(o, type, "info", checkResult.info.get(o), data);
}
fireTableDataChanged();
}
- protected void addOneData(Object o, String type, String level, List list,
- Collection result) {
+ protected void addOneData(Object o, String type, String level, List<String> list,
+ Collection<Object[]> result) {
if (list != null && list.size() != 0) {
- for (Iterator m = list.iterator(); m.hasNext();) {
+ for (Iterator<String> m = list.iterator(); m.hasNext();) {
Object message = m.next();
result.add(new Object[] { type, o, level, message });
}
@@ -127,10 +127,7 @@
fireTableDataChanged();
}
- public int compare(Object o1, Object o2) {
- Object[] data1 = (Object[]) o1;
- Object[] data2 = (Object[]) o2;
-
+ public int compare(Object[] data1, Object[] data2) {
int result = data1[sortedBy].toString().compareTo(
data2[sortedBy].toString());
return ascending ? result : -result;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,7 +35,7 @@
*
* Created: 10 janv. 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class FormuleComboModel extends DefaultComboBoxModel {
+public class FormuleComboModel extends DefaultComboBoxModel<Formule> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Formule getElementAt(int index) {
return formules.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/formule/FormuleComboRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/EffortDescriptionListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/EffortDescriptionListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/EffortDescriptionListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class EffortDescriptionListModel extends DefaultListModel {
+public class EffortDescriptionListModel extends DefaultListModel<EffortDescription> {
/** serialVersionUID. */
private static final long serialVersionUID = -2715181950778932871L;
@@ -87,7 +87,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public EffortDescription getElementAt(int index) {
return effortDescriptions.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GearComboModel extends DefaultComboBoxModel {
+public class GearComboModel extends DefaultComboBoxModel<Gear> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Gear getElementAt(int index) {
return gearList.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearPopulationSelectivityModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearPopulationSelectivityModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/GearPopulationSelectivityModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.input.model;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.List;
@@ -48,8 +48,10 @@
* Table model for {@link Gear}#{@link Selectivity}.
*
* Columns :
+ * <ul>
* <li>selectivity population name</li>
* <li>selectivity equation</li>
+ * </ul>
*
* @author chatellier
* @version $Revision$
@@ -67,8 +69,8 @@
/** Columns names. */
public final static String[] COLUMN_NAMES = {
- _("isisfish.common.population"),
- _("isisfish.common.equation")
+ t("isisfish.common.population"),
+ t("isisfish.common.equation")
};
protected List<Selectivity> selectivities;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class MetierListModel extends DefaultListModel {
+public class MetierListModel extends DefaultListModel<Metier> {
/** serialVersionUID. */
private static final long serialVersionUID = -2715181950778932871L;
@@ -87,7 +87,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Metier getElementAt(int index) {
return metiers.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class MetierSeasonInfoComboModel extends DefaultComboBoxModel {
+public class MetierSeasonInfoComboModel extends DefaultComboBoxModel<MetierSeasonInfo> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public MetierSeasonInfo getElementAt(int index) {
return metierSeasonInfo.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoTargetSpeciesTableModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoTargetSpeciesTableModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/MetierSeasonInfoTargetSpeciesTableModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.input.model;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.List;
@@ -49,9 +49,11 @@
* Table model for {@link MetierSeasonInfo}#{@link TargetSpecies}.
*
* Columns :
+ * <ul>
* <li>target species name</li>
* <li>target species equation</li>
* <li>target species primaryCatch</li>
+ * </ul>
*
* @author chatellier
* @version $Revision$
@@ -69,9 +71,9 @@
/** Columns names. */
public final static String[] COLUMN_NAMES = {
- _("isisfish.metierSeasonInfoSpecies.species"),
- _("isisfish.metierSeasonInfoSpecies.targetFactor"),
- _("isisfish.metierSeasonInfoSpecies.mainSpecies") };
+ t("isisfish.metierSeasonInfoSpecies.species"),
+ t("isisfish.metierSeasonInfoSpecies.targetFactor"),
+ t("isisfish.metierSeasonInfoSpecies.mainSpecies") };
protected List<TargetSpecies> targetSpeciesList;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class PopulationComboModel extends DefaultComboBoxModel {
+public class PopulationComboModel extends DefaultComboBoxModel<Population> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Population getElementAt(int index) {
return populations.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationSeasonInfoComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationSeasonInfoComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PopulationSeasonInfoComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $
* By : $Author: chatellier $
*/
-public class PopulationSeasonInfoComboModel extends DefaultComboBoxModel {
+public class PopulationSeasonInfoComboModel extends DefaultComboBoxModel<PopulationSeasonInfo> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -89,7 +89,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public PopulationSeasonInfo getElementAt(int index) {
return populationSeasonInfos.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PortComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PortComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/PortComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class PortComboModel extends DefaultComboBoxModel {
+public class PortComboModel extends DefaultComboBoxModel<Port> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Port getElementAt(int index) {
return portsList.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SetOfVesselsComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SetOfVesselsComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SetOfVesselsComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SetOfVesselsComboModel extends DefaultComboBoxModel {
+public class SetOfVesselsComboModel extends DefaultComboBoxModel<SetOfVessels> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public SetOfVessels getElementAt(int index) {
return setOfVesselsList.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SpeciesComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SpeciesComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/SpeciesComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class SpeciesComboModel extends DefaultComboBoxModel {
+public class SpeciesComboModel extends DefaultComboBoxModel<Species> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Species getElementAt(int index) {
return speciesList.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TopiaEntityListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TopiaEntityListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TopiaEntityListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class TopiaEntityListModel extends DefaultListModel {
+public class TopiaEntityListModel extends DefaultListModel<TopiaEntity> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -78,7 +78,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public TopiaEntity getElementAt(int index) {
return entities.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class TripTypeComboModel extends DefaultComboBoxModel {
+public class TripTypeComboModel extends DefaultComboBoxModel<TripType> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public TripType getElementAt(int index) {
return tripTypes.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/TripTypeListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class TripTypeListModel extends DefaultListModel {
+public class TripTypeListModel extends DefaultListModel<TripType> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public TripType getElementAt(int index) {
return tripTypes.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/VesselTypeComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/VesselTypeComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/VesselTypeComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class VesselTypeComboModel extends DefaultComboBoxModel {
+public class VesselTypeComboModel extends DefaultComboBoxModel<VesselType> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public VesselType getElementAt(int index) {
return vesselTypeList.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/ZoneListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/ZoneListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/model/ZoneListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -42,7 +42,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class ZoneListModel extends DefaultListModel {
+public class ZoneListModel extends DefaultListModel<Zone> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -63,7 +63,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Zone getElementAt(int index) {
return zones.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/EffortDescriptionListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/EffortDescriptionListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/EffortDescriptionListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierSeasonInfoComboRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierSeasonInfoComboRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/MetierSeasonInfoComboRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/PopulationSeasonInfoComboRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/PopulationSeasonInfoComboRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/PopulationSeasonInfoComboRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/TripTypeListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/TripTypeListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/renderer/TripTypeListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -62,7 +62,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alternated highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -22,7 +22,7 @@
*/
package fr.ifremer.isisfish.ui.input.tree;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.n;
import java.util.HashMap;
import java.util.Map;
@@ -37,6 +37,7 @@
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Port;
import fr.ifremer.isisfish.entities.SetOfVessels;
import fr.ifremer.isisfish.entities.Species;
@@ -48,6 +49,7 @@
import fr.ifremer.isisfish.ui.input.tree.loadors.FisheryTreeNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.GearsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.MetiersNodeLoador;
+import fr.ifremer.isisfish.ui.input.tree.loadors.ObservationsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.PortsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.SetOfVesselsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.SpeciesNodeLoador;
@@ -90,58 +92,64 @@
loadorCache.put(VesselType.class, new VesselTypesNodeLoador());
loadorCache.put(SetOfVessels.class, new SetOfVesselsNodeLoador());
loadorCache.put(Strategy.class, new StrategiesNodeLoador());
-
+ loadorCache.put(Observation.class, new ObservationsNodeLoador());
+
// first level nodes
CellsNodeLoador cellsNodeLoador = new CellsNodeLoador();
FisheryTreeNode cellsChild = new FisheryTreeNode(Cell.class,
- n_("isisfish.input.tree.cells"), null, cellsNodeLoador);
+ n("isisfish.input.tree.cells"), null, cellsNodeLoador);
loadorCache.put(Cell.class, cellsNodeLoador);
ZonesNodeLoador zonesNodeLoador = new ZonesNodeLoador();
FisheryTreeNode zonesChild = new FisheryTreeNode(Zone.class,
- n_("isisfish.input.tree.zones"), null, zonesNodeLoador);
+ n("isisfish.input.tree.zones"), null, zonesNodeLoador);
loadorCache.put(Zone.class, zonesNodeLoador);
PortsNodeLoador portsNodeLoador = new PortsNodeLoador();
FisheryTreeNode portsChild = new FisheryTreeNode(Port.class,
- n_("isisfish.input.tree.ports"), null, portsNodeLoador);
+ n("isisfish.input.tree.ports"), null, portsNodeLoador);
loadorCache.put(Port.class, portsNodeLoador);
SpeciesNodeLoador speciesNodeLoador = new SpeciesNodeLoador();
FisheryTreeNode speciesChild = new FisheryTreeNode(Species.class,
- n_("isisfish.input.tree.species"), null, speciesNodeLoador);
+ n("isisfish.input.tree.species"), null, speciesNodeLoador);
loadorCache.put(Species.class, speciesNodeLoador);
GearsNodeLoador gearsNodeLoador = new GearsNodeLoador();
FisheryTreeNode gearsChild = new FisheryTreeNode(Gear.class,
- n_("isisfish.input.tree.gears"), null, gearsNodeLoador);
+ n("isisfish.input.tree.gears"), null, gearsNodeLoador);
loadorCache.put(Gear.class, gearsNodeLoador);
MetiersNodeLoador metiersNodeLoador = new MetiersNodeLoador();
FisheryTreeNode metiersChild = new FisheryTreeNode(Metier.class,
- n_("isisfish.input.tree.metiers"), null, metiersNodeLoador);
+ n("isisfish.input.tree.metiers"), null, metiersNodeLoador);
loadorCache.put(Metier.class, metiersNodeLoador);
TripTypesNodeLoador tripTypesNodeLoador = new TripTypesNodeLoador();
FisheryTreeNode tripTypesChild = new FisheryTreeNode(TripType.class,
- n_("isisfish.input.tree.triptypes"), null, tripTypesNodeLoador);
+ n("isisfish.input.tree.triptypes"), null, tripTypesNodeLoador);
loadorCache.put(TripType.class, tripTypesNodeLoador);
VesselTypesNodeLoador vesselTypesNodeLoador = new VesselTypesNodeLoador();
FisheryTreeNode vesselTypesChild = new FisheryTreeNode(VesselType.class,
- n_("isisfish.input.tree.vesseltypes"), null, vesselTypesNodeLoador);
+ n("isisfish.input.tree.vesseltypes"), null, vesselTypesNodeLoador);
loadorCache.put(VesselType.class, vesselTypesNodeLoador);
SetOfVesselsNodeLoador setOfVesselsNodeLoador = new SetOfVesselsNodeLoador();
FisheryTreeNode setOfVesselsChild = new FisheryTreeNode(SetOfVessels.class,
- n_("isisfish.input.tree.setofvessels"), null, setOfVesselsNodeLoador);
+ n("isisfish.input.tree.setofvessels"), null, setOfVesselsNodeLoador);
loadorCache.put(SetOfVessels.class, setOfVesselsNodeLoador);
StrategiesNodeLoador strategiesNodeLoador = new StrategiesNodeLoador();
FisheryTreeNode strategiesChild = new FisheryTreeNode(Strategy.class,
- n_("isisfish.input.tree.strategies"), null, strategiesNodeLoador);
+ n("isisfish.input.tree.strategies"), null, strategiesNodeLoador);
loadorCache.put(Strategy.class, strategiesNodeLoador);
+ ObservationsNodeLoador observationsNodeLoador = new ObservationsNodeLoador();
+ FisheryTreeNode observationsChild = new FisheryTreeNode(Observation.class,
+ n("isisfish.input.tree.observations"), null, observationsNodeLoador);
+ loadorCache.put(Observation.class, observationsNodeLoador);
+
root.add(cellsChild);
root.add(zonesChild);
root.add(portsChild);
@@ -152,6 +160,7 @@
root.add(vesselTypesChild);
root.add(setOfVesselsChild);
root.add(strategiesChild);
+ root.add(observationsChild);
// Create model
TreeModel model = createModel(root);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.input.tree;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
@@ -40,6 +40,7 @@
import fr.ifremer.isisfish.entities.FisheryRegionImpl;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Port;
import fr.ifremer.isisfish.entities.SetOfVessels;
@@ -80,7 +81,7 @@
FisheryTreeNode node = (FisheryTreeNode)value;
if (!node.isStaticNode() || node.isStringNode()) {
- stringValue = _(node.getId());
+ stringValue = t(node.getId());
} else {
FisheryRegion fisheryRegion = provider.getFisheryRegion();
TopiaContext topiaContext = ((FisheryRegionImpl)fisheryRegion).getTopiaContext();
@@ -94,39 +95,30 @@
if (entity != null) {
if (FisheryRegion.class.isAssignableFrom(entity.getClass())) {
stringValue = ((FisheryRegion)entity).getName();
- }
- else if (Cell.class.isAssignableFrom(entity.getClass())) {
+ } else if (Cell.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Cell)entity).getName();
- }
- else if (Gear.class.isAssignableFrom(entity.getClass())) {
+ } else if (Gear.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Gear)entity).getName();
- }
- else if (Metier.class.isAssignableFrom(entity.getClass())) {
+ } else if (Metier.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Metier)entity).getName();
- }
- else if (Population.class.isAssignableFrom(entity.getClass())) {
+ } else if (Population.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Population)entity).getName();
- }
- else if (Port.class.isAssignableFrom(entity.getClass())) {
+ } else if (Port.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Port)entity).getName();
- }
- else if (SetOfVessels.class.isAssignableFrom(entity.getClass())) {
+ } else if (SetOfVessels.class.isAssignableFrom(entity.getClass())) {
stringValue = ((SetOfVessels)entity).getName();
- }
- else if (Species.class.isAssignableFrom(entity.getClass())) {
+ } else if (Species.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Species)entity).getName();
- }
- else if (Strategy.class.isAssignableFrom(entity.getClass())) {
+ } else if (Strategy.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Strategy)entity).getName();
- }
- else if (TripType.class.isAssignableFrom(entity.getClass())) {
+ } else if (TripType.class.isAssignableFrom(entity.getClass())) {
stringValue = ((TripType)entity).getName();
- }
- else if (VesselType.class.isAssignableFrom(entity.getClass())) {
+ } else if (VesselType.class.isAssignableFrom(entity.getClass())) {
stringValue = ((VesselType)entity).getName();
- }
- else if (Zone.class.isAssignableFrom(entity.getClass())) {
+ } else if (Zone.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Zone)entity).getName();
+ } else if (Observation.class.isAssignableFrom(entity.getClass())) {
+ stringValue = ((Observation)entity).getName();
}
}
} catch (TopiaException eee) {
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,67 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 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.input.tree.loadors;
+
+import java.util.List;
+
+import jaxx.runtime.swing.nav.NavDataProvider;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Gear;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.ui.input.tree.FisheryDataProvider;
+import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
+
+/**
+ * Observation tree path node loader.
+ *
+ * @author chatellier
+ * @since 3.4.0.0
+ */
+public class ObservationsNodeLoador extends FisheryTreeNodeLoador<Observation> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 6540304326033236054L;
+
+ public ObservationsNodeLoador() {
+ super(Observation.class);
+ }
+
+ @Override
+ public List<Observation> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) throws Exception {
+ FisheryDataProvider ficheryRegionDataProvider = (FisheryDataProvider)dataProvider;
+ FisheryRegion fisheryRegion = ficheryRegionDataProvider.getFisheryRegion();
+ List<Observation> observations = fisheryRegion.getObservations();
+ return observations;
+ }
+
+ @Override
+ public FisheryTreeNode createNode(Observation observation, NavDataProvider dataProvider) {
+
+ // Create clients static nodes
+ FisheryTreeNode observationNode = new FisheryTreeNode(
+ Observation.class, observation.getTopiaId(),
+ null, null);
+
+ return observationNode;
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -56,7 +56,7 @@
populations = new ArrayList<Population>(species.getPopulation());
}
else {
- populations = Collections.EMPTY_LIST;
+ populations = Collections.emptyList();
}
return populations;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/SpeciesNodeLoador.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/SpeciesNodeLoador.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/SpeciesNodeLoador.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -22,7 +22,7 @@
*/
package fr.ifremer.isisfish.ui.input.tree.loadors;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.n;
import java.util.List;
@@ -66,7 +66,7 @@
// Create clients static nodes
FisheryTreeNode speciesPopulationStaticNode = new FisheryTreeNode(
- Population.class, n_("isisfish.input.tree.populations"),
+ Population.class, n("isisfish.input.tree.populations"),
null, new PopulationsNodeLoador(species));
speciesNode.add(speciesPopulationStaticNode);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.input.variable;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.CardLayout;
import java.util.List;
@@ -109,7 +109,7 @@
Variable variable = dao.create(
Variable.PROPERTY_ENTITY_ID, view.getBean().getTopiaId(),
- Variable.PROPERTY_NAME, _("isisfish.variables.defaultname"));
+ Variable.PROPERTY_NAME, t("isisfish.variables.defaultname"));
TopiaEntityListModel model = (TopiaEntityListModel)view.getVariablesList().getModel();
List<Variable> variables = (List<Variable>)model.getElements();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,9 @@
#L%
-->
<fr.ifremer.isisfish.ui.input.InputContentUI superGenericType='org.nuiton.topia.persistence.TopiaEntityContextable'>
-
+ <import>
+ static org.nuiton.i18n.I18n.t
+ </import>
<EntityVariableHandler id="varHandler" />
<!-- bean property -->
@@ -52,7 +54,7 @@
<Table>
<row>
<cell fill="both" weightx='1.0' weighty='1.0'>
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.variables.variableslist"))}'>
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.variables.variableslist"))}'>
<row>
<cell fill="both" weightx='1.0' weighty='1.0'>
<JScrollPane>
@@ -73,7 +75,7 @@
</Table>
</cell>
<cell fill="both" weightx='3.0' weighty='1.0' rows="2">
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.variables.variabledetail"))}'>
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.variables.variabledetail"))}'>
<row>
<cell fill="horizontal">
<JLabel text="isisfish.variables.entityname"
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alternated highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableTypeComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableTypeComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/VariableTypeComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,9 +25,6 @@
package fr.ifremer.isisfish.ui.input.variable;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.swing.DefaultComboBoxModel;
import fr.ifremer.isisfish.entities.VariableType;
@@ -41,7 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class VariableTypeComboModel extends DefaultComboBoxModel {
+public class VariableTypeComboModel extends DefaultComboBoxModel<VariableType> {
/** serialVersionUID. */
private static final long serialVersionUID = 6171850179969290032L;
@@ -60,7 +57,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public VariableType getElementAt(int index) {
return variableTypes[index];
}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericComboModel.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericComboModel.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericComboModel.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,117 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 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.ui.models.common;
+
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+
+/**
+ * Model pour pour la representation d'une liste de type generic.
+ * Utilisation dans les {@link JComboBox}.
+ *
+ * @param <E> generic type
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class GenericComboModel<E> extends DefaultComboBoxModel<E> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4070846632975105788L;
+
+ /** E list. */
+ protected List<E> genericList;
+
+ /**
+ * Empty constructor.
+ */
+ public GenericComboModel() {
+ this(null);
+ }
+
+ /**
+ * Constructor with export list.
+ *
+ * @param genericList E list
+ */
+ public GenericComboModel(List<E> genericList) {
+ setGenericList(genericList);
+ }
+
+ /**
+ * Get E list.
+ *
+ * @return E list
+ */
+ public List<E> getGenericList() {
+ return genericList;
+ }
+
+ /**
+ * Set E list.
+ *
+ * @param genericList E list to set
+ */
+ public void setGenericList(List<E> genericList) {
+ this.genericList = genericList;
+ // reset selected
+ setSelectedItem(null);
+ }
+
+ public void addElement(E elt) {
+ genericList.add(elt);
+ fireIntervalAdded(this, genericList.size() - 1, genericList.size());
+ }
+
+ public boolean containsElement(E elt) {
+ return genericList.contains(elt);
+ }
+
+ /*
+ * @see javax.swing.ListModel#getElementAt(int)
+ */
+ @Override
+ public E getElementAt(int index) {
+ return genericList.get(index);
+ }
+
+ /*
+ * @see javax.swing.ListModel#getSize()
+ */
+ @Override
+ public int getSize() {
+ int size = 0;
+
+ if (genericList != null) {
+ size = genericList.size();
+ }
+ return size;
+ }
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericListModel.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericListModel.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericListModel.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/GenericListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,106 @@
+/*
+ * #%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.common;
+
+import java.util.List;
+
+import javax.swing.AbstractListModel;
+import javax.swing.JList;
+
+/**
+ * Model pour pour la representation d'une liste de generic type.
+ * Utilisation dans les {@link JList}.
+ *
+ * @param <E> generic type
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author: chatellier $
+ */
+public class GenericListModel<E> extends AbstractListModel<E> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4070846632975105788L;
+
+ /** E list. */
+ protected List<E> elementList;
+
+ /**
+ * Empty constructor.
+ */
+ public GenericListModel() {
+ this(null);
+ }
+
+ /**
+ * Constructor with export list.
+ *
+ * @param elementList E list
+ */
+ public GenericListModel(List<E> elementList) {
+ setElementList(elementList);
+ }
+
+ /**
+ * Get E list.
+ *
+ * @return E list
+ */
+ public List<E> getElementList() {
+ return elementList;
+ }
+
+ /**
+ * Set E list.
+ *
+ * @param elementList E list to set
+ */
+ public void setElementList(List<E> elementList) {
+ this.elementList = elementList;
+ }
+
+ /*
+ * @see javax.swing.ListModel#getElementAt(int)
+ */
+ @Override
+ public E getElementAt(int index) {
+ return elementList.get(index);
+ }
+
+ /*
+ * @see javax.swing.ListModel#getSize()
+ */
+ @Override
+ public int getSize() {
+ int size = 0;
+
+ if (elementList != null) {
+ size = elementList.size();
+ }
+ return size;
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/ScriptParametersTableModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.common;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.List;
@@ -43,9 +43,11 @@
* Model de la table de definition de parametre d'un script.
*
* Columns :
+ * <ul>
* <li>Parameter name</li>
* <li>Parameter value</li>
* <li>Parameter factor (if enabled)</li>
+ * </ul>
*
* @author chatellier
* @version $Revision$
@@ -63,9 +65,9 @@
/** Columns names. */
public final static String[] COLUMN_NAMES = {
- _("isisfish.common.name"),
- _("isisfish.common.value"),
- _("isisfish.common.ellipsis")};
+ t("isisfish.common.name"),
+ t("isisfish.common.value"),
+ t("isisfish.common.ellipsis")};
protected Object script;
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,116 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 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.ui.models.common;
-
-import java.util.List;
-
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JComboBox;
-
-/**
- * Model pour pour la representation d'une liste de {@link String}.
- * Utilisation dans les {@link JComboBox}.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class StringComboModel extends DefaultComboBoxModel {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -4070846632975105788L;
-
- /** {@link String} list. */
- protected List<String> stringList;
-
- /**
- * Empty constructor.
- */
- public StringComboModel() {
- this(null);
- }
-
- /**
- * Constructor with export list.
- *
- * @param stringList {@link String} list
- */
- public StringComboModel(List<String> stringList) {
- setStringList(stringList);
- }
-
- /**
- * Get {@link String} list.
- *
- * @return {@link String} list
- */
- public List<String> getStringList() {
- return stringList;
- }
-
- /**
- * Set {@link String} list.
- *
- * @param stringList {@link String} list to set
- */
- public void setStringList(List<String> stringList) {
- this.stringList = stringList;
- // reset selected
- setSelectedItem(null);
- }
-
- public void addString(String string) {
- stringList.add(string);
- fireIntervalAdded(this, stringList.size() - 1, stringList.size());
- }
-
- public boolean containsString(String string) {
- return stringList.contains(string);
- }
-
- /*
- * @see javax.swing.ListModel#getElementAt(int)
- */
- @Override
- public Object getElementAt(int index) {
- return stringList.get(index);
- }
-
- /*
- * @see javax.swing.ListModel#getSize()
- */
- @Override
- public int getSize() {
- int size = 0;
-
- if (stringList != null) {
- size = stringList.size();
- }
- return size;
- }
-}
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,105 +0,0 @@
-/*
- * #%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.common;
-
-import java.util.List;
-
-import javax.swing.AbstractListModel;
-import javax.swing.JList;
-
-/**
- * Model pour pour la representation d'une liste de {@link String}.
- * Utilisation dans les {@link JList}.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author: chatellier $
- */
-public class StringListModel extends AbstractListModel {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -4070846632975105788L;
-
- /** {@link String} list. */
- protected List<String> stringList;
-
- /**
- * Empty constructor.
- */
- public StringListModel() {
- this(null);
- }
-
- /**
- * Constructor with export list.
- *
- * @param stringList {@link String} list
- */
- public StringListModel(List<String> stringList) {
- setStringList(stringList);
- }
-
- /**
- * Get {@link String} list.
- *
- * @return {@link String} list
- */
- public List<String> getStringList() {
- return stringList;
- }
-
- /**
- * Set {@link String} list.
- *
- * @param stringList {@link String} list to set
- */
- public void setStringList(List<String> stringList) {
- this.stringList = stringList;
- }
-
- /*
- * @see javax.swing.ListModel#getElementAt(int)
- */
- @Override
- public Object getElementAt(int index) {
- return stringList.get(index);
- }
-
- /*
- * @see javax.swing.ListModel#getSize()
- */
- @Override
- public int getSize() {
- int size = 0;
-
- if (stringList != null) {
- size = stringList.size();
- }
- return size;
- }
-}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class ExportListModel extends AbstractListModel {
+public class ExportListModel extends AbstractListModel<Export> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -60,7 +60,6 @@
* @param exports exports
*/
public ExportListModel(List<Export> exports) {
- super();
setExport(exports);
}
@@ -86,7 +85,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Export getElementAt(int index) {
return exports.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -52,7 +52,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.export;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.HashMap;
@@ -67,7 +67,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
@@ -84,13 +84,13 @@
Export export = exportCache.get(exportName);
if (export == null) {
ExportStorage storage = ExportStorage.getExport(exportName);
- export = storage.getNewExportInstance();
+ export = storage.getNewInstance();
exportCache.put(exportName, export);
}
c.setToolTipText(export.getDescription());
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", exportName));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", exportName));
c.setToolTipText(errorTooltip);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.result;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.lang.reflect.Field;
@@ -67,7 +67,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
@@ -93,7 +93,7 @@
}
}
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", "ResultName.java"));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", "ResultName.java"));
c.setToolTipText(errorTooltip);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,7 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class RuleComboModel extends DefaultComboBoxModel {
+public class RuleComboModel extends DefaultComboBoxModel<String> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -90,7 +90,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public String getElementAt(int index) {
return rulesNames.get(index);
}
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListCellRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -52,7 +52,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class RuleListModel extends AbstractListModel {
+public class RuleListModel extends AbstractListModel<Rule> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -86,7 +86,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public Rule getElementAt(int index) {
return rules.get(index);
}
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.rule;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.HashMap;
@@ -67,7 +67,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
@@ -83,13 +83,13 @@
Rule rule = ruleCache.get(ruleName);
if (rule == null) {
RuleStorage storage = RuleStorage.getRule(ruleName);
- rule = storage.getNewRuleInstance();
+ rule = storage.getNewInstance();
ruleCache.put(ruleName, rule);
}
c.setToolTipText(rule.getDescription());
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", ruleName));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", ruleName));
c.setToolTipText(errorTooltip);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,7 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SensitivityAnalysisComboModel extends DefaultComboBoxModel {
+public class SensitivityAnalysisComboModel extends DefaultComboBoxModel<String> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -90,7 +90,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public String getElementAt(int index) {
return sensitivityAnalysisNames.get(index);
}
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisComboRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.sensitivityanalysis;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.HashMap;
@@ -67,7 +67,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
@@ -85,13 +85,13 @@
if (plan == null) {
SensitivityAnalysisStorage storage = SensitivityAnalysisStorage
.getSensitivityAnalysis(sensitivityName);
- plan = storage.getNewSensitivityAnalysisInstance();
+ plan = storage.getNewInstance();
sensitivityAnalysisCache.put(sensitivityName, plan);
}
c.setToolTipText(plan.getDescription());
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", sensitivityName));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", sensitivityName));
c.setToolTipText(errorTooltip);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SensitivityAnalysisListModel extends AbstractListModel {
+public class SensitivityAnalysisListModel extends AbstractListModel<SensitivityAnalysis> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -85,7 +85,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public SensitivityAnalysis getElementAt(int index) {
return sensitivityAnalysis.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityanalysis/SensitivityAnalysisListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -52,7 +52,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author: chatellier $
*/
-public class SensitivityExportListModel extends AbstractListModel {
+public class SensitivityExportListModel extends AbstractListModel<SensitivityExport> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -86,7 +86,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public SensitivityExport getElementAt(int index) {
return exports.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -52,7 +52,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivityexport/SensitivityExportNameListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.sensitivityexport;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.HashMap;
@@ -67,7 +67,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
@@ -84,13 +84,13 @@
SensitivityExport export = sensitivityExportCache.get(exportName);
if (export == null) {
SensitivityExportStorage storage = SensitivityExportStorage.getSensitivityExport(exportName);
- export = storage.getNewSensitivityExportInstance();
+ export = storage.getNewInstance();
sensitivityExportCache.put(exportName, export);
}
c.setToolTipText(export.getDescription());
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", exportName));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", exportName));
c.setToolTipText(errorTooltip);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,7 +38,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SimulationPlanComboModel extends DefaultComboBoxModel {
+public class SimulationPlanComboModel extends DefaultComboBoxModel<String> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -89,7 +89,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public String getElementAt(int index) {
return simulationPlanNames.get(index);
}
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanComboRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.models.simulationplan;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.HashMap;
@@ -67,7 +67,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
@@ -85,13 +85,13 @@
if (plan == null) {
SimulationPlanStorage storage = SimulationPlanStorage
.getSimulationPlan(simulationPlanName);
- plan = storage.getNewSimulationPlanInstance();
+ plan = storage.getNewInstance();
simulationPlanCache.put(simulationPlanName, plan);
}
c.setToolTipText(plan.getDescription());
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", simulationPlanName));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", simulationPlanName));
c.setToolTipText(errorTooltip);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -40,7 +40,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SimulationPlanListModel extends AbstractListModel {
+public class SimulationPlanListModel extends AbstractListModel<SimulationPlan> {
/** serialVersionUID. */
private static final long serialVersionUID = -4070846632975105788L;
@@ -85,7 +85,7 @@
* @see javax.swing.ListModel#getElementAt(int)
*/
@Override
- public Object getElementAt(int index) {
+ public SimulationPlan getElementAt(int index) {
return plans.get(index);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/simulationplan/SimulationPlanListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -52,7 +52,7 @@
* @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
*/
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// this must be used to have alterned highlight rows and default
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.queue;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -87,7 +87,7 @@
for (SimulationJob jobToStop : jobsToStop) {
jobToStop.stop();
if (log.isInfoEnabled()) {
- log.info(_("User stop simulation %s", jobToStop.getItem().getControl()
+ log.info(t("User stop simulation %s", jobToStop.getItem().getControl()
.getId()));
}
}
@@ -109,9 +109,9 @@
for (SimulationJob jobToRestart : jobsToRestart) {
jobToRestart.restart();
- jobToRestart.getItem().getControl().setText(_("isisfish.simulation.restarting"));
+ jobToRestart.getItem().getControl().setText(t("isisfish.simulation.restarting"));
if (log.isInfoEnabled()) {
- log.info(_("User restart simulation %s", jobToRestart.getItem().getControl()
+ log.info(t("User restart simulation %s", jobToRestart.getItem().getControl()
.getId()));
}
}
@@ -129,9 +129,9 @@
SimulationLoggerUtil.showSimulationLogConsole(id);
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("Can't open log for %s", id), eee);
+ log.error(t("Can't open log for %s", id), eee);
}
- ErrorHelper.showErrorDialog(_("Can't open log for %s", id), eee);
+ ErrorHelper.showErrorDialog(t("Can't open log for %s", id), eee);
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,26 +24,30 @@
-->
<Table>
<import>
- static org.nuiton.i18n.I18n._
+ static org.nuiton.i18n.I18n.t
</import>
- <row>
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ //isisMapBean.init(informationDelegator);
+ }
+ ]]></script>
+ <!-- <row>
<cell fill="horizontal">
<com.bbn.openmap.gui.ToolPanel id="toolPanel" />
</cell>
- </row>
+ </row> -->
<row>
<cell fill="both" weightx="1" weighty="1">
<fr.ifremer.isisfish.map.IsisMapBean id="isisMapBean"
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.NO_SELECTION}"/>
</cell>
</row>
- <!-- <row>
+ <row>
<cell fill="horizontal">
<com.bbn.openmap.InformationDelegator id="informationDelegator"
- label='{_("isisfish.simpleResult.more.information")}'
- map="{getIsisMapBean()}" showLights="false" />
+ showLights="false" />
</cell>
- </row> -->
+ </row>
<row>
<cell fill="horizontal">
<LegendPanel id="legendPanel" />
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.result;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
@@ -55,15 +55,15 @@
mapRendererUI = new MapRendererUI();
// Create the directional and zoom control tool
- OMToolSet resultatMapOMTS = new OMToolSet();
+ //OMToolSet resultatMapOMTS = new OMToolSet();
// Associate the tool with the map
- resultatMapOMTS.setupListeners(mapRendererUI.getIsisMapBean());
+ //resultatMapOMTS.setupListeners(mapRendererUI.getIsisMapBean());
// Add the tool to the map toolbar
- mapRendererUI.getToolPanel().add((Tool)resultatMapOMTS);
+ //mapRendererUI.getToolPanel().add((Tool)resultatMapOMTS);
//mapRendererUI.getInformationDelegator().setMap(getIsisMapBean());
//mapRendererUI.getInformationDelegator().setShowLights(false);
- //mapRendererUI.getInformationDelegator().setLabel(_("isisfish.simpleResult.more.information"));
+ //mapRendererUI.getInformationDelegator().setLabel(t("isisfish.simpleResult.more.information"));
// set fishery region
mapRendererUI.getIsisMapBean().setFisheryRegion(fisheryRegion);
@@ -100,7 +100,7 @@
*/
@Override
public String getName() {
- return _("isisfish.result.map");
+ return t("isisfish.result.map");
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixSummaryRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixSummaryRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/MatrixSummaryRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,8 +23,8 @@
package fr.ifremer.isisfish.ui.result;
-import static org.nuiton.i18n.I18n._;
-import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n.t;
+import static org.nuiton.i18n.I18n.n;
import java.awt.Component;
import java.util.Iterator;
@@ -53,9 +53,9 @@
*/
public class MatrixSummaryRenderer implements MatrixRenderer {
- protected static final String ABONDANCE_STRING = n_("matrixAbundance");
- protected static final String CAPTUREPARMETIER_STRING = _("matrixCatchPerStrategyMetPerZoneMet");
- protected static final String REJETPARMETIER_STRING = _("matrixDiscardsPerStrMetPerZonePop");
+ protected static final String ABONDANCE_STRING = n("matrixAbundance");
+ protected static final String CAPTUREPARMETIER_STRING = t("matrixCatchPerStrategyMetPerZoneMet");
+ protected static final String REJETPARMETIER_STRING = t("matrixDiscardsPerStrMetPerZonePop");
protected SimulationStorage simulationStorage;
@@ -92,13 +92,13 @@
mat1 = mat1.sumOverDim(0);
mat1 = mat1.sumOverDim(1);
mat1 = mat1.reduce();
- resume.append(_("isisfish.result.begin.simulation")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
+ resume.append(t("isisfish.result.begin.simulation")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
mat1 = resultStorage.getMatrix(resultStorage.getLastStep(), name, topiaContext);
mat1 = mat1.sumOverDim(0);
mat1 = mat1.sumOverDim(1);
mat1 = mat1.reduce();
- resume.append(_("isisfish.result.end.simulation")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
+ resume.append(t("isisfish.result.end.simulation")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
}
/*
un peu long
@@ -110,7 +110,7 @@
mat1 = mat1.sumOverDim(3);
mat1 = mat1.reduce();
- resume.append(_("isisfish.common.sum")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
+ resume.append(t("isisfish.common.sum")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
}
else if (!name.startsWith(CAPTUREPARMETIER_STRING)){
MatrixND mat1 = resultStorage.getMatrix(name, topiaContext);
@@ -119,10 +119,10 @@
mat1 = mat1.sumOverDim(2);
mat1 = mat1.reduce();
- resume.append(_("isisfish.common.sum")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
+ resume.append(t("isisfish.common.sum")).append(mat1.getName()).append(": ").append(mat1.getValue(0)).append("\n");
}*/
} catch (Exception eee) {
- resume.append(_("isisfish.error.no.matrix", name));
+ resume.append(t("isisfish.error.no.matrix", name));
}
}
@@ -148,6 +148,6 @@
*/
@Override
public String getName() {
- return _("isisfish.result.summary");
+ return t("isisfish.result.summary");
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.result;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
@@ -60,7 +60,7 @@
import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener;
import fr.ifremer.isisfish.ui.CommonHandler;
-import fr.ifremer.isisfish.ui.models.common.StringComboModel;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
/**
* Handler for result UIs.
@@ -92,8 +92,8 @@
}
@Override
public void simulationStop(SimulationService simService, SimulationJob job) {
- StringComboModel model = (StringComboModel)resultUI.getSimulationComboBox().getModel();
- model.addString(job.getId());
+ GenericComboModel<String> model = (GenericComboModel)resultUI.getSimulationComboBox().getModel();
+ model.addElement(job.getId());
}
@Override
public void clearJobDone(SimulationService simService) {
@@ -111,7 +111,7 @@
java.util.List<String> value = SimulationStorage.getSimulationNames();
//resultUI.getSimulationComboBox().setEditable(false);
- StringComboModel model = new StringComboModel(value);
+ GenericComboModel model = new GenericComboModel(value);
resultUI.getSimulationComboBox().setModel(model);
resultUI.getSimulationComboBox().setSelectedItem(null);
}
@@ -180,7 +180,7 @@
try {
// init menu
for (String exportName : ExportStorage.getExportNames()) {
- JMenuItem item = new JMenuItem(_(exportName));
+ JMenuItem item = new JMenuItem(t(exportName));
item.addActionListener(new ExportActionListener(simulation, exportName));
resultSimulationFrame.getExportMenu().add(item);
}
@@ -200,7 +200,7 @@
matrixViewerPanel.addMatrixFilter(new SumByYearMatrixFilter());
// init available results list
- StringComboModel model = new StringComboModel(resultStorage.getResultName());
+ GenericComboModel model = new GenericComboModel(resultStorage.getResultName());
resultSimulationFrame.getResultsComboBox().setModel(model);
resultSimulationFrame.getResultsComboBox().addItemListener(new ItemListener() {
@Override
@@ -240,7 +240,7 @@
public void actionPerformed(ActionEvent e) {
try {
- File file = FileUtil.getFile(".+\\.csv", _("isisfish.result.export.file"));
+ File file = FileUtil.getFile(".+\\.csv", t("isisfish.result.export.file"));
// add csv extension if not set
if (!file.getName().endsWith(".csv")) {
file = new File(file.getAbsolutePath() + ".csv");
@@ -250,7 +250,7 @@
try {
out = new BufferedWriter(new FileWriter(file));
ExportStorage storage = ExportStorage.getExport(exportName);
- Export export = storage.getNewExportInstance();
+ Export export = storage.getNewInstance();
export.export(simulationStorage, out);
}
finally {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultMatrixFilter.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultMatrixFilter.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultMatrixFilter.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.result;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.List;
@@ -67,7 +67,7 @@
if (dim == 0 && sumStep == 12) {
// si c une somme pour les annees, on change l'intitule
- matrix.setDimensionName(0, _("isisfish.common.year"));
+ matrix.setDimensionName(0, t("isisfish.common.year"));
}
// #1905 : modifie les semantiques de type Date pour que lorsque
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/SumByYearMatrixFilter.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/SumByYearMatrixFilter.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/SumByYearMatrixFilter.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.result;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.List;
@@ -61,7 +61,7 @@
int semCount = matrix.getSemantic(0).size();
List<String> newSems = new ArrayList<String>(semCount);
for (int i = 0; i < semCount ; i++) {
- newSems.add(_("isisfish.result.matrix.sumbyyearlabel", i));
+ newSems.add(t("isisfish.result.matrix.sumbyyearlabel", i));
}
matrix.setSemantic(0, newSems);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/FileSelectionTableModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.script;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.ArrayList;
import java.util.List;
@@ -48,8 +48,8 @@
private static final long serialVersionUID = 6327223042377741126L;
/** Column names. */
- public final static String[] COLUMN_NAMES = { _("isisfish.common.ellipsis"),
- _("isisfish.common.module"), _("isisfish.common.file") };
+ public final static String[] COLUMN_NAMES = { t("isisfish.common.ellipsis"),
+ t("isisfish.common.module"), t("isisfish.common.file") };
/** All files displayed in table. */
protected List<String> availableFiles;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,10 +25,13 @@
package fr.ifremer.isisfish.ui.script;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
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());
}
/**
@@ -206,15 +229,15 @@
if (scriptType.equals(ScriptMapping.Formule)) {
List<String> values = FormuleStorage.getCategories();
equationModelType = (String) JOptionPane.showInputDialog(scriptUI,
- _("isisfish.message.new.formule.category"),
- _("isisfish.message.new.formule.title"),
+ t("isisfish.message.new.formule.category"),
+ t("isisfish.message.new.formule.title"),
JOptionPane.PLAIN_MESSAGE, null, values.toArray(), values.get(0));
equationModelTypePath = equationModelType + File.separator;
}
// if user has not choose "cancel"
if (equationModelType != null) {
- String fileName = JOptionPane.showInputDialog(_("isisfish.message.new.filename"));
+ String fileName = JOptionPane.showInputDialog(t("isisfish.message.new.filename"));
// user cancel
if (!StringUtils.isEmpty(fileName)) {
File scriptFile = newScript(equationModelTypePath + fileName, scriptType);
@@ -257,18 +280,18 @@
if (pos != -1) {
if (scriptType != ScriptMapping.Formule) {
// interdit pour le moment ?
- String message = _("isisfish.error.invalid.file.name",
+ String message = t("isisfish.error.invalid.file.name",
fileName);
Exception e = new RuntimeException(message);
- returnError(_("isisfish.error.script.create", fileName, e.getMessage()), e);
+ returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
return null;
}
// il y a un sous type à traiter
if (pos == fileName.length() - 1) {
- String message = _("isisfish.error.invalid.file.name",
+ String message = t("isisfish.error.invalid.file.name",
fileName);
Exception e = new RuntimeException(message);
- returnError(_("isisfish.error.script.create", fileName, e.getMessage()), e);
+ returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
return null;
}
realFilename = fileName
@@ -279,9 +302,9 @@
category = "";
}
if (!realFilename.matches("[A-Z0-9_][a-zA-Z0-9_]*")) {
- String message = _("isisfish.error.invalid.file.name", fileName);
+ String message = t("isisfish.error.invalid.file.name", fileName);
Exception e = new RuntimeException(message);
- returnError(_("isisfish.error.script.create", fileName, e.getMessage()), e);
+ returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
return null;
}
//TODO do test on category
@@ -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;
@@ -321,9 +350,9 @@
if (script.exists()) {
// Message d'erreur si le fichier existe en local.
- String message = _("isisfish.error.file.already.exists", fileName);
+ String message = t("isisfish.error.file.already.exists", fileName);
Exception e = new RuntimeException(message);
- returnError(_("isisfish.error.script.create", fileName, e
+ returnError(t("isisfish.error.script.create", fileName, e
.getMessage()), e);
}
@@ -359,7 +388,7 @@
codeStorage = script;
scriptFile = script.getFile();
} catch (Exception eee) {
- returnError(_("isisfish.error.script.create", fileName, eee
+ returnError(t("isisfish.error.script.create", fileName, eee
.getMessage()), eee);
}
@@ -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;
@@ -481,9 +522,9 @@
log.fatal("ScriptType unknown: " + file.getName());
}
- //frame.setInfoText(_("isisfish.message.load.finished"));
+ //frame.setInfoText(t("isisfish.message.load.finished"));
} catch (Exception eee) {
- returnError(_("isisfish.error.script.load", file.getAbsolutePath(),
+ returnError(t("isisfish.error.script.load", file.getAbsolutePath(),
eee.getMessage()), eee);
} finally {
@@ -518,10 +559,10 @@
ScriptTreeModel model = scriptUI.getScriptTreeModel();
model.fileModified(codeStorage.getFile());
} catch (Exception eee) {
- returnError(_("isisfish.error.script.save", codeStorage.getFile(),
+ returnError(t("isisfish.error.script.save", codeStorage.getFile(),
eee.getMessage()), eee);
}
- setStatusMessage(_("isisfish.message.save.finished"));
+ setStatusMessage(t("isisfish.message.save.finished"));
}
/**
@@ -537,13 +578,13 @@
// save script before commit
saveScript();
- String msg = JOptionPane.showInputDialog(_("isisfish.message.script.commit", codeStorage.getName()));
+ String msg = JOptionPane.showInputDialog(t("isisfish.message.script.commit", codeStorage.getName()));
if (msg == null) {
- setStatusMessage(_("isisfish.message.commit.cancelled"));
+ setStatusMessage(t("isisfish.message.commit.cancelled"));
} else {
codeStorage.commit(msg);
codeStorage.reload();
- setStatusMessage(_("isisfish.message.commit.finished"));
+ setStatusMessage(t("isisfish.message.commit.finished"));
}
} catch (Exception ex) {
if (log.isErrorEnabled()) {
@@ -713,16 +754,16 @@
if (check) {
scriptUI.getActionLogArea().setText(
- _("isisfish.script.compilation.ok", result.toString()));
+ t("isisfish.script.compilation.ok", result.toString()));
scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
} else {
scriptUI.getActionLogArea().setText(
- _("isisfish.script.compilation.failed", result
+ t("isisfish.script.compilation.failed", result
.toString()));
scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
}
- setStatusMessage(_("isisfish.message.check.finished"));
+ setStatusMessage(t("isisfish.message.check.finished"));
return check;
}
@@ -731,7 +772,7 @@
*/
public void checkAllScripts() {
- setStatusMessage(_("isisfish.message.check.inprogress"), true);
+ setStatusMessage(t("isisfish.message.check.inprogress"), true);
boolean allSuccess = true;
@@ -745,7 +786,7 @@
// le fichier java ne sont pas compilable sans la formule associée
List<File> javaFiles = FileUtil.find(scriptMapping.getModule(), ".+\\.java$", false);
for (File javaFile : javaFiles) {
- scriptUI.getActionLogArea().append(_("isisfish.script.compilingfile", javaFile));
+ scriptUI.getActionLogArea().append(t("isisfish.script.compilingfile", javaFile));
StringWriter result = new StringWriter();
PrintWriter out = new PrintWriter(result);
@@ -753,10 +794,10 @@
out.flush();
if (compileResult == 0) {
- scriptUI.getActionLogArea().append(_("isisfish.common.ok") + "\n");
+ scriptUI.getActionLogArea().append(t("isisfish.common.ok") + "\n");
}
else {
- scriptUI.getActionLogArea().append(_("isisfish.common.error") + ":\n");
+ scriptUI.getActionLogArea().append(t("isisfish.common.error") + ":\n");
scriptUI.getActionLogArea().append(result.toString() + "\n");
scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
allSuccess = false;
@@ -772,7 +813,7 @@
scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
}
- setStatusMessage(_("isisfish.message.check.finished"));
+ setStatusMessage(t("isisfish.message.check.finished"));
}
/**
@@ -815,7 +856,7 @@
ex.printStackTrace(out);
scriptUI.getActionLogArea().setText(result.toString());
}
- setStatusMessage(_("isisfish.message.evaluation.finished"));
+ setStatusMessage(t("isisfish.message.evaluation.finished"));
}
/**
@@ -831,10 +872,10 @@
try {
// ask user form a .zip file
File file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.scripts.zipped"));
+ t("isisfish.message.import.scripts.zipped"));
if (file != null) {
- //frame.setInfoText(_("isisfish.message.import.scripts.file", file));
+ //frame.setInfoText(t("isisfish.message.import.scripts.file", file));
// get two list of relative path (one for new files,
// one for exisiting files)
@@ -873,12 +914,12 @@
dialog.pack();
SwingUtil.center(dialog);
dialog.setVisible(true);
- setStatusMessage(_("isisfish.message.import.scripts.file.done", file));
+ setStatusMessage(t("isisfish.message.import.scripts.file.done", file));
} else {
- setStatusMessage(_("isisfish.message.import.scripts.file.cancelled"));
+ setStatusMessage(t("isisfish.message.import.scripts.file.cancelled"));
}
} catch (Exception eee) {
- returnError(_("isisfish.error.script.import", eee.getMessage()),
+ returnError(t("isisfish.error.script.import", eee.getMessage()),
eee);
}
}
@@ -971,7 +1012,7 @@
log.info("Copying " + sourceFile.getName() + " to "
+ dst);
}
- FileUtil.copy(sourceFile, dst);
+ FileUtils.copyFile(sourceFile, dst);
}
}
} catch (Exception ex) {
@@ -1028,7 +1069,7 @@
}
String name = codeStorage.getName();
- int resp = JOptionPane.showConfirmDialog(scriptUI, _("isisfish.message.confirm.remove.script", name),
+ int resp = JOptionPane.showConfirmDialog(scriptUI, t("isisfish.message.confirm.remove.script", name),
null, JOptionPane.YES_NO_OPTION);
if (resp == JOptionPane.YES_OPTION) {
// stay in UI even if deleted
@@ -1045,17 +1086,17 @@
//TODO again the file in panel but not in tree panel ?
codeStorage.delete(deleteRemote);
if (codeStorage.getFile().exists()) {
- ErrorHelper.showErrorDialog(_("isisfish.error.script.delete", codeStorage
+ ErrorHelper.showErrorDialog(t("isisfish.error.script.delete", codeStorage
.getFile()));
}
} catch (Exception eee) {
- returnError(_("isisfish.error.script.delete",
+ returnError(t("isisfish.error.script.delete",
codeStorage == null ? null : codeStorage.getFile(), eee
.getMessage()), eee);
}
- setStatusMessage(_("isisfish.message.delete.finished"));
+ setStatusMessage(t("isisfish.message.delete.finished"));
} else {
- setStatusMessage(_("isisfish.message.delete.canceled"));
+ setStatusMessage(t("isisfish.message.delete.canceled"));
}
}
@@ -1080,7 +1121,7 @@
if (log.isErrorEnabled()) {
log.error("Can't get diff", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.vcs.vcssvn.diff.error"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.vcs.vcssvn.diff.error"), e);
}
}
@@ -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),
@@ -1191,7 +1244,7 @@
* Generate javadoc and display output in UI.
*/
public void generateScriptJavadoc() {
- setStatusMessage(_("isisfish.script.menu.javadocgenerating",
+ setStatusMessage(t("isisfish.script.menu.javadocgenerating",
IsisFish.config.getJavadocDirectory()), true);
SwingUtilities.invokeLater(new Runnable() {
@@ -1206,18 +1259,18 @@
if (ok == 0) {
scriptUI.getActionLogArea().setText(
- _("isisfish.script.javadoc.ok", output.toString()));
+ t("isisfish.script.javadoc.ok", output.toString()));
// vert leger
scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
} else {
scriptUI.getActionLogArea().setText(
- _("isisfish.script.compilation.failed", output
+ t("isisfish.script.compilation.failed", output
.toString()));
// rouge leger
scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
}
- setStatusMessage(_("isisfish.script.menu.javadocgenerated",
+ setStatusMessage(t("isisfish.script.menu.javadocgenerated",
IsisFish.config.getJavadocDirectory()));
}
});
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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: trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/BackupAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2005 - 2010 Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
+ * Copyright (C) 2005 - 2012 Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin, 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
@@ -30,9 +30,9 @@
import java.io.IOException;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
@@ -133,7 +133,7 @@
if (log.isInfoEnabled()) {
log.info("Copying " + src.getName() + " to " + dst);
}
- FileUtil.copy(src, dst);
+ FileUtils.copyFile(src, dst);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.script.action;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import javax.swing.AbstractAction;
import javax.swing.JDialog;
@@ -74,7 +74,7 @@
JFileChooser chooser = new JFileChooser(dir);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int ret = chooser.showDialog(dialog,
- _("isisfish.message.choose.archive"));
+ t("isisfish.message.choose.archive"));
if (ret == JFileChooser.APPROVE_OPTION) {
File newFile = chooser.getSelectedFile();
String path;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.script.action;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.event.ActionEvent;
import java.io.File;
@@ -100,7 +100,7 @@
if (dst.exists()) {
int resp = JOptionPane.showConfirmDialog(dialog,
- _("isisfish.message.file.already.exists", dst));
+ t("isisfish.message.file.already.exists", dst));
if (resp == JOptionPane.CANCEL_OPTION) {
dialog.dispose();
@@ -113,7 +113,7 @@
}
} else if (!dst.getParentFile().exists()) {
int resp = JOptionPane.showConfirmDialog(dialog,
- _("isisfish.message.directory.not.exists", dst));
+ t("isisfish.message.directory.not.exists", dst));
if (resp == JOptionPane.CANCEL_OPTION) {
dialog.dispose();
return false;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -36,7 +36,7 @@
import javax.swing.JComponent;
import javax.swing.TransferHandler;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeCellRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.script.model;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Color;
import java.awt.Component;
@@ -77,11 +77,11 @@
JLabel c = (JLabel)super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
if (value == IsisFish.vcs) {
- c.setText(_("isisfish.ui.script.officialvcs"));
+ c.setText(t("isisfish.ui.script.officialvcs"));
c.setIcon(VCS_ICON);
c.setFont(c.getFont().deriveFont(Font.BOLD));
} else if (value == IsisFish.communityVcs) {
- c.setText(_("isisfish.ui.script.communityvcs"));
+ c.setText(t("isisfish.ui.script.communityvcs"));
c.setIcon(VCS_ICON);
c.setFont(c.getFont().deriveFont(Font.BOLD));
} else if (value instanceof File) {
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 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTreeModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,41 +0,0 @@
-<!--
- #%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%
- -->
-<JPanel layout='{new BorderLayout()}' abstract="true">
-
- <Boolean id='continuePossible' javaBean='true'/>
-
- <Boolean id='continueSelected' javaBean='false'/>
-
- <script><![CDATA[
-/**
- * Return true only if UI component are all filled and value are correct
- * to define new factor.
- */
-public abstract boolean isFactorValid();
- ]]></script>
-
- <JPanel id='content' layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'/>
-
-</JPanel>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,158 +0,0 @@
-<!--
- #%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%
- -->
-<ContinuousPanelContainerUI>
-
- <Boolean id="percentageTypeFactor" javaBean="true" />
-
- <import>
- org.apache.commons.lang3.StringUtils
- java.beans.PropertyChangeEvent
- java.beans.PropertyChangeListener
- java.awt.CardLayout
- </import>
-
- <script><![CDATA[
-public void init(String min, String max, String referenceValue, String coefficient) {
- continueMin.setText(min);
- continueMax.setText(max);
- referenceValueField.setText(referenceValue);
- coefficientField.setText(coefficient);
-}
-
-public void initExisting(String min, String max, String referenceValue, String coefficient) {
- init(min, max, referenceValue, coefficient);
- setPercentageTypeFactor(StringUtils.isNotBlank(coefficient));
-}
-
-@Override
-public boolean isFactorValid() {
- boolean valid = false;
-
- try {
- if (continueSelected) {
- if (percentageTypeFactor) {
- Double coefficient = Double.parseDouble(coefficientField.getText().trim());
- Double referenceValue = Double.parseDouble(referenceValueField.getText().trim());
- valid = coefficient != null && referenceValue != null;
- }
- else {
- Double minValue = Double.parseDouble(continueMin.getText().trim());
- Double maxValue = Double.parseDouble(continueMax.getText().trim());
- valid = minValue != null && maxValue != null;
- }
- }
- else {
- valid = true;
- }
- }
- catch (NumberFormatException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Double parse error", eee);
- }
- }
-
- return valid;
-}
-
-protected void $afterCompleteSetup() {
- addPropertyChangeListener(PROPERTY_PERCENTAGE_TYPE_FACTOR, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if ((Boolean)evt.getNewValue()) {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "percentageType");
- } else {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "minMaxType");
- }
- }
- });
-}
- ]]></script>
- <JPanel id="content">
- <Table constraints='BorderLayout.CENTER'>
- <row>
- <cell fill='horizontal' weightx='1'>
- <JRadioButton text="isisfish.sensitivity.continuouspercentagetype"
- onActionPerformed="setPercentageTypeFactor(true)"
- selected="{isPercentageTypeFactor()}"/>
- </cell>
- <cell fill='horizontal' weightx='1'>
- <JRadioButton text="isisfish.sensitivity.continuousminmaxtype"
- onActionPerformed="setPercentageTypeFactor(false)"
- selected="{!isPercentageTypeFactor()}"/>
- </cell>
- </row>
- <row>
- <cell fill='both' columns="2" weightx='1' weighty='1'>
- <JPanel layout="{new CardLayout()}" id="hidablePanel">
- <Table constraints='"percentageType"' border='{BorderFactory.createTitledBorder("")}'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.referencevalue'
- enabled='{isPercentageTypeFactor()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='referenceValueField'
- enabled='{isPercentageTypeFactor()}'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.coefficient'
- enabled='{isPercentageTypeFactor()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='coefficientField'
- enabled='{isPercentageTypeFactor()}'/>
- </cell>
- </row>
- </Table>
- <Table constraints='"minMaxType"' border='{BorderFactory.createTitledBorder("")}'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.firstValue'
- enabled='{!isPercentageTypeFactor()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='continueMin'
- enabled='{!isPercentageTypeFactor()}'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.lastValue'
- enabled='{!isPercentageTypeFactor()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='continueMax'
- enabled='{!isPercentageTypeFactor()}'/>
- </cell>
- </row>
- </Table>
- </JPanel>
- </cell>
- </row>
- </Table>
- </JPanel>
-</ContinuousPanelContainerUI>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,328 +0,0 @@
-<!--
- #%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%
- -->
-<ContinuousPanelContainerUI>
-
- <import>
- java.awt.Component
- java.awt.Dimension
- java.util.ArrayList
- java.util.EventObject
- java.util.List
- java.util.regex.Matcher
- java.util.regex.Pattern
- javax.swing.table.AbstractTableModel
- javax.swing.table.DefaultTableModel
- javax.swing.table.TableCellEditor
- javax.swing.table.TableModel
- javax.swing.JComboBox
- javax.swing.DefaultCellEditor
- javax.swing.event.CellEditorListener
- fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain
- org.apache.commons.lang3.StringUtils
- java.beans.PropertyChangeEvent
- java.beans.PropertyChangeListener
- java.awt.CardLayout
- </import>
-
- <String id='text' javaBean='null'/>
- <org.nuiton.topia.persistence.TopiaEntityContextable id='bean' javaBean='null'/>
- <String id='beanProperty' javaBean='null'/>
- <!-- For editor doc purpose -->
- <Class id='clazz' javaBean='null'/>
- <String id='formuleCategory' javaBean='null'/>
- <fr.ifremer.isisfish.entities.Equation id='selectedEquation' javaBean='null'/>
- <!-- bean property -->
- <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
-
- <Boolean id="selectedDomain" javaBean="false" />
- <Boolean id="percentageTypeDomain" javaBean="false" />
-
- <script><![CDATA[
-
-protected List<EquationContinuousDomain> domains = new ArrayList<EquationContinuousDomain>();
-
-public List<EquationContinuousDomain> getDomains() {
- return domains;
-}
-
-protected void addDomain(EquationContinuousDomain domain) {
- domains.add(domain);
- // fire data change
- variablesListModel.setDomains(domains);
-}
-
-/**
- * Valid selected domain.
- */
-protected void validSelectedDomain() {
- // fill selected
- EquationContinuousDomain selectedDomain = (EquationContinuousDomain)variablesList.getSelectedValue();
- selectedDomain.setVariableName(variableNameField.getText().trim());
- if (isPercentageTypeDomain()) {
- selectedDomain.setPercentageType(true);
- selectedDomain.setReferenceValue(Double.parseDouble(referenceValueField.getText()));
- selectedDomain.setCoefficient(Double.parseDouble(coefficientField.getText()) / 100);
- } else {
- selectedDomain.setPercentageType(false);
- selectedDomain.setMinBound(Double.parseDouble(minBoundField.getText()));
- selectedDomain.setMaxBound(Double.parseDouble(maxBoundField.getText()));
- }
-
-
- // parse equation content to replace
- // double xxx = 4.0;
- // by
- // double xxx = context.getValueAndCompute("myfactorname.xxx", 4.0)
- // if xxx is the variable name to replace
- String variableName = selectedDomain.getVariableName();
- String[] lines = editor.getEditor().getText().split("\n");
- String result = "";
- for (String line : lines) {
- Pattern p = Pattern.compile("(^.*\\s+" + variableName + "\\s*\\=\\s*)([\\d\\.]+).*\\;$");
- Matcher matcher = p.matcher(line);
- if (matcher.find()) {
- String fullVariableName = bean.toString() + "." + StringUtils.uncapitalize(beanProperty) + "." + variableName;
- line = matcher.group(1) + "context.getValueAndCompute(\"" + fullVariableName + "\", " + matcher.group(2) + ");";
- }
- result += line + "\n";
- }
- editor.getEditor().setText(result);
-
- // fire data change
- variablesListModel.setDomains(domains);
-}
-
-protected void addNewVariable() {
- EquationContinuousDomain domain = new EquationContinuousDomain();
- domain.setVariableName("X");
- addDomain(domain);
-
- // auto select
- variablesList.setSelectedValue(domain, true);
-}
-
-protected void displaySelectedDomain() {
- EquationContinuousDomain selectedDomain = (EquationContinuousDomain)variablesList.getSelectedValue();
- if (selectedDomain != null) {
- setSelectedDomain(true);
- variableNameField.setText(selectedDomain.getVariableName());
- setPercentageTypeDomain(selectedDomain.getCoefficient() != null);
- if (selectedDomain.getCoefficient() != null) {
- coefficientField.setText(String.valueOf(selectedDomain.getCoefficient() * 100));
- } else {
- coefficientField.setText("");
- }
- if (selectedDomain.getReferenceValue() != null) {
- referenceValueField.setText(selectedDomain.getReferenceValue().toString());
- } else {
- referenceValueField.setText("");
- }
- if (selectedDomain.getMinBound() != null) {
- minBoundField.setText(selectedDomain.getMinBound().toString());
- } else {
- minBoundField.setText("");
- }
- if (selectedDomain.getMaxBound() != null) {
- maxBoundField.setText(selectedDomain.getMaxBound().toString());
- } else {
- maxBoundField.setText("");
- }
- } else {
- setSelectedDomain(false);
- }
-}
-
-protected void removeSelectedVariable() {
- int selectedIndex = variablesList.getSelectedIndex();
- domains.remove(selectedIndex);
-
- // fire data change
- variablesList.clearSelection();
- variablesListModel.setDomains(domains);
-}
-
-@Override
-public boolean isFactorValid() {
- boolean valid = true;
-
- try {
- for (EquationContinuousDomain domain : domains) {
- if (StringUtils.isBlank(domain.getVariableName())) {
- valid = false;
- }
- else if (domain.getCoefficient() == null) {
- valid = domain.getMinBound() != null && domain.getMaxBound() != null;
- }
- else {
- valid = domain.getReferenceValue() != null;
- }
- }
- } catch (NumberFormatException ex) {
- valid = false;
- }
-
- return valid;
-}
-
-protected void $afterCompleteSetup() {
- addPropertyChangeListener(PROPERTY_PERCENTAGE_TYPE_DOMAIN, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if ((Boolean)evt.getNewValue()) {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "percentageType");
- } else {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "minMaxType");
- }
- }
- });
-}
- ]]></script>
- <JPanel id='content'>
- <JScrollPane constraints='BorderLayout.CENTER'>
- <Table>
- <row>
- <cell fill='both' weightx='1' weighty='1'>
- <JScrollPane preferredSize="{new Dimension(200, 150)}">
- <fr.ifremer.isisfish.ui.sensitivity.equation.EquationDomainListModel
- id="variablesListModel" constructorParams="domains" />
- <JList id="variablesList" model="{variablesListModel}"
- cellRenderer="{new fr.ifremer.isisfish.ui.sensitivity.equation.EquationDomainRenderer()}"/>
- <ListSelectionModel initializer="variablesList.getSelectionModel()"
- onValueChanged="displaySelectedDomain();setSelectedDomain(variablesList.getSelectedIndex() != -1)" />
- </JScrollPane>
- </cell>
- <cell fill='both' weightx='1' weighty='1'>
- <Table>
- <row>
- <cell fill="horizontal" columns="2">
- <Table>
- <row>
- <cell>
- <JLabel text="isisfish.sensitivity.equation.variablename" enabled='{isSelectedDomain()}' />
- </cell>
- <cell fill="horizontal" weightx='1'>
- <JTextField id="variableNameField" enabled='{isSelectedDomain()}'/>
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- <row>
- <cell fill="horizontal" weightx='1'>
- <JRadioButton id="minMaxButton" text="isisfish.sensitivity.continuousminmaxtype"
- onActionPerformed="setPercentageTypeDomain(!minMaxButton.isSelected())"
- selected="{!isPercentageTypeDomain()}"
- enabled='{isSelectedDomain()}'/>
- </cell>
- <cell fill="horizontal" weightx='1'>
- <JRadioButton id="percentageTypeButton" text="isisfish.sensitivity.continuouspercentagetype"
- onActionPerformed="setPercentageTypeDomain(percentageTypeButton.isSelected())"
- selected="{isPercentageTypeDomain()}"
- enabled='{isSelectedDomain()}'/>
- </cell>
- </row>
- <row>
- <cell fill="both" weighty='1' columns="2">
- <JPanel layout="{new CardLayout()}" id="hidablePanel">
- <Table border='{BorderFactory.createTitledBorder("")}' constraints='"minMaxType"'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.firstValue'
- enabled='{isSelectedDomain()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='minBoundField'
- enabled='{isSelectedDomain()}'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.lastValue'
- enabled='{isSelectedDomain()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='maxBoundField'
- enabled='{isSelectedDomain()}'/>
- </cell>
- </row>
- </Table>
- <Table border='{BorderFactory.createTitledBorder("")}' constraints='"percentageType"'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.referencevalue'
- enabled='{isSelectedDomain()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='referenceValueField'
- enabled='{isSelectedDomain()}'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.coefficient'
- enabled='{isSelectedDomain()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='coefficientField'
- enabled='{isSelectedDomain()}'/>
- </cell>
- </row>
- </Table>
- </JPanel>
- </cell>
- </row>
- <row>
- <cell fill="horizontal" columns="2">
- <JButton text="isisfish.sensitivity.equation.valid"
- enabled='{isSelectedDomain()}'
- onActionPerformed='validSelectedDomain()' />
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JButton id='add' text='isisfish.common.add' visible='{isContinuePossible()}'
- onActionPerformed='addNewVariable()'/>
- </cell>
- <cell fill='horizontal'>
- <JButton id='remove' text='isisfish.common.remove' visible='{isContinuePossible()}'
- enabled='{isSelectedDomain()}' onActionPerformed='removeSelectedVariable()'/>
- </cell>
- </row>
- <row>
- <cell fill='both' columns='2' weightx='1' weighty='1'>
- <fr.ifremer.isisfish.ui.input.InputOneEquationUI id='editor' constructorParams='this'
- autoSaveModification="false" formule='{getFormule()}' text='{getText()}'
- bean='{getBean()}' clazz='{getClazz()}' beanProperty='{getBeanProperty()}'
- formuleCategory='{getFormuleCategory()}' selectedEquation='{getSelectedEquation()}'
- visible='{isContinuePossible()}' active="true" />
- </cell>
- </row>
- </Table>
- </JScrollPane>
- </JPanel>
-</ContinuousPanelContainerUI>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,188 +0,0 @@
-<!--
- #%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%
- -->
-<JDialog title='isisfish.sensitivity.title' modal='{true}' layout='{new BorderLayout()}'>
-
- <import>
- org.apache.commons.lang3.StringUtils
- org.nuiton.topia.persistence.TopiaEntityContextable
- fr.ifremer.isisfish.ui.SimulationUI
- fr.ifremer.isisfish.ui.simulator.SimulAction
- fr.ifremer.isisfish.ui.input.InputSaveVerifier
- fr.ifremer.isisfish.simulator.sensitivity.Factor
- fr.ifremer.isisfish.simulator.sensitivity.Domain
- fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain
- fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain
- fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain
- java.beans.PropertyChangeEvent
- java.beans.PropertyChangeListener
- java.util.SortedMap
- javax.swing.JComponent
- java.awt.CardLayout
- </import>
-
- <SensitivityInputHandler id="handler" />
-
- <Boolean id='continuePossible' javaBean='false'/>
-
- <Boolean id='continueSelected' javaBean='false'/>
-
- <Boolean id='existingValue' javaBean='false'/>
-
- <String id="factorPath" javaBean="null"/>
-
- <script><![CDATA[
-
-protected java.util.List<JComponent> discretComponents = new ArrayList<JComponent>();
-protected ContinuousPanelContainerUI continuousPanel = null;
-
-/*protected void $afterCompleteSetup() {
- addPropertyChangeListener(PROPERTY_CONTINUE_POSSIBLE, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (continuousPanel != null) {
- continuousPanel.setContinuePossible((Boolean)evt.getNewValue());
- }
- }
- });
-
- addPropertyChangeListener(PROPERTY_CONTINUE_SELECTED, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (continuousPanel != null) {
- continuousPanel.setContinueSelected((Boolean)evt.getNewValue());
- }
- }
- });
-}*/
-
-protected void $afterCompleteSetup() {
- addPropertyChangeListener(PROPERTY_CONTINUE_SELECTED, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if ((Boolean)evt.getNewValue()) {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "continuousPanelContainer");
- } else {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "discretePanelContainer");
- }
-
- // necessary for validation
- if (continuousPanel != null) {
- continuousPanel.setContinueSelected((Boolean)evt.getNewValue());
- }
- }
- });
-}
-
-protected SimulAction getSimulAction() {
- return getContextValue(SimulAction.class);
-}
- ]]></script>
- <Table constraints='BorderLayout.CENTER'>
- <row>
- <cell columns='4' fill='horizontal'>
- <Table>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.name'/>
- </cell>
- <cell weightx='1' fill='horizontal'>
- <JTextField id='factorNameField'/>
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- <row>
- <cell fill='horizontal' weightx='1' columns='2'>
- <JRadioButton id='discret' text='isisfish.sensitivity.discret'
- selected='{true}' buttonGroup='factorType'
- onActionPerformed='setContinueSelected(continueRadio.isSelected())'/>
- </cell>
- <cell fill='horizontal' weightx='1' columns='2'>
- <JRadioButton id='continueRadio' text='isisfish.sensitivity.continue'
- buttonGroup='factorType' selected='{false}' visible='{isContinuePossible()}'
- onActionPerformed='setContinueSelected(continueRadio.isSelected())'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='both' weightx='1' weighty='3'>
- <JPanel layout="{new CardLayout()}" id="hidablePanel">
-
- <!-- discrete -->
- <Table id='discretePanelContainer' border='{BorderFactory.createTitledBorder("")}'
- constraints='"discretePanelContainer"'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.selectDiscretNumber'/>
- </cell>
- <cell fill='horizontal' weightx='1'>
- <JTextField id='discretNumber'/>
- </cell>
- <cell fill='horizontal'>
- <JButton text='isisfish.sensitivity.validDiscretNumber'
- onActionPerformed='getHandler().addTabs(this)'/>
- </cell>
- </row>
- <row>
- <cell columns='3' fill='both' weightx='1' weighty='2' anchor="north">
- <JTabbedPane id='tabPane'/>
- </cell>
- </row>
- </Table>
-
- <!-- continous -->
- <JPanel id='continuousPanelContainer' layout='{new BorderLayout()}'
- border='{BorderFactory.createTitledBorder("")}'
- constraints='"continuousPanelContainer"' />
- </JPanel>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='horizontal'>
- <JLabel text='isisfish.sensitivity.comment'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='both' weighty='1'>
- <JScrollPane>
- <JTextArea id='comment'/>
- </JScrollPane>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JButton id='cancel' text='isisfish.common.cancel' onActionPerformed='dispose()'/>
- </cell>
- <cell fill='horizontal' columns='2'>
- <JButton id='remove' text='isisfish.common.remove' visible='{isExistingValue()}'
- onActionPerformed='getHandler().remove(this)'/>
- </cell>
- <cell fill='horizontal'>
- <JButton id='save' text='isisfish.common.save' enabled='{!getFactorNameField().getText().isEmpty()}'
- onActionPerformed='getHandler().save(this)'/>
- </cell>
- </row>
- </Table>
-</JDialog>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,148 +0,0 @@
-<!--
- #%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%
- -->
-<ContinuousPanelContainerUI>
-
- <Boolean id="percentageTypeFactor" javaBean="true" />
-
- <import>
- org.apache.commons.lang3.StringUtils
- org.nuiton.math.matrix.gui.MatrixPanelEditor
- org.nuiton.math.matrix.MatrixND
- java.awt.CardLayout
- java.beans.PropertyChangeEvent
- java.beans.PropertyChangeListener
- </import>
-
- <script><![CDATA[
-public void init(MatrixND min, MatrixND max, MatrixND referenceValue, String coefficient) {
- minValuePanel.setMatrix(min);
- maxValuePanel.setMatrix(max);
- referenceValuePanel.setMatrix(referenceValue);
- coefficientField.setText(coefficient);
-}
-
-public void initExisting(MatrixND min, MatrixND max, MatrixND referenceValue, String coefficient) {
- init(min, max, referenceValue, coefficient);
- setPercentageTypeFactor(StringUtils.isNotBlank(coefficient));
-}
-
-@Override
-public boolean isFactorValid() {
- boolean valid = false;
-
- try {
- if (continueSelected) {
- if (percentageTypeFactor) {
- Double coefficient = Double.parseDouble(coefficientField.getText().trim());
- valid = coefficient != null;
- }
- else {
- valid = true;
- }
- }
- else {
- valid = true;
- }
- }
- catch (NumberFormatException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Double parse error", eee);
- }
- }
-
- return valid;
-}
-
-protected void $afterCompleteSetup() {
- addPropertyChangeListener(PROPERTY_PERCENTAGE_TYPE_FACTOR, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if ((Boolean)evt.getNewValue()) {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "percentageType");
- } else {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "minMaxType");
- }
- }
- });
-}
- ]]></script>
- <JPanel id="content">
- <Table constraints='BorderLayout.CENTER'>
- <row>
- <cell fill='horizontal' weightx='1'>
- <JRadioButton text="isisfish.sensitivity.continuouspercentagetype"
- onActionPerformed="setPercentageTypeFactor(true)"
- selected="{isPercentageTypeFactor()}"/>
- </cell>
- <cell fill='horizontal' weightx='1'>
- <JRadioButton text="isisfish.sensitivity.continuousminmaxtype"
- onActionPerformed="setPercentageTypeFactor(false)"
- selected="{!isPercentageTypeFactor()}"/>
- </cell>
- </row>
- <row>
- <cell fill='both' weightx='1' weighty='1' columns="2">
- <JPanel layout="{new CardLayout()}" id="hidablePanel">
- <Table constraints='"percentageType"' border='{BorderFactory.createTitledBorder("")}'>
- <row>
- <cell fill='horizontal' columns="2">
- <JLabel text='isisfish.sensitivity.referencevalue'/>
- </cell>
- </row>
- <row>
- <cell fill='both' weighty='1' columns="2">
- <MatrixPanelEditor id='referenceValuePanel'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.sensitivity.coefficient'/>
- </cell>
- <cell fill='horizontal' weightx='1'>
- <JTextField id='coefficientField'/>
- </cell>
- </row>
- </Table>
-
- <Table constraints='"minMaxType"' border='{BorderFactory.createTitledBorder("")}'>
- <row>
- <cell fill='both' weightx='1' weighty='1'>
- <JTabbedPane>
- <tab title="isisfish.sensitivity.firstValue">
- <MatrixPanelEditor id='minValuePanel'/>
- </tab>
- <tab title="isisfish.sensitivity.lastValue">
- <MatrixPanelEditor id='maxValuePanel'/>
- </tab>
- </JTabbedPane>
- </cell>
- </row>
- </Table>
- </JPanel>
- </cell>
- </row>
- </Table>
- </JPanel>
-</ContinuousPanelContainerUI>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2009 - 2012 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
@@ -37,14 +37,12 @@
fr.ifremer.isisfish.simulator.sensitivity.Factor
fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis
fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain
- fr.ifremer.isisfish.ui.models.common.StringListModel
+ fr.ifremer.isisfish.ui.models.common.GenericListModel
fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportListModel
fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportListRenderer
fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportNameListRenderer
fr.ifremer.isisfish.ui.models.sensitivityanalysis.SensitivityAnalysisComboModel
fr.ifremer.isisfish.ui.models.sensitivityanalysis.SensitivityAnalysisComboRenderer
- fr.ifremer.isisfish.ui.models.sensitivityanalysis.SensitivityAnalysisListModel
- fr.ifremer.isisfish.ui.models.sensitivityanalysis.SensitivityAnalysisListRenderer
fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor
fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer
fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel
@@ -151,12 +149,12 @@
factorCardinality.setModel(model);
}
- protected StringListModel getAvailableExportListModel() {
+ protected GenericListModel<String> getAvailableExportListModel() {
List<String> exportNames = getSimulAction().getSensitivityExportNames();
- StringListModel model = new StringListModel(exportNames);
+ GenericListModel<String> model = new GenericListModel<String>(exportNames);
return model;
}
-
+
/**
* Add multiples export.
*
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2011 - 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
@@ -23,72 +23,44 @@
package fr.ifremer.isisfish.ui.sensitivity;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
import java.util.List;
-import java.util.SortedMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.text.JTextComponent;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
-import jaxx.runtime.context.JAXXInitialContext;
-
-import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
import org.nuiton.math.matrix.gui.MatrixPanelEditor;
import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaEntityContextable;
import org.nuiton.util.FileUtil;
import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.mexico.MexicoHelper;
-import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.types.RangeOfValues;
import fr.ifremer.isisfish.types.TimeStep;
-import fr.ifremer.isisfish.types.TimeUnit;
-import fr.ifremer.isisfish.ui.SimulationUI;
-import fr.ifremer.isisfish.ui.input.InputAction;
import fr.ifremer.isisfish.ui.input.InputContentUI;
import fr.ifremer.isisfish.ui.input.InputHandler;
import fr.ifremer.isisfish.ui.input.InputOneEquationUI;
@@ -96,10 +68,10 @@
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeHelper;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeRenderer;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
import fr.ifremer.isisfish.ui.simulator.RuleChooser;
import fr.ifremer.isisfish.ui.simulator.SimulAction;
-import fr.ifremer.isisfish.ui.widget.editor.MonthComponent;
-import fr.ifremer.isisfish.ui.widget.editor.StepComponent;
/**
* Handler for sensitivity tab ui (fishery region factors).
@@ -210,8 +182,8 @@
* @param continuous continuous
*/
public void addNewFactorGroup(SensitivityTabUI sensitivityTabUI, boolean continuous) {
- String factorName = JOptionPane.showInputDialog(sensitivityTabUI, _("isisfish.sensitivity.newfactorname"),
- _("isisfish.sensitivity.title"), JOptionPane.QUESTION_MESSAGE);
+ String factorName = JOptionPane.showInputDialog(sensitivityTabUI, t("isisfish.sensitivity.newfactorname"),
+ t("isisfish.sensitivity.title"), JOptionPane.QUESTION_MESSAGE);
if (StringUtils.isNotBlank(factorName)) {
FactorGroup rootFactorGroup = sensitivityTabUI.getSimulAction().getFactorGroup();
@@ -250,8 +222,8 @@
}
sensitivityTabUI.setFactorModel();
} catch (IllegalArgumentException ex) {
- JOptionPane.showMessageDialog(sensitivityTabUI, _("isisfish.sensitivity.moveillegal"),
- _("isisfish.sensitivity.title"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(sensitivityTabUI, t("isisfish.sensitivity.moveillegal"),
+ t("isisfish.sensitivity.title"), JOptionPane.ERROR_MESSAGE);
}
}
@@ -270,7 +242,7 @@
// clic droit
if (e.getButton() == MouseEvent.BUTTON3) {
JPopupMenu menu = new JPopupMenu();
- JMenuItem menuItemDelete = new JMenuItem(_("isisfish.common.delete"));
+ JMenuItem menuItemDelete = new JMenuItem(t("isisfish.common.delete"));
menuItemDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
@@ -303,7 +275,7 @@
if (!(selectedObject instanceof FactorGroup)) {
Factor selectedFactor = (Factor)selectedObject;
FactorWizardUI factorWizardUI = new FactorWizardUI(sensitivityTabUI);
- SensitivityInputHandler handler = factorWizardUI.getHandler();
+ SensitivityWizardHandler handler = factorWizardUI.getHandler();
handler.initExistingFactor(factorWizardUI, selectedFactor);
factorWizardUI.pack();
factorWizardUI.setLocationRelativeTo(sensitivityTabUI);
@@ -342,246 +314,6 @@
}
/**
- * Un init new se fait toujours sur une entité.
- *
- * On recupere des info sur le type correspondant à la proprieté a mettre
- * en facteur pour savoir le composant d'edition et s'il peut etre continue
- * ou pas.
- *
- * @param factorWizardUI factorWizardUI
- * @param bean bean in current ui
- * @param property bean property to edit
- */
- public void initNewFactor(FactorWizardUI factorWizardUI, TopiaEntityContextable bean, String property) {
-
- // path is topiaId#property
- // ex : fwn#fsd#0.3425345#name
- // for JAXX : cOrigine start with upper case
- // for commons beanutils : must be lower case
- String beanProperty = StringUtils.uncapitalize(property);
- String path = bean.getTopiaId() + "#" + beanProperty;
- factorWizardUI.setFactorPath(path);
- factorWizardUI.getFactorNameField().setText(bean.toString() + "." + beanProperty);
-
- // get value for pointed path
- //TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
- //Class<?> classForPath = getPropertyClass(path, topiaContext);
- // peut etre pas une bonne idée que ce soit basé sur les valeurs
- // au lieu des types (mais pour RangeOfValues, pas evident)
- Object valueForPath = getPropertyValue(bean, beanProperty);
- boolean continuePossible = canBeContinue(valueForPath);
- boolean continueSelected = isContinue(valueForPath);
-
- // init panel
- if (continuePossible) {
- factorWizardUI.continuousPanel = getContinuousPanel(valueForPath, bean, property);
- factorWizardUI.getContinuousPanelContainer().add(factorWizardUI.continuousPanel, BorderLayout.CENTER);
- }
-
- // after, for binding on continuePossible, continueSelected to work
- factorWizardUI.setContinuePossible(continuePossible);
- factorWizardUI.setContinueSelected(continueSelected);
- factorWizardUI.getContinueRadio().setSelected(continueSelected);
- }
-
- /**
- * Permet d'intialiser le wizard avec une valeur independante de la
- * provenance (utile pour les facteurs sur les parametres de regles).
- *
- * TODO chatellier : ne doit pas fonctionner pour des equations.
- *
- * @param factorWizardUI factorWizardUI
- * @param value value
- */
- public void initNewFactorWithValue(FactorWizardUI factorWizardUI, Object value) {
- boolean continuePossible = canBeContinue(value);
- boolean continueSelected = isContinue(value);
-
- // init panel
- if (continuePossible) {
- factorWizardUI.continuousPanel = getContinuousPanel(value, null, null);
- factorWizardUI.getContinuousPanelContainer().add(factorWizardUI.continuousPanel, BorderLayout.CENTER);
- }
-
- // after, for binding on continuePossible, continueSelected to work
- factorWizardUI.setContinuePossible(continuePossible);
- factorWizardUI.setContinueSelected(continueSelected);
- factorWizardUI.getContinueRadio().setSelected(continueSelected);
- }
-
- /**
- * Reaffiche un facteur existant.
- *
- * @param factorWizardUI
- * @param factor factor
- */
- public void initExistingFactor(FactorWizardUI factorWizardUI, Factor factor) {
-
- factorWizardUI.setExistingValue(true);
- String factorPath = factor.getPath();
- Domain domain = factor.getDomain();
- String factorName = factor.getName();
- factorWizardUI.setFactorPath(factorPath);
- factorWizardUI.getComment().setText(factor.getComment());
-
- // dans le cas d'un facteur equation
- // il faut enlever la varible du nom
- // sinon, à la sauvegarde elle sera reajoutée
- if (domain instanceof EquationContinuousDomain) {
- EquationContinuousDomain equationDomain = (EquationContinuousDomain)domain;
- String suffix = equationDomain.getVariableName();
- factorName = StringUtils.removeEnd(factorName, "." + suffix);
- // can be called _xxx after char remplacement for R
- factorName = StringUtils.removeEnd(factorName, "_" + suffix);
- }
-
- if (domain instanceof ContinuousDomain) {
-
- ContinuousDomain cDomain = (ContinuousDomain) domain;
-
- TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
- factorWizardUI.continuousPanel = getContinuousPanelWithValue(factor, cDomain, topiaContext);
- factorWizardUI.getContinuousPanelContainer().add(factorWizardUI.continuousPanel, BorderLayout.CENTER);
-
- factorWizardUI.getContinueRadio().setSelected(true);
- factorWizardUI.setContinueSelected(true);
- factorWizardUI.setContinuePossible(true);
- } else {
-
- // restaure discrete domain
- DiscreteDomain dDomain = (DiscreteDomain)domain;
-
- int nb = dDomain.getValues().size();
- factorWizardUI.getDiscretNumber().setText(String.valueOf(nb));
- factorWizardUI.discretComponents.clear();
- factorWizardUI.getTabPane().removeAll();
-
- SortedMap<Object, Object> values = dDomain.getValues();
- int i = 0;
- for (Object o : values.values()) {
- i++;
- JComponent c = null;
- if (o != null) {
- c = getEditorWithValue(factorWizardUI, factor, dDomain, o);
- }
- else {
- if (log.isWarnEnabled()) {
- log.warn("Null value in factor");
- }
- }
- factorWizardUI.discretComponents.add(c);
- JScrollPane js = new JScrollPane(c);
- String tabName = _("isisfish.sensitivity.discretevaluelabel", i);
- factorWizardUI.getTabPane().addTab(tabName, js);
- }
-
- // init non selected continous panel
- if (factorPath.indexOf('#') != -1) {
- try {
- // get initial value in database
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
- TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
- String getter = "get" + StringUtils.capitalize(property);
- Method m = entity.getClass().getMethod(getter);
- Object valueForPath = m.invoke(entity);
-
- boolean continuePossible = canBeContinue(valueForPath);
- factorWizardUI.setContinuePossible(continuePossible);
- if (continuePossible) {
- factorWizardUI.continuousPanel = getContinuousPanel(valueForPath, entity, property);
- factorWizardUI.getContinuousPanelContainer().add(factorWizardUI.continuousPanel, BorderLayout.CENTER);
- }
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't get factor path database value", ex);
- }
- }
- }
-
- factorWizardUI.getFactorNameField().setText(factorName);
- }
-
- /**
- * Refresh tab for discrete factor numbers.
- *
- * @param factorWizardUI factorWizardUI
- */
- public void addTabs(FactorWizardUI factorWizardUI) {
- String discreteNumber = factorWizardUI.getDiscretNumber().getText();
- int nbTab = Integer.parseInt(discreteNumber);
- factorWizardUI.discretComponents.clear();
- factorWizardUI.getTabPane().removeAll();
- for (int i = 1; i <= nbTab ; i++) {
- JComponent c = getNewDiscreteComponent(factorWizardUI);
- factorWizardUI.discretComponents.add(c);
- String tabName = _("isisfish.sensitivity.discretevaluelabel", i);
- factorWizardUI.getTabPane().addTab(tabName, c);
- }
- factorWizardUI.pack();
- }
-
- /**
- * Retourne le type de valeur pointé par le path du facteur.
- *
- * Il vaut mieux recuperer le type de la propriété a mettre en facteur
- * que la valeur elle meme; elle peut être null et on ne peut pas en
- * deduire sont type.
- *
- * @param factorPath factor path
- * @param context context
- * @return class
- */
- protected Class<?> getPropertyClass(String factorPath, TopiaContext context) {
- Class<?> result = null;
- if (factorPath.indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
-
- try {
- TopiaEntity entity = context.findByTopiaId(topiaId);
-
- if (log.isDebugEnabled()) {
- log.debug("Factor path " + factorPath + " denoted entity " + entity);
- }
-
- String getter = "get" + StringUtils.capitalize(property);
- Method method = entity.getClass().getMethod(getter);
- result = method.getReturnType();
-
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't find entity for " + topiaId, ex);
- }
- }
- }
- return result;
- }
-
- /**
- * Get value for fieldName in entity.
- *
- * @param entity
- * @param fieldName
- * @return method return value
- */
- protected Object getPropertyValue(Object entity, String fieldName) {
- Object result = null;
- try {
- // fieldName maybe be sometime lower case
- String getMethod = "get" + StringUtils.capitalize(fieldName);
-
- Method m = entity.getClass().getMethod(getMethod);
- result = m.invoke(entity);
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't get entity value", ex);
- }
- }
- return result;
- }
-
- /**
* Return if type can be defined as a factor.
*
* @param type type
@@ -606,639 +338,6 @@
}
/**
- * Return true if value can be defined in continuous factor.
- *
- * Il serait plus interessant de le faire sur les types et non sur les
- * valeur mais pour {@link RangeOfValues} par exemple, seule la valeur
- * a un type Float... donc pas evident.
- *
- * @param value value
- * @return continuous enabled
- */
- public boolean canBeContinue(Object value) {
- boolean result = false;
-
- if (value instanceof Double) {
- result = true;
- } else if (value instanceof Long) {
- result = true;
- } else if (value instanceof Equation) {
- result = true;
- } else if (value instanceof MatrixND) {
- result = true;
- } else if (value instanceof RangeOfValues) {
- RangeOfValues rangeOfValues = (RangeOfValues)value;
- if (rangeOfValues.getType().equals("Float")) {
- result = true;
- }
- } else if (value instanceof TimeUnit) {
- result = true;
- } else if (value instanceof String) {
- // todo fix string value :(
- result = true;
- }
-
- return result;
- }
-
- /**
- * Return if value is is continue factor enable.
- *
- * @param value value to test
- * @return {@code true} if value is is continue factor enable
- */
- public boolean isContinue(Object value) {
- boolean result = false;
- if (value instanceof RangeOfValues) {
- RangeOfValues range = (RangeOfValues)value;
- if (range.getType().equals(RangeOfValues.TYPE_FLOAT)) {
- String textValue = range.getValues();
- // TODO need comment !!!
- if (textValue.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
- result = true;
- }
- }
- }
- return result;
- }
-
- /**
- * Get copy of component with original entity value as default value.
- *
- * @param value value
- * @param bean bean
- * @param property property
- * @return component copy
- */
- public ContinuousPanelContainerUI getContinuousPanel(Object value, TopiaEntityContextable bean, String property) {
- ContinuousPanelContainerUI result;
-
- if (value instanceof RangeOfValues) {
- RangeOfValues rangeOfValues = (RangeOfValues)value;
- DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- String values = rangeOfValues.getValues();
- String min = "0";
- String max = "0";
- if (values.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
- int first = values.indexOf("-");
- if (first != -1) {
- min = values.substring(0, first);
- max = values.substring(first + 1);
- }
- }
- ui.init(min, max, min, null);
- result = ui;
- }
- else if (value instanceof Equation) {
- Equation equation = (Equation)value;
- EquationContinuousPanelUI ui = new EquationContinuousPanelUI(new JAXXInitialContext().add(new InputAction()));
- ui.setSelectedEquation(equation);
- ui.setText(_("isisfish.common.equation")); // can't get real name
- ui.setFormuleCategory(equation.getCategory());
- ui.setClazz(equation.getClass());
- ui.setBeanProperty(property);
- ui.setBean(bean);
- result = ui;
- } else if (value instanceof MatrixND) {
- MatrixND matrix = (MatrixND)value;
- MatrixContinuousPanelUI matrixPanel = new MatrixContinuousPanelUI();
- matrixPanel.init(matrix.clone(), matrix.clone(), matrix.clone(), null);
- result = matrixPanel;
- } else if (value instanceof TimeUnit) {
- TimeUnit timeUnit = (TimeUnit)value;
- DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- ui.init(String.valueOf(timeUnit.getTime()), String.valueOf(timeUnit.getTime()),
- String.valueOf(timeUnit.getTime()), null);
- result = ui;
- } else {
- DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- ui.init(String.valueOf(value), String.valueOf(value), String.valueOf(value), null);
- result = ui;
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Component for " + value + " (" + bean + ", " + property + ")");
- log.debug(" > " + result);
- }
-
- return result;
- }
-
- /**
- * Get continuous editor for component with given value.
- *
- * @param domain domain
- * @param factor factor
- * @param topiaContext context used to get database value in case of equation factors
- * @return component copy
- */
- public ContinuousPanelContainerUI getContinuousPanelWithValue(Factor factor, ContinuousDomain domain, TopiaContext topiaContext) {
- ContinuousPanelContainerUI result = null;
-
- if (domain instanceof EquationContinuousDomain) {
- String factorPath = factor.getPath();
- if (factor.getPath().indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
-
- // get bean in database
- try {
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
-
- String getter = "get" + StringUtils.capitalize(property);
- Method m = entity.getClass().getMethod(getter);
- Equation value = (Equation)m.invoke(entity);
-
- // fill component
- EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
- new JAXXInitialContext().add(new InputAction()));
- ui.setText(value.getContent());
- ui.setFormuleCategory(value.getCategory());
- ui.setText(_("isisfish.common.equation")); // can't get real name
- ui.setClazz(value.getClass());
- ui.setBeanProperty(property);
- ui.setBean(entity);
-
- EquationContinuousDomain equationDomain = (EquationContinuousDomain) domain;
- ui.addDomain(equationDomain);
-
- result = ui;
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't restore initial factor database property", ex);
- }
- }
- // TODO path with no # (normalement pas possible pour les equations)
- } else if (domain instanceof MatrixContinuousDomain) {
- MatrixContinuousPanelUI continuousPanel = new MatrixContinuousPanelUI();
- // factor numerique continue (percentage)
- if (domain.isPercentageType()) {
- MatrixND matrix = (MatrixND)domain.getReferenceValue();
- // il y a bien 3 fois domain.getReferenceValue() pas d'erreur
- continuousPanel.initExisting(
- matrix.clone(),
- matrix.clone(),
- matrix.clone(),
- String.valueOf(domain.getCoefficient() * 100.0));
- }
- else {
- // factor numerique continue (min/max)
- // pas d'erreur sur 2 fois domain.getMinBound()
- MatrixND matrixMin = (MatrixND)domain.getMinBound();
- MatrixND matrixMax = (MatrixND)domain.getMaxBound();
- continuousPanel.initExisting(
- matrixMin.clone(),
- matrixMax.clone(),
- matrixMin.clone(),
- "");
- }
- result = continuousPanel;
- } else {
- DefaultContinuousPanelUI continuousPanel = new DefaultContinuousPanelUI();
-
- // factor numerique continue (percentage)
- if (domain.isPercentageType()) {
- // il y a bien 3 fois domain.getReferenceValue() pas d'erreur
- continuousPanel.initExisting(
- String.valueOf(domain.getReferenceValue()),
- String.valueOf(domain.getReferenceValue()),
- String.valueOf(domain.getReferenceValue()),
- String.valueOf(domain.getCoefficient() * 100.0 ));
- }
- else {
- // factor numerique continue (min/max)
- // pas d'erreur sur 2 fois domain.getMinBound()
- // on initialise avec minBound comme valeur de référence.
- continuousPanel.initExisting(
- String.valueOf(domain.getMinBound()),
- String.valueOf(domain.getMaxBound()),
- String.valueOf(domain.getMinBound()),
- "");
- }
- result = continuousPanel;
- }
-
- return result;
- }
-
- /**
- * Get editor for value (discrete).
- *
- * @param factorWizardUI context for context value (RegionStorage)
- * @param value type to get editor
- * @param factor
- * @param domain
- * @return component
- */
- protected JComponent getEditorWithValue(FactorWizardUI factorWizardUI, Factor factor, Domain domain, Object value) {
-
- JComponent result = null;
-
- if (Double.class.isAssignableFrom(value.getClass())) {
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(value));
- }
- else if (double.class.isAssignableFrom(value.getClass())) {
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(value));
- }
- else if (MatrixND.class.isAssignableFrom(value.getClass())) {
- result = new MatrixPanelEditor();
- ((MatrixPanelEditor)result).setMatrix((MatrixND)value);
- }
- else if (domain instanceof RuleDiscreteDomain) {
- result = new RuleChooser(factorWizardUI);
- ((RuleChooser)result).setRulesList((List<Rule>)value);
- }
- else if (domain instanceof EquationDiscreteDomain) {
- String factorPath = factor.getPath();
- if (factor.getPath().indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
-
- // get bean in database
- try {
- TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
-
- String getter = "get" + StringUtils.capitalize(property);
- Method m = entity.getClass().getMethod(getter);
- Equation equation = (Equation)m.invoke(entity);
-
- // fill component
- InputOneEquationUI ui = new InputOneEquationUI(factorWizardUI);
- ui.setAutoSaveModification(false);
- ui.setFormuleCategory(equation.getCategory());
- ui.setText(_("isisfish.common.equation")); // can't get real name
- ui.setClazz(value.getClass());
- ui.setBeanProperty(property);
- ui.setBean(entity); // set bean fire content modification event
- ui.getEditor().setText((String)value);
- ui.setActive(true);
-
- result = ui;
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't restore initial factor database property", ex);
- }
- }
- // TODO path with no # (normalement pas possible pour les equations)
- }
- else if (value instanceof TimeUnit) {
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(((TimeUnit)value).getTime()));
- } else if (value instanceof TopiaEntity) {
- RegionStorage regionStorage = factorWizardUI.getContextValue(RegionStorage.class);
- TopiaContext context = null;
- try {
- context = regionStorage.getStorage().beginTransaction();
- List list = context.findAll("from " + value.getClass().getName());
- JComboBox c = new JComboBox(list.toArray());
- c.setSelectedItem(value);
- result = c;
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- } finally {
- if (context != null) {
- try {
- context.closeContext();
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- }
- }
- }
- } else if (value instanceof TimeStep) {
- TimeStep timeStep = (TimeStep)value;
- result = new StepComponent(timeStep.getMonth().getMonthNumber(), timeStep.getYear());
- } else if (value instanceof Month) {
- Month month = (Month)value;
- result = MonthComponent.createMounthCombo(month.getMonthNumber());
- } else if (value instanceof String) {
- // valeur non typées ???
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(value));
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Editor for value " + value + " is " + result);
- }
-
- return result;
- }
-
- /**
- * Get copy of component with original entity value as default value.
- * Used to add new tab to a new or existing factor.
- *
- * Le composant retourné est inclut dans un jscrollpane (sauf pour les
- * matrices qui contient deja un jscrollpane)
- *
- * @param factorWizardUI factorWizardUI
- * @return component copy
- */
- public JComponent getNewDiscreteComponent(FactorWizardUI factorWizardUI) {
-
- JComponent result = null;
- String factorPath = factorWizardUI.getFactorPath();
-
- if (factorPath.indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
- TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
-
- try {
- // get bean in database
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
- String getter = "get" + StringUtils.capitalize(property);
- Method m = entity.getClass().getMethod(getter);
- Object value = m.invoke(entity);
-
- // init new jcomponent for value
- if (value instanceof Number) {
- result = new JTextField(String.valueOf(value));
- } else if (value instanceof MatrixND) {
- result = new MatrixPanelEditor();
- MatrixND matrix = ((MatrixND)value).copy();
- ((MatrixPanelEditor)result).setMatrix(matrix);
- } else if (value instanceof RangeOfValues) {
- RangeOfValues rangeOfValues = (RangeOfValues)value;
- result = new JTextField(rangeOfValues.getValues());
- } else if (value instanceof TimeUnit) {
- TimeUnit timeUnit = (TimeUnit)value;
- result = new JTextField(String.valueOf(timeUnit.getTime()));
- } else if (value instanceof Equation) {
- Equation equation = (Equation)value;
- // fill component
- InputOneEquationUI ui = new InputOneEquationUI(factorWizardUI);
- ui.setAutoSaveModification(false);
- ui.setText(equation.getContent());
- ui.setFormuleCategory(equation.getCategory());
- ui.setText(_("isisfish.common.equation")); // can't get real name
- ui.setClazz(value.getClass());
- ui.setBeanProperty(property);
- ui.setBean(entity);
- ui.setActive(true);
- result = ui;
- }
-
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't restore intial factor database property", ex);
- }
- }
- else {
- // dans ce cas c'est des regles, pop de départ ou parametres de regles
- // c'est un peu galere car le code n'a rien a voir avec le reste
- // donc, c'est du cas par cas
- if (factorPath.equals("parameters.rules")) {
- result = new RuleChooser(factorWizardUI);
- } else if (factorPath.startsWith("parameters.population.")) {
- MatrixContinuousPanelUI currentPanel = (MatrixContinuousPanelUI)factorWizardUI.continuousPanel;
- // on copie une des matrices du composant
- MatrixND matrix = currentPanel.getReferenceValuePanel().getMatrix().copy();
- result = new MatrixPanelEditor(); // bug in 2.2.x with matrix in constructor
- ((MatrixPanelEditor)result).setMatrix(matrix);
- } else if (factorPath.startsWith("parameters.rule.")) {
- Pattern pattern = Pattern.compile("^parameters\\.rule\\.\\d+\\.parameter\\.\\w+\\.(.+)$");
- Matcher matcher = pattern.matcher(factorPath);
- if (matcher.matches()) {
- String className = matcher.group(1);
- try {
- if (log.isDebugEnabled()) {
- log.debug("Looking for a component for class : " + className);
- }
- Class type = Class.forName(className);
- result = getRuleDiscreteComponent(factorWizardUI, type);
- } catch (ClassNotFoundException ex) {
- if (log.isWarnEnabled()) {
- log.warn("Can't find class for rule parameter", ex);
- }
- }
- } else {
- // double...
- result = new JTextField();
- }
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Can't find component for path " + factorPath);
- }
- }
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Component for path " + factorPath + " is " + result);
- }
-
- // hack : si on met 2 fois un jscrollpane, rien ne s'affiche
- if (!(result instanceof MatrixPanelEditor)) {
- result = new JScrollPane(result);
- }
-
- return result;
- }
-
- /**
- * Get new special
- * @param clazz
- * @return
- */
- protected JComponent getRuleDiscreteComponent(FactorWizardUI factorWizardUI, Class type) {
-
- JComponent result = null;
-
- if (TopiaEntity.class.isAssignableFrom(type)) {
- RegionStorage regionStorage = factorWizardUI.getContextValue(RegionStorage.class);
- TopiaContext context = null;
- try {
- context = regionStorage.getStorage().beginTransaction();
- List list = context.findAll("from " + type.getName());
- JComboBox c = new JComboBox(list.toArray());
- result = c;
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- } finally {
- if (context != null) {
- try {
- context.closeContext();
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- }
- }
- }
- } else if (TimeStep.class.isAssignableFrom(type)) {
- result = new StepComponent(0, 0);
- } else if (Month.class.isAssignableFrom(type)) {
- result = MonthComponent.createMounthCombo(0);
- } else {
- result = new JTextField();
- }
-
- return result;
- }
-
- /**
- * Save current factor.
- *
- * @param factorWizardUI factorWizardUI
- */
- public void save(FactorWizardUI factorWizardUI) {
-
- // first check is factor is valid
- boolean factorValid = true;
- ContinuousPanelContainerUI continuousPanel = factorWizardUI.continuousPanel;
- if (continuousPanel != null) {
- factorValid = continuousPanel.isFactorValid();
- }
- if (!factorValid) {
- JOptionPane.showMessageDialog(factorWizardUI, _("isisfish.sensitivity.factor.notvalid"),
- _("isisfish.sensitivity.title"), JOptionPane.ERROR_MESSAGE);
- return;
- }
-
- // call specific method depending on continuous/discrete
- if (factorWizardUI.getContinueRadio().isSelected()) {
- saveContinue(factorWizardUI.getFactorNameField().getText(),
- factorWizardUI.getComment().getText(), factorWizardUI.getFactorPath(), factorWizardUI.continuousPanel,
- factorWizardUI.getSimulAction(), factorWizardUI.isExistingValue());
- } else {
- saveDiscret(factorWizardUI.getFactorNameField().getText(),
- factorWizardUI.getComment().getText(), factorWizardUI.getFactorPath(), factorWizardUI.discretComponents,
- factorWizardUI.getSimulAction(), factorWizardUI.isExistingValue());
- }
-
- // refresh factor list
- factorWizardUI.getContextValue(SimulationUI.class, "SimulationUI").refreshFactorTree();
-
- // close window
- factorWizardUI.dispose();
- }
-
- /**
- * Save a continous factor.
- *
- * @param name factor name
- * @param comment comment
- * @param path factor path
- * @param panel panel
- * @param action action
- * @param exist exist
- */
- protected void saveContinue(String name,
- String comment, String path, ContinuousPanelContainerUI panel,
- SimulAction action, boolean exist) {
- if (panel instanceof MatrixContinuousPanelUI) {
- MatrixContinuousPanelUI matrixPanel = (MatrixContinuousPanelUI) panel;
- if (matrixPanel.isPercentageTypeFactor()) {
- MatrixND referenceValue = matrixPanel.getReferenceValuePanel().getMatrix();
- Double coefficient = Double.valueOf(matrixPanel.getCoefficientField().getText()) / 100;
- action.addContinuousMatrixFactor(name, comment, path,
- referenceValue, coefficient, exist);
- }
- else {
- MatrixND minBound = matrixPanel.getMinValuePanel().getMatrix();
- MatrixND maxBound = matrixPanel.getMaxValuePanel().getMatrix();
- action.addContinuousMatrixFactor(name, comment, path,
- minBound, maxBound, exist);
- }
-
- } else if (panel instanceof EquationContinuousPanelUI) {
- try {
- EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
-
- TopiaEntityContextable bean = equationPanel.getBean();
- TopiaContext topiaContext = bean.getTopiaContext();
-
- String property = equationPanel.getBeanProperty();
- property = StringUtils.capitalize(property) + "Content";
- Method m = bean.getClass().getMethod("set" + property, String.class);
- m.invoke(bean, equationPanel.getEditor().getEditor().getText());
-
- // Save equation
- bean.update();
- topiaContext.commitTransaction();
-
- List<EquationContinuousDomain> domains = equationPanel.getDomains();
- for (EquationContinuousDomain domain : domains) {
- action.addContinuousEquationFactor(name, comment, path, domain, exist);
- }
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't call method : ", ex);
- }
- }
- } else if (panel instanceof DefaultContinuousPanelUI) {
- DefaultContinuousPanelUI defaultPanel = (DefaultContinuousPanelUI) panel;
-
- if (defaultPanel.isPercentageTypeFactor()) {
- Double referenceValue = Double.valueOf(defaultPanel.getReferenceValueField().getText());
- Double coefficient = Double.valueOf(defaultPanel.getCoefficientField().getText()) / 100;
- action.addContinuousPercentageFactor(name, comment, path,
- referenceValue, coefficient, exist);
- }
- else {
- double minBound = Double.parseDouble(defaultPanel.getContinueMin().getText());
- double maxBound = Double.parseDouble(defaultPanel.getContinueMax().getText());
- action.addContinuousFactor(name, comment, path,
- minBound, maxBound, exist);
- }
- }
- }
-
- /**
- * Save a discret factor.
- *
- * @param name
- * @param comment
- * @param path
- * @param components
- * @param action
- * @param exist
- */
- protected void saveDiscret(String name,
- String comment, String path, List<JComponent> components,
- SimulAction action, boolean exist) {
- List<Object> values = new ArrayList<Object>();
-
- boolean ruleFactor = false;
- boolean equationFactor = false;
- for (JComponent component : components) {
-
- // component can be imbricated into a scroll pane
- if (component instanceof JScrollPane) {
- component = (JComponent)((JScrollPane)component).getViewport().getComponent(0);
- }
-
- // get internat component value
- Object result = null;
- if (component instanceof JTextComponent) {
- result = ((JTextComponent) component).getText();
- } else if (component instanceof MatrixPanelEditor) {
- result = ((MatrixPanelEditor) component).getMatrix();
- } else if (component instanceof InputOneEquationUI) {
- result = ((InputOneEquationUI) component).getEditor().getText();
- equationFactor = true;
- } else if (component instanceof RuleChooser) {
- result = ((RuleChooser)component).getRulesList();
- ruleFactor = true;
- } else if (component instanceof StepComponent) {
- result = new TimeStep(((StepComponent)component).getSelectedValue());
- } else if (component instanceof MonthComponent) {
- result = new Month(((MonthComponent)component).getSelectedValue());
- } else if (component instanceof JComboBox) {
- // on suppose qu'il y a dedans des TopiaEntity
- result = ((JComboBox)component).getSelectedItem();
- }
-
- values.add(result);
- }
-
- if (ruleFactor) {
- action.addDiscreteRuleFactor(name, comment, path, values, exist);
- } else if (equationFactor) {
- action.addDiscreteEquationFactor(name, comment, path, values, exist);
- } else {
- action.addDiscreteFactor(name, comment, path, values, exist);
- }
- }
-
- /**
* Return value in swing component that could be next used into factor
* for discrete factor values.
*
@@ -1264,27 +363,16 @@
}
/**
- * Remove current factor.
- *
- * @param factorWizardUI factorWizardUI
- */
- public void remove(FactorWizardUI factorWizardUI) {
- factorWizardUI.getSimulAction().removeFactor(factorWizardUI.getFactorPath());
- factorWizardUI.getContextValue(SimulationUI.class, "SimulationUI").refreshFactorTree();
- factorWizardUI.dispose();
- }
-
- /**
* Export factors list to xml mexico file.
*
* @since 4.1.1.2
*/
public void exportFactorsToMexico(SensitivityTabUI view) {
- File xmlFile = FileUtil.getFile(_("isisfish.sensitivity.mexico.exporttoxml.title"),
- _("isisfish.sensitivity.mexico.exporttoxml.approve"), view,
+ File xmlFile = FileUtil.getFile(t("isisfish.sensitivity.mexico.exporttoxml.title"),
+ t("isisfish.sensitivity.mexico.exporttoxml.approve"), view,
new String[]{
".*\\.xml",
- _("isisfish.sensitivity.mexico.exporttoxml.filter")
+ t("isisfish.sensitivity.mexico.exporttoxml.filter")
});
if (xmlFile != null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2011 - 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
@@ -50,5 +50,4 @@
return JOptionPane.YES_OPTION;
}
-
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
@@ -27,14 +27,13 @@
java.util.ArrayList
java.io.File
java.io.IOException
- javax.swing.ComboBoxModel
- org.nuiton.util.FileUtil
+ org.apache.commons.io.FileUtils
fr.ifremer.isisfish.datastore.SimulationStorage
fr.ifremer.isisfish.simulator.launcher.SimulationService
fr.ifremer.isisfish.simulator.launcher.SimulationJob
fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener
fr.ifremer.isisfish.ui.simulator.SimulAction
- fr.ifremer.isisfish.ui.models.common.StringComboModel
+ fr.ifremer.isisfish.ui.models.common.GenericComboModel
</import>
<script><![CDATA[
@@ -54,12 +53,12 @@
if (log.isDebugEnabled()) {
log.debug("Refresh second pass UI simulations list");
}
- StringComboModel model = (StringComboModel)fieldSensitivitySimulationSelect.getModel();
+ GenericComboModel<String> model = (GenericComboModel)fieldSensitivitySimulationSelect.getModel();
String simulationName = job.getId();
if (simulationName.startsWith("as_")) {
String masterSensitivityName = simulationName.substring(0, simulationName.lastIndexOf("_"));
- if (!model.containsString(masterSensitivityName)) {
- model.addString(masterSensitivityName);
+ if (!model.containsElement(masterSensitivityName)) {
+ model.addElement(masterSensitivityName);
}
}
}
@@ -74,7 +73,7 @@
/**
* Model de contenu de la liste des nom de simulations
*/
- public StringComboModel getSensitivitySimulationModel() {
+ public GenericComboModel<String> getSensitivitySimulationModel() {
List<String> asNames = new ArrayList<String>();
for (String simulationName : SimulationStorage.getSimulationNames()) {
if (simulationName.startsWith("as_")) {
@@ -85,7 +84,7 @@
}
}
- StringComboModel model = new StringComboModel(asNames);
+ GenericComboModel<String> model = new GenericComboModel<String>(asNames);
return model;
}
@@ -111,7 +110,7 @@
for(File file : files) {
content += "Fichier " + file.getName() + "\n";
content += "------------------------------\n";
- content += FileUtil.readAsString(file) + "\n";
+ content += FileUtils.readFileToString(file) + "\n";
content += "\n";
}
textAreaSensitivitySecondpassResult.setText(content);
@@ -128,7 +127,7 @@
</script>
<row>
<cell fill="horizontal" weightx="1.0">
- <JComboBox id="fieldSensitivitySimulationSelect" model='{getSensitivitySimulationModel()}' />
+ <JComboBox id="fieldSensitivitySimulationSelect" genericType="String" model='{getSensitivitySimulationModel()}' />
</cell>
<cell fill="horizontal">
<JButton id="runSecondPassButton" text='isisfish.sensitivity.secondpass' onActionPerformed='launchSecondPass(event)'
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,13 +24,8 @@
-->
<fr.ifremer.isisfish.ui.NavigationUI>
<import>
- javax.swing.JPopupMenu
javax.swing.tree.DefaultTreeModel
- javax.swing.tree.TreePath
- javax.swing.tree.DefaultMutableTreeNode
- javax.swing.tree.TreeNode
fr.ifremer.isisfish.datastore.RegionStorage
- fr.ifremer.isisfish.simulator.sensitivity.Factor
fr.ifremer.isisfish.ui.WelcomePanelUI
fr.ifremer.isisfish.ui.input.InputAction
fr.ifremer.isisfish.ui.input.InputSaveVerifier
@@ -39,9 +34,7 @@
fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeModel
fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeCellRenderer
fr.ifremer.isisfish.ui.sensitivity.model.FactorTree
- javax.swing.JComponent
java.awt.event.ActionListener
- javax.swing.JMenuItem
java.awt.event.ActionEvent
</import>
@@ -69,7 +62,6 @@
public void setTreeModel() {
if (getFisheryRegion() != null) {
getCardlayoutPrincipal().show(inputPanePrincipal,"normale");
- String regionName = getFisheryRegion().getName();
setContextValue(getFisheryRegion());
getHandler().loadFisheryRegionTree(this);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -64,8 +64,13 @@
public void setEnabledSimulationPlanTab(boolean selected) {
// no simulation plan in AS
}
-
+
@Override
+ public void setEnabledOptimizationTab(boolean selected) {
+ // no optimisation.in AS
+ }
+
+ @Override
public void refreshFactorTree() {
sensitivityTabUI.setFactorModel();
}
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,101 +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.sensitivity;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Utility class to parse Sensitivity properties file.
- *
- * @author letellier
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class SensitivityUtils {
-
- /** Log. */
- private static final Log log = LogFactory.getLog(SensitivityUtils.class);
-
- /** Properties file resource path. */
- protected final static String PROPERTIES_PATH = "/sensitivity.properties";
-
- /** Cached properties. */
- protected static Properties sensitivityProperties;
-
- /**
- * Is field sensitivity enabled.
- *
- * Return true, if field name is present in properties file.
- *
- * @param sensitivityFactorName name
- * @return <tt>true</tt> if factor name is sensitivity enabled
- */
- public static boolean isSensitivityFactorEnabled(String sensitivityFactorName) {
- Properties data = getProperties();
- return data.getProperty(sensitivityFactorName) != null;
-
- }
-
- /**
- * Return cached properties file.
- * Load it at first call.
- *
- * @return properties
- */
- public static Properties getProperties() {
-
- if (sensitivityProperties == null) {
- sensitivityProperties = new Properties();
- InputStream stream = null;
- try {
- 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/sensitivity/TableBlockingLayerUI.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, CodeLutin, Chatellier Eric
+ * 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
@@ -40,6 +40,7 @@
import org.jdesktop.jxlayer.plaf.LayerUI;
import org.nuiton.topia.persistence.TopiaEntityContextable;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
import fr.ifremer.isisfish.ui.input.InputContentUI;
/**
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorCardinalityTableModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorCardinalityTableModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorCardinalityTableModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.sensitivity.model;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.List;
@@ -40,9 +40,11 @@
* Model de la table de definition des cadinalité de facteurs.
*
* Columns :
+ * <ul>
* <li>Factor name</li>
* <li>Cardinality</li>
- *
+ * </ul>
+ *
* @author chatellier
* @version $Revision$
*
@@ -60,8 +62,8 @@
/** Columns names. */
public final static String[] COLUMN_NAMES = {
- _("isisfish.sensitivity.factor"),
- _("isisfish.sensitivity.increment") };
+ t("isisfish.sensitivity.factor"),
+ t("isisfish.sensitivity.increment") };
protected List<Factor> factors;
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListModel.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListModel.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListModel.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,92 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 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.ui.sensitivity.model;
+
+import java.util.List;
+
+import javax.swing.DefaultListModel;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+
+/**
+ * Model pour la liste des {@link Factor}.
+ *
+ * Pas de selection par defaut.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class FactorListModel extends DefaultListModel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 2281927104735245489L;
+
+ /** EquationContinuousDomain list */
+ protected List<Factor> factors;
+
+ /**
+ * Constructor with factors list.
+ *
+ * @param factors factors list
+ */
+ public FactorListModel(List<Factor> factors) {
+ this.factors = factors;
+ }
+
+ /**
+ * Change data list and fire data change event.
+ *
+ * @param factors new data list
+ */
+ public void setFactors(List<Factor> factors) {
+ this.factors = factors;
+ fireContentsChanged(this, 0, factors.size());
+ }
+
+ /*
+ * @see javax.swing.ListModel#getElementAt(int)
+ */
+ @Override
+ public Object getElementAt(int index) {
+ return factors.get(index);
+ }
+
+ /*
+ * @see javax.swing.ListModel#getSize()
+ */
+ @Override
+ public int getSize() {
+ int size = 0;
+
+ if (factors != null) {
+ size = factors.size();
+ }
+ return size;
+ }
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,57 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 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.ui.sensitivity.model;
+
+import java.awt.Component;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JList;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+
+/**
+ * Renderer for equation factor variables list.
+ * Renderer as variable name string.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class FactorListRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -8210763862382993163L;
+
+ @Override
+ public Component getListCellRendererComponent(JList<?> list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+
+ Factor factor = (Factor)value;
+ String stringValue = factor.getEquationVariableName();
+ return super.getListCellRendererComponent(list, stringValue, index, isSelected, cellHasFocus);
+ }
+
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeCellRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeCellRenderer.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeCellRenderer.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.sensitivity.model;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.util.HashMap;
@@ -36,6 +36,7 @@
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
+import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.Resource;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
@@ -63,8 +64,6 @@
public FactorTreeCellRenderer() {
iconCache = new HashMap<String, Icon>();
iconCache.put("c", Resource.getIcon("/icons/factors/c.png")); // continuous
- //iconCache.put("ce", Resource.getIcon("/icons/factors/ce.png")); // continuous equation
- //iconCache.put("cm", Resource.getIcon("/icons/factors/cm.png")); // continuous matrix
iconCache.put("d", Resource.getIcon("/icons/factors/d.png")); // discrete
iconCache.put("dg", Resource.getIcon("/icons/factors/dgroup.png")); // group discrete
iconCache.put("cg", Resource.getIcon("/icons/factors/cgroup.png")); // group continuous
@@ -88,7 +87,7 @@
FactorGroup factorGroup = (FactorGroup)value;
if (factorGroup == tree.getModel().getRoot()) { // root
// non du facteur group principal
- text = _("isisfish.sensitivity.factors");
+ text = t("isisfish.sensitivity.factors");
} else {
if (factorGroup.isDiscrete()) {
icon = "d";
@@ -110,16 +109,14 @@
else {
icon = "d";
}
-
- // get factor data type
- /*if (domain instanceof EquationContinuousDomain) {
- icon += "e";
- }
- else if (domain instanceof MatrixContinuousDomain) {
- icon += "m";
- }*/
+
text = factor.getName();
}
+
+ // add equation name if any
+ if (StringUtils.isNotBlank(factor.getEquationVariableName())) {
+ text += "." + factor.getEquationVariableName();
+ }
}
c.setIcon(iconCache.get(icon));
c.setText(text);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTreeModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ * 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
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -28,6 +28,7 @@
<Boolean id='changed' javaBean='false'/>
<import>
+ static org.nuiton.i18n.I18n.t
javax.swing.table.DefaultTableModel;
java.util.Map.Entry;
javax.swing.event.ListSelectionListener
@@ -91,7 +92,7 @@
Map<String, String> tagValues = getContextValue(SimulAction.class).getSimulationParameter().getTagValue();
// TODO make a table model for it
- String columnName[] = { _("isisfish.common.tag"), _("isisfish.common.value")};
+ String columnName[] = { t("isisfish.common.tag"), t("isisfish.common.value")};
if (tagValues != null) {
DefaultTableModel model = new DefaultTableModel(columnName, tagValues.size()) {
@Override
@@ -131,8 +132,8 @@
onActionPerformed='getContextValue(SimulAction.class).getSimulationParameter().setUseStatistic(fieldSimulationStatistique.isSelected());'/>
</cell>
<cell columns="2" fill="horizontal">
- <JCheckBox id="fieldSimulationCache" text="isisfish.advancedParams.simulationCache" selected='{getContextValue(SimulAction.class).getSimulationParameter().getUseOptimization()}'
- onActionPerformed='getContextValue(SimulAction.class).getSimulationParameter().setUseOptimization(fieldSimulationCache.isSelected());'/>
+ <JCheckBox id="fieldSimulationCache" text="isisfish.advancedParams.simulationCache" selected='{getContextValue(SimulAction.class).getSimulationParameter().getUseCache()}'
+ onActionPerformed='getContextValue(SimulAction.class).getSimulationParameter().setUseCache(fieldSimulationCache.isSelected());'/>
</cell>
</row>
<row>
@@ -212,7 +213,7 @@
</row>
<row>
<cell columns="5" fill="both" weighty="1" weightx="1">
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.advancedParams.freeParameters"))}'>
+ <Table border='{BorderFactory.createTitledBorder(t("isisfish.advancedParams.freeParameters"))}'>
<row>
<cell fill="horizontal">
<JLabel text="isisfish.common.tag"/>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2005 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2005 - 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
@@ -24,8 +24,9 @@
-->
<Table>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.ui.WelcomePanelUI;
- fr.ifremer.isisfish.ui.models.common.StringListModel;
+ fr.ifremer.isisfish.ui.models.common.GenericListModel;
javax.swing.event.ListSelectionEvent;
java.util.LinkedList
</import>
@@ -54,7 +55,7 @@
// userExports = intersection(userExports,availableExports)
userExports.retainAll(availableExports);
- StringListModel exportModel = new StringListModel(availableExports);
+ GenericListModel<String> exportModel = new GenericListModel<String>(availableExports);
listSimulExportChoose.setModel(exportModel);
for (String userExport : userExports) {
@@ -87,7 +88,7 @@
getSimulAction().getSimulationParameter().setExportNames(exportNames);
getSimulAction().saveExport();
- setInfoText(_("isisfish.export.saved"));
+ setInfoText(t("isisfish.export.saved"));
}
protected void setInfoText(String txt) {
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,389 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 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%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.JDialog;
+import javax.swing.JTable;
+import javax.swing.ListModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaContext;
+
+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.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.export.Export;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.ui.SimulationUI;
+import fr.ifremer.isisfish.ui.input.InputAction;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel;
+import fr.ifremer.isisfish.ui.models.optimization.ExportObservationTableModel;
+import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellEditor;
+import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellRenderer;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
+import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener;
+
+
+public class OptimizationHandler {
+
+ private static final Log log = LogFactory.getLog(OptimizationHandler.class);
+
+ protected FactorEditorListener factorEditorListener;
+
+ public void init(OptimizationUI view) {
+ // get info
+ SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulationParameter param = simulAction.getSimulationParameter();
+ RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+
+ // refresh after simulation storage set
+ if (param.getObjective() != null) {
+ view.getFieldObjectiveMethodSelect().setSelectedItem(ObjectiveStorage.getName(param.getObjective()));
+ }
+ if (param.getOptimization() != null) {
+ view.getFieldOptimizationMethodSelect().setSelectedItem(OptimizationStorage.getName(param.getOptimization()));
+ }
+ // export/observation
+ view.getExportObservationTable().setModel(getExportObservationTableModel(view));
+
+ // order matters
+ view.getExportObservationTable().getColumnModel().getColumn(0).setCellRenderer(new ExportTableCellRenderer());
+ ExportTableCellEditor editor = new ExportTableCellEditor();
+ editor.setRegionStorage(regionStorage);
+ view.getExportObservationTable().getColumnModel().getColumn(1).setCellEditor(editor);
+ view.getExportObservationTable().getColumnModel().getColumn(1).setCellRenderer(new ExportTableCellRenderer());
+ }
+
+ /**
+ * Get simulation parameter from ui context.
+ *
+ * @param view view (ui context)
+ * @return simulation parameters
+ */
+ protected SimulationParameter getSimulationParameter(OptimizationUI view) {
+ SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulationParameter param = simulAction.getSimulationParameter();
+ return param;
+ }
+
+ /**
+ * Optimization model for combo box.
+ *
+ * @return model
+ */
+ public GenericComboModel<String> getObjectiveComboModel() {
+ List<String> result = new ArrayList<String>();
+ for (String r : ObjectiveStorage.getObjectiveNames()) {
+ // there is some non java files in sensitivity directory
+ if (r.endsWith(".java")) {
+ // Remove .java extension
+ // for example SensitivityStorage.getRuleName(String)
+ result.add(r.substring(0, r.length() - 5));
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<String>(result);
+ return model;
+ }
+
+ /**
+ * Selection d'une méthode d'optimisation.
+ *
+ * @param view view
+ */
+ public void objectiveChanged(OptimizationUI view) {
+ String objectiveName = (String)view.getFieldObjectiveMethodSelect().getSelectedItem();
+ SimulationParameter param = getSimulationParameter(view);
+ RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+
+ // creation new instance only when name change to not lose parameters value
+ Objective objective = param.getObjective();
+ if (objective == null || !objective.getClass().getSimpleName().equals(objectiveName)) {
+ try {
+ ObjectiveStorage objectiveStorage = ObjectiveStorage.getObjective(objectiveName);
+ objective = objectiveStorage.getNewInstance();
+ } catch (IsisFishException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't set optimization", e);
+ }
+ }
+ }
+
+ // can be null for example if analysis can't be compiled
+ if (objective != null) {
+ param.setObjective(objective);
+
+ // update model
+ ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(objective);
+ view.getSimulObjectiveMethodParam().setModel(parametersTableModel);
+ view.getSimulObjectiveMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(objective));
+
+ ScriptParametersTableCellEditor editor = new ScriptParametersTableCellEditor(objective);
+ editor.setRegionStorage(regionStorage);
+ editor.setFactorActionListener(getFactorActionListener(view));
+ view.getSimulObjectiveMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
+ }
+ }
+
+ /**
+ * Retourne une instance de action listener qui affichera l'interface de sélection d'un facteur.
+ *
+ * @param view parent view
+ * @return action listener
+ */
+ protected FactorEditorListener getFactorActionListener(final OptimizationUI view) {
+ if (factorEditorListener == null) {
+ factorEditorListener = new FactorEditorListener() {
+ public void actionPerformed(ActionEvent event) {
+
+ // init new sensitivity tav ui hierarchy
+ final SensitivityTabUI sensitivityTabUI = new SensitivityTabUI(view);
+ sensitivityTabUI.setContextValue(new InputAction());
+ sensitivityTabUI.setContextValue(new SensitivitySaveVerifier()); // prevent NPE
+ sensitivityTabUI.setContextValue(view.getParentContainer(SimulationUI.class), "SimulationUI"); // prevent NPE
+
+ // init region
+ // FIXME this transaction in never closed
+ // and can't be closed because used in
+ try {
+ RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ TopiaContext tx = regionStorage.getStorage().beginTransaction();
+ FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
+ sensitivityTabUI.setFisheryRegion(fisheryRegion);
+ sensitivityTabUI.setTreeModel();
+ } catch (Exception ex) {
+ throw new IsisFishRuntimeException("Can't init dialog tree", ex);
+ }
+
+ // display dialog
+ JDialog dialog = new JDialog();
+ dialog.setTitle("Sélection d'un facteur");
+ dialog.add(sensitivityTabUI);
+ dialog.setSize(800, 600);
+ dialog.setLocationRelativeTo(view);
+ dialog.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ // get first factor
+ FactorGroup factorGroup = sensitivityTabUI.getContextValue(SimulAction.class).getFactorGroup();
+
+ if (factorGroup.size() > 0) {
+ Factor factor = factorGroup.get(factorGroup.size() - 1);
+ // useless, but clear for next call
+ sensitivityTabUI.getContextValue(SimulAction.class).removeFactor(factor.getPath());
+ setSelectedFactor(factor);
+ }
+ }
+ });
+ dialog.setVisible(true);
+ }
+ };
+ }
+ return factorEditorListener;
+ }
+
+ /**
+ * Optimization model for combo box.
+ *
+ * @return model
+ */
+ public GenericComboModel<String> getOptimizationComboModel() {
+ List<String> result = new ArrayList<String>();
+ for (String r : OptimizationStorage.getOptimizationNames()) {
+ // there is some non java files in sensitivity directory
+ if (r.endsWith(".java")) {
+ // Remove .java extension
+ // for example SensitivityStorage.getRuleName(String)
+ result.add(r.substring(0, r.length() - 5));
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<String>(result);
+ return model;
+ }
+
+ /**
+ * Selection d'une méthode d'optimisation.
+ *
+ * @param view view
+ */
+ public void optimizationChanged(OptimizationUI view) {
+ String optimizationName = (String)view.getFieldOptimizationMethodSelect().getSelectedItem();
+ SimulationParameter param = getSimulationParameter(view);
+ RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+
+ // creation new instance only when name change to not lose parameters value
+ Optimization optimization = param.getOptimization();
+ if (optimization == null || !optimization.getClass().getSimpleName().equals(optimizationName)) {
+ try {
+ OptimizationStorage optimizationStorage = OptimizationStorage.getOptimization(optimizationName);
+ optimization = optimizationStorage.getNewInstance();
+ } catch (IsisFishException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't set optimization", e);
+ }
+ }
+ }
+
+ // can be null for example if analysis can't be compiled
+ if (optimization != null) {
+ param.setOptimization(optimization);
+
+ // update model
+ ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(optimization);
+ view.getSimulOptimizationMethodParam().setModel(parametersTableModel);
+ view.getSimulOptimizationMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(optimization));
+
+ ScriptParametersTableCellEditor editor = new ScriptParametersTableCellEditor(optimization);
+ editor.setRegionStorage(regionStorage);
+ editor.setFactorActionListener(getFactorActionListener(view));
+ view.getSimulOptimizationMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
+ }
+ }
+
+ /**
+ * Export model for combo box.
+ *
+ * @return model
+ */
+ public ListModel<String> getExportListModel() {
+ List<String> result = new ArrayList<String>();
+ for (String r : ExportStorage.getExportNames()) {
+ // there is some non java files in sensitivity directory
+ if (r.endsWith(".java")) {
+ // Remove .java extention
+ // for example SensitivityStorage.getRuleName(String)
+ result.add(r.substring(0, r.length() - 5));
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<String>(result);
+ return model;
+ }
+
+ /**
+ * Export model for combo box.
+ *
+ * @param view view
+ * @return model
+ */
+ public ExportObservationTableModel getExportObservationTableModel(OptimizationUI view) {
+ SimulationParameter param = getSimulationParameter(view);
+ Map<Export, Observation> optimizationExportsObservations = param.getOptimizationExportsObservations();
+ ExportObservationTableModel model = new ExportObservationTableModel(optimizationExportsObservations);
+ return model;
+ }
+
+ /**
+ * Add selected export.
+ *
+ * @param view view
+ */
+ public void addExports(OptimizationUI view) {
+ // get elements
+ SimulationParameter param = getSimulationParameter(view);
+ ExportObservationTableModel tableModel = (ExportObservationTableModel)view.getExportObservationTable().getModel();
+
+ // add all selected exports
+ List<String> selectedExports = view.getFieldExportList().getSelectedValuesList();
+ for (String selectedExport : selectedExports) {
+ try {
+ // create export instance
+ ExportStorage exportStorage = ExportStorage.getExport(selectedExport);
+ Export export = exportStorage.getNewInstance();
+
+ // add export instance into parameters
+ Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations();
+ optimizationExports.put(export, null); // new entry
+ tableModel.setOptimizationExportsObservations(optimizationExports); // FIXME add fire
+ param.setOptimizationExportsObservations(optimizationExports);
+ } catch (IsisFishException ex) {
+ throw new IsisFishRuntimeException("Can't create new export", ex);
+ }
+ }
+ }
+
+ /**
+ * Remove selected exports in table.
+ *
+ * @param view view
+ */
+ public void removeExports(OptimizationUI view) {
+ // get element
+ SimulationParameter param = getSimulationParameter(view);
+ Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations();
+ ExportObservationTableModel tableModel = (ExportObservationTableModel)view.getExportObservationTable().getModel();
+
+ JTable table = view.getExportObservationTable();
+ int[] rows = table.getSelectedRows();
+ // reverse order
+ for (int i = rows.length - 1; i >= 0; i--) {
+ Export export = tableModel.getExportForRow(rows[i]);
+ optimizationExports.remove(export);
+ tableModel.deleteExport(export);
+ }
+
+ // force save
+ param.setOptimizationExportsObservations(optimizationExports);
+ }
+
+ /**
+ * Clear all export in table.
+ *
+ * @param view view
+ */
+ public void clearExports(OptimizationUI view) {
+ // get elements
+ SimulationParameter param = getSimulationParameter(view);
+ Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations();
+ ExportObservationTableModel tableModel = (ExportObservationTableModel)view.getExportObservationTable().getModel();
+
+ // clear
+ optimizationExports.clear();
+ tableModel.setOptimizationExportsObservations(optimizationExports);
+
+ // force save
+ param.setOptimizationExportsObservations(optimizationExports);
+ }
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,126 @@
+<!--
+ #%L
+ IsisFish
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2013 - 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%
+ -->
+<Table>
+ <script><![CDATA[
+ /*protected void $afterCompleteSetup() {
+ handler.init(this);
+ }*/
+
+ // application will be refreshed by regionStorage change
+ protected void regionStorageChanged() {
+ handler.init(this);
+ }
+
+ public void refresh() {
+ //handler.refresh(this);
+ }
+ ]]></script>
+
+ <OptimizationHandler id="handler" javaBean='new OptimizationHandler()'/>
+
+ <!-- Objective choice and param -->
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="isisfish.optimization.objective"/>
+ </cell>
+ <cell fill="horizontal" weightx="1.0" columns="2">
+ <JComboBox id="fieldObjectiveMethodSelect" genericType="String" model='{handler.getObjectiveComboModel()}'
+ onActionPerformed='handler.objectiveChanged(this)'
+ renderer="{new fr.ifremer.isisfish.ui.models.optimization.ObjectiveComboRenderer()}"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="3" fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="simulObjectiveMethodParam" rowHeight="24" />
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <!-- Optimisation choice and param -->
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="isisfish.optimization.method"/>
+ </cell>
+ <cell fill="horizontal" weightx="1.0" columns="2">
+ <JComboBox id="fieldOptimizationMethodSelect" genericType="String" model='{handler.getOptimizationComboModel()}'
+ onActionPerformed='handler.optimizationChanged(this)'
+ renderer="{new fr.ifremer.isisfish.ui.models.optimization.OptimizationComboRenderer()}"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="3" fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="simulOptimizationMethodParam" rowHeight="24" />
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <row>
+ <cell fill="both" columns='3'>
+ <JLabel text="isisfish.optimization.exports" />
+ </cell>
+ </row>
+ <row>
+ <cell fill="both" weightx="0.2" weighty="1.0">
+ <JScrollPane>
+ <JList id="fieldExportList" genericType="String"
+ model='{handler.getExportListModel()}'
+ cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}'
+ onValueChanged='addExportsButton.setEnabled(fieldExportList.getSelectedIndex() != -1)' />
+ </JScrollPane>
+ </cell>
+ <cell fill="horizontal" weighty="1.0">
+ <Table>
+ <row>
+ <cell fill="horizontal">
+ <JButton id="addExportsButton" text="isisfish.common.add" enabled="false"
+ onActionPerformed="handler.addExports(this)" />
+ </cell>
+ </row>
+ <row>
+ <cell fill="horizontal">
+ <JButton id="removeExportsButton" text="isisfish.common.remove" enabled="false"
+ onActionPerformed="handler.removeExports(this)" />
+ </cell>
+ </row>
+ <row>
+ <cell fill="horizontal">
+ <JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false"
+ onActionPerformed="handler.clearExports(this)" />
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ <cell fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="exportObservationTable" model="{handler.getExportObservationTableModel(this)}" rowHeight='24' />
+ <ListSelectionModel id="exportObservationSelectionModel" initializer="exportObservationTable.getSelectionModel()"
+ onValueChanged='removeExportsButton.setEnabled(!exportObservationSelectionModel.isSelectionEmpty());clearExportsButton.setEnabled(exportObservationTable.getModel().getRowCount() > 0);' />
+ </JScrollPane>
+ </cell>
+ </row>
+
+</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2005 - 2012 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2005 - 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
@@ -29,7 +29,7 @@
<Boolean id='sensitivity' javaBean='false' />
<import>
- java.util.EventObject;
+ static org.nuiton.i18n.I18n.t
java.text.ParseException;
fr.ifremer.isisfish.datastore.RegionStorage
fr.ifremer.isisfish.datastore.StorageChangeEvent
@@ -41,33 +41,21 @@
fr.ifremer.isisfish.ui.SimulationUI
fr.ifremer.isisfish.ui.WelcomePanelUI
fr.ifremer.isisfish.ui.WelcomeTabUI
- fr.ifremer.isisfish.ui.models.common.StringComboModel
- fr.ifremer.isisfish.ui.models.rule.RuleComboModel
- fr.ifremer.isisfish.ui.models.rule.RuleNamesListRenderer
- fr.ifremer.isisfish.ui.models.rule.RuleListModel
- fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI
+ fr.ifremer.isisfish.ui.models.common.GenericComboModel
fr.ifremer.isisfish.ui.sensitivity.SensitivityUI
fr.ifremer.isisfish.ui.widget.FilterableComboBox
- fr.ifremer.isisfish.rule.Rule
fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher
fr.ifremer.isisfish.simulator.launcher.SimulationService
fr.ifremer.isisfish.simulator.launcher.SimulationJob
fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener
- fr.ifremer.isisfish.simulator.sensitivity.Factor
org.nuiton.topia.TopiaException
org.nuiton.topia.TopiaContext
- org.nuiton.math.matrix.MatrixND
- org.nuiton.math.matrix.gui.MatrixPanelEditor
- org.apache.commons.lang3.ArrayUtils
javax.swing.SwingUtilities
javax.swing.DefaultComboBoxModel
java.awt.CardLayout
java.awt.Dimension
java.io.IOException
- java.awt.BorderLayout
- javax.swing.AbstractAction
javax.swing.DefaultListModel
- javax.swing.JComponent
javax.swing.ComboBoxModel
</import>
<script><![CDATA[
@@ -79,7 +67,7 @@
regionStorageListener = new StorageChangeListener() {
@Override
public void versionDataChanged(StorageChangeEvent e) {
- StringComboModel model = new StringComboModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames());
+ GenericComboModel<String> model = new GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames());
fieldSimulParamsRegion.setModel(model);
}
};
@@ -93,8 +81,8 @@
@Override
public void simulationStop(SimulationService simService, SimulationJob job) {
- StringComboModel model = (StringComboModel)fieldSimulParamsSelect.getModel();
- model.addString(job.getId());
+ GenericComboModel<String> model = (GenericComboModel)fieldSimulParamsSelect.getModel();
+ model.addElement(job.getId());
}
@Override
@@ -104,6 +92,10 @@
}
SimulationService.getService().addSimulationServiceListener(simulationListener);
+// la gestion des regles est maintenant independante de SimulAction
+// il faut faire la lié aux parametres de simulations
+simulAction.getSimulationParameter().setRules(ruleChooser.getRulesList());
+
public void refresh() {
if (simulAction.getSimulationStorage() != null) {
fieldSimulParamsName.setText(simulAction.getSimulationStorage().getName());
@@ -123,18 +115,19 @@
log.debug(" selected " + selected);
}
if(selected != null && !selected.trim().isEmpty()) {
- getParentContainer(WelcomePanelUI.class).setStatusMessage(_("isisfish.message.loading.region"));
+ getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.loading.region"));
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
simulAction.regionChange(ParamsUI.this, selected);
refresh();
setSensitivityTabRegion();
- getParentContainer(WelcomePanelUI.class).setStatusMessage(_("isisfish.message.region.loaded"));
+ getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.region.loaded"));
}
});
}
}
+
protected void initSimulationParams() {
if (!isSensitivity()){
// prescript
@@ -145,13 +138,19 @@
// simulation plan
fieldSimulUseSimulationPlan.setSelected(simulAction.getSimulationParameter().getUseSimulationPlan());
getParentContainer(SimulUI.class).getSensUI().refresh();
+
+ // optimization
+ fieldSimulUseOptimization.setSelected(simulAction.getSimulationParameter().getUseOptimization());
+ getParentContainer(SimulUI.class).getOptimizationUI().refresh();
+
}
}
protected void setSensitivityTabRegion() {
if (isSensitivity()) {
try {
- // FIXME this transation in never closed
+ // FIXME this transaction in never closed
+ // and can't be closed because used in
TopiaContext tx = simulAction.getRegionStorage().getStorage().beginTransaction();
FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFisheryRegion(fisheryRegion);
@@ -184,7 +183,7 @@
final String selected = fieldSimulParamsSelect.getSelectedItem().toString();
// le premier item est " " pour ne pas avoir de selection par defaut
if (selected != null && !selected.equals(" ")) {
- getParentContainer(WelcomePanelUI.class).setStatusMessage(_("isisfish.message.loading.old.simulation"));
+ getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.loading.old.simulation"));
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
@@ -199,7 +198,7 @@
// regles
ruleChooser.setRulesList(simulAction.getSimulationParameter().getRules());
- getParentContainer(WelcomePanelUI.class).setStatusMessage(_("isisfish.message.old.simulation.loaded"));
+ getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.old.simulation.loaded"));
}
});
}
@@ -210,11 +209,6 @@
*/
protected void launchSimulation() {
- // la gestion des regles est maintenant independante de SimulAction
- // il faut faire le set qui va bien avant le lancement
- simulAction.getSimulationParameter().setRules(ruleChooser.getRulesList());
-
-
if (!isSensitivity()) {
simulAction.launchSimulation(fieldSimulParamsName.getText(), (SimulatorLauncher)comboSelLauncher.getSelectedItem());
}
@@ -239,6 +233,12 @@
simulationUI.setEnabledSimulationPlanTab(fieldSimulUseSimulationPlan.isSelected());
}
+protected void enableOptimization() {
+ simulAction.getSimulationParameter().setUseOptimization(fieldSimulUseOptimization.isSelected());
+ SimulationUI simulationUI = getParentContainer(SimulationUI.class);
+ simulationUI.setEnabledOptimizationTab(fieldSimulUseOptimization.isSelected());
+}
+
protected void setListSimulParamsStrategiesItems() {
List<Strategy> strategiesSelected = simulAction.getSimulationParameter().getStrategies();
DefaultListModel listSimulParamsStrategiesModel = new DefaultListModel();
@@ -298,9 +298,9 @@
return getSimulParamsSelectModel(false);
}
-protected ComboBoxModel getSimulParamsSelectModel(boolean force) {
+protected ComboBoxModel<String> getSimulParamsSelectModel(boolean force) {
List<String> items = simulAction.getFilteredOldSimulatorNames(force);
- StringComboModel result = new StringComboModel(items);
+ GenericComboModel<String> result = new GenericComboModel<String>(items);
return result;
}
@@ -340,7 +340,7 @@
<row>
<cell fill="horizontal">
<JLabel id='lblName'
- text='{isSensitivity() ? _("isisfish.params.sensitivityName") : _("isisfish.params.simulationName")}'
+ text='{isSensitivity() ? t("isisfish.params.sensitivityName") : t("isisfish.params.simulationName")}'
minimumSize='{new Dimension(195,25)}'
preferredSize='{new Dimension(195,25)}' />
</cell>
@@ -361,8 +361,8 @@
<JLabel text="isisfish.common.region" />
</cell>
<cell fill="horizontal" weightx="1.0">
- <JComboBox id="fieldSimulParamsRegion"
- model='{new fr.ifremer.isisfish.ui.models.common.StringComboModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'
+ <JComboBox id="fieldSimulParamsRegion" genericType="String"
+ model='{new fr.ifremer.isisfish.ui.models.common.GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'
selectedItem='{getContextValue(SimulAction.class).getSimulationParameter().getRegionName()}'
onActionPerformed='regionChange()' />
</cell>
@@ -416,7 +416,7 @@
<row>
<cell columns="4" fill="both" weightx="1.0" weighty="0.6">
<JTabbedPane id="parametersTabbedPane" enabled="{getRegionStorage() != null}">
- <tab title='{_("isisfish.params.stategiesAndPopulations")}'>
+ <tab title='{t("isisfish.params.stategiesAndPopulations")}'>
<Table>
<row>
<cell fill="horizontal">
@@ -466,7 +466,7 @@
</row>
</Table>
</tab>
- <tab title='{_("isisfish.params.rules")}'>
+ <tab title='{t("isisfish.params.rules")}'>
<Table>
<row>
<cell fill="both" weightx="1" weighty="1">
@@ -510,6 +510,14 @@
enabled="{getRegionStorage() != null}" />
</cell>
<cell fill="horizontal" weightx="1">
+ <JCheckBox text="isisfish.params.useOptimization"
+ id="fieldSimulUseOptimization"
+ selected='{simulAction.getSimulationParameter().getUseOptimization()}'
+ visible='{!isSensitivity()}'
+ onItemStateChanged='enableOptimization()'
+ enabled="{getRegionStorage() != null}" />
+ </cell>
+ <cell fill="horizontal" weightx="1">
<JCheckBox text="isisfish.params.sensitivityOnlyKeepFirstResult"
id="sensitivityOnlyKeepFirstResultCheckBox"
selected='{simulAction.getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst()}'
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2005 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2005 - 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
@@ -41,9 +41,9 @@
simul.selTab(0);
}*/
]]></script>
- <JScrollPane constraints='BorderLayout.CENTER'>
- <JTextArea id="fieldSimulPreScript" onFocusLost='save()'/>
- </JScrollPane>
+ <org.fife.ui.rtextarea.RTextScrollPane constraints='BorderLayout.CENTER'>
+ <org.fife.ui.rsyntaxtextarea.RSyntaxTextArea id="fieldSimulPreScript" syntaxEditingStyle="{org.fife.ui.rsyntaxtextarea.SyntaxConstants.SYNTAX_STYLE_JAVA}" />
+ </org.fife.ui.rtextarea.RTextScrollPane>
<JButton constraints='BorderLayout.SOUTH' text="isisfish.preScript.backParameter"
onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).selectParametersTab()'/>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2005 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2005 - 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
@@ -24,8 +24,9 @@
-->
<JPanel layout='{new BorderLayout()}'>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.ui.WelcomePanelUI
- fr.ifremer.isisfish.ui.models.common.StringListModel
+ fr.ifremer.isisfish.ui.models.common.GenericListModel
javax.swing.event.ListSelectionEvent
</import>
<script><![CDATA[
@@ -53,7 +54,7 @@
// userResults = intersection(userResults,availableResult)
userResults.retainAll(availableResults);
- StringListModel resultModel = new StringListModel(availableResults);
+ GenericListModel<String> resultModel = new GenericListModel<String>(availableResults);
listResultNames.setModel(resultModel);
for (String userResult : userResults) {
@@ -68,7 +69,7 @@
protected void saveConfigResultNames() {
getContextValue(SimulAction.class).saveConfigurationResultNames(listResultNames.getSelectedValues());
- setStatusMessage(_("isisfish.resultChoice.saved"));
+ setStatusMessage(t("isisfish.resultChoice.saved"));
}
protected void setStatusMessage(String txt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2005 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2005 - 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
@@ -39,19 +39,9 @@
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
java.util.List
- fr.ifremer.isisfish.IsisFishException
- fr.ifremer.isisfish.IsisFishRuntimeException
- fr.ifremer.isisfish.datastore.RuleStorage
fr.ifremer.isisfish.rule.Rule
fr.ifremer.isisfish.ui.models.rule.RuleListModel
fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer
- fr.ifremer.isisfish.ui.models.rule.RuleParametersFactorTableCellRenderer
- fr.ifremer.isisfish.ui.models.rule.RuleParametersFactorTableCellEditor
- fr.ifremer.isisfish.ui.util.ErrorHelper
- fr.ifremer.isisfish.ui.SimulationUI
- fr.ifremer.isisfish.datastore.RegionStorage
</import>
<script><![CDATA[
@@ -90,7 +80,7 @@
<cell fill="both" rows="3" weightx="1" weighty="1">
<JScrollPane>
<JList id="availableRuleList" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
- model='{new fr.ifremer.isisfish.ui.models.common.StringListModel(fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames())}'
+ model='{new fr.ifremer.isisfish.ui.models.common.GenericListModel<String>(fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames())}'
cellRenderer='{new fr.ifremer.isisfish.ui.models.rule.RuleNamesListRenderer()}'
onValueChanged='addRulesButton.setEnabled(availableRuleList.getSelectedIndex() != -1)'
enabled="{isActive()}"/>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -47,7 +47,7 @@
public class RuleChooserHandler {
/**
- * Get new instance for selected rules names and add it to {@link rulesList} list.
+ * Get new instance for selected rules names and add it to {@code rulesList} list.
*
* @param ruleChooser rule chooser ui
*/
@@ -57,7 +57,7 @@
String availableRuleName = (String)availableRuleValue;
try {
RuleStorage ruleStorage = RuleStorage.getRule(availableRuleName);
- Rule ruleTmp = ruleStorage.getNewRuleInstance();
+ Rule ruleTmp = ruleStorage.getNewInstance();
// add it after autoconfiguration (if enabled)
ruleTmp = (Rule)ScriptParameterDialog.displayConfigurationFrame(ruleChooser, ruleTmp);
@@ -118,7 +118,7 @@
}
/**
- * Display paramters table form single selected list.
+ * Display parameters table form single selected list.
*
* @param ruleChooser rule chooser ui
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.simulator;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.CardLayout;
@@ -66,7 +66,6 @@
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
@@ -92,14 +91,12 @@
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.ui.SimulationUI;
-import fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI;
import fr.ifremer.isisfish.ui.sensitivity.SensitivityChooserUI;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputHandler;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
import fr.ifremer.isisfish.ui.util.ErrorHelper;
import fr.ifremer.isisfish.ui.widget.editor.ScriptParameterDialog;
@@ -108,7 +105,7 @@
*
* Created: 1 aout 2005 18:37:25 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -121,14 +118,17 @@
private static final SimpleDateFormat DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
- /** Les parametres de simulation (commun a tous les onglet de l'interface de simulation). */
+ /**
+ * Les parametres de simulation (commun a tous les onglet de l'interface de simulation).
+ * Les parametres doivent toujours être liés avec les selections et état de l'ui.
+ * La mise en facteur des parametres et des regles est basé sur cet objet.
+ */
protected SimulationParameter param = null;
protected RegionStorage regionStorage = null;
protected SimulationStorage simulStorage = null;
protected List<String> oldSimulNames = null;
protected String simulName = null;
- protected SensitivityAnalysisStorage sensitivityStorage = null;
/**
* List de facteur sous forme d'arbre (factor group).
@@ -166,7 +166,7 @@
if (log.isErrorEnabled()) {
log.error("Can't init SimulationParameter", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.initsimulaction"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.initsimulaction"), eee);
}
}
@@ -192,7 +192,7 @@
if (log.isErrorEnabled()) {
log.error("Can't import simulation", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.importparameter"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.importparameter"), e);
} finally {
IOUtils.closeQuietly(fos);
}
@@ -214,7 +214,7 @@
if (log.isErrorEnabled()) {
log.error("Can't save simulation", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.savesimulation"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.savesimulation"), e);
} finally {
IOUtils.closeQuietly(fos);
}
@@ -240,7 +240,7 @@
if (log.isWarnEnabled()) {
log.warn("Can't find result name script", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.getresultname"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.getresultname"), eee);
}
return result;
}
@@ -266,7 +266,7 @@
* <li>params</li>
* <li>simulation plans</li>
* <li>factors list</li>
- * <ul>
+ * </ul>
*
* Open old simulation:
* <ul>
@@ -306,13 +306,11 @@
factorGroup = designPlan.getFactorGroup();
}
}
- else {
- if (log.isInfoEnabled()) {
- log.info("No xml design plan file found");
- }
+ else if (log.isInfoEnabled()) {
+ log.info("No xml design plan file found");
}
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.simulation.loadoldsimulation"), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.simulation.loadoldsimulation"), eee);
}
}
@@ -388,7 +386,7 @@
if (log.isErrorEnabled()) {
log.error("Can't get strategies", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.liststrategies"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.liststrategies"), e);
}
return result;
}
@@ -435,7 +433,7 @@
if (log.isErrorEnabled()) {
log.error("Can't get population", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.listpopulation"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listpopulation"), e);
}
return result;
}
@@ -508,12 +506,12 @@
if (log.isErrorEnabled()) {
log.error("Can't get old simulation item", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.listoldsimulation"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listoldsimulation"), e);
} catch (IOException e) {
if (log.isErrorEnabled()) {
log.error("Can't get old simulation item", e);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.listoldsimulation"), e);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listoldsimulation"), e);
}
return null;*/
}
@@ -636,7 +634,7 @@
public void addSimulationPlan(SensUI sensUI, String name) {
try {
- SimulationPlan sp = SimulationPlanStorage.getSimulationPlan(name).getNewSimulationPlanInstance();
+ SimulationPlan sp = SimulationPlanStorage.getSimulationPlan(name).getNewInstance();
// add it after autoconfiguration (if enabled)
sp = (SimulationPlan)ScriptParameterDialog.displayConfigurationFrame(sensUI, sp);
@@ -709,7 +707,7 @@
public void addSensitivityExport(SensitivityChooserUI sensitivityChooserUI, String name) {
try {
SensitivityExportStorage storage = SensitivityExportStorage.getSensitivityExport(name);
- SensitivityExport sensitivityExport = storage.getNewSensitivityExportInstance();
+ SensitivityExport sensitivityExport = storage.getNewInstance();
// add it after autoconfiguration (if enabled)
sensitivityExport = (SensitivityExport)ScriptParameterDialog.displayConfigurationFrame(sensitivityChooserUI, sensitivityExport);
@@ -801,9 +799,8 @@
public SensitivityAnalysis getSensitivityAnalysisInstance(String name) {
SensitivityAnalysis sensitivityAnalysis = null;
try {
- sensitivityStorage = SensitivityAnalysisStorage.getSensitivityAnalysis(name);
- sensitivityAnalysis = sensitivityStorage
- .getNewSensitivityAnalysisInstance();
+ SensitivityAnalysisStorage sensitivityStorage = SensitivityAnalysisStorage.getSensitivityAnalysis(name);
+ sensitivityAnalysis = sensitivityStorage.getNewInstance();
} catch (IsisFishException e) {
if (log.isErrorEnabled()) {
log.error("Can't set sensitivity analysis", e);
@@ -900,16 +897,12 @@
* @param name
* @param comment
* @param path
- * @param min
- * @param max
+ * @param domain
* @param exist
*/
- public void addContinuousFactor(String name, String comment, String path, Double min,
- Double max, boolean exist) {
+ public void addContinuousFactor(String name, String comment, String path,
+ ContinuousDomain domain, boolean exist) {
Factor f = new Factor(name);
- ContinuousDomain domain = new ContinuousDomain();
- domain.setMinBound(min);
- domain.setMaxBound(max);
f.setDomain(domain);
f.setComment(comment);
f.setPath(path);
@@ -919,31 +912,6 @@
addFactor(f);
}
- /**
- * Ajout d'un facteur continue de type pourcentage.
- *
- * @param name
- * @param comment
- * @param path
- * @param referenceValue
- * @param coefficient
- * @param exist
- */
- public void addContinuousPercentageFactor(String name, String comment, String path, Double referenceValue,
- Double coefficient, boolean exist) {
- Factor f = new Factor(name);
- ContinuousDomain domain = new ContinuousDomain(true);
- domain.setReferenceValue(referenceValue);
- domain.setCoefficient(coefficient);
- f.setDomain(domain);
- f.setComment(comment);
- f.setPath(path);
- if (exist) {
- removeFactor(path);
- }
- addFactor(f);
- }
-
public void addDiscreteFactor(String name, String comment, String path,
List<Object> values, boolean exist) {
addDiscreteFactor(new DiscreteDomain(), name, comment, path, values, exist);
@@ -981,51 +949,18 @@
addFactor(f);
}
- public void addContinuousEquationFactor(String name, String comment, String path,
- EquationContinuousDomain domain, boolean exist) {
+ public void addContinuousEquationFactor(Factor f, boolean exist) {
// factor name need to be composed
- Factor f = new Factor(name + "." + domain.getVariableName());
- f.setDomain(domain);
- f.setComment(comment);
- // don't modify path, need to be valid identifier
- //f.setPath(path + domain.getVariableName());
- f.setPath(path);
+ //Factor f = new Factor(name + "." + domain.getVariableName());
+ //f.setDomain(domain);
+ //f.setComment(comment);
+ //f.setPath(path);
if (exist) {
- removeFactor(path);
+ removeFactor(f.getPath());
}
addFactor(f);
}
- public void addContinuousMatrixFactor(String name, String comment, String path,
- MatrixND referenceValue, Double coef, boolean exist) {
- Factor f = new Factor(name);
- MatrixContinuousDomain domain = new MatrixContinuousDomain(true);
- domain.setReferenceValue(referenceValue);
- domain.setCoefficient(coef);
- f.setComment(comment);
- f.setDomain(domain);
- f.setPath(path);
- if (exist) {
- removeFactor(path);
- }
- addFactor(f);
- }
-
- public void addContinuousMatrixFactor(String name, String comment, String path,
- MatrixND minBound, MatrixND maxBound, boolean exist) {
- Factor f = new Factor(name);
- MatrixContinuousDomain domain = new MatrixContinuousDomain();
- domain.setMinBound(minBound);
- domain.setMaxBound(maxBound);
- f.setComment(comment);
- f.setDomain(domain);
- f.setPath(path);
- if (exist) {
- removeFactor(path);
- }
- addFactor(f);
- }
-
/*
************
* General
@@ -1076,7 +1011,7 @@
if ("".equals(fullSimulationId)
|| SimulationStorage.localyExists(fullSimulationId)
|| SimulationService.getService().exists(fullSimulationId)) {
- ErrorHelper.showErrorDialog(_("isisfish.simulator.simulaction.badid",
+ ErrorHelper.showErrorDialog(t("isisfish.simulator.simulaction.badid",
fullSimulationId), null);
} else {
SimulationService.getService().submit(fullSimulationId, param,
@@ -1086,7 +1021,7 @@
if (log.isErrorEnabled()) {
log.error("Can't start simulation", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.launchsimulation"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.launchsimulation"), eee);
}
}
@@ -1119,7 +1054,7 @@
if ("".equals(fullSimulationId)
|| SimulationStorage.localyExists(fullSimulationId)
|| SimulationService.getService().exists(fullSimulationId)) {
- ErrorHelper.showErrorDialog(_("isisfish.simulator.simulaction.badid",
+ ErrorHelper.showErrorDialog(t("isisfish.simulator.simulaction.badid",
fullSimulationId), null);
} else {
DesignPlan designPlan = new DesignPlan();
@@ -1131,7 +1066,7 @@
if (log.isErrorEnabled()) {
log.error("Can't start simulation", eee);
}
- ErrorHelper.showErrorDialog(_("isisfish.error.simulation.launchsimulation"), eee);
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.launchsimulation"), eee);
}
}
@@ -1267,7 +1202,7 @@
}
paramsUI.getPopulationEffectivesTabbedPane().add(matrixPanelComponent,
- _("isisfish.params.populationEffectives", selectedPopulation.getName()));
+ t("isisfish.params.populationEffectives", selectedPopulation.getName()));
}
layout.show(paramsUI.getPopulationEffectivesPanel(), "specific");
@@ -1299,9 +1234,9 @@
String factorPath = "parameters.rules";
selectedFactor = getFactor(factorPath);
if (selectedFactor == null) {
- selectedFactor = new Factor(_("isisfish.sensitivity.rulesfactorname"));
+ selectedFactor = new Factor(t("isisfish.sensitivity.rulesfactorname"));
selectedFactor.setPath(factorPath);
- selectedFactor.setDomain(new RuleDiscreteDomain());
+ //selectedFactor.setDomain(new RuleDiscreteDomain());
}
}
@@ -1311,19 +1246,22 @@
String factorPath = "parameters.population." + population.getName() + ".number";
selectedFactor = getFactor(factorPath);
if (selectedFactor == null) {
- selectedFactor = new Factor(_("isisfish.sensitivity.populationfactorname", population.getName()));
+ selectedFactor = new Factor(t("isisfish.sensitivity.populationfactorname", population.getName()));
selectedFactor.setPath(factorPath);
- MatrixContinuousDomain factorDomain = new MatrixContinuousDomain();
- MatrixND populationEffectives = getSimulationParameter().getNumberOf(population);
+ //MatrixND populationEffectives = getSimulationParameter().getNumberOf(population);
+ /*MatrixContinuousDomain factorDomain = new MatrixContinuousDomain();
factorDomain.setReferenceValue(populationEffectives.copy());
factorDomain.setCoefficient(0.0);
- selectedFactor.setDomain(factorDomain);
+ ContinuousDomain domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam(Distribution.QUNIFPC.getDistibutionParams()[0].getName(), populationEffectives.copy());
+ domain.addDistributionParam(Distribution.QUNIFPC.getDistibutionParams()[1].getName(), 0.0d);
+ selectedFactor.setDomain(domain);*/
}
}
if (selectedFactor != null) {
FactorWizardUI wizard = new FactorWizardUI(paramsUI);
- SensitivityInputHandler handler = wizard.getHandler();
+ SensitivityWizardHandler handler = wizard.getHandler();
handler.initExistingFactor(wizard, selectedFactor);
wizard.pack();
wizard.setLocationRelativeTo(paramsUI);
@@ -1342,22 +1280,18 @@
*/
public void addRuleParameterFactor(RuleChooser ruleChooser, Rule rule, String paramName) {
- // get sensitivity handler (this break package rules)
- // but no other choice :(
- SensitivityInputHandler handler = ruleChooser.getContextValue(SensitivityInputHandler.class);
-
// get index of rule in rule list
// warning, factor path must always be cohérent
// with rule list, if a rule is deleted, factor on it must
// be deleted too, et next factor must be renamed
int index = ruleChooser.getRulesList().indexOf(rule);
String factorPath = "parameters.rule." + index + ".parameter." + paramName;
- try {
+ //try {
- // on a besoin de la valeur pour savoir s'il peut être continue
+ /*// on a besoin de la valeur pour savoir s'il peut être continue
Object paramValue = RuleStorage.getParameterValue(rule, paramName);
- if (!handler.canBeContinue(paramValue)) {
+ if (!SensitivityUtils.canBeContinue(paramValue)) {
// dans le cas ou il ne peut pas être continue, on le gere
// differement et on utilise sont type comme
// valeur
@@ -1368,15 +1302,27 @@
// init new factor wizard ui
FactorWizardUI factorWizardUI = new FactorWizardUI(ruleChooser);
- factorWizardUI.getFactorNameField().setText(_("isisfish.sensitivity.ruleparameterfactorname",
+ factorWizardUI.getFactorNameField().setText(t("isisfish.sensitivity.ruleparameterfactorname",
rule.getClass().getSimpleName(), paramName));
factorWizardUI.setFactorPath(factorPath);
+ SensitivityWizardHandler handler = factorWizardUI.getHandler();
handler.initNewFactorWithValue(factorWizardUI, paramValue);
factorWizardUI.pack();
factorWizardUI.setLocationRelativeTo(ruleChooser);
+ factorWizardUI.setVisible(true);*/
+
+ Factor factor = new Factor(t("isisfish.sensitivity.ruleparameterfactorname",
+ rule.getClass().getSimpleName(), paramName));
+ factor.setPath(factorPath);
+ FactorWizardUI factorWizardUI = new FactorWizardUI(ruleChooser);
+ SensitivityWizardHandler handler = factorWizardUI.getHandler();
+ handler.initExistingFactor(factorWizardUI, factor);
+ factorWizardUI.pack();
+ factorWizardUI.setLocationRelativeTo(ruleChooser);
factorWizardUI.setVisible(true);
- } catch (IsisFishException ex) {
+
+ /*} catch (IsisFishException ex) {
throw new IsisFishRuntimeException("Can't add factor on rule", ex);
- }
+ }*/
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,9 +30,11 @@
paramsUI.refresh();
preScriptUI.refresh();
sensUI.refresh();
+ optimizationUI.refresh();
exportUI.refresh();
resultChoiceUI.refresh();
advancedParamsUI.refresh();
+ optimizationUI.refresh();
}
/**
@@ -40,7 +42,7 @@
*/
@Override
protected void regionStorageChanged() {
-
+ optimizationUI.regionStorageChanged();
}
@Override
@@ -63,6 +65,14 @@
bodyTabbedPane.setSelectedIndex(2);
}
}
+
+ @Override
+ public void setEnabledOptimizationTab(boolean selected) {
+ bodyTabbedPane.setEnabledAt(3, selected);
+ if (selected) {
+ bodyTabbedPane.setSelectedIndex(3);
+ }
+ }
]]></script>
<JTabbedPane id="bodyTabbedPane">
<tab title='isisfish.params.title'>
@@ -74,6 +84,9 @@
<tab title='isisfish.sens.title' enabled='false'>
<SensUI id="sensUI" constructorParams='this' />
</tab>
+ <tab title='isisfish.optimization.title' enabled='false'>
+ <OptimizationUI id="optimizationUI" constructorParams='this' />
+ </tab>
<tab title='isisfish.export.title'>
<ExportUI id="exportUI" constructorParams='this' />
</tab>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -66,7 +66,6 @@
// ----------------- Add this code since jaxx compilator don't generate
// some code for binding, bug ? TODO Fix me
- @SuppressWarnings({"unchecked"})
public void applyDataBinding(String $binding) {
if ($binding.equals("reset.enabled")) {
if (comboResult != null) {
@@ -85,7 +84,6 @@
} else super.removeDataBinding($binding);
}
- @SuppressWarnings({"unchecked"})
public void processDataBinding(String $dest, boolean $force) {
if (!$dest.equals("reset.enabled")) {
super.processDataBinding($dest, $force);
@@ -103,7 +101,6 @@
private java.beans.PropertyChangeListener $DataSource410 = new jaxx.runtime.DataBindingListener(this, "reset.enabled");
- @SuppressWarnings({"UnusedDeclaration"})
public void $pr$u10(java.awt.event.ItemEvent event) {
$DataSource410.propertyChange(null);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterPanelUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterPanelUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterPanelUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,8 +38,6 @@
}
/**
* push param's ui value to model
- *
- * @throws Exception
*/
public synchronized void uiToModel() {
extractTextFieldParam(SimulationMeta.simulationName.name());
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,7 +29,7 @@
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import fr.ifremer.isisfish.ui.widget.filter.FilterParamModel;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,7 +43,7 @@
import java.util.TreeMap;
/**
- * This class offers methods to select or filter simulation name via an ui
+ * This class offers methods to select or filter simulation name via an ui.
*
* @see #selectSimulation(List)
* @see #selectSimulation(FilterModel)
@@ -55,14 +55,14 @@
static private Log log = LogFactory.getLog(SimulationFilterUtil.class);
/**
- * Open the filter simulation filter dialog using list of simualtion names
- * to create FilterModel, and waits for user to select a simualtion in a non
+ * Open the filter simulation filter dialog using list of simulation names
+ * to create FilterModel, and waits for user to select a simulation in a non
* empty filter result.
- * <p/>
+ *
* If user cancels, it returns <code>null</code>
*
* @param names the list of simulation names to used
- * @return name of the simulation choosed by user or null if it cancel
+ * @return name of the simulation chosen by user or null if it cancel
* operation
* @throws java.text.ParseException if problem while init dialogModel
* @throws java.io.IOException todo
@@ -80,11 +80,11 @@
/**
* Open the filter simulation filter dialog using directly a given
- * FilterModel, and waits for user to select a simualtion in a non
+ * FilterModel, and waits for user to select a simulation in a non
* empty filter result.
*
* @param model model to used
- * @return name of the simulation choosed by user or null if it cancel
+ * @return name of the simulation chosen by user or null if it cancel
* operation
* @throws java.text.ParseException if problem while init dialogModel
* @throws java.io.IOException todo
@@ -97,7 +97,7 @@
return null;
}
SimulationFilterDialog ui = new SimulationFilterDialog(model,
- _("isisfish.filter.select.simulation"), _("isisfish.filter.select"));
+ t("isisfish.filter.select.simulation"), t("isisfish.filter.select"));
log.info("ui used " + ui.getClass());
// obtain exactly one simulation name or null if none taken
@@ -110,7 +110,7 @@
* Open the filter simulation dialog and waits for user to accept a
* non empty filter result.
* It used a list of simulation names to create FilterModel.
- * <p/>
+ * <p>
* If user cancels, it returns an empty list.
*
* @param names the list of simulation names to used
@@ -132,7 +132,7 @@
* Open the filter simulation dialog and waits for user to accept a
* non empty filter result.
* It used directly the given FilterModel.
- * <p/>
+ * <p>
* If user cancels, it returns the previous result list.
*
* @param model filterModel to use
@@ -149,7 +149,7 @@
// keep old result list
List<SimulationProperties> oldResult = new ArrayList<SimulationProperties>(model.getFiltered());
- SimulationFilterDialog ui = new SimulationFilterDialog(model,_("isisfish.filter.simulation"),_("isisfish.filter.apply"));
+ SimulationFilterDialog ui = new SimulationFilterDialog(model,t("isisfish.filter.simulation"),t("isisfish.filter.apply"));
log.info("ui used " + ui.getClass());
// obtain list of filtered simulation names
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.util;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.Component;
import java.io.PrintWriter;
@@ -68,8 +68,8 @@
public static void showErrorDialog(Component parent, String message,
Throwable cause) {
JXErrorPane pane = new JXErrorPane();
- ErrorInfo info = new ErrorInfo(_("isisfish.error.errorpane.title"),
- _("isisfish.error.errorpane.htmlmessage", message), null, null,
+ ErrorInfo info = new ErrorInfo(t("isisfish.error.errorpane.title"),
+ t("isisfish.error.errorpane.htmlmessage", message), null, null,
cause, null, null);
pane.setErrorInfo(info);
if (cause != null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -66,7 +66,7 @@
/**
* obtain the list of relative path to {@link #root} directory needed
- * to be backuped in {@link #backupRoot} directory
+ * to be backuped in {@code #backupRoot} directory
*
* @return the list of relative path to files to backup
*/
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/util/JaxxUtil.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/util/JaxxUtil.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/util/JaxxUtil.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,7 +34,6 @@
/** some util generic algorithm for jaxx objects */
public class JaxxUtil {
- @SuppressWarnings({"unchecked"})
public static void doReset(Map<String, ?> $objectMap) {
if ($objectMap == null) return;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,13 +24,10 @@
-->
<JDialog>
<import>
+ static org.nuiton.i18n.I18n.t
javax.swing.text.html.HTMLEditorKit;
- javax.swing.text.html.HTMLDocument;
javax.swing.event.HyperlinkListener;
- javax.swing.text.html.HTMLFrameHyperlinkEvent;
javax.swing.event.HyperlinkEvent;
- java.io.PrintWriter;
- java.io.StringWriter;
java.net.URL;
javax.swing.JComponent
java.awt.Color
@@ -80,9 +77,9 @@
StringBuilder builder = new StringBuilder();
builder.append("<a href='").append(DOC_URL).append("'>");
- builder.append(_("isisfish.vcs.howto.save.key")).append("</a><br/>");
+ builder.append(t("isisfish.vcs.howto.save.key")).append("</a><br/>");
builder.append("<a href='").append(REGISTER_KEY_URL).append("'>");
- builder.append(_("isisfish.vcs.save.key")).append("</a>");
+ builder.append(t("isisfish.vcs.save.key")).append("</a>");
helpEditor.setEditorKit(new HTMLEditorKit());
helpEditor.setText(builder.toString());
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSGenerateSshKeyUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSGenerateSshKeyUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSGenerateSshKeyUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -26,9 +26,7 @@
<import>
com.jcraft.jsch.JSch;
com.jcraft.jsch.KeyPair;
- org.nuiton.util.FileUtil;
java.io.File;
- java.io.IOException;
java.util.ArrayList;
java.util.Arrays;
java.util.HashMap;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,6 +24,7 @@
-->
<JDialog title='isisfish.vcs.ask.passphrase.title' modal='true'>
<import>
+ static org.nuiton.i18n.I18n.t
java.io.BufferedReader
java.io.InputStreamReader
java.io.IOException
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/DummyLayerUI.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/DummyLayerUI.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/DummyLayerUI.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/DummyLayerUI.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,64 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 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.widget;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+
+import javax.swing.JComponent;
+
+import org.jdesktop.jxlayer.JXLayer;
+import org.jdesktop.jxlayer.plaf.AbstractLayerUI;
+
+public class DummyLayerUI extends AbstractLayerUI<JComponent> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 309245880711380974L;
+
+ @Override
+ protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) {
+ super.paintLayer(g2, l);
+
+ // position
+ //g2.translate(-35, 90); // top left
+ g2.translate(l.getBounds().getMaxX() - 160, l.getBounds().getMaxY()); // bottom right
+
+ // yellow backgroung
+ g2.rotate(Math.PI * -42 / 180);
+ g2.setColor(Color.YELLOW);
+ g2.fillRect(10, 10, 200, 30);
+
+ // text
+ g2.translate(70, 15);
+ g2.setFont(new Font("Dialog", Font.BOLD, 16));
+ g2.setColor(Color.BLACK);
+ g2.drawString("Maquette",10,10);
+
+ // for test only
+ g2.translate(-3, 10);
+ g2.setFont(new Font("Dialog", Font.ITALIC, 10));
+ g2.setColor(Color.BLACK);
+ g2.drawString("(non fonctionnelle)",10,10);
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/FilterableComboBox.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,7 +23,7 @@
package fr.ifremer.isisfish.ui.widget;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.Dimension;
@@ -57,14 +57,14 @@
* Last update : $Date$
* By : $Author$
*/
-public class FilterableComboBox extends JPanel implements ListDataListener {
+public class FilterableComboBox<T> extends JPanel implements ListDataListener {
private static Log log = LogFactory.getLog(FilterableComboBox.class);
/** serialVersionUID. */
private static final long serialVersionUID = -6669320998140538372L;
- protected JComboBox dataBox;
+ protected JComboBox<T> dataBox;
protected JTextField filterField;
protected JButton resetButton;
@@ -79,28 +79,28 @@
buildLayout();
}
- public FilterableComboBox(ComboBoxModel model) {
+ public FilterableComboBox(ComboBoxModel<T> model) {
this();
setModel(model);
}
- class FilterComboBoxModel extends AbstractListModel implements ComboBoxModel {
+ class FilterComboBoxModel extends AbstractListModel<T> implements ComboBoxModel<T> {
/** serialVersionUID. */
private static final long serialVersionUID = 6256289874593024153L;
- protected ComboBoxModel model;
+ protected ComboBoxModel<T> model;
protected List<Integer> realIndexes = new ArrayList<Integer>();
protected Object selectedItem;
- public FilterComboBoxModel(ComboBoxModel model) {
+ public FilterComboBoxModel(ComboBoxModel<T> model) {
this.model = model;
fireDataChanged();
}
- public ComboBoxModel getModel() {
+ public ComboBoxModel<T> getModel() {
return model;
}
@@ -111,9 +111,9 @@
}
@Override
- public Object getElementAt(int index) {
+ public T getElementAt(int index) {
int realIndex = realIndexes.get(index);
- Object element = model.getElementAt(realIndex);
+ T element = model.getElementAt(realIndex);
return element;
}
@@ -199,9 +199,9 @@
* Build layout.
*/
private void buildLayout() {
- dataBox = new JComboBox();
+ dataBox = new JComboBox<T>();
dataBox.addActionListener(new ComboBoxActionListener());
- filterField = new JXTextField(_("isisfish.common.filter"));
+ filterField = new JXTextField(t("isisfish.common.filter"));
// fix size
filterField.setPreferredSize(new Dimension(200, 0));
resetButton = new JButton(Resource.getIcon("/icons/cancel.png"));
@@ -224,12 +224,12 @@
*
* @param model model to set
*/
- public void setModel(ComboBoxModel model) {
+ public void setModel(ComboBoxModel<T> model) {
model.addListDataListener(this);
dataBox.setModel(new FilterComboBoxModel(model));
}
- public ComboBoxModel getModel() {
+ public ComboBoxModel<T> getModel() {
return ((FilterComboBoxModel)dataBox.getModel()).getModel();
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -37,7 +37,7 @@
*
* Created: Wed Oct 4 2000
*
- * @author POUSSIN Benjamin <bpoussin(a)free.fr> Copyright COGITEC
+ * @author POUSSIN Benjamin <bpoussin(a)free.fr> Copyright COGITEC
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -51,7 +51,7 @@
*
* Created: 23 mars 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,40 @@
+package fr.ifremer.isisfish.ui.widget.editor;
+
+import javax.swing.CellEditor;
+import javax.swing.JButton;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener.FactorCallback;
+
+public class FactorEditor extends JButton implements FactorCallback {
+
+ /** Cell editor. */
+ protected CellEditor cellEditor;
+
+ /** Component factor value. */
+ protected Factor factor;
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 4070032587998279914L;
+
+ public FactorEditor(CellEditor cellEditor, Factor factor) {
+ this.cellEditor = cellEditor;
+ this.factor = factor;
+
+ if (factor != null) {
+ setText(factor.toString());
+ } else {
+ setText("Edition du facteur");
+ }
+ }
+
+ public Factor getFactor() {
+ return factor;
+ }
+
+ @Override
+ public void setSelectedFactor(Factor factor) {
+ this.factor = factor;
+ cellEditor.stopCellEditing();
+ }
+}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,27 @@
+package fr.ifremer.isisfish.ui.widget.editor;
+
+import java.awt.event.ActionListener;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+
+/**
+ * Action listener that call factor callback when action is complete.
+ *
+ * @author Eric Chatellier
+ */
+public abstract class FactorEditorListener implements ActionListener {
+
+ public interface FactorCallback {
+ public void setSelectedFactor(Factor factor);
+ }
+
+ public FactorCallback callback;
+
+ public void setFactorCallback(FactorCallback callback) {
+ this.callback = callback;
+ }
+
+ public void setSelectedFactor(Factor factor) {
+ callback.setSelectedFactor(factor);
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -37,7 +37,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class MonthComponent extends JComboBox {
+public class MonthComponent extends JComboBox<MonthEnum> {
/** serialVersionUID. */
private static final long serialVersionUID = 2992441627176713132L;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,12 +34,12 @@
import java.util.List;
import javax.swing.AbstractCellEditor;
+import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
-
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -47,8 +47,10 @@
import org.nuiton.topia.persistence.TopiaEntity;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.types.TimeStep;
-import fr.ifremer.isisfish.types.Month;
+import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener.FactorCallback;
import fr.ifremer.isisfish.util.ConverterUtil;
/**
@@ -77,6 +79,8 @@
protected Class<?> type = null;
+ protected FactorEditorListener factorActionListener;
+
private static enum TypeClassMapping {
/** for simple int. */
Int(int.class, Integer.class),
@@ -90,6 +94,8 @@
Double(double.class, Double.class),
/** for a simple boolean. */
Boolean(boolean.class, Boolean.class),
+ /** for a Factor. */
+ Factor(Factor.class),
/** for a file location. */
File(java.io.File.class),
/** for a simple String. */
@@ -136,6 +142,10 @@
}
}
+ public void setFactorActionListener(FactorEditorListener factorActionListener) {
+ this.factorActionListener = factorActionListener;
+ }
+
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
@@ -190,14 +200,22 @@
case Mounth:
editor = MonthComponent.createMounthCombo(((Month) value).getMonthNumber());
break;
+ case Factor:
+ editor = new FactorEditor(this, (Factor)value);
+ if (factorActionListener == null) {
+ throw new RuntimeException("Missing factorActionListener call setFactorActionListener()");
+ }
+ factorActionListener.setFactorCallback((FactorCallback)editor);
+ ((JButton)editor).addActionListener(factorActionListener);
+ break;
case File:
// break;
default:
- editor = new JTextField(value.toString());
+ editor = new JTextField(String.valueOf(value));
}
if (editor != null) {
if (JComboBox.class.isInstance(editor)) {
- ((JComboBox) editor).addActionListener(getComboListener());
+ ((JComboBox) editor).addActionListener(getStopEditingListener());
} else if (JTextField.class.isInstance(editor)) {
((JTextField) editor).addFocusListener(new FocusAdapter() {
@Override
@@ -211,10 +229,10 @@
} else if (StepComponent.class.isInstance(editor)) {
StepComponent date = ((StepComponent) editor);
if (date.getMounthCombo() != null) {
- date.getMounthCombo().addActionListener(getComboListener());
+ date.getMounthCombo().addActionListener(getStopEditingListener());
}
if (date.getYearCombo() != null) {
- date.getYearCombo().addActionListener(getComboListener());
+ date.getYearCombo().addActionListener(getStopEditingListener());
}
}
}
@@ -241,7 +259,7 @@
return value.getClass();
}
- protected ActionListener getComboListener() {
+ protected ActionListener getStopEditingListener() {
return new ActionListener() {
@Override
@@ -261,11 +279,10 @@
TypeClassMapping mapping = TypeClassMapping.getMapping(type);
switch (mapping) {
case Topia:
- result = getComboBoxValue(editor);
+ result = ((JComboBox) editor).getSelectedItem();
break;
case Boolean:
- result = getComboBoxValue(editor);
- // TODO test
+ result = ((JComboBox) editor).getSelectedItem();
break;
case Mounth:
result = new Month(((MonthComponent)editor).getSelectedValue());
@@ -273,6 +290,9 @@
case TimeStep:
result = new TimeStep(((StepComponent) editor).getSelectedValue());
break;
+ case Factor:
+ result = ((FactorEditor)editor).getFactor();
+ break;
case File:
//TODO
// result = getTextFieldValue(editor);break;
@@ -299,16 +319,4 @@
return result;
}
-
- protected Object getTextFieldValue(Component editor) {
- return ((JTextField) editor).getText();
- }
-
- protected Object getComboBoxValue(Component editor) {
- return ((JComboBox) editor).getSelectedItem();
- }
-
- protected int getComboBoxIndex(Component editor) {
- return (((JComboBox) editor)).getSelectedIndex();
- }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ScriptParameterDialog.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ScriptParameterDialog.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ScriptParameterDialog.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2011 Ifremer, Code Lutin, Chatellier Eric
+ Copyright (C) 2011 - 2012 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
@@ -39,7 +39,7 @@
* Test if isis configuration allow auto configuration, and display
* configuration frame (with only table model).
*
- * @param parent parent component
+ * @param context parent component
* @param script script to configure
* @return configured script, or {@code null} if user cancel configuration
*/
@@ -84,10 +84,10 @@
</row>
<row>
<cell anchor="east" weightx='1.0'>
- <JButton text="isisfish.common.ok" onActionPerformed="{okAction = true; dispose();}" />
+ <JButton text="isisfish.common.ok" onActionPerformed="okAction = true; dispose();" />
</cell>
<cell anchor="west" weightx='1.0'>
- <JButton text="isisfish.common.cancel" onActionPerformed="{okAction = false; dispose();}" />
+ <JButton text="isisfish.common.cancel" onActionPerformed="okAction = false; dispose();" />
</cell>
</row>
</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,12 +24,12 @@
package fr.ifremer.isisfish.ui.widget.editor;
import java.awt.GridLayout;
-import java.util.ArrayList;
-import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JPanel;
+import org.nuiton.util.MonthEnum;
+
/**
* Component used to edit TimeStep.
*
@@ -43,9 +43,9 @@
private static final long serialVersionUID = -6694461572642939712L;
- protected JComboBox mounth;
+ protected JComboBox<MonthEnum> mounth;
- protected JComboBox year;
+ protected JComboBox<Integer> year;
public StepComponent(int mounth, int year) {
super(new GridLayout(0, 2));
@@ -57,11 +57,11 @@
this.add(this.year);
}
- public JComboBox getYearCombo() {
+ public JComboBox<Integer> getYearCombo() {
return year;
}
- public JComboBox getMounthCombo() {
+ public JComboBox<MonthEnum> getMounthCombo() {
return mounth;
}
@@ -84,13 +84,11 @@
return selectedMounth + selectedYear * 12;
}
- public static JComboBox createYearCombo(int nb, int selectedYear) {
- List<Integer> listI = new ArrayList<Integer>();
+ public static JComboBox<Integer> createYearCombo(int nb, int selectedYear) {
+ JComboBox<Integer> year = new JComboBox<Integer>();
for (int i = 0; i < nb; i++) {
- listI.add(i);
+ year.addItem(i);
}
- JComboBox year = new JComboBox(listI.toArray());
- listI.clear();
year.setSelectedIndex(selectedYear);
return year;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,7 +34,7 @@
/**
* This class is an Acceptor factory.
- * <p/>
+ * <p>
* For simple {@link Acceptor} we use a cache to use an unique instance.
*
* @author chemit
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,14 +25,11 @@
package fr.ifremer.isisfish.ui.widget.filter;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
- * this class is a concrete implementation of {@link FilterAcceptor}
+ * This class is a concrete implementation of {@link FilterAcceptor}
* with an internal {@link Acceptor} (delegate Acceptor operations),
- * and an internal {@link ValueGetter} (delegate ValueGetter operations)
- * <p/>
+ * and an internal {@link ValueGetter} (delegate ValueGetter operations).
*
* @author chemit
* @see Acceptor
@@ -41,8 +38,6 @@
*/
public class CompositeFilterAcceptor<M, T> implements FilterAcceptor<M, T> {
- static private Log log = LogFactory.getLog(CompositeFilterAcceptor.class);
-
/** delegate Acceptor */
protected Acceptor<T> acceptor;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,8 +27,7 @@
/**
* Class representing an Acceptor and ValueGetter for object of
- * type <code>M</code> and parameter of type <code>T</code>
- * <p/>
+ * type <code>M</code> and parameter of type <code>T</code>.
*
* @author chemit
* @see Acceptor
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -30,22 +30,22 @@
/**
* Contrat à respecter pour qu'un dialogue puisse bénéficier du mécanisme de
* filtre.
- * <p/>
*
* Cette méthode est invoquée lors d'un appel à {@link #doFilter()} ou
* {@link #doCheck()}.
- * <p/>
+ * <p>
* La méthode {@link #doReset()} permet de réinitialiser le dialogModel
* (et le dialogue)
*/
public interface FilterDialog<M, R> {
/**
- * launch filter proccess.
- * <p/>
+ * launch filter process.
+ *
* This operation acts in three step :
- * <ul><li>clean model</li>
- * <ul><li>push ui values to model </li>
+ * <ul>
+ * <li>clean model</li>
+ * <li>push ui values to model </li>
* <li> for all original items and only for detected as usable params
* try to accept item</li>
* </ul>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,14 +24,13 @@
-->
<JDialog>
<import>
+ static org.nuiton.i18n.I18n.t
jaxx.runtime.JAXXObject
javax.swing.text.html.HTMLEditorKit
javax.swing.text.html.HTMLDocument
javax.swing.event.HyperlinkListener
javax.swing.text.html.HTMLFrameHyperlinkEvent
javax.swing.event.HyperlinkEvent
- java.io.PrintWriter
- java.io.StringWriter
fr.ifremer.isisfish.ui.widget.filter.FilterModel
fr.ifremer.isisfish.ui.widget.filter.FilterParamModel
@@ -50,17 +49,15 @@
public FilterParamModel getParamModel(String paramKey) {
return model.getParamModel(paramKey);
}
- @SuppressWarnings({"unchecked"})
+
public java.util.List getOriginal() {
return model.getOriginal();
}
/** @return list of last filter list obtain */
- @SuppressWarnings({"unchecked"})
protected List getFilterResult() {
// obtain list filtered
return model.getFiltered();
}
- @SuppressWarnings({"unchecked"})
public List obtainFilterResult() {
// compact dialog
setSize(getMinimumSize());
@@ -89,7 +86,6 @@
*
* @see FilterModel#reset()
*/
- @SuppressWarnings({"unchecked"})
public void doReset() {
content.doReset();
model.reset();
@@ -156,7 +152,7 @@
}
protected void refreshResult() {
if (model == null) return;
- labelResult.setText(_("isisfish.filter.result.found", model.getNbResult(), model.getNbOriginal()));
+ labelResult.setText(t("isisfish.filter.result.found", model.getNbResult(), model.getNbOriginal()));
if (getComboResult() != null) {
if (modelResult == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,7 +34,7 @@
/**
* This class represents a generic filter model.
- * <p/>
+ *
* It contains all data to be used for filter process.
*
* @author chemit
@@ -52,7 +52,7 @@
/** list of param keys to be used */
protected List<String> paramKeys;
- /** map -> paramKey to param models */
+ /** map -> paramKey to param models */
protected Map<String, FilterParamModel<M, ?>> paramModels;
/**
* flag to says inclusive mode (need one param accept)
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterPanelUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterPanelUI.jaxx 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterPanelUI.jaxx 2014-04-17 16:48:13 UTC (rev 3969)
@@ -43,8 +43,6 @@
/**
* push param's ui value to model
- *
- * @throws Exception
*/
public void uiToModel() {
// implements me...
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/ArgTypes.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/ArgTypes.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/ArgTypes.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -33,7 +33,7 @@
/**
* Annotation utilisée pour specifier le type des parametres.
*
- * Pour etre plus explicit que "List" en renseignant "List<Zone>" par exemple.
+ * Pour etre plus explicit que "List" en renseignant "List<Zone>" par exemple.
*
* Doit pouvoir être remplacé par l'introspection java sans problème.
*
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/CellPointcomparator.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/CellPointcomparator.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/CellPointcomparator.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -36,7 +36,7 @@
*
* Created: 6 septembre 2005 00:57:33 CEST
*
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
*
* @version $Revision$
*
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2006 - 2012 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric
+ * Copyright (C) 2006 - 2014 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, 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,7 +25,7 @@
package fr.ifremer.isisfish.util;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.PrintWriter;
@@ -41,15 +41,14 @@
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.eclipse.jdt.internal.compiler.tool.EclipseCompiler;
import org.nuiton.util.FileUtil;
-import com.sun.tools.javac.api.JavacTool;
-
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.CodeSourceStorage.Location;
import fr.ifremer.isisfish.datastore.JavaSourceStorage;
@@ -72,9 +71,6 @@
/** Logger for this class. */
private static final Log log = LogFactory.getLog(CompileHelper.class);
-
- /** CP detector proxy. */
- //protected static CodepageDetectorProxy detector;
/**
* Recherche tous les fichiers qui un source plus recent que la version compilé.
@@ -87,7 +83,7 @@
List<File> result = new ArrayList<File>();
for (File src : srcDir.listFiles()) {
File dest = new File(FileUtil.basename(src, ".java"), ".class");
- if (src.getName().endsWith(".java") && FileUtil.isNewer(src, dest)) {
+ if (src.getName().endsWith(".java") && FileUtils.isFileNewer(src, dest)) {
result.add(src);
}
}
@@ -106,7 +102,7 @@
ClassLoader cl = IsisFish.config.getScriptClassLoader();
result = cl.loadClass(fqn);
} catch (ClassNotFoundException eee) {
- log.info(_("isisfish.error.load.class", fqn), eee);
+ log.info(t("isisfish.error.load.class", fqn), eee);
}
return result;
}
@@ -120,7 +116,7 @@
result = clazz.newInstance();
}
} catch (Exception eee) {
- log.warn(_("isisfish.error.instanciate", fqn), eee);
+ log.warn(t("isisfish.error.instanciate", fqn), eee);
}
return result;
}
@@ -142,7 +138,7 @@
File src = source.getFile();
File dst = new File(destDir, source.getFQN().replace('.',
File.separatorChar) + ".class");
- if (force || FileUtil.isNewer(src, dst)) {
+ if (force || !dst.exists() || FileUtils.isFileNewer(src, dst)) {
return compile(source.getRoot(), src, destDir, out);
}
return 0;
@@ -158,10 +154,12 @@
* @param out l'objet sur lequel on ecrit la sortie (erreur) de la
* compilation
* @return un nombre different de 0 s'il y a une erreur
+ * <ul>
* <li> -1000 si l'exception vient de la recherche du compilateur par
- * introspection
- * <li> -10000 si une autre exception
- * <li> sinon les valeurs retourné par le compilateur java
+ * introspection</li>
+ * <li> -10000 si une autre exception</li>
+ * <li> sinon les valeurs retourné par le compilateur java</li>
+ * </ul>
*/
public static int compile(File rootSrc, File src, File dest, PrintWriter out) {
int result = compile(rootSrc, Collections.singletonList(src), dest, out);
@@ -178,10 +176,12 @@
* @param out l'objet sur lequel on ecrit la sortie (erreur) de la
* compilation
* @return un nombre different de 0 s'il y a une erreur
+ * <ul>
* <li> -1000 si l'exception vient de la recherche du compilateur par
- * introspection
- * <li> -10000 si une autre exception
- * <li> sinon les valeurs retourné par le compilateur java
+ * introspection</li>
+ * <li> -10000 si une autre exception</li>
+ * <li> sinon les valeurs retourné par le compilateur java</li>
+ * </ul>
*/
public static int compile(File rootSrc, Collection<File> src, File dest,
PrintWriter out) {
@@ -220,14 +220,12 @@
int result = -1000;
try {
- // look for best available Java compiler (if none, use provided)
- JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- if (compiler == null) {
- compiler = JavacTool.create();
- }
+ List<String> args = new ArrayList<String>();
- // Use system compiler
- // JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ // use eclipse ecj compiler
+ JavaCompiler compiler = new EclipseCompiler();
+
+ // Get compilation units
StandardJavaFileManager fileManager = compiler
.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager
@@ -235,10 +233,14 @@
// Options de compilations
String classpathAsString = getClassPathAsString(classpath);
- List<String> args = new ArrayList<String>();
+ args.add("-source");
+ args.add("1.7");
+ args.add("-target");
+ args.add("1.7");
args.add("-g");
// Show a description of each use or override of a deprecated member or class.
- args.add("-deprecation");
+ args.add("-warn:deprecation"); // non standard option for ecj
+ //args.add("-deprecation"); // standard option
args.add("-encoding");
args.add("utf-8");
args.add("-classpath");
@@ -267,8 +269,8 @@
*
* Add :
* <ul>
- * <li>System.getProperty("java.class.path")
- * <li>All first jar dependency (META-INF/MANIFEST.MF)
+ * <li>System.getProperty("java.class.path")</li>
+ * <li>All first jar dependency (META-INF/MANIFEST.MF)</li>
* </ul>
* @param classpath initial classpath
* @return classpath as string
@@ -333,7 +335,7 @@
String content = "<p>Equation : "
+ createHREF(javaInterface.getName(), category) + " - " + name
+ "</p>";
- content += "<h3>" + _("isisfish.editor.parametersnameandtypes") + " :</h3>";
+ content += "<h3>" + t("isisfish.editor.parametersnameandtypes") + " :</h3>";
Method[] methods = javaInterface.getDeclaredMethods();
Method interfaceMethod = methods[0];
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -32,12 +32,10 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.persistence.TopiaEntity;
-import fr.ifremer.isisfish.types.TimeStep;
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.types.RangeOfValues;
+import fr.ifremer.isisfish.types.TimeStep;
import fr.ifremer.isisfish.types.TimeUnit;
-import java.util.Map;
-import java.util.WeakHashMap;
/**
* ConverterUtil.
Deleted: trunk/src/main/java/fr/ifremer/isisfish/util/Docable.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/Docable.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/Docable.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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: trunk/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.util;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.io.IOException;
@@ -39,7 +39,6 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
@@ -47,6 +46,8 @@
import java.util.HashMap;
import org.apache.commons.lang3.StringUtils;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* Permet d'evaluer les equations ecritent en Java
@@ -64,11 +65,19 @@
/** Logger for this class. */
private static Log log = LogFactory.getLog(EvaluatorHelper.class);
+ /**
+ * Regex to match import:
+ * - "^(import ...;)" for import at line beginning
+ * - ";(import ...;)" for multiple import on same line
+ */
+ static protected Pattern grepImportPattern = Pattern.compile("(?:^\\s*|(?<=;)\\s*)(import[^;]+;)", Pattern.DOTALL + Pattern.MULTILINE);
+
private static final String HASH_CACHE_KEY = "__hashCache__";
protected static String getHashCache(File fileCheckSum) {
String result = "";
+ // FIXME echatellier c'est pas possible que cela renvoit null
SimulationContext context = SimulationContext.get();
if (context == null) {
// on est pas dans une simulation
@@ -113,9 +122,8 @@
}
}
-
protected static String normalizeClassName(String name) {
- StringBuffer result = new StringBuffer(name);
+ StringBuilder result = new StringBuilder(name);
for (int i=0; i<result.length(); i++) {
char c = result.charAt(i);
if (!Character.isJavaIdentifierPart(c)) {
@@ -126,7 +134,7 @@
}
/**
- * Verifie si une equation est syntaxiquement correcte.
+ * Verifie si un script (prescript/equation) est syntaxiquement correct.
*
* @param javaInterface
* @param script
@@ -175,7 +183,7 @@
* @return la valeur retourné par la methode
*/
public static Object evaluate(String packageName, String className,
- Class javaInterface, String script, Map<String, Object> args) {
+ Class javaInterface, String script, Object... args) {
className = normalizeClassName(className);
Object result = null;
@@ -190,57 +198,48 @@
File fileRootSrc = IsisFish.config.getCompileDirectory();
File fileCheckSum = new File(fileRootSrc, packageName + File.separator + className + ".hashCode");
File fileSrc = new File(fileRootSrc, packageName + File.separator + className + ".java");
- File fileDest = new File(fileRootSrc, packageName + File.separator + className + ".class");
+ //File fileDest = new File(fileRootSrc, packageName + File.separator + className + ".class");
- boolean checkSumEquals = false;
-
// if equation's Java file exists, check the checksum
- if (fileSrc.exists() && fileCheckSum.exists()) {
- String oldCheckSum = getHashCache(fileCheckSum);
- String newCheckSum = Integer.toString(script.hashCode());
- checkSumEquals = newCheckSum.equals(oldCheckSum);
- }
+ String oldCheckSum = getHashCache(fileCheckSum);
+ String newCheckSum = Integer.toString(script.hashCode());
+ boolean checkSumEquals = newCheckSum.equals(oldCheckSum);
// if Java file's checkSum is not equals to script's checkSum
// generate new Java file
if (!checkSumEquals) {
+
String content = generateContent(packageName, className, interfaceMethod, script);
-
try {
// force writing to UTF-8
// fix compilation issue : unmappable characters
- FileUtil.writeString(fileSrc, content, "utf-8");
+ FileUtils.writeStringToFile(fileSrc, content, "utf-8");
setHashCache(fileCheckSum, Integer.toString(script.hashCode()));
+ setHashCache(fileCheckSum, Integer.toString(script.hashCode()));
} catch (IOException zzz) {
- throw new IsisFishRuntimeException(_("isisfish.error.save.script.compilation", fileSrc), zzz);
+ throw new IsisFishRuntimeException(t("isisfish.error.save.script.compilation", fileSrc), zzz);
}
- }
- // if Java file is newer than class file, compile java file
- if (FileUtil.isNewer(fileSrc, fileDest)) {
- try {
- // does'nt contains isisdatabase-3 directory
- //int compileResult = CompileHelper.compile(fileRootSrc, fileSrc, fileRootSrc, null);
-
- List<File> classpath = new ArrayList<File>();
- classpath.add(fileRootSrc.getAbsoluteFile());
- classpath.add(IsisFish.config.getDatabaseDirectory().getAbsoluteFile());
- int compileResult = CompileHelper.compile(classpath, Collections.singletonList(fileSrc), fileRootSrc, null);
-
- if (compileResult != 0) {
- throw new IsisFishRuntimeException(_("isisfish.error.compile.script", compileResult, fileSrc));
- }
- } catch (Exception zzz) {
- throw new IsisFishRuntimeException(_("isisfish.error.compile.script", fileSrc), zzz);
- }
+ compile(fileRootSrc, fileSrc);
}
// try to load class
try {
ClassLoader cl = IsisFish.config.getScriptClassLoader();
- clazz = cl.loadClass(classname);
- } catch (Exception zzz) {
- throw new IsisFishRuntimeException(_("isisfish.error.load.class", classname), zzz);
+ clazz = cl.loadClass(classname);
+ } catch (Exception ex) {
+
+ // force to compile it again; may happen if hashcode
+ // is correct, but .class file can't be loaded
+ compile(fileRootSrc, fileSrc);
+
+ try {
+ // second load
+ ClassLoader cl = IsisFish.config.getScriptClassLoader();
+ clazz = cl.loadClass(classname);
+ } catch (Exception ex2) {
+ throw new IsisFishRuntimeException(t("isisfish.error.compile.script", fileSrc), ex2);
+ }
}
result = invoke(clazz, interfaceMethod, args);
@@ -248,29 +247,54 @@
return result;
}
+ protected static void compile(File fileRootSrc, File fileSrc) {
+ try {
+ List<File> classpath = new ArrayList<File>();
+ classpath.add(fileRootSrc.getAbsoluteFile());
+ classpath.add(IsisFish.config.getDatabaseDirectory().getAbsoluteFile());
+ int compileResult = CompileHelper.compile(classpath, Collections.singletonList(fileSrc), fileRootSrc, null);
+
+ if (compileResult != 0) {
+ throw new IsisFishRuntimeException(t("isisfish.error.compile.script", compileResult, fileSrc));
+ }
+ } catch (Exception zzz) {
+ throw new IsisFishRuntimeException(t("isisfish.error.compile.script", fileSrc), zzz);
+ }
+ }
+
/**
- * Generate equation content.
+ * Generate script content.
*
- * Warning, content are always on a unique single line (without \n) for
- * debuging purpose.
+ * Warning, content are always on a unique single line (without \n) for debugging purpose.
*
* @param packageName
* @param className
* @param interfaceMethod
* @param script
- * @return equation return
+ * @return script return (or null)
*/
protected static String generateContent(String packageName, String className, Method interfaceMethod, String script) {
+
+ StringBuilder imports = new StringBuilder();
+ StringBuilder code = new StringBuilder();
+
+ grepImport(script, imports, code);
+
String content = "";
if (packageName != null && !"".equals(packageName)) {
content += "package " + packageName + ";";
}
+
+ // add common used imports
+ content += "import java.util.*;";
+ content += "import java.io.*;";
content += "import fr.ifremer.isisfish.entities.*;";
+ content += "import fr.ifremer.isisfish.types.*;";
content += "import org.nuiton.math.matrix.*;";
- content += "import fr.ifremer.isisfish.types.*;";
- content += "import org.apache.commons.logging.Log;";
- content += "import org.apache.commons.logging.LogFactory;";
- content += "import java.util.*;";
+ content += "import org.apache.commons.logging.*;";
+ content += imports.toString();
+
+ // generate content (do not add \n here, this help debug)
content += "public class " + className + " implements " + interfaceMethod.getDeclaringClass().getName() + " {";
content += "private static Log log = LogFactory.getLog(" + className + ".class);";
content += "public " + interfaceMethod.getReturnType().getName() + " " + interfaceMethod.getName() + "(";
@@ -297,30 +321,49 @@
}
}
content += ") throws Exception {";
- content += script;
+ content += code.toString();
content += "\n}\n}\n";
return content;
}
- protected static Object invoke(Class clazz, Method interfaceMethod, Map<String, Object> args) {
+ /**
+ * looking for import in code. return all import as found in code in imports args
+ * all other code are put in others
+ *
+ * @param code
+ * @param imports
+ * @param others
+ */
+ protected static void grepImport(String code, StringBuilder imports, StringBuilder others) {
+ Matcher matches = grepImportPattern.matcher(code);
+ int pos = 0;
+ while (matches.find()) {
+ int begin = matches.start(1);
+ int end = matches.end(1);
+
+ others.append(code.substring(pos, begin));
+ imports.append(code.substring(begin, end));
+ pos = end;
+
+ }
+
+ others.append(code.substring(pos));
+ }
+
+ protected static Object invoke(Class clazz, Method interfaceMethod, Object... args) {
+
+ Object result;
try {
Method method = clazz.getDeclaredMethod(interfaceMethod.getName(),
interfaceMethod.getParameterTypes());
-
- List<Object> params = new ArrayList<Object>();
- for (String name : interfaceMethod.getAnnotation(Args.class).value()) {
- Object arg = args.get(name);
- params.add(arg);
- }
+
Object eq = clazz.newInstance();
- Object result;
- result = method.invoke(eq, params.toArray());
- return result;
+ result = method.invoke(eq, args);
+
} catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.invoke.method", interfaceMethod, clazz.getName()), eee);
+ throw new IsisFishRuntimeException(t("isisfish.error.invoke.method", interfaceMethod, clazz.getName()), eee);
}
+ return result;
}
}
-
-
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/IsisCache.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/IsisCache.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/IsisCache.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -24,14 +24,16 @@
*/
package fr.ifremer.isisfish.util;
-import fr.ifremer.isisfish.simulator.SimulationContext;
-import fr.ifremer.isisfish.types.TimeStep;
import java.lang.reflect.Method;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
import org.nuiton.topia.persistence.TopiaEntity;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.types.TimeStep;
+
/**
* IsisCacheOnReferenceMap utilise pour mettre les resultats de methode durant
* la simulation pour minimiser les appels
@@ -74,7 +76,7 @@
/**
* Return trace object from context.
- * <p>
+ *
* @return trace object from context
*/
protected Trace getTrace() {
@@ -84,11 +86,8 @@
}
/**
- * Recupere pour un pas de temps donnes une valeur calcule pour une cle
- * <p>
- * @param step le pas de temps pour lequel on souhaite ajouter (ou
- * null)
- * @param key la cle de storage
+ * Recupere pour un pas de temps donnes une valeur calcule pour une cle.
+ *
* @param defaultValue la valeur par defaut a retourner si elle n'est pas en
* cache si defaultValue est une JoinPoint alors un
* proceed est appele dessus et le resultat de l'appel
@@ -167,16 +166,15 @@
/**
* On fait l'appel reel dans une autre methode pour pouvoir le savoir dans
- * les traces
- * <p>
- * @param jp
+ * les traces.
+ *
* @return ?
* @throws Throwable
*/
protected Object realCall(Object defaultValue) throws Throwable {
Object result = defaultValue;
- if (defaultValue instanceof JoinPoint) {
- result = ((JoinPoint) defaultValue).proceed();
+ if (defaultValue instanceof ProceedingJoinPoint) {
+ result = ((ProceedingJoinPoint)defaultValue).proceed();
}
return result;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/IsisCacheBackendOnReferenceMap.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/IsisCacheBackendOnReferenceMap.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/IsisCacheBackendOnReferenceMap.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -34,15 +34,15 @@
/**
* IsisCacheBackendOnReferenceMap utilise pour mettre les resultats de methode durant la simulation
- pour minimiser les appels
-
- Created: 25 août 06 22:42:47
+ * pour minimiser les appels
*
+ * Created: 25 août 06 22:42:47
+ *
* @author poussin
* @version $Revision$
-
- Last update: $Date$
- by : $Author$
+ *
+ * Last update: $Date$
+ * by : $Author$
*/
public class IsisCacheBackendOnReferenceMap implements IsisCacheBackend {
@@ -64,7 +64,7 @@
static final private Object NULL = new Object();
/**
- * map<TimeStep, Map<Key, Value>>
+ * map<TimeStep, Map<Key, Value>>
* TimeStep peut etre null via l'objet NULL
* Key est la cle calcule par computeKey
* Value est la valeur du cache
@@ -129,7 +129,7 @@
}
/**
- * remove all values in cache for the specied TimeStep
+ * remove all values in cache for the specified TimeStep
*/
@Override
public void removeStep(Object o) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, Code Lutin, Chatellier Eric
+ * Copyright (C) 2009 - 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
@@ -25,21 +25,25 @@
package fr.ifremer.isisfish.util;
+import static org.nuiton.i18n.I18n.t;
+
import java.io.File;
import java.io.FileFilter;
import java.io.PrintWriter;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.reflect.MethodUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.FileUtil;
-import com.sun.tools.doclets.standard.Standard;
-import com.sun.tools.javadoc.Main;
-
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.FormuleStorage;
import fr.ifremer.isisfish.datastore.JavaSourceStorage;
@@ -63,9 +67,6 @@
/** Logger for this class. */
private static final Log log = LogFactory.getLog(JavadocHelper.class);
-
- /** Nom du programme dans les outils JDK. */
- protected static final String JAVADOC_TOOL_NAME = "javadoc";
/**
* Generate javadoc of current.
@@ -82,7 +83,7 @@
File dst = new File(destDir, source.getFQN().replace('.', File.separatorChar) + ".html");
int result = 0;
- if (force || FileUtil.isNewer(src, dst)) {
+ if (force || !dst.exists() || FileUtils.isFileNewer(src, dst)) {
result = generateJavadoc(source.getRoot(), src, destDir, out);
}
return result;
@@ -172,6 +173,7 @@
dest.mkdirs();
try {
+
// Options de compilations
String classpathAsString = CompileHelper.getClassPathAsString(classpath);
@@ -182,25 +184,51 @@
args.add(dest.getAbsolutePath());
args.add("-link");
- args.add("http://docs.oracle.com/javase/6/docs/api/");
+ args.add("http://docs.oracle.com/javase/7/docs/api/");
args.add("-link");
args.add(IsisFish.config.getJavadocURL());
// also add author and version
args.add("-author");
args.add("-version");
-
+
for (File srcFile : filesSrc) {
args.add(srcFile.getAbsolutePath());
}
- //result = Main.execute(JAVADOC_TOOL_NAME, args.toArray(new String[0]));
- result = Main.execute(JAVADOC_TOOL_NAME, out, out, out,
- Standard.class.getName(), args.toArray(new String[0]));
-
+
+ // can throw error in not run with JDK
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ try {
+ // TODO echatellier 20140319 : replace with DocumentationTool from java 8
+
+ // on est obligé de changer le classloader, sinon il ne trouve pas la class
+ // com.sun.tools.doclets.standard.Standard
+ File jreHome = new File(System.getProperty("java.home"));
+ File jreLib = new File(jreHome.getParent(), "lib");
+ File toolsJar = new File(jreLib, "tools.jar");
+ URLClassLoader toolsJarLoader = new URLClassLoader(new URL[] { toolsJar.toURI().toURL() });
+ Thread.currentThread().setContextClassLoader(toolsJarLoader);
+
+ // invocation dynamique pour ne pas embarqué le jar
+ Class<?> mainTool = toolsJarLoader.loadClass("com.sun.tools.javadoc.Main");
+ Method method = mainTool.getMethod("execute", String.class, PrintWriter.class, PrintWriter.class,
+ PrintWriter.class, String.class, String[].class);
+ method.invoke(null, "javadoc", out, out, out,
+ "com.sun.tools.doclets.standard.Standard", args.toArray(new String[0]));
+ toolsJarLoader.close();
+ } catch (Exception ex) {
+ out.println(t("This function is only available with JDK (not JRE)"));
+ ex.printStackTrace(out);
+ result = -1;
+ } finally {
+ Thread.currentThread().setContextClassLoader(cl);
+ }
+
} catch (Exception eee) {
if (log.isWarnEnabled()) {
log.warn("Can't generate javadoc", eee);
}
+ result = -1;
}
return result;
}
Copied: trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java (from rev 3968, branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/ScriptUtil.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,63 @@
+package fr.ifremer.isisfish.util;
+
+/*
+ * #%L
+ * IsisFish
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 1999 - 2013 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%
+ */
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+
+/**
+ * Cette class réintroduit les méthodes qui ont été supprimées dans nuiton-utils
+ * (car des equivalents commons existent).
+ *
+ * Pour facilité la vie des utilisateurs, ont les regroupent ici.
+ *
+ * @author echatellier
+ */
+public class ScriptUtil {
+
+ /**
+ * Reads the contents of a file into a String. The file is always closed.
+ *
+ * @param file the file to read, must not be {@code null}
+ * @return the file contents, never {@code null}
+ * @since 4.3.0
+ */
+ public static String readAsString(File file) throws IOException {
+ return FileUtils.readFileToString(file, "utf-8");
+ }
+
+ /**
+ * Writes a String to a file creating the file if it does not exist.
+ *
+ * @param file the file to write
+ * @param content the content to write to the file
+ * @since 4.3.0
+ */
+ public static void writeString(File file, String content) throws IOException {
+ FileUtils.writeStringToFile(file, content, "utf-8");
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/TopiaEntityConverter.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2006 - 2011 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric
+ * Copyright (C) 2006 - 2013 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, 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
@@ -32,15 +32,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
-import org.hibernate.engine.QueryParameters;
-import org.hibernate.engine.SessionImplementor;
+import org.hibernate.engine.spi.QueryParameters;
+import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.type.StandardBasicTypes;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaId;
-
/**
* Classe utilise pour convertir une chaine en un objet TopiaEntity.
*
@@ -50,15 +49,12 @@
*/
public class TopiaEntityConverter implements Converter {
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory
- .getLog(TopiaEntityConverter.class);
+ /** Logger for this class. */
+ private static final Log log = LogFactory.getLog(TopiaEntityConverter.class);
protected TopiaContext context = null;
protected SessionImplementor session = null;
-
+
public TopiaEntityConverter(TopiaContext context) {
this.context = context;
}
@@ -67,15 +63,13 @@
this.session = session;
}
- /* (non-Javadoc)
- * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object)
- */
+ @Override
public Object convert(Class type, Object value) {
Object result = null;
if (value instanceof TopiaEntity) {
result = value;
- } else if (value instanceof String){
- result = getTopiaEntity((String)value);
+ } else if (value instanceof String) {
+ result = getTopiaEntity((String) value);
} else {
throw new ConversionException("Can't convert '" + value + "' to " + type.getName());
}
@@ -88,7 +82,8 @@
try {
TopiaContext tx = context.beginTransaction();
result = tx.findByTopiaId(topiaId);
- // FIXME when after tx.closeContext we can continu to load object, call it here
+ // FIXME when after tx.closeContext we can continu to load
+ // object, call it here
tx.commitTransaction();
tx.closeContext();
} catch (TopiaException eee) {
@@ -99,19 +94,21 @@
} else if (session != null) {
QueryParameters params = new QueryParameters(StandardBasicTypes.STRING, topiaId);
String entityClass = TopiaId.getClassNameAsString(topiaId);
-
+
try {
+ /* Non compilable code since hibernate 4.2, but not a real, not usefull
boolean mustCommit = false;
if (!session.getJDBCContext().getTransaction().isActive()) {
mustCommit = true;
session.getJDBCContext().getTransaction().begin();
- }
+ }*/
String hql = "from " + entityClass + " where topiaId=?";
List results = session.list(hql, params);
- if (mustCommit) {
+
+ /*if (mustCommit) {
session.getJDBCContext().getTransaction().commit();
- }
- result = (TopiaEntity)results.get(0);
+ }*/
+ result = (TopiaEntity) results.get(0);
} catch (HibernateException eee) {
if (log.isDebugEnabled()) {
log.debug("Can't find TopiaEntity: " + topiaId, eee);
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.util.ssh;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.File;
import java.util.HashMap;
@@ -61,7 +61,7 @@
/**
* Passphrase associated to key file path.
*
- * private key file path => passphrase.
+ * private key file path =< passphrase.
*
* Ensure that passphrase are valid before add into.
*/
@@ -119,7 +119,7 @@
if (kpair.isEncrypted()) {
boolean isValid = false;
- String message = _("isisfish.ssh.askpassphrase.message",
+ String message = t("isisfish.ssh.askpassphrase.message",
privatekeyFile);
do {
passphrase = askPassphrase(privatekeyFile, message);
@@ -128,7 +128,7 @@
isValid = true;
passphraseForKeys.put(privatekeyFile, passphrase);
} else {
- message = _("isisfish.ssh.askpassphrase.wrongpassphrase",
+ message = t("isisfish.ssh.askpassphrase.wrongpassphrase",
privatekeyFile);
}
} while (!isValid);
@@ -158,7 +158,7 @@
Object[] objs = { labelField, passwordField };
int option = JOptionPane.showConfirmDialog(null, objs,
- _("isisfish.ssh.askpassphrase.title"),
+ t("isisfish.ssh.askpassphrase.title"),
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.CANCEL_OPTION) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUtils.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUtils.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHUtils.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -133,7 +133,7 @@
}
/**
- * Track progress every 10% if 100kb < filesize < 1mb. For larger
+ * Track progress every 10% if 100kb < filesize < 1mb. For larger
* files track progress for every percent transmitted.
* @param filesize the size of the file been transmitted
* @param totalLength the total transmission size
Modified: trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSException.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSException.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSException.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,10 +38,6 @@
private static final long serialVersionUID = -2665066202505740998L;
- public VCSException() {
- super();
- }
-
public VCSException(String message) {
super(message);
}
@@ -49,9 +45,4 @@
public VCSException(String message, Throwable cause) {
super(message, cause);
}
-
- public VCSException(Throwable cause) {
- super(cause);
- }
-
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,7 +27,7 @@
import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.Properties;
import org.apache.commons.beanutils.ConstructorUtils;
@@ -130,7 +130,7 @@
new Object[]{dataDir, protocol, host, path, sshKeyFile, login, password});
} catch (Exception eee) {
if (log.isErrorEnabled()) {
- log.error(_("isisfish.vcs.factory.cantinstanciate", classname), eee);
+ log.error(t("isisfish.vcs.factory.cantinstanciate", classname), eee);
}
result = new VCSNone(dataDir, protocol, host, path, sshKeyFile, login, password);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.vcs;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -228,12 +228,12 @@
connectionState = ConnectionState.ON_LINE;
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.isconnected.switchto",
+ log.info(t("isisfish.vcs.vcssvn.isconnected.switchto",
getRemoteRepository()));
}
} catch (SVNException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("isisfish.vcs.vcssvn.isconnected.switchoff",
+ log.warn(t("isisfish.vcs.vcssvn.isconnected.switchoff",
getRemoteRepository()), eee);
}
connectionState = ConnectionState.OFF_LINE;
@@ -283,7 +283,7 @@
|| !url.getHost().equals(newUrl.getHost())) {
if (fireAction(VCSActionEvent.SWITCH_PROTOCOL)) {
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.checkProtocol.relocate",
+ log.info(t("isisfish.vcs.vcssvn.checkProtocol.relocate",
localRoot, url, newUrl));
}
@@ -296,7 +296,7 @@
}
} catch (SVNException e) {
throw new VCSException(
- _("isisfish.vcs.vcssvn.checkProtocol.error"), e);
+ t("isisfish.vcs.vcssvn.checkProtocol.error"), e);
}
}
@@ -404,7 +404,7 @@
try {
wcClient.doCleanup(localFile);
} catch (SVNException e) {
- throw new VCSException(_("isisfish.vcs.vcssvn.cleanup.error"), e);
+ throw new VCSException(t("isisfish.vcs.vcssvn.cleanup.error"), e);
}
}
@@ -418,7 +418,7 @@
// if can't commit
if (!isWriteable()) {
throw new VCSException(
- _("isisfish.vcs.vcssvn.commit.errorreadonly"));
+ t("isisfish.vcs.vcssvn.commit.errorreadonly"));
}
// list to array
@@ -459,14 +459,14 @@
SVNDepth.INFINITY); // depth
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.global.torevision", commitInfo
+ log.info(t("isisfish.vcs.vcssvn.global.torevision", commitInfo
.getNewRevision()));
}
// commitInfo.getNewRevision() == -1 if file with no modification
// is commited
} catch (SVNException e) {
- throw new VCSException(_("isisfish.vcs.vcssvn.commit.error"), e);
+ throw new VCSException(t("isisfish.vcs.vcssvn.commit.error"), e);
}
}
@@ -478,7 +478,7 @@
@Override
public void add(List<File> files, String msg) throws VCSException {
if (!isWriteable()) {
- throw new VCSException(_("isisfish.vcs.vcssvn.add.errorreadonly"));
+ throw new VCSException(t("isisfish.vcs.vcssvn.add.errorreadonly"));
}
try {
if (fireAction(VCSActionEvent.ADD, files.toArray(new File[files
@@ -502,7 +502,7 @@
commitWithoutCheck(files, msg);
}
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.add.error"), eee);
+ throw new VCSException(t("isisfish.vcs.vcssvn.add.error"), eee);
}
}
@@ -534,19 +534,19 @@
true); // boolean allowUnversionedObstructions
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.global.torevision",
+ log.info(t("isisfish.vcs.vcssvn.global.torevision",
newRevision));
}
}
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.checkout.error"), eee);
+ throw new VCSException(t("isisfish.vcs.vcssvn.checkout.error"), eee);
}
}
public void delete(List<File> files, String msg) throws VCSException {
if (!isWriteable()) {
throw new VCSException(
- _("isisfish.vcs.vcssvn.delete.errorreadonly"));
+ t("isisfish.vcs.vcssvn.delete.errorreadonly"));
}
try {
if (fireAction(VCSActionEvent.DELETE, files.toArray(new File[files
@@ -560,7 +560,7 @@
commitWithoutCheck(files, msg);
}
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.delete.error"), eee);
+ throw new VCSException(t("isisfish.vcs.vcssvn.delete.error"), eee);
}
}
@@ -574,7 +574,7 @@
try {
SVNStatusClient statusClient = getSVNManager().getStatusClient();
- SVNStatusType svnStatus = statusClient.doStatus(file, false).getContentsStatus();
+ SVNStatusType svnStatus = statusClient.doStatus(file, false).getNodeStatus();
if (svnStatus == SVNStatusType.STATUS_MODIFIED) {
resultStatus = Status.STATUS_MODIFIED;
@@ -621,13 +621,13 @@
ISVNStatusHandler handler = new ISVNStatusHandler() {
public void handleStatus(SVNStatus status) throws SVNException {
if ((acceptedStatusType.isEmpty()
- && status.getContentsStatus() != SVNStatusType.STATUS_NONE && status
- .getContentsStatus() != SVNStatusType.STATUS_NORMAL)
- || acceptedStatusType.contains(status.getContentsStatus())) {
+ && status.getNodeStatus() != SVNStatusType.STATUS_NONE && status
+ .getNodeStatus() != SVNStatusType.STATUS_NORMAL)
+ || acceptedStatusType.contains(status.getNodeStatus())) {
File statusFile = status.getFile();
if (!statusFile.isDirectory() ||
- status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED ||
- status.getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED) {
+ status.getRemoteNodeStatus() == SVNStatusType.STATUS_ADDED ||
+ status.getRemoteNodeStatus() == SVNStatusType.STATUS_DELETED) {
// on ne met pas les repertoires pere dans le status
// car en fait ca veut dire qu'un fichier/rep dans ce
// repertoire a ete ajout/modifier/delete, et on l'aura
@@ -651,7 +651,7 @@
return result;
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.localstatus.error"),
+ throw new VCSException(t("isisfish.vcs.vcssvn.localstatus.error"),
eee);
}
}
@@ -684,15 +684,15 @@
public void handleStatus(SVNStatus status) throws SVNException {
if (log.isDebugEnabled()) {
log.debug("Status on file " + status.getFile() + " rstatus:"
- + status.getRemoteContentsStatus() + " lstatus:" + status.getContentsStatus());
+ + status.getRemoteNodeStatus() + " lstatus:" + status.getNodeStatus());
}
- if (!status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_NONE) &&
- !status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_NORMAL)) {
+ if (!status.getRemoteNodeStatus().equals(SVNStatusType.STATUS_NONE) &&
+ !status.getRemoteNodeStatus().equals(SVNStatusType.STATUS_NORMAL)) {
File statusFile = status.getFile();
if (!statusFile.isDirectory() ||
- status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_ADDED) ||
- status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_DELETED)) {
+ status.getRemoteNodeStatus().equals(SVNStatusType.STATUS_ADDED) ||
+ status.getRemoteNodeStatus().equals(SVNStatusType.STATUS_DELETED)) {
// on ne met pas les repertoires pere dans le status
// car en fait ca veut dire qu'un fichier/rep dans ce
// repertoire a ete ajout/modifier/delete, et on l'aura
@@ -716,7 +716,7 @@
return result;
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.remotestatus.error"),
+ throw new VCSException(t("isisfish.vcs.vcssvn.remotestatus.error"),
eee);
}
}
@@ -785,7 +785,7 @@
handler); // ISVNLogEntryHandler handler
} catch (SVNException e) {
- throw new VCSException(_("Can't get changlog"), e);
+ throw new VCSException(t("Can't get changlog"), e);
}
return changLog;
@@ -809,9 +809,9 @@
SVNDiffClient diffClient = getSVNManager().getDiffClient();
diffClient.doDiff(file, // File path1,
- SVNRevision.WORKING, // SVNRevision rN,
+ SVNRevision.HEAD, // SVNRevision rN,
file, // File path2,
- SVNRevision.HEAD, // SVNRevision rM,
+ SVNRevision.WORKING, // SVNRevision rM,
SVNDepth.IMMEDIATES, // SVNDepth depth,
false, // boolean useAncestry,
byte1, // OutputStream result,
@@ -821,9 +821,9 @@
byte1.close();
} catch (SVNException e) {
- throw new VCSException(_("isisfish.vcs.vcssvn.diff.error"), e);
+ throw new VCSException(t("isisfish.vcs.vcssvn.diff.error"), e);
} catch (IOException e) {
- throw new VCSException(_("isisfish.vcs.vcssvn.diff.error"), e);
+ throw new VCSException(t("isisfish.vcs.vcssvn.diff.error"), e);
}
return diff;
@@ -867,7 +867,7 @@
SVNDirEntry.DIRENT_ALL, // int entryFields,
handler);
} catch (SVNException e) {
- throw new VCSException(_("isisfish.vcs.vcssvn.list.error"), e);
+ throw new VCSException(t("isisfish.vcs.vcssvn.list.error"), e);
}
return files;
@@ -891,17 +891,17 @@
// log
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.vcs.vcssvn.global.filestatus",
+ log.debug(t("isisfish.vcs.vcssvn.global.filestatus",
status.getFile().getAbsolutePath(), status
- .getRemoteContentsStatus().toString()));
+ .getRemoteNodeStatus().toString()));
}
- if (status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED
- || status.getRemoteContentsStatus() == SVNStatusType.STATUS_MODIFIED) {
+ if (status.getRemoteNodeStatus() == SVNStatusType.STATUS_ADDED
+ || status.getRemoteNodeStatus() == SVNStatusType.STATUS_MODIFIED) {
// log
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.vcs.vcssvn.global.foundUpdatedFile",
+ log.debug(t("isisfish.vcs.vcssvn.global.foundUpdatedFile",
status.getFile().getAbsolutePath()));
}
result.add(status.getFile());
@@ -923,7 +923,7 @@
return result;
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.getupdate.error"),
+ throw new VCSException(t("isisfish.vcs.vcssvn.getupdate.error"),
eee);
}
}
@@ -961,17 +961,17 @@
localFile = getLocalRepository();
}
- boolean result = false;
+ boolean isOnRemote = false;
try {
SVNStatusClient statusClient = getSVNManager().getStatusClient();
+
SVNStatus status = statusClient.doStatus(localFile, true /*remote*/);
+ SVNStatusType localStatus = status.getNodeStatus();
+ SVNStatusType remoteStatus = status.getRemoteNodeStatus();
- SVNStatusType localStatus = status.getContentsStatus();
- SVNStatusType remoteStatus = status.getRemoteContentsStatus();
-
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.vcs.vcssvn.global.filelocalandremotestatus",
+ log.debug(t("isisfish.vcs.vcssvn.global.filelocalandremotestatus",
localFile.getAbsolutePath(), localStatus,
remoteStatus));
}
@@ -982,7 +982,7 @@
if (!localStatus.equals(SVNStatusType.STATUS_ADDED) &&
!remoteStatus.equals(SVNStatusType.STATUS_UNVERSIONED) &&
!remoteStatus.equals(SVNStatusType.STATUS_DELETED)) {
- result = true;
+ isOnRemote = true;
}
} catch (SVNException e) {
@@ -990,12 +990,12 @@
// if exception, file doesn't exists on server
// result is still 'false'
if (log.isDebugEnabled()) {
- log.debug(_("isisfish.vcs.vcssvn.isonremote.error", localFile
+ log.debug(t("isisfish.vcs.vcssvn.isonremote.error", localFile
.getAbsolutePath()), e);
}
}
- return result;
+ return isOnRemote;
}
/**
@@ -1013,29 +1013,27 @@
localFile = getLocalRepository();
}
- boolean result = false;
+ boolean isUpToDate = false;
try {
SVNStatusClient statusClient = getSVNManager().getStatusClient();
- SVNStatus status = statusClient
- .doStatus(localFile, true /*remote*/);
+ SVNStatus status = statusClient.doStatus(localFile, true /*remote*/);
+ SVNStatusType localStatus = status.getNodeStatus();
+ SVNStatusType remoteStatus = status.getRemoteNodeStatus();
- SVNStatusType localStatus = status.getContentsStatus();
- SVNStatusType remoteStatus = status.getRemoteContentsStatus();
-
// TODO peut on dire que le fichier est à jour
// si le status local est normal et le distant est none
if (localStatus == SVNStatusType.STATUS_NORMAL
&& remoteStatus == SVNStatusType.STATUS_NONE) {
- result = true;
+ isUpToDate = true;
}
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.isuptodate.error"),
+ throw new VCSException(t("isisfish.vcs.vcssvn.isuptodate.error"),
eee);
}
- return result;
+ return isUpToDate;
}
/*
@@ -1052,7 +1050,7 @@
}
if (!accept(localFile)) {
throw new VCSException(
- _("isisfish.vcs.vcssvn.update.notinlocal"));
+ t("isisfish.vcs.vcssvn.update.notinlocal"));
}
if (fireAction(VCSActionEvent.UPDATE, localFile)) {
// si le repertoire pere, n'est pas encore dans le repo local
@@ -1070,7 +1068,7 @@
false); // boolean depthIsSticky
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.global.torevision",
+ log.info(t("isisfish.vcs.vcssvn.global.torevision",
newRevision));
}
@@ -1090,7 +1088,7 @@
}
} catch (SVNException e) {
- throw new VCSException(_("isisfish.vcs.vcssvn.update.error"), e);
+ throw new VCSException(t("isisfish.vcs.vcssvn.update.error"), e);
}
return result;
}
@@ -1138,7 +1136,7 @@
// est leve, et donc result reste a faux
result = info != null;
} catch (SVNException eee) {
- log.debug(_("isisfish.vcs.vcssvn.istag.notexist", version));
+ log.debug(t("isisfish.vcs.vcssvn.istag.notexist", version));
}
}
return result;
@@ -1164,7 +1162,7 @@
}
return result;
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.gettag.error"), eee);
+ throw new VCSException(t("isisfish.vcs.vcssvn.gettag.error"), eee);
}
}
@@ -1195,7 +1193,7 @@
newUrl = newUrl.appendPath(tag, true);
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.settag.switchfromto",
+ log.info(t("isisfish.vcs.vcssvn.settag.switchfromto",
currentTag, tag));
}
@@ -1214,7 +1212,7 @@
// with org.tmatesoft.svn.core.SVNException: svn: Unable to lock 'xxx'
if (log.isInfoEnabled()) {
- log.info(_("isisfish.vcs.vcssvn.global.torevision",
+ log.info(t("isisfish.vcs.vcssvn.global.torevision",
newRevision));
}
@@ -1237,7 +1235,7 @@
}
} catch (SVNException eee) {
- throw new VCSException(_("isisfish.vcs.vcssvn.setTag.error"), eee);
+ throw new VCSException(t("isisfish.vcs.vcssvn.setTag.error"), eee);
}
return filesInConflict;
Copied: trunk/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml (from rev 3968, branches/4.0.1/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml)
===================================================================
--- trunk/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml (rev 0)
+++ trunk/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,33 @@
+<!--
+ #%L
+ $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%
+ -->
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+ <field name="name">
+ <field-validator type="requiredstring">
+ <param name="trim">true</param>
+ <message>Missing name</message>
+ </field-validator>
+ </field>
+</validators>
Modified: trunk/src/main/resources/i18n/isis-fish_en_GB.properties
===================================================================
--- trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,4 +1,6 @@
=
+%s\ has\ a\ discrete\ domain,\ this\ is\ not\ acceptable\ for\ this\ method.=
+%s\ has\ a\ non\ uniform\ distribution,\ this\ is\ not\ acceptable\ for\ this\ method.=
Add\ to\ default\ queue=
Analyse\ plan\ error,\ too\ many\ simulation\ for\ %s\ \:\ %s=
Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
@@ -19,8 +21,10 @@
Can't\ read\ ssh\ key\ \:\ %s=
Can't\ simulate\ %s=
Check\ state\ of\ local\ repository\:\ %s=
+Coefficient=
Command\ '%s'\ fail\ to\ execute=
Could\ not\ found\ formule\ type\ %s\ autorised\ type\ are\ %s=
+Dbimom=
Empty\ zones=
Error\ during\ vcs\ initialisation=
Error\ while\ uploading\ public\ key\ to\ remote\ serveur\ authorized_keys=
@@ -34,11 +38,18 @@
Launcher\ %s\ will\ be\ stopped\ because\ there\ are\ too\ many\ error\ (%s)=
Local\ repository\ don't\ exist=
Local\ repository\ exists\ but\ it's\ not\ valide\ for\ current\ vcs\:\ %s=
+Maximum\ value=
+Minimum\ value=
Missing\ name=
+Modifier\ le\ code\ R\ envoyé\ si\ vous\ le\ souhaitez=
No\ port\ cell=
Normal\ stop\ thread,\ this\ is\ not\ an\ error=
Not\ start\ simulation\ %s\ because\ user\ ask\ stop=
Process\ template\ error=
+QUnif\ %=
+QUnif\ Min/Max=
+R\ modif=
+Reference\ value=
Region\ %s\ allready\ exist\ in\ repository.\ Can't\ import=
Region\ %s\ already\ inited=
Remote\ control\ file\ doesn't\ exists\ %s=
@@ -51,18 +62,31 @@
Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
SubProcess\ start\:\ %s\ %s=
Switch\ repository\ type\ to\ none=
+This\ function\ is\ only\ available\ with\ JDK\ (not\ JRE)=
Try\ to\ log\ on\ %s@%s\:%d=
Use\ branches,\ switch\ not\ needed=
User\ restart\ simulation\ %s=
User\ stop\ simulation\ %s=
+an\ alternative\ way\ to\ specify\ the\ scale.=
could\ not\ close\ reader\ %1$s=could not close reader %1$s
could\ not\ found\ %s=
could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
could\ not\ found\ region\ %s=
could\ not\ found\ simulation\ %s=
could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
+dcauchy=
+dchisq=
+degrees\ of\ freedom\ (non-negative,\ but\ can\ be\ non-integer)=
+degrees\ of\ freedom.\ 'Inf'\ is\ allowed=
destination\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
destination\ already\ exists\ %s\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
+dexp=
+df=
+dgamma=
+dgeom=
+dhyper=
+directory\ %s\ must\ be\ a\ directory=
+dlnorm=
filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
isisfish.about.abouthtmltext=<html><b>ISIS-Fish (%s)</b><br /><br />Copyright IFREMER-MAERHA 2000-2013.<br /><br /><a href\="http\://www.isis-fish.org">http\://www.isis-fish.org</a><br /><br />Please, report any bug you can found.<html>
isisfish.about.licensetext=You can modify and redistribute the program under the conditions of the GNU General Public License (version 2 or later). A copy of the GPL is in the file "LICENSE.txt" provided with ISIS-Fish. All rights reserved. No guarantees are provided for use of this program.
@@ -274,6 +298,7 @@
isisfish.error.errorpane.htmlmessage=<html><b>IsisFish has handled \:</b><br />%s</b></html>
isisfish.error.errorpane.title=Error
isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
+isisfish.error.evaluate.optimization.script=
isisfish.error.evaluate.preplan.script=
isisfish.error.evalute.plan.script=Can't evaluate plan script
isisfish.error.file.already.exists=The file %1$s already exist
@@ -344,6 +369,7 @@
isisfish.error.rename.region=Can't rename region to %1$s
isisfish.error.save.checkSum.compilation=Can't save checkSum to compilation\: %1$s
isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
+isisfish.error.save.simulation.parameters=
isisfish.error.script.create=isisfish.error.script.create
isisfish.error.script.delete=Can't delete file %1$s for reason %2$s
isisfish.error.script.import=Can't import file for reason %1$s
@@ -485,6 +511,7 @@
isisfish.input.tree.cells=Cells
isisfish.input.tree.gears=Gears
isisfish.input.tree.metiers=Metiers
+isisfish.input.tree.observations=Observations
isisfish.input.tree.populations=Populations
isisfish.input.tree.ports=Ports
isisfish.input.tree.setofvessels=Set of vessels
@@ -578,6 +605,7 @@
isisfish.message.new.formule.category=Select the equation model's category
isisfish.message.new.formule.title=New equation model
isisfish.message.new.region.name=Enter new region name
+isisfish.message.observation.value.dimensions=Enter matrix dimensions \:
isisfish.message.old.simulation.loaded=Old simulation loaded
isisfish.message.page.modified=This page has been modified, do you want to save it ?
isisfish.message.presimulation.script.execution=Presimulation Script execution
@@ -628,6 +656,20 @@
isisfish.month.november=november
isisfish.month.october=october
isisfish.month.september=september
+isisfish.observation.comment=
+isisfish.observation.name=
+isisfish.observation.value=
+isisfish.optimisation.observation=
+isisfish.optimization.export=
+isisfish.optimization.exports=
+isisfish.optimization.method=
+isisfish.optimization.methodfactorsupported=
+isisfish.optimization.objective=
+isisfish.optimization.objectives=
+isisfish.optimization.observation=
+isisfish.optimization.optimization=
+isisfish.optimization.select=
+isisfish.optimization.title=
isisfish.params.changeLogLev=Change from level '%1$s' to level '%2$s'
isisfish.params.description=Description
isisfish.params.loadOldSimulation=Load old simulation
@@ -646,15 +688,23 @@
isisfish.params.toString.fishery=Fishery\: %1$s\n\n
isisfish.params.toString.lib.logger.level=Level of libraries' logger \: %1$s
isisfish.params.toString.number.years=Number of years\: %1$s\n\n
+isisfish.params.toString.objective=
+isisfish.params.toString.optimization=
+isisfish.params.toString.optimizationExport=
+isisfish.params.toString.optimizationObservation=
isisfish.params.toString.plan=Plan\: %1$s
isisfish.params.toString.plan.number=Simulation plan sequence number\: %1$s\n\n
isisfish.params.toString.populations=Populations \:
isisfish.params.toString.rule=Rule\: %1$s
+isisfish.params.toString.script.generatedpresimulation=
isisfish.params.toString.script.logger.level=Level of scripts' logger \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
isisfish.params.toString.simul.logger.level=Level of simulator's logger \: %1$s
isisfish.params.toString.simulation.done=Simulation done with \: %1$s
isisfish.params.toString.strategies=Strategies \:
+isisfish.params.toString.use.cache=Use simulation cache
+isisfish.params.toString.use.optimization=Use optimization method
+isisfish.params.useOptimization=
isisfish.params.usePreSimulationScript=Use pre simulation script
isisfish.params.useSimulationPlan=Use simulation plan
isisfish.population.capturability=Capturability
@@ -706,14 +756,14 @@
isisfish.populationMigration.selectSeason=Select a season
isisfish.populationMigration.title=Migration
isisfish.populationMigration.useEquation=Use equation
-isisfish.populationMigrationEmigration.coefficient=Coefficient
+isisfish.populationMigrationEmigration.coefficient=
isisfish.populationMigrationEmigration.departureZone=Departure Zone
isisfish.populationMigrationEmigration.title=Population emigration
isisfish.populationMigrationImmigration.arrivalZone=Arrival Zone
-isisfish.populationMigrationImmigration.coefficient=Coefficient
+isisfish.populationMigrationImmigration.coefficient=
isisfish.populationMigrationImmigration.title=Population immigration
isisfish.populationMigrationMigration.arrivalZone=Arrival zone
-isisfish.populationMigrationMigration.coefficient=Coefficient
+isisfish.populationMigrationMigration.coefficient=
isisfish.populationMigrationMigration.departureZone=Departure zone
isisfish.populationMigrationMigration.title=Population migration
isisfish.populationPrice.title=Price
@@ -831,6 +881,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
@@ -841,6 +893,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
@@ -852,23 +905,20 @@
isisfish.selectivity.title=Selectivity
isisfish.sens.backParameter=Back to parameter tab
isisfish.sens.title=Simulation plan
-isisfish.sensitivity.coefficient=Coefficient (in %)
isisfish.sensitivity.comment=Comment
isisfish.sensitivity.continue=Continuous factor
-isisfish.sensitivity.continuousminmaxtype=Mix/Max type
-isisfish.sensitivity.continuouspercentagetype=Percentage type
-isisfish.sensitivity.discret=Discret factor
+isisfish.sensitivity.discret=Finite discrete factor
isisfish.sensitivity.discretevaluelabel=Value %d
isisfish.sensitivity.displaysecondpass=Display results
+isisfish.sensitivity.distribution=
+isisfish.sensitivity.distribution.parameters=
isisfish.sensitivity.equation.valid=Valid variable
isisfish.sensitivity.equation.variablename=Varaible name \:
isisfish.sensitivity.export=Export
isisfish.sensitivity.factor=Factor
isisfish.sensitivity.factor.notvalid=Factor not valid \!
isisfish.sensitivity.factors=Factors
-isisfish.sensitivity.firstValue=First value
isisfish.sensitivity.increment=Cardinality
-isisfish.sensitivity.lastValue=Last value
isisfish.sensitivity.methodfactorsupported=The selected sensitivity method handles factors cardinalities
isisfish.sensitivity.mexico.exporttoxml.approve=Export
isisfish.sensitivity.mexico.exporttoxml.filter=Xml files
@@ -876,17 +926,16 @@
isisfish.sensitivity.mexico.exporttoxml.title=Export factors to mexico xml file
isisfish.sensitivity.moveillegal=Can't move discrete factor to continuous group \!
isisfish.sensitivity.name=Factor name
-isisfish.sensitivity.newfactorcgroup.tip=Add new continuous factor group
-isisfish.sensitivity.newfactordgroup.tip=Add new discrete factor group
+isisfish.sensitivity.newfactorcgroup.tip=Add new continuous factors group
+isisfish.sensitivity.newfactordgroup.tip=Add new finite discrete factors group
isisfish.sensitivity.newfactorname=Factor group name
isisfish.sensitivity.populationfactorname=Population %s
-isisfish.sensitivity.referencevalue=Reference value
isisfish.sensitivity.ruleparameterfactorname=Param rule %s.%s
isisfish.sensitivity.rulesfactorname=Rule set
isisfish.sensitivity.secondpass=Analyze results
isisfish.sensitivity.secondpass.title=Analyze results
isisfish.sensitivity.select=Method
-isisfish.sensitivity.selectDiscretNumber=Number of factors
+isisfish.sensitivity.selectDiscretNumber=Number of values \:
isisfish.sensitivity.title=Sensitivity analysis
isisfish.sensitivity.validDiscretNumber=Ok
isisfish.sensitivityChooser.title=Sensitivity method
@@ -983,7 +1032,7 @@
isisfish.ui.script.communityvcs=Community VCS
isisfish.ui.script.officialvcs=Official VCS
isisfish.variables.addvariable=Add
-isisfish.variables.comment=
+isisfish.variables.comment=Comment \:
isisfish.variables.defaultname=VarName
isisfish.variables.deletevariable=Delete
isisfish.variables.double.value=Real value \:
@@ -1124,8 +1173,20 @@
isisfish.zone.comments=Comments
isisfish.zone.name=Name
isisfish.zone.title=Zone
+location\ and\ scale\ parameters.\ (location\ \=\ 0,\ scale\ \=\ 1)=
matrixAbundance=
matrixCatchPerStrategyMetPerZoneMet=
matrixDiscardsPerStrMetPerZonePop=
+mean\ and\ standard\ deviation\ of\ the\ distribution\ on\ the\ log\ scale\ with\ default\ values\ of\ '0'\ and\ '1'\ respectively.=
+non-centrality\ parameter\ (non-negative).=
+non-centrality\ parameter.\ If\ omitted\ the\ central\ F\ is\ assumed=
+number\ of\ trials\ (zero\ or\ more)=
+probability\ of\ success\ in\ each\ trial.\ '0\ <\ prob\ <\=\ 1'=
+probability\ of\ success\ on\ each\ trial=
region\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
+shape\ and\ scale\ parameters.\ Must\ be\ positive,\ 'scale'\ strictly=
simulate\ %s\ with\ file\ %s=
+the\ number\ of\ balls\ drawn\ from\ the\ urn.=
+the\ number\ of\ black\ balls\ in\ the\ urn.=
+the\ number\ of\ white\ balls\ in\ the\ urn.=
+vector\ of\ rates=
Modified: trunk/src/main/resources/i18n/isis-fish_fr_FR.properties
===================================================================
--- trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,4 +1,6 @@
=
+%s\ has\ a\ discrete\ domain,\ this\ is\ not\ acceptable\ for\ this\ method.=
+%s\ has\ a\ non\ uniform\ distribution,\ this\ is\ not\ acceptable\ for\ this\ method.=
Add\ to\ default\ queue=
Analyse\ plan\ error,\ too\ many\ simulation\ for\ %s\ \:\ %s=
Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
@@ -19,8 +21,10 @@
Can't\ read\ ssh\ key\ \:\ %s=
Can't\ simulate\ %s=
Check\ state\ of\ local\ repository\:\ %s=
+Coefficient=
Command\ '%s'\ fail\ to\ execute=
Could\ not\ found\ formule\ type\ %s\ autorised\ type\ are\ %s=
+Dbimom=
Empty\ zones=
Error\ during\ vcs\ initialisation=
Error\ while\ uploading\ public\ key\ to\ remote\ serveur\ authorized_keys=
@@ -34,11 +38,18 @@
Launcher\ %s\ will\ be\ stopped\ because\ there\ are\ too\ many\ error\ (%s)=
Local\ repository\ don't\ exist=
Local\ repository\ exists\ but\ it's\ not\ valide\ for\ current\ vcs\:\ %s=
+Maximum\ value=
+Minimum\ value=
Missing\ name=
+Modifier\ le\ code\ R\ envoyé\ si\ vous\ le\ souhaitez=
No\ port\ cell=
Normal\ stop\ thread,\ this\ is\ not\ an\ error=
Not\ start\ simulation\ %s\ because\ user\ ask\ stop=
Process\ template\ error=
+QUnif\ %=
+QUnif\ Min/Max=
+R\ modif=
+Reference\ value=
Region\ %s\ allready\ exist\ in\ repository.\ Can't\ import=
Region\ %s\ already\ inited=La région %s a déjà été initialisée
Remote\ control\ file\ doesn't\ exists\ %s=
@@ -51,18 +62,31 @@
Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
SubProcess\ start\:\ %s\ %s=
Switch\ repository\ type\ to\ none=
+This\ function\ is\ only\ available\ with\ JDK\ (not\ JRE)=
Try\ to\ log\ on\ %s@%s\:%d=
Use\ branches,\ switch\ not\ needed=
User\ restart\ simulation\ %s=
User\ stop\ simulation\ %s=
+an\ alternative\ way\ to\ specify\ the\ scale.=
could\ not\ close\ reader\ %1$s=could not close reader %1$s
could\ not\ found\ %s=
could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
could\ not\ found\ region\ %s=
could\ not\ found\ simulation\ %s=
could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
+dcauchy=
+dchisq=
+degrees\ of\ freedom\ (non-negative,\ but\ can\ be\ non-integer)=
+degrees\ of\ freedom.\ 'Inf'\ is\ allowed=
destination\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
destination\ already\ exists\ %s\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
+dexp=
+df=
+dgamma=
+dgeom=
+dhyper=
+directory\ %s\ must\ be\ a\ directory=
+dlnorm=
filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
isisfish.about.abouthtmltext=<html><b>ISIS-Fish (%s)</b><br /><br />Copyright IFREMER-MAERHA 2000-2013.<br /><br /><a href\="http\://www.isis-fish.org">http\://www.isis-fish.org</a><br /><br />Merci de rapporter les bugs.<html>
isisfish.about.licensetext=Vous pouvez modifier et redistribuer ce programme sous les conditions énoncées par la licence GNU GPL (version 2 ou ultérieure). Une copie de la licence GPL est dans le fichier « LICENSE.txt » fourni avec ISIS-Fish. Tous droits réservés. Aucune garantie n'est fournie pour l'utilisation de ce programme.
@@ -126,7 +150,7 @@
isisfish.common.saveModel=Sauver comme modèle
isisfish.common.saveNextSimulation=Sauver pour la prochaine simulation
isisfish.common.season=Saison
-isisfish.common.setOfVessels=Flottille
+isisfish.common.setOfVessels=Flotille
isisfish.common.simulate=Simuler
isisfish.common.strategies=Stratégies
isisfish.common.sum=somme
@@ -274,6 +298,7 @@
isisfish.error.errorpane.htmlmessage=<html><b>IsisFish a détecté une erreur \:</b><br />%s</b></html>
isisfish.error.errorpane.title=Erreur
isisfish.error.evaluate.equation=Impossible d'évaluer l'équation\: %1$s
+isisfish.error.evaluate.optimization.script=
isisfish.error.evaluate.preplan.script=
isisfish.error.evalute.plan.script=Can't evaluate plan script
isisfish.error.file.already.exists=The file %1$s already exist
@@ -344,6 +369,7 @@
isisfish.error.rename.region=Can't rename region to %1$s
isisfish.error.save.checkSum.compilation=Can't save checkSum to compilation\: %1$s
isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
+isisfish.error.save.simulation.parameters=
isisfish.error.script.create=isisfish.error.script.create
isisfish.error.script.delete=N'a pas pu supprimer le fichier %1$s pour la raison suivante %2$s
isisfish.error.script.import=N'a pas pu importer pour la raison suivante %1$s
@@ -485,6 +511,7 @@
isisfish.input.tree.cells=Mailles
isisfish.input.tree.gears=Engins
isisfish.input.tree.metiers=Métiers
+isisfish.input.tree.observations=Observations
isisfish.input.tree.populations=Populations
isisfish.input.tree.ports=Ports
isisfish.input.tree.setofvessels=Flottilles
@@ -578,6 +605,7 @@
isisfish.message.new.formule.category=Choisissez le catégorie de la formule
isisfish.message.new.formule.title=Nouvelle formule
isisfish.message.new.region.name=Entrer le nom de la nouvelle région
+isisfish.message.observation.value.dimensions=Entrez les dimensions de la matrice \:
isisfish.message.old.simulation.loaded=Ancienne simulation chargée
isisfish.message.page.modified=Cette page a été modifié, voulez-vous la sauvegarder ?
isisfish.message.presimulation.script.execution=Exécution des scripts de Presimulation
@@ -628,6 +656,15 @@
isisfish.month.november=novembre
isisfish.month.october=octobre
isisfish.month.september=septembre
+isisfish.observation.comment=Description
+isisfish.observation.name=Nom
+isisfish.observation.value=Valeur
+isisfish.optimization.export=Export
+isisfish.optimization.exports=Exports et observations
+isisfish.optimization.method=Méthode d'optimisation
+isisfish.optimization.objective=Fonction d'objectif
+isisfish.optimization.observation=Observations
+isisfish.optimization.title=Optimisation
isisfish.params.changeLogLev=Passe du niveau '%1$s' au niveau '%2$s'
isisfish.params.description=Description
isisfish.params.loadOldSimulation=Charger une ancienne simulation
@@ -643,18 +680,26 @@
isisfish.params.simulationName=Nom de la simulation
isisfish.params.stategiesAndPopulations=Stratégies et populations
isisfish.params.title=Paramètres
-isisfish.params.toString.fishery=Pêcherie\: %1$s\n\n
-isisfish.params.toString.lib.logger.level=niveau du logger de librairies \: %1$s
-isisfish.params.toString.number.years=Nombre d'années \: %1$s\n\n
-isisfish.params.toString.plan=Plan\: %1$s
-isisfish.params.toString.plan.number=Numéro de séquence dans le plan \: %1$s\n\n
+isisfish.params.toString.fishery=Pêcherie\: %s\n\n
+isisfish.params.toString.lib.logger.level=niveau du logger de librairies \: %s
+isisfish.params.toString.number.years=Nombre d'années \: %s\n\n
+isisfish.params.toString.objective=Fonction d'objectif \: %s
+isisfish.params.toString.optimization=Méthode d'optimisation \: %s
+isisfish.params.toString.optimizationExport=Export d'optimisation \: %s
+isisfish.params.toString.optimizationObservation=Observation d'optimisation \: %s
+isisfish.params.toString.plan=Plan\: %s
+isisfish.params.toString.plan.number=Numéro de séquence dans le plan \: %s\n\n
isisfish.params.toString.populations=Populations \:
-isisfish.params.toString.rule=Règle\: %1$s
+isisfish.params.toString.rule=Règle\: %s
+isisfish.params.toString.script.generatedpresimulation=
isisfish.params.toString.script.logger.level=niveau du logger de scripts \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
isisfish.params.toString.simul.logger.level=niveau du logger de simulateur \: %1$s
isisfish.params.toString.simulation.done=Simulation réalisée avec \: %1$s
isisfish.params.toString.strategies=Stratégies d'exploitation \:
+isisfish.params.toString.use.cache=Utiliser le cache de simulation
+isisfish.params.toString.use.optimization=Utiliser une méthode d'optimisation
+isisfish.params.useOptimization=Utiliser une méthode d'optimisation
isisfish.params.usePreSimulationScript=Utiliser un script de pré-simulation
isisfish.params.useSimulationPlan=Utiliser un plan de simulation
isisfish.population.capturability=Capturabilité
@@ -706,14 +751,14 @@
isisfish.populationMigration.selectSeason=Sélectionnez une saison
isisfish.populationMigration.title=Migration
isisfish.populationMigration.useEquation=Utiliser l'équation
-isisfish.populationMigrationEmigration.coefficient=Coefficient
+isisfish.populationMigrationEmigration.coefficient=
isisfish.populationMigrationEmigration.departureZone=Zone de départ
isisfish.populationMigrationEmigration.title=Emmigration
isisfish.populationMigrationImmigration.arrivalZone=Zone d'arrivée
-isisfish.populationMigrationImmigration.coefficient=Coefficient
+isisfish.populationMigrationImmigration.coefficient=
isisfish.populationMigrationImmigration.title=Immigration
isisfish.populationMigrationMigration.arrivalZone=Zone d'arrivée
-isisfish.populationMigrationMigration.coefficient=Coefficient
+isisfish.populationMigrationMigration.coefficient=
isisfish.populationMigrationMigration.departureZone=Zone de départ
isisfish.populationMigrationMigration.title=Migration de population
isisfish.populationPrice.title=Prix
@@ -831,6 +876,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é
@@ -841,6 +888,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
@@ -852,23 +900,20 @@
isisfish.selectivity.title=Sélectivité
isisfish.sens.backParameter=Retour aux paramètres
isisfish.sens.title=Plan de simulation
-isisfish.sensitivity.coefficient=Coefficient (en %)
-isisfish.sensitivity.comment=Commentaires
+isisfish.sensitivity.comment=Commentaire \:
isisfish.sensitivity.continue=Facteur continu
-isisfish.sensitivity.continuousminmaxtype=Type min/max
-isisfish.sensitivity.continuouspercentagetype=Type pourcentage
-isisfish.sensitivity.discret=Facteur discret
+isisfish.sensitivity.discret=Facteur discret fini
isisfish.sensitivity.discretevaluelabel=Valeur %d
isisfish.sensitivity.displaysecondpass=Afficher les résultats
+isisfish.sensitivity.distribution=Distribution \:
+isisfish.sensitivity.distribution.parameters=Paramètres de la distribution %s \:
isisfish.sensitivity.equation.valid=Valider la variable
isisfish.sensitivity.equation.variablename=Variable name \:
isisfish.sensitivity.export=Export
isisfish.sensitivity.factor=Facteur
isisfish.sensitivity.factor.notvalid=Facteur non valide \!
isisfish.sensitivity.factors=Facteurs
-isisfish.sensitivity.firstValue=Première valeur
isisfish.sensitivity.increment=Cardinalité
-isisfish.sensitivity.lastValue=Dernière valeur
isisfish.sensitivity.methodfactorsupported=La méthode de sensibilité choisie gère les cardinalités des facteurs
isisfish.sensitivity.mexico.exporttoxml.approve=Exporter
isisfish.sensitivity.mexico.exporttoxml.filter=Fichier XML
@@ -876,17 +921,16 @@
isisfish.sensitivity.mexico.exporttoxml.title=Exporter les facteurs vers un fichier xml mexico
isisfish.sensitivity.moveillegal=Impossible d'ajouter un facteur discret dans un groupe continu \!
isisfish.sensitivity.name=Nom du facteur
-isisfish.sensitivity.newfactorcgroup.tip=Ajouter un groupe de facteur continu
-isisfish.sensitivity.newfactordgroup.tip=Ajouter un groupe de facteur discret
+isisfish.sensitivity.newfactorcgroup.tip=Ajouter un groupe de facteurs continus
+isisfish.sensitivity.newfactordgroup.tip=Ajouter un groupe de facteurs discrets finis
isisfish.sensitivity.newfactorname=Nom du groupe de facteurs
isisfish.sensitivity.populationfactorname=Population %s
-isisfish.sensitivity.referencevalue=Valeur de référence
isisfish.sensitivity.ruleparameterfactorname=Param regle %s.%s
isisfish.sensitivity.rulesfactorname=Ensemble de règles
isisfish.sensitivity.secondpass=Analyse des résultats
isisfish.sensitivity.secondpass.title=Analyse des résultats
isisfish.sensitivity.select=Méthode
-isisfish.sensitivity.selectDiscretNumber=Nombre de facteurs
+isisfish.sensitivity.selectDiscretNumber=Nombre de valeur \:
isisfish.sensitivity.title=Analyse de sensibilité
isisfish.sensitivity.validDiscretNumber=Valider
isisfish.sensitivityChooser.title=Méthode de la sensibilité
@@ -1124,8 +1168,20 @@
isisfish.zone.comments=Commentaires
isisfish.zone.name=Nom
isisfish.zone.title=Zone
+location\ and\ scale\ parameters.\ (location\ \=\ 0,\ scale\ \=\ 1)=
matrixAbundance=
matrixCatchPerStrategyMetPerZoneMet=
matrixDiscardsPerStrMetPerZonePop=
+mean\ and\ standard\ deviation\ of\ the\ distribution\ on\ the\ log\ scale\ with\ default\ values\ of\ '0'\ and\ '1'\ respectively.=
+non-centrality\ parameter\ (non-negative).=
+non-centrality\ parameter.\ If\ omitted\ the\ central\ F\ is\ assumed=
+number\ of\ trials\ (zero\ or\ more)=
+probability\ of\ success\ in\ each\ trial.\ '0\ <\ prob\ <\=\ 1'=
+probability\ of\ success\ on\ each\ trial=
region\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
+shape\ and\ scale\ parameters.\ Must\ be\ positive,\ 'scale'\ strictly=
simulate\ %s\ with\ file\ %s=
+the\ number\ of\ balls\ drawn\ from\ the\ urn.=
+the\ number\ of\ black\ balls\ in\ the\ urn.=
+the\ number\ of\ white\ balls\ in\ the\ urn.=
+vector\ of\ rates=
Modified: trunk/src/main/resources/log4j.properties
===================================================================
--- trunk/src/main/resources/log4j.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/log4j.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
# $Id$
# $HeadURL$
# %%
-# Copyright (C) 2005 - 2011 Ifremer, CodeLutin, Chatellier Eric
+# Copyright (C) 2005 - 2013 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
@@ -35,6 +35,8 @@
log4j.logger.org.nuiton=WARN
log4j.logger.exports=INFO
log4j.logger.formules=INFO
+log4j.logger.objectives=INFO
+log4j.logger.optimizations=INFO
log4j.logger.rules=INFO
log4j.logger.scripts=INFO
log4j.logger.sensitivityanalysis=INFO
Modified: trunk/src/main/resources/templates/script/equation.ftl
===================================================================
--- trunk/src/main/resources/templates/script/equation.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/equation.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
Modified: trunk/src/main/resources/templates/script/export.ftl
===================================================================
--- trunk/src/main/resources/templates/script/export.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/export.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
@@ -47,7 +47,6 @@
import java.io.Writer;
-import static org.nuiton.i18n.I18n._;
import org.nuiton.math.matrix.*;
import scripts.ResultName;
@@ -74,7 +73,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(${name}.class);
- public String [] necessaryResult = {
+ protected String[] necessaryResult = {
// put here all necessary result for this rule
// example:
// ResultName.MATRIX_BIOMASS,
@@ -94,7 +93,7 @@
}
public String getDescription() {
- return _("TODO export description");
+ return "TODO export description";
}
public void export(SimulationStorage simulation, Writer out) throws Exception {
Copied: trunk/src/main/resources/templates/script/objective.ftl (from rev 3968, branches/4.0.1/src/main/resources/templates/script/objective.ftl)
===================================================================
--- trunk/src/main/resources/templates/script/objective.ftl (rev 0)
+++ trunk/src/main/resources/templates/script/objective.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,110 @@
+<#--
+ #%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 objectives;
+
+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);
+
+ protected String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ /**
+ * Permet d'afficher a l'utilisateur une aide sur le plan.
+ * @return L''aide ou la description du plan
+ */
+ @Override
+ public String getDescription() throws Exception {
+ // TODO change description
+ return "TODO ${name} description plan";
+ }
+
+ /**
+ * Effectue une evaluation entre les exports et les observations.
+ *
+ * @param context optimization context
+ * @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;
+ }
+}
Copied: trunk/src/main/resources/templates/script/optimization.ftl (from rev 3968, branches/4.0.1/src/main/resources/templates/script/optimization.ftl)
===================================================================
--- trunk/src/main/resources/templates/script/optimization.ftl (rev 0)
+++ trunk/src/main/resources/templates/script/optimization.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,144 @@
+<#--
+ #%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 optimizations;
+
+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 final Log log = LogFactory.getLog(${name}.class);
+
+ protected String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ /**
+ * Permet d'afficher a l'utilisateur une aide sur le plan.
+ * @return L''aide ou la description du plan
+ */
+ @Override
+ public String getDescription() throws Exception {
+ // TODO change description
+ return "TODO ${name} description plan";
+ }
+
+ /**
+ * Appele lors de l'initialisation.
+ *
+ * @param context
+ */
+ public void init(OptimizationContext context) {
+
+ }
+
+ /**
+ * La premiere generation doit etre construite dans cette methode
+ * dans l'init.
+ *
+ * @param context
+ */
+ public void firstSimulation(OptimizationContext context) throws Exception {
+
+ }
+
+ /**
+ * Génère une nouvelle série de simulation suivant le context d'optimisation.
+ *
+ * @param context context
+ */
+ public void nextSimulation(OptimizationContext context) {
+
+ }
+
+ /**
+ * Cette methode est appelee après chaque serie de simulation soit apres firstSimulation et
+ * nextSimulation.
+ *
+ * @param context
+ */
+ public void endSimulation(OptimizationContext context) {
+
+ }
+
+ /**
+ * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire
+ * (init ou nextSimulation n'ont pas fait appel a context.addSimulation)
+ * @param context
+ */
+ public void finish(OptimizationContext context) throws Exception {
+
+ }
+}
Modified: trunk/src/main/resources/templates/script/rule.ftl
===================================================================
--- trunk/src/main/resources/templates/script/rule.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/rule.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
@@ -42,8 +42,6 @@
package rules;
-import static org.nuiton.i18n.I18n._;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -76,7 +74,7 @@
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory.getLog(${name}.class);
- public String [] necessaryResult = {
+ protected String[] necessaryResult = {
// put here all necessary result for this rule
// example:
// ResultName.MATRIX_BIOMASS,
@@ -93,7 +91,7 @@
*/
public String getDescription() throws Exception {
// TODO
- return _("TODO description rule");
+ return "TODO description rule";
}
/**
Modified: trunk/src/main/resources/templates/script/script.ftl
===================================================================
--- trunk/src/main/resources/templates/script/script.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/script.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
Modified: trunk/src/main/resources/templates/script/sensitivityanalysis.ftl
===================================================================
--- trunk/src/main/resources/templates/script/sensitivityanalysis.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/sensitivityanalysis.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
@@ -42,8 +42,6 @@
package sensitivityanalysis;
-import static org.nuiton.i18n.I18n._;
-
import java.util.List;
import org.apache.commons.logging.Log;
@@ -82,7 +80,7 @@
*/
public String getDescription() {
// TODO change descrition
- return _("TODO ${name} description plan");
+ return "TODO ${name} description plan";
}
/**
@@ -102,7 +100,7 @@
* scenarios à prendre en compte pour les simulations.
*
* @param plan plan a analyser
- * @param outputdirectory master sensitivity export directory
+ * @param outputDirectory master sensitivity export directory
*
* @return un {@link SensitivityScenarios}
* @throws SensitivityException if calculator impl fail to execute
@@ -111,7 +109,7 @@
* @see Scenario
* @see SensitivityScenarios
*/
- public SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
throws SensitivityException {
SensitivityScenarios sensitivityScenarios = new SensitivityScenarios();
@@ -128,14 +126,14 @@
* @param simulationStorages
* ensemble des {@link SimulationStorage} qui ont résultés des
* simulations
- * @param outputdirectory master sensitivity export directory
+ * @param outputDirectory master sensitivity export directory
* @throws SensitivityException
* if calculator impl fail to execute
*
* @see SensitivityScenarios
*/
public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputdirectory) throws SensitivityException {
+ File outputDirectory) throws SensitivityException {
}
}
Modified: trunk/src/main/resources/templates/script/sensitivityexport.ftl
===================================================================
--- trunk/src/main/resources/templates/script/sensitivityexport.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/sensitivityexport.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
@@ -47,7 +47,6 @@
import java.io.Writer;
-import static org.nuiton.i18n.I18n._;
import org.nuiton.math.matrix.*;
import scripts.ResultName;
@@ -74,7 +73,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(${name}.class);
- public String [] necessaryResult = {
+ protected String[] necessaryResult = {
// put here all necessary result for this rule
// example:
// ResultName.MATRIX_BIOMASS,
@@ -94,7 +93,7 @@
}
public String getDescription() {
- return _("TODO export description");
+ return "TODO export description";
}
public void export(SimulationStorage simulation, Writer out) throws Exception {
Modified: trunk/src/main/resources/templates/script/simulationplan.ftl
===================================================================
--- trunk/src/main/resources/templates/script/simulationplan.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/simulationplan.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
@@ -42,8 +42,6 @@
package simulationplans;
-import static org.nuiton.i18n.I18n._;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -80,11 +78,11 @@
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory.getLog(${name}.class);
- public String [] necessaryResult = {
- // put here all necessary result for this rule
- // example:
- // ResultName.MATRIX_BIOMASS,
- // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ protected String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
};
@Override
@@ -99,7 +97,7 @@
@Override
public String getDescription() throws Exception {
// TODO change description
- return _("TODO ${name} description plan");
+ return "TODO ${name} description plan";
}
/**
Modified: trunk/src/main/resources/templates/script/simulator.ftl
===================================================================
--- trunk/src/main/resources/templates/script/simulator.ftl 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/resources/templates/script/simulator.ftl 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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
Modified: trunk/src/main/xmi/isis-fish.properties
===================================================================
--- trunk/src/main/xmi/isis-fish.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/main/xmi/isis-fish.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -22,7 +22,7 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-model.tagvalue.copyright=/* Copyright (C) 1999 - 2012 Ifremer - Code Lutin */
+model.tagvalue.copyright=/* Copyright (C) 1999 - 2014 Ifremer - Code Lutin */
model.tagvalue.org.nuiton.math.matrix.MatrixND=fr.ifremer.isisfish.types.hibernate.MatrixType(name,dim,dimNames,semantics,data)
model.tagvalue.fr.ifremer.isisfish.types.Month=fr.ifremer.isisfish.types.hibernate.MonthType
model.tagvalue.fr.ifremer.isisfish.types.TimeStep=fr.ifremer.isisfish.types.hibernate.TimeStepType
@@ -32,6 +32,8 @@
model.tagvalue.hibernateProxyInterface=none
model.tagvalue.constantPrefix=PROPERTY_
model.tagvalue.useEnumerationName=true
+model.tagvalue.doNotGenerateBooleanGetMethods=false
+model.tagvalue.notGenerateReadListeners=true
fr.ifremer.isisfish.entities.ActiveRule.class.tagvalue.contextable=true
fr.ifremer.isisfish.entities.Cell.class.tagvalue.contextable=true
fr.ifremer.isisfish.entities.EffortDescription.class.tagvalue.contextable=true
@@ -57,6 +59,7 @@
fr.ifremer.isisfish.entities.Variable.attribute.entityId.tagvalue.notNull=true
fr.ifremer.isisfish.entities.VesselType.class.tagvalue.contextable=true
fr.ifremer.isisfish.entities.Zone.class.tagvalue.contextable=true
+fr.ifremer.isisfish.entities.Observation.class.tagvalue.contextable=true
-#�fix lazy exception on sensitivity export
+# fix lazy exception on sensitivity export
fr.ifremer.isisfish.entities.Population.attribute.maturityOgiveEquation.tagvalue.lazy=false
Modified: trunk/src/main/xmi/isis-fish.zargo
===================================================================
(Binary files differ)
Copied: trunk/src/site/rst/v3/devel/mexico.rst (from rev 3968, branches/4.0.1/src/site/rst/v3/devel/mexico.rst)
===================================================================
--- trunk/src/site/rst/v3/devel/mexico.rst (rev 0)
+++ trunk/src/site/rst/v3/devel/mexico.rst 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,32 @@
+.. -
+.. * #%L
+.. * IsisFish
+.. * $Id:$
+.. * $HeadURL:$
+.. * %%
+.. * Copyright (C) 1999 - 2013 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%
+.. -
+Mexico
+------
+
+Isis essaye de respecter le format mexico pour le stockage des plans d'expérience.
+
+Le schema xsd est disponible à l'adresse suivante:
+https://mulcyber.toulouse.inra.fr/scm/viewvc.php/trunk/XML/schemas/expDesign.xsd?revision=9&root=baomexico&view=markup
+ou
+http://www.reseau-mexico.fr/sites/reseau-mexico.fr/files/expDesign.xsd
Modified: trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, Code Lutin
+ * Copyright (C) 2009 - 2012 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
@@ -26,21 +26,20 @@
package fr.ifremer.isisfish;
import java.io.File;
-import java.io.FileFilter;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.HiddenFileFilter;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.nuiton.util.ArgumentsParserException;
import org.nuiton.util.FileUtil;
+import org.nuiton.config.ArgumentsParserException;
import fr.ifremer.isisfish.datastore.AutoMigrationIsisH2Config;
import fr.ifremer.isisfish.datastore.CodeSourceStorage.Location;
import freemarker.cache.ClassTemplateLoader;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.Configuration;
-import java.io.IOException;
/**
* Abstract test case for isis fish.
@@ -102,18 +101,8 @@
// to not ask for user for migration during test
AutoMigrationIsisH2Config.setTestMigrationCallBack();
- FileUtils.copyDirectory(new File("src/test/resources/test-database"),
- IsisFish.config.getDatabaseDirectory(), new FileFilter() {
- @Override
- public boolean accept(File pathname) {
- boolean result = true;
- if (pathname.getAbsolutePath().indexOf(
- File.separator + ".svn") != -1) {
- result = false;
- }
- return result;
- }
- });
+ FileUtils.copyDirectory(new File("src/test/resources/test-database").getAbsoluteFile(),
+ IsisFish.config.getDatabaseDirectory(), HiddenFileFilter.VISIBLE);
}
/**
@@ -147,7 +136,7 @@
public static void clean() {
System.clearProperty("user.home");
if (dirIsisBase != null) {
- FileUtil.deleteRecursively(dirIsisBase);
+ FileUtils.deleteQuietly(dirIsisBase);
dirIsisBase = null;
}
}
Modified: trunk/src/test/java/fr/ifremer/isisfish/IsisConfigTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/IsisConfigTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/IsisConfigTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -26,7 +26,6 @@
package fr.ifremer.isisfish;
import org.junit.Test;
-import org.nuiton.util.ApplicationConfig;
/**
* Test for IsisConfig.
@@ -41,7 +40,7 @@
/**
* Test presence of some setXXX option called only
- * in instrospection by {@link ApplicationConfig}.
+ * in introspection by {@link IsisConfig}.
*/
@Test
public void testSetterExistence() {
Modified: trunk/src/test/java/fr/ifremer/isisfish/IsisFishMiscTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/IsisFishMiscTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/IsisFishMiscTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -53,6 +53,7 @@
@Test
public void testCRLFOnBat() throws IOException {
File batFile = new File("src" + File.separator + "main" + File.separator + "assembly" + File.separator + "isisfish.bat");
+ batFile = batFile.getAbsoluteFile(); // for maven
String content = FileUtils.readFileToString(batFile);
System.out.println(content);
Copied: trunk/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java (from rev 3968, branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java)
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java (rev 0)
+++ trunk/src/test/java/fr/ifremer/isisfish/datastore/ObjectiveStorageTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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);
+ }
+
+}
Copied: trunk/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java (from rev 3968, branches/4.0.1/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java)
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java (rev 0)
+++ trunk/src/test/java/fr/ifremer/isisfish/datastore/OptimizationStorageTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -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);
+ }
+
+}
Modified: trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -31,7 +31,7 @@
import java.util.HashMap;
import java.util.Map;
-import org.nuiton.util.FileUtil;
+import org.apache.commons.io.FileUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -84,7 +84,7 @@
//System.out.println("Content: '" + script.getContent() + "'");
Assert.assertEquals(content1, script.getContent());
- FileUtil.writeString(script.getFile(), content2);
+ FileUtils.writeStringToFile(script.getFile(), content2);
//System.out.println("Content: '" + script.getContent() + "'");
Assert.assertEquals(content2, script.getContent());
} finally {
Modified: trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -125,7 +125,7 @@
}
SimulatorStorage simulatorStorage = SimulatorStorage.getSimulator("DefaultSimulator");
- Simulator simulator = simulatorStorage.getNewSimulatorInstance();
+ Simulator simulator = simulatorStorage.getNewInstance();
Assert.assertNotNull(simulator);
Assert.assertTrue(f.exists());
}
Modified: trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -85,7 +85,7 @@
*
* Created: 3 août 2004
*
- * @author Benjamin Poussin <poussin(a)codelutin.com>
+ * @author Benjamin Poussin <poussin(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
Modified: trunk/src/test/java/fr/ifremer/isisfish/entity/PopulationSeasonInfoTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/entity/PopulationSeasonInfoTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/entity/PopulationSeasonInfoTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.entity;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.HeadlessException;
import java.util.ArrayList;
@@ -108,7 +108,7 @@
public void run() {
JOptionPane.showMessageDialog(dialog, panel,
- _("Spacialized visualisation"),
+ t("Spacialized visualisation"),
JOptionPane.INFORMATION_MESSAGE);
}
@@ -189,7 +189,7 @@
public void run() {
JOptionPane.showMessageDialog(dialog, box,
- _("Spacialized visualisation"),
+ t("Spacialized visualisation"),
JOptionPane.INFORMATION_MESSAGE);
}
Modified: trunk/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -26,9 +26,9 @@
import java.io.IOException;
import java.util.List;
+import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Test;
-import org.junit.matchers.JUnitMatchers;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
@@ -84,7 +84,7 @@
population2.setName("thon");
allPopulation = populationDAO.findAll();
Assert.assertEquals(2, allPopulation.size());
- Assert.assertThat(allPopulation, JUnitMatchers.hasItem(population2));
+ Assert.assertThat(allPopulation, CoreMatchers.hasItem(population2));
context.rollbackTransaction();
@@ -93,7 +93,7 @@
population3.setName("requin");
allPopulation = populationDAO.findAll();
Assert.assertEquals(2, allPopulation.size());
- Assert.assertThat(allPopulation, JUnitMatchers.hasItem(population3));
+ Assert.assertThat(allPopulation, CoreMatchers.hasItem(population3));
context.commitTransaction();
simulation.closeStorage();
Modified: trunk/src/test/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,13 +29,12 @@
import java.util.ArrayList;
import java.util.List;
-import junit.framework.Assert;
-
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
-import org.nuiton.util.FileUtil;
+import org.junit.Assert;
import org.junit.Test;
import fr.ifremer.isisfish.AbstractIsisFishTest;
@@ -129,7 +128,7 @@
File logFile = new File(loggerFile);
- String logFileContent = FileUtil.readAsString(logFile);
+ String logFileContent = FileUtils.readFileToString(logFile);
log.info("++ File content ----------------------------------------------------------");
for (Object o : logFileContent.split("\n")) {
@@ -232,7 +231,7 @@
File logFile = new File(loggerFile);
- String logFileContent = FileUtil.readAsString(logFile);
+ String logFileContent = FileUtils.readFileToString(logFile);
log.info("++ File content ----------------------------------------------------------");
for (Object o : logFileContent.split("\n")) {
Modified: trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -27,12 +27,21 @@
import java.io.File;
import java.io.IOException;
+import java.io.StringReader;
+import java.net.URL;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.SortedMap;
import java.util.TreeMap;
+import javax.xml.XMLConstants;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -59,13 +68,12 @@
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.rule.RuleHelper;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.types.TimeStep;
@@ -95,11 +103,12 @@
* Get a test design plan composed with all possibles value types.
*
* @param use40Features build design plan with sub factor groups
+ * @param use401Features build plan with distribution definition
* @return a test design plan
* @throws IsisFishException
* @throws TopiaException
*/
- protected DesignPlan getTestDesignPlan(boolean use40Features) throws IsisFishException, TopiaException {
+ protected DesignPlan getTestDesignPlan(boolean use40Features, boolean use401Features) throws IsisFishException, TopiaException {
DesignPlan designPlan = new DesignPlan();
// matrix 1
@@ -113,13 +122,13 @@
matrix1.setValue(new int[] { 2, 1 }, -1);
// rule 1, species = c'est une des especes de la base BaseMotosICA
- Rule ruleTacPoids = RuleStorage.getRule("TACpoids").getNewRuleInstance();
+ Rule ruleTacPoids = RuleStorage.getRule("TACpoids").getNewInstance();
Properties props = new Properties();
props.setProperty("rule.0.parameter.species", "fr.ifremer.isisfish.entities.Species#1169028645830#0.022262364425031378");
RuleHelper.populateRule(0, regionContext, ruleTacPoids, props);
// rule 2, species = c'est une des especes de la base BaseMotosICA
- Rule ruleTailleMin = RuleStorage.getRule("TailleMin").getNewRuleInstance();
+ Rule ruleTailleMin = RuleStorage.getRule("TailleMin").getNewInstance();
props = new Properties();
props.setProperty("rule.0.parameter.species", "fr.ifremer.isisfish.entities.Species#1169028645830#0.022262364425031378");
props.setProperty("rule.0.parameter.propSurvie", "42");
@@ -127,9 +136,9 @@
// factor 1
Factor factorContinuous = new Factor("factor 1 (double continuous)");
- ContinuousDomain domain1 = new ContinuousDomain();
- domain1.setMinBound(0.0);
- domain1.setMaxBound(50.0);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain1.addDistributionParam("min", 0.0);
+ domain1.addDistributionParam("max", 50.0);
factorContinuous.setDomain(domain1);
factorContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength");
@@ -156,28 +165,26 @@
// factor 4
Factor factorMatrixContinuous = new Factor("factor 4 (MatrixContinuous)");
- MatrixContinuousDomain domain4 = new MatrixContinuousDomain();
- domain4.setCoefficient(0.799);
- domain4.setReferenceValue(matrix1);
- domain4.setPercentageType(true);
+ ContinuousDomain domain4 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain4.addDistributionParam("reference", matrix1);
+ domain4.addDistributionParam("coefficient", 0.799);
factorMatrixContinuous.setDomain(domain4);
factorMatrixContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
// factor 5
Factor factorEquationContinuous = new Factor("factor 5 (EquationContinuous)");
- EquationContinuousDomain domain5 = new EquationContinuousDomain();
- domain5.setCoefficient(0.1);
- domain5.setReferenceValue(45.0);
- domain5.setVariableName("L1");
- domain5.setPercentageType(true);
+ factorEquationContinuous.setEquationVariableName("Ktemp");
+ ContinuousDomain domain5 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain5.addDistributionParam("reference", 45.0);
+ domain5.addDistributionParam("coefficient", 0.1);
factorEquationContinuous.setDomain(domain5);
factorEquationContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength");
// factor 1
Factor factorContinuousPercentage = new Factor("factor 6 (double continuous percentage)");
- ContinuousDomain domain6 = new ContinuousDomain(true);
- domain6.setCoefficient(5.0);
- domain6.setReferenceValue(14.0);
+ ContinuousDomain domain6 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain6.addDistributionParam("reference", 14.0);
+ domain6.addDistributionParam("coefficient", 5.0);
factorContinuousPercentage.setCardinality(5);
factorContinuousPercentage.setDomain(domain6);
factorContinuousPercentage.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1142003453434#0.223499349929004#size");
@@ -233,7 +240,7 @@
}
/**
- * Test method {@link MexicoHelper#getDesignPlanAsXML(DesignPlan)}.
+ * Test method {@link MexicoHelper#getDesignPlanAsXML(DesignPlan, String...)}.
*
* Sans groupe de facteur, tel qu'il était en 3.3.0.0.
*
@@ -244,30 +251,31 @@
@Test
public void testGetDesignPlanAsXML() throws IOException, IsisFishException, TopiaException {
- DesignPlan testDesignPlan = getTestDesignPlan(false);
+ DesignPlan testDesignPlan = getTestDesignPlan(false, false);
// test xml export
String xml = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ if (log.isDebugEnabled()) {
+ log.debug("testGetDesignPlanAsXML xml = " + xml);
+ }
+
// factor 1
- Assert.assertTrue(xml.contains("<min>0.0</min>"));
- Assert.assertTrue(xml.contains("<max>50.0</max>"));
+ Assert.assertTrue(xml.contains("distributionParameter name=\"min\" type=\"decimal\">0.0"));
+ Assert.assertTrue(xml.contains("distributionParameter name=\"max\" type=\"decimal\">50.0"));
// factor 2
- Assert.assertTrue(xml.contains("<factor name=\"factor 2 (double discrete)\""));
- Assert.assertTrue(xml.contains("<value>70.9</value>"));
+ Assert.assertTrue(xml.contains("name=\"factor 2 (double discrete)\""));
+ Assert.assertTrue(xml.contains("<level>70.9</level>"));
// factor 3
- Assert.assertTrue(xml.contains("<value>14</value>"));
+ Assert.assertTrue(xml.contains("<level>14</level>"));
// factor 4
Assert.assertTrue(xml.contains("<d>-14.0</d>"));
Assert.assertTrue(xml.contains("0.799"));
Assert.assertTrue(xml.contains("<mx name=\"test1\">"));
// factor 5
- Assert.assertTrue(xml.contains("<fixed variable=\"L1\">"));
- Assert.assertTrue(xml.contains("<reference coefficient=\"0.1\">45.0</reference>"));
-
- if (log.isDebugEnabled()) {
- log.debug("testGetDesignPlanAsXML xml = " + xml);
- }
+ Assert.assertTrue(xml.contains("name=\"equationVariableName\">Ktemp"));
+ Assert.assertTrue(xml.contains("distributionParameter name=\"coefficient\" type=\"decimal\">0.1"));
+ Assert.assertTrue(xml.contains("distributionParameter name=\"reference\" type=\"decimal\">45.0"));
}
/**
@@ -281,6 +289,8 @@
public void testGetDesignPlanFromXML() throws IOException {
File testFile = new File("src/test/resources/mexico/mexicohelper_designplan.xml");
+ testFile = testFile.getAbsoluteFile(); // for maven
+
// topia context can be null in tests
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, null);
List<Factor> factors = plan.getFactors();
@@ -294,9 +304,9 @@
// assert on continuous factor (percentage, non percentage) (3.4.0.0)
ContinuousDomain domain1 = (ContinuousDomain)factors.get(0).getDomain();
- Assert.assertNull(domain1.getCoefficient());
+ Assert.assertNull(domain1.getDistributionParameters().get("coefficient"));
ContinuousDomain domain6 = (ContinuousDomain)factors.get(5).getDomain();
- Assert.assertNotNull(domain6.getCoefficient());
+ Assert.assertNotNull(domain6.getDistributionParameters().get("coefficient"));
}
/**
@@ -310,7 +320,7 @@
public void testExportImport() throws IOException, IsisFishException, TopiaException {
// first export
- DesignPlan testDesignPlan = getTestDesignPlan(false);
+ DesignPlan testDesignPlan = getTestDesignPlan(false, false);
String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
if (log.isDebugEnabled()) {
log.debug("xml 1 = " + xml1);
@@ -318,6 +328,8 @@
// export
File testFile = new File("src/test/resources/mexico/mexicohelper_designplan.xml");
+ testFile = testFile.getAbsoluteFile(); // for maven
+
// topia context can be null in tests
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, regionContext);
String xml2 = MexicoHelper.getDesignPlanAsXML(plan);
@@ -338,24 +350,26 @@
@Test
public void testFactorGroupAndRule() throws IOException, IsisFishException, TopiaException {
- DesignPlan testDesignPlan = getTestDesignPlan(true);
+ DesignPlan testDesignPlan = getTestDesignPlan(true, false);
// test xml export
String xml = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ if (log.isDebugEnabled()) {
+ log.debug("testFactorGroupAndRule xml = " + xml);
+ }
+
// factor groups
- Assert.assertTrue(xml.indexOf("<factors name=\"continuousgrp\" type=\"continuous\">") != -1);
- Assert.assertTrue(xml.indexOf("<factors name=\"discretegrp\" type=\"discrete\">") != -1);
+ Assert.assertTrue(xml.indexOf("<feature name=\"group\">continuousgrp") != -1);
+ Assert.assertTrue(xml.indexOf("<feature name=\"grouptype\">continuous") != -1);
+ Assert.assertTrue(xml.indexOf("<feature name=\"group\">discretegrp") != -1);
+ Assert.assertTrue(xml.indexOf("<feature name=\"group\">discrete") != -1);
// factor 6
Assert.assertTrue(xml.indexOf("<rule name=\"TACpoids\">") != -1);
Assert.assertTrue(xml.indexOf("<rule name=\"TailleMin\">") != -1);
Assert.assertTrue(xml.indexOf("<param key=\"rule.0.parameter.propSurvie\">42.0</param>") != -1);
Assert.assertTrue(xml.indexOf("<param key=\"rule.0.parameter.species\">fr.ifremer.isisfish.entities.Species#1169028645830#0.022262364425031378</param>") != -1);
-
- if (log.isDebugEnabled()) {
- log.debug("testFactorGroupAndRule xml = " + xml);
- }
}
/**
@@ -368,21 +382,24 @@
@Test
public void testExportImportWithGroup() throws IOException, IsisFishException, TopiaException {
+ Date date = new Date();
+
// first export
- DesignPlan testDesignPlan = getTestDesignPlan(true);
- String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ DesignPlan testDesignPlan = getTestDesignPlan(true, false);
+ String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan, "date", date.toString());
if (log.isDebugEnabled()) {
log.debug("xml 1 = " + xml1);
}
- System.out.println(xml1);
// export
File testFile = new File("src/test/resources/mexico/mexicohelper_factorgroupdp.xml");
+ testFile = testFile.getAbsoluteFile(); // for maven
+
// topia context can be null in tests
TopiaContext context = regionContext.beginTransaction();
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, context);
context.closeContext();
- String xml2 = MexicoHelper.getDesignPlanAsXML(plan);
+ String xml2 = MexicoHelper.getDesignPlanAsXML(plan, "date", date.toString());
if (log.isDebugEnabled()) {
log.debug("xml 2 = " + xml2);
}
@@ -400,21 +417,21 @@
@Test
public void testFactorRuleParams() throws IOException, IsisFishException, TopiaException {
- DesignPlan testDesignPlan = getTestDesignPlan(true);
+ DesignPlan testDesignPlan = getTestDesignPlan(true, false);
// test xml export
String xml = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ if (log.isDebugEnabled()) {
+ log.debug("testFactorRuleParams xml = " + xml);
+ }
+
// factor groups
Assert.assertTrue(xml.indexOf("type=\"string\"") != -1);
// factor 8
- Assert.assertTrue(xml.indexOf("<value>Strategy:PelProfil1</value>") != -1);
- Assert.assertTrue(xml.indexOf("<value>Strategy:PelProfil2</value>") != -1);
-
- if (log.isDebugEnabled()) {
- log.debug("testFactorRuleParams xml = " + xml);
- }
+ Assert.assertTrue(xml.indexOf("<level>Strategy:PelProfil1</level>") != -1);
+ Assert.assertTrue(xml.indexOf("<level>Strategy:PelProfil2</level>") != -1);
}
/**
@@ -428,7 +445,7 @@
public void testPercentageMinMaxFactor() throws IOException, IsisFishException, TopiaException {
// get test plan and add some STRANGES factors
- DesignPlan testDesignPlan = getTestDesignPlan(false);
+ DesignPlan testDesignPlan = getTestDesignPlan(false, false);
// matrix 1
MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
@@ -437,26 +454,26 @@
// factor x1
Factor factorContinuous = new Factor("factor x1");
- ContinuousDomain domain1 = new ContinuousDomain(true);
- domain1.setReferenceValue(42.0);
- domain1.setCoefficient(0.05);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain1.addDistributionParam("reference", 42.0);
+ domain1.addDistributionParam("coefficient", 0.05);
factorContinuous.setDomain(domain1);
factorContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength");
// factor x4
Factor factorMatrixContinuous = new Factor("factor x4");
- MatrixContinuousDomain domain4 = new MatrixContinuousDomain();
- domain4.setMinBound(matrix1);
- domain4.setMaxBound(matrix1);
+ ContinuousDomain domain4 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain4.addDistributionParam("min", matrix1);
+ domain4.addDistributionParam("max", matrix1);
factorMatrixContinuous.setDomain(domain4);
factorMatrixContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
// factor x5
Factor factorEquationContinuous = new Factor("factor x5");
- EquationContinuousDomain domain5 = new EquationContinuousDomain();
- domain5.setMinBound(40.0);
- domain5.setMaxBound(50.0);
- domain5.setVariableName("Lx1");
+ ContinuousDomain domain5 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain5.addDistributionParam("min", 40.0);
+ domain5.addDistributionParam("max", 50.0);
+ factorEquationContinuous.setEquationVariableName("Lx1");
factorEquationContinuous.setDomain(domain5);
factorEquationContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength");
@@ -488,7 +505,7 @@
public void testDiscreteEquationFactor() throws IOException, IsisFishException, TopiaException {
// get test plan and add some STRANGES factors
- DesignPlan testDesignPlan = getTestDesignPlan(false);
+ DesignPlan testDesignPlan = getTestDesignPlan(false, false);
// factor x6
Factor factorEquationDiscrete = new Factor("factor x6");
@@ -500,8 +517,9 @@
testDesignPlan.addFactor(factorEquationDiscrete);
+ Date date = new Date();
// test write
- String content = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ String content = MexicoHelper.getDesignPlanAsXML(testDesignPlan, "date", date.toString());
Assert.assertTrue(content.contains("context.getValue() < 1.0"));
File tempFile = File.createTempFile("testdesignplan", ".xml");
@@ -510,7 +528,7 @@
// test to read it and get content
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(tempFile, null);
- String reReadContent = MexicoHelper.getDesignPlanAsXML(plan);
+ String reReadContent = MexicoHelper.getDesignPlanAsXML(plan, "date", date.toString());
Assert.assertEquals(content, reReadContent);
}
@@ -526,18 +544,22 @@
@Test
public void testExportImportV2() throws IOException, IsisFishException, TopiaException {
+ Date date = new Date();
+
// first export
- DesignPlan testDesignPlan = getTestDesignPlan(false);
- String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ DesignPlan testDesignPlan = getTestDesignPlan(false, false);
+ String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan, "date", date.toString());
if (log.isDebugEnabled()) {
log.debug("xml 1 = " + xml1);
}
// export
File testFile = new File("src/test/resources/mexico/mexicohelper_designplanV2.xml");
+ testFile = testFile.getAbsoluteFile(); // for maven
+
// topia context can be null in tests
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, regionContext);
- String xml2 = MexicoHelper.getDesignPlanAsXML(plan);
+ String xml2 = MexicoHelper.getDesignPlanAsXML(plan, "date", date.toString());
if (log.isDebugEnabled()) {
log.debug("xml 2 = " + xml2);
}
@@ -580,4 +602,61 @@
context.closeContext();
}
+
+ /**
+ * Test que le xml généré est valide avec la xsd mexico (exp design).
+ *
+ * Test is currently disabled, isis fish doesn't respect all mexico
+ * file format since it's not possible.
+ *
+ * @throws Exception
+ */
+ public void validOutputXml() throws Exception {
+
+ DesignPlan testDesignPlan = getTestDesignPlan(true, true);
+ String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
+ URL schemaUrl = MexicoHelperTest.class.getResource("/mexico/expDesign.xsd");
+
+ SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = factory.newSchema(schemaUrl);
+ Validator validator = schema.newValidator();
+ // at last perform validation:
+ validator.validate(new StreamSource(new StringReader(xml1)));
+ }
+
+ /**
+ * Test que l'export XML de l'import XML produise le meme xml.
+ * Pareil, mais pour une version v3 du schema xml.
+ *
+ * @throws IOException
+ * @throws IsisFishException
+ * @throws TopiaException
+ */
+ @Test
+ public void testExportImportV3() throws IOException, IsisFishException, TopiaException {
+
+ TopiaContext context = regionContext.beginTransaction();
+ Date date = new Date();
+
+ // first export
+ DesignPlan testDesignPlan = getTestDesignPlan(true, true);
+ String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan, "date", date.toString());
+ if (log.isDebugEnabled()) {
+ log.debug("xml 1 = " + xml1);
+ }
+
+ // export
+ File testFile = new File("src/test/resources/mexico/mexicohelper_designplanV3.xml");
+ testFile = testFile.getAbsoluteFile(); // for maven
+
+ // topia context can be null in tests
+ DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, context);
+ String xml2 = MexicoHelper.getDesignPlanAsXML(plan, "date", date.toString());
+ if (log.isDebugEnabled()) {
+ log.debug("xml 2 = " + xml2);
+ }
+ Assert.assertEquals(xml1, xml2);
+
+ context.closeContext();
+ }
}
Modified: trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2006 - 2010 Ifremer, Code Lutin, Chatellier Eric
+ * Copyright (C) 2006 - 2012 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
@@ -40,7 +40,7 @@
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.StorageException;
import fr.ifremer.isisfish.entities.FisheryRegion;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityUtils;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
/**
* Test class for {@link RegionExplorer}.
@@ -125,7 +125,7 @@
explorer.explore(fisheryRegion, xmlFactorExport);
String xmlExport = FileUtils.readFileToString(file);
- // test that all sensitity properties appear in xml content
+ // test that all sensitivity properties appear in xml content
// entity part and property part must appear in factors names
for (String property : SensitivityUtils.getProperties().stringPropertyNames()) {
String entityPart = property.substring(0, property.indexOf('.'));
Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -65,8 +65,9 @@
Assert.assertEquals("", params.getRegionName());
Assert.assertEquals(1, params.getNumberOfYear());
Assert.assertEquals("DefaultSimulator.java", params.getSimulatorName());
- Assert.assertTrue(params.getUseOptimization());
+ Assert.assertTrue(params.getUseCache());
Assert.assertFalse(params.getUseStatistic());
+ Assert.assertFalse(params.getUseOptimization());
Assert.assertTrue(params.getStrategies().isEmpty());
Assert.assertTrue(params.getPopulations().isEmpty());
// Not easy to test it
Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -59,16 +59,16 @@
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationParameterImpl;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorHelper;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysisRandomMock;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
/**
@@ -101,9 +101,9 @@
// factor 1
Factor factor1 = new Factor("factor 1 (double)");
- ContinuousDomain domain1 = new ContinuousDomain();
- domain1.setMinBound(0.0);
- domain1.setMaxBound(50.0);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain1.addDistributionParam("min", 0.0);
+ domain1.addDistributionParam("max", 50.0);
factor1.setCardinality(4);
factor1.setDomain(domain1);
factor1.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength");
@@ -121,9 +121,9 @@
// factor 3
Factor factor3 = new Factor("factor 3 (double)");
- ContinuousDomain domain3 = new ContinuousDomain();
- domain3.setMinBound(12.0);
- domain3.setMaxBound(99.0);
+ ContinuousDomain domain3 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain3.addDistributionParam("min", 12.0);
+ domain3.addDistributionParam("max", 99.0);
factor3.setCardinality(4);
factor3.setDomain(domain3);
factor3.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
@@ -238,9 +238,9 @@
// factor
Factor factor = new Factor("test");
- ContinuousDomain domain = new ContinuousDomain();
- domain.setMinBound(0.0);
- domain.setMaxBound(50.0);
+ ContinuousDomain domain = new ContinuousDomain(Distribution.QUNIFMM);
+ domain.addDistributionParam("min", 0.0);
+ domain.addDistributionParam("max", 50.0);
factor.setDomain(domain);
factor.setPath("fr.ifremer.entities.Cell#1234567890#length");
factor.setValueForIdentifier(0.5);
@@ -252,9 +252,8 @@
List<Factor> factors = new ArrayList<Factor>();
factors.add(factor);
scenario.setFactors(factors);
-
- SimulationService service = SimulationService.getService();
- String scriptContent = service.generatePreScript(scenario);
+
+ String scriptContent = FactorHelper.generatePreScript(scenario);
Assert.assertTrue(scriptContent.contains("java.lang.Double"));
Assert.assertTrue(scriptContent.contains("db.findByTopiaId(\"fr.ifremer.entities.Cell#1234567890\")"));
Assert.assertTrue(scriptContent.contains("BeanUtils.setProperty(entity0, \"length\""));
@@ -313,8 +312,7 @@
factors.add(factor2);
scenario.setFactors(factors);
- SimulationService service = SimulationService.getService();
- String scriptContent = service.generatePreScript(scenario);
+ String scriptContent = FactorHelper.generatePreScript(scenario);
//log.info("Script = " + scriptContent);
Assert.assertTrue(scriptContent.contains("org.nuiton.math.matrix.MatrixNDImpl "));
Assert.assertTrue(scriptContent.contains("db.findByTopiaId(\"org.nuiton.math.matrix.MatrixND#563456293453#2.456347646\");"));
@@ -331,12 +329,11 @@
public void testFactorPreScriptEquation() throws StorageException, TopiaException {
// factor
- Factor factorEquation = new Factor("test.equation.name.K1");
- EquationContinuousDomain domain1 = new EquationContinuousDomain();
- domain1.setReferenceValue(10.0);
- domain1.setCoefficient(0.1);
- domain1.setVariableName("K1");
- domain1.setPercentageType(true);
+ Factor factorEquation = new Factor("test.equation.name");
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain1.addDistributionParam("reference", 10.0);
+ domain1.addDistributionParam("coefficient", 0.1);
+ factorEquation.setEquationVariableName("K1");
factorEquation.setDomain(domain1);
factorEquation.setPath("fr.ifremer.equation1#testFactorPreScriptEquation");
factorEquation.setValueForIdentifier(0.4);
@@ -347,8 +344,7 @@
factors.add(factorEquation);
scenario.setFactors(factors);
- SimulationService service = SimulationService.getService();
- String scriptContent = service.generatePreScript(scenario);
+ String scriptContent = FactorHelper.generatePreScript(scenario);
//log.info("Script = " + scriptContent);
// le nom de la valeur de la variable n'apparait pas "en elle meme"
@@ -375,18 +371,18 @@
// factor pop
Factor factorPop = new Factor("myPopulationParams");
- factorPop.setDomain(new MatrixContinuousDomain());
+ factorPop.setDomain(new ContinuousDomain());
factorPop.setPath("parameters.population.xxx.number");
MatrixND mat = MatrixFactory.getInstance().create(new int[]{2, 3});
MatrixHelper.convertToId(mat);
factorPop.setValue(mat);
// factor rule, species = c'est une des especes de la base BaseMotosICA
- Rule ruleTacPoids = RuleStorage.getRule("TACpoids").getNewRuleInstance();
+ Rule ruleTacPoids = RuleStorage.getRule("TACpoids").getNewInstance();
Properties props = new Properties();
props.setProperty("rule.0.parameter.species", "fr.ifremer.isisfish.entities.Species#1169028645830#0.022262364425031378");
RuleHelper.populateRule(0, regionContext, ruleTacPoids, props);
- Rule ruleTailleMin = RuleStorage.getRule("TailleMin").getNewRuleInstance();
+ Rule ruleTailleMin = RuleStorage.getRule("TailleMin").getNewInstance();
props = new Properties();
props.setProperty("rule.0.parameter.species", "fr.ifremer.isisfish.entities.Species#1169028645830#0.022262364425031378");
props.setProperty("rule.0.parameter.propSurvie", "42");
@@ -405,8 +401,7 @@
scenario1.setFactors(factors);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
//log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("params.setProperty(\"population.xxx.number\""));
@@ -430,7 +425,7 @@
// factor pop
Factor factorPop = new Factor("parameters of rule TACpoids");
- factorPop.setDomain(new MatrixContinuousDomain());
+ factorPop.setDomain(new ContinuousDomain());
factorPop.setPath("parameters.rule.0.parameter.tacInTons");
factorPop.setValue(42.0);
@@ -439,8 +434,7 @@
scenario1.setFactors(factors);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("params.setProperty(\"rule.0.parameter.tacInTons\",\"42.0\");"));
@@ -462,18 +456,18 @@
// factor 1
Factor factor1 = new Factor("factor 1 (double)");
- ContinuousDomain domain1 = new ContinuousDomain();
- domain1.setMinBound(0.0);
- domain1.setMaxBound(50.0);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain1.addDistributionParam("min", 0.0);
+ domain1.addDistributionParam("max", 50.0);
factor1.setCardinality(4);
factor1.setDomain(domain1);
factor1.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength");
// factor 2
Factor factor2 = new Factor("factor 2 (double)");
- ContinuousDomain domain2 = new ContinuousDomain();
- domain2.setMinBound(1.0);
- domain2.setMaxBound(9.0);
+ ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain2.addDistributionParam("min", 1.0);
+ domain2.addDistributionParam("max", 9.0);
factor2.setCardinality(3);
factor2.setDomain(domain2);
factor2.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength");
@@ -517,8 +511,7 @@
scenario1.addFactor(group2);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
//log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("/* factor group : myContinuousGroup */"));
@@ -557,8 +550,7 @@
scenario1.addFactor(factor1);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("beanUtils.convert(\"String myValue=\\\"test2\\\""));
Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 Ifremer, Code Lutin
+ * Copyright (C) 2009 - 2012 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
@@ -39,8 +39,6 @@
import fr.ifremer.isisfish.rule.RuleMock;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
/**
@@ -63,9 +61,9 @@
public void testIntFactor() {
Factor factor = new Factor("testint");
- ContinuousDomain domain = new ContinuousDomain();
- domain.setMinBound(0.0);
- domain.setMaxBound(50.0);
+ ContinuousDomain domain = new ContinuousDomain(Distribution.QUNIFMM);
+ domain.addDistributionParam("min", 0.0);
+ domain.addDistributionParam("max", 50.0);
factor.setDomain(domain);
factor.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
factor.setValueForIdentifier(0.5);
@@ -136,191 +134,63 @@
* @see MatrixND
*/
@Test
- public void testMatrixContinuousFactor() {
-
- // matrix 1
- MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix1.setValue(new int[] { 0, 0 }, 1);
- matrix1.setValue(new int[] { 0, 1 }, -14);
- matrix1.setValue(new int[] { 1, 0 }, 21);
- matrix1.setValue(new int[] { 1, 1 }, 2);
- matrix1.setValue(new int[] { 2, 0 }, 3);
- matrix1.setValue(new int[] { 2, 1 }, -1);
-
- // matrix minBound
- MatrixND minBound = MatrixFactory.getInstance().create("test1",
- new int[]{3, 2}, new String[]{"col1", "col2"});
- minBound.setValue(new int[]{0, 0}, 0.9);
- minBound.setValue(new int[]{0, 1}, -15.4);
- minBound.setValue(new int[]{1, 0}, 18.9);
- minBound.setValue(new int[]{1, 1}, 1.8);
- minBound.setValue(new int[]{2, 0}, 2.7);
- minBound.setValue(new int[]{2, 1}, -1.1);
-
- // matrix maxBound
- MatrixND maxBound = MatrixFactory.getInstance().create("test1",
- new int[]{3, 2}, new String[]{"col1", "col2"});
- maxBound.setValue(new int[]{0, 0}, 1.1);
- maxBound.setValue(new int[]{0, 1}, -12.6);
- maxBound.setValue(new int[]{1, 0}, 23.1);
- maxBound.setValue(new int[]{1, 1}, 2.2);
- maxBound.setValue(new int[]{2, 0}, 3.3);
- maxBound.setValue(new int[]{2, 1}, -0.9);
-
- // factor
- Factor factor = new Factor("testmatrix");
- MatrixContinuousDomain domain = new MatrixContinuousDomain(true);
- domain.setReferenceValue(matrix1);
- domain.setCoefficient(0.1);
- factor.setDomain(domain);
- factor.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor.setValueForIdentifier(0.1);
-
- Assert.assertEquals(0.92, ((MatrixND)factor.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.76, ((MatrixND)factor.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
- Assert.assertEquals(0.1, (Double)factor.getDisplayedValue(),0);
-
- // matrix 2
- MatrixND matrix2 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix2.setValue(new int[] { 0, 0 }, 1);
- matrix2.setValue(new int[] { 0, 1 }, -14);
- matrix2.setValue(new int[] { 1, 0 }, 21);
- matrix2.setValue(new int[] { 1, 1 }, 2);
- matrix2.setValue(new int[] { 2, 0 }, 3);
- matrix2.setValue(new int[] { 2, 1 }, -1);
-
- // factor 2
- Factor factor2 = new Factor("testmatrix");
- MatrixContinuousDomain domain2 = new MatrixContinuousDomain(true);
- domain2.setReferenceValue(matrix2);
- domain2.setCoefficient(0.1);
- factor2.setDomain(domain2);
- factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor2.setValueForIdentifier(0.2);
-
- Assert.assertEquals(0.94, ((MatrixND)factor2.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.82, ((MatrixND)factor2.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
- //Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- //Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
-
- // matrix 3
- MatrixND matrix3 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix3.setValue(new int[] { 0, 0 }, 1);
- matrix3.setValue(new int[] { 0, 1 }, -14);
- matrix3.setValue(new int[] { 1, 0 }, 21);
- matrix3.setValue(new int[] { 1, 1 }, 2);
- matrix3.setValue(new int[] { 2, 0 }, 3);
- matrix3.setValue(new int[] { 2, 1 }, -1);
-
- // factor 3
- Factor factor3 = new Factor("testmatrix");
- MatrixContinuousDomain domain3 = new MatrixContinuousDomain(true);
- domain3.setReferenceValue(matrix3);
- domain3.setCoefficient(0.2);
- factor3.setDomain(domain3);
- factor3.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor3.setValueForIdentifier(0.1);
-
- Assert.assertEquals(0.84, ((MatrixND)factor3.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.52, ((MatrixND)factor3.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
- //Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- //Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
-
- // matrix 3
- MatrixND matrix4 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix4.setValue(new int[] { 0, 0 }, 1);
- matrix4.setValue(new int[] { 0, 1 }, -14);
- matrix4.setValue(new int[] { 1, 0 }, 21);
- matrix4.setValue(new int[] { 1, 1 }, 2);
- matrix4.setValue(new int[] { 2, 0 }, 3);
- matrix4.setValue(new int[] { 2, 1 }, -1);
-
- // factor 3
- Factor factor4 = new Factor("testmatrix");
- MatrixContinuousDomain domain4 = new MatrixContinuousDomain(true);
- domain4.setReferenceValue(matrix4);
- domain4.setCoefficient(0.3);
- factor4.setDomain(domain4);
- factor4.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor4.setValueForIdentifier(0.4);
-
- Assert.assertEquals(0.94, ((MatrixND)factor4.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.82, ((MatrixND)factor4.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
- //Assert.assertEquals(0,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- //Assert.assertEquals(1,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
-
- if (log.isInfoEnabled()) {
- log.info("factor#toString() = " + factor);
- }
- }
-
- /**
- * Test factor with matrix.
- *
- * @see MatrixND
- */
- @Test
public void testEquationContinuousFactor() {
// factor
Factor factor = new Factor("testequation");
- EquationContinuousDomain domain = new EquationContinuousDomain(true);
- domain.setCoefficient(0.1);
- domain.setVariableName("Linf");
- domain.setReferenceValue(3.0);
+ ContinuousDomain domain = new ContinuousDomain(Distribution.QUNIFPC);
+ domain.addDistributionParam("reference", 3.0);
+ domain.addDistributionParam("coefficient", 0.1);
+ factor.setEquationVariableName("Linf");
factor.setDomain(domain);
factor.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
factor.setValueForIdentifier(0.1);
Assert.assertEquals(2.76, (Double)factor.getValue(),0.0000001);
- Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
+ //Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
+ //Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
// factor 2
Factor factor2 = new Factor("testequation");
- EquationContinuousDomain domain2 = new EquationContinuousDomain(true);
- domain2.setCoefficient(0.1);
- domain2.setVariableName("Linf");
- domain2.setReferenceValue(3.0);
+ ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain2.addDistributionParam("reference", 3.0);
+ domain2.addDistributionParam("coefficient", 0.1);
+ factor2.setEquationVariableName("Linf");
factor2.setDomain(domain2);
factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
factor2.setValueForIdentifier(0.1);
Assert.assertEquals(2.76, (Double)factor2.getValue(),0.0000001);
- Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
+ //Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
+ //Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
// factor 3
Factor factor3 = new Factor("testequation");
- EquationContinuousDomain domain3 = new EquationContinuousDomain(true);
- domain3.setCoefficient(0.1);
- domain3.setVariableName("Linf");
- domain3.setReferenceValue(3.0);
+ ContinuousDomain domain3 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain3.addDistributionParam("reference", 3.0);
+ domain3.addDistributionParam("coefficient", 0.1);
+ factor3.setEquationVariableName("Linf");
factor3.setDomain(domain3);
factor3.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
factor3.setValueForIdentifier(0.2);
Assert.assertEquals(2.82, (Double)factor3.getValue(),0.0000001);
- Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
+ //Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
+ //Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
// factor 4
Factor factor4 = new Factor("testequation");
- EquationContinuousDomain domain4 = new EquationContinuousDomain(true);
- domain4.setCoefficient(0.05);
- domain4.setVariableName("Linf");
- domain4.setReferenceValue(3.0);
+ ContinuousDomain domain4 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain4.addDistributionParam("reference", 3.0);
+ domain4.addDistributionParam("coefficient", 0.05);
+ factor4.setEquationVariableName("Linf");
factor4.setDomain(domain4);
factor4.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
factor4.setValueForIdentifier(0.1);
Assert.assertEquals(2.88, (Double)factor4.getValue(),0.0000001);
- Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
- Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
+ //Assert.assertEquals(2.7,(Double)((ContinuousDomain)factor.getDomain()).getMinBound(),0);
+ //Assert.assertEquals(3.3,(Double)((ContinuousDomain)factor.getDomain()).getMaxBound(),0);
if (log.isInfoEnabled()) {
log.info("factor#toString() = " + factor);
@@ -370,9 +240,9 @@
factor.setPath("fr.ifremer.isisfish.entities.Cell#lenght");
factor.setComment("answer to life");
- ContinuousDomain domain = new ContinuousDomain();
- domain.setMinBound(0.0);
- domain.setMaxBound(50.0);
+ ContinuousDomain domain = new ContinuousDomain(Distribution.QUNIFMM);
+ domain.addDistributionParam("min", 0.0);
+ domain.addDistributionParam("max", 50.0);
factor.setDomain(domain);
factor.setCardinality(2);
Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisRandomMock.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisRandomMock.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisRandomMock.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -35,8 +35,6 @@
import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTest;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
/**
* Implementation of SensitivityAnalysis that take random value in available
@@ -100,28 +98,10 @@
Factor factor = factors.get(pickedFactor);
Domain domain = factor.getDomain();
- if (domain instanceof MatrixContinuousDomain) {
- MatrixContinuousDomain cDomain = (MatrixContinuousDomain) domain;
- Object minValue = cDomain.getMinBound();
- Object maxValue = cDomain.getMaxBound();
-
- factor.setValueForIdentifier(minValue.toString());
- scenario.addFactor(factor);
- factor.setValueForIdentifier(maxValue.toString());
- scenario.addFactor(factor);
- } else if (domain instanceof EquationContinuousDomain) {
- EquationContinuousDomain cDomain = (EquationContinuousDomain) domain;
- Object minValue = cDomain.getMinBound();
- Object maxValue = cDomain.getMaxBound();
-
- factor.setValueForIdentifier(minValue.toString());
- scenario.addFactor(factor);
- factor.setValueForIdentifier(maxValue.toString());
- scenario.addFactor(factor);
- } else if (domain instanceof ContinuousDomain) {
+ if (domain instanceof ContinuousDomain) {
ContinuousDomain cDomain = (ContinuousDomain) domain;
- Object minValue = cDomain.getMinBound();
- Object maxValue = cDomain.getMaxBound();
+ Object minValue = 10.5; //cDomain.getMinBound();
+ Object maxValue = 15.5; //cDomain.getMaxBound();
factor.setValueForIdentifier(minValue);
scenario.addFactor(factor);
Copied: trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java (from rev 3968, branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java)
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java (rev 0)
+++ trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,498 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 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.sensitivity;
+
+import java.io.File;
+import java.io.IOException;
+
+import fr.ifremer.isisfish.IsisFish;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.aspectj.util.FileUtil;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.nuiton.j2r.RException;
+import org.nuiton.j2r.RProxy;
+
+import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+
+/**
+ * Test les scripts d'AS disponible dans les ressources de tests.
+ *
+ * @author Eric Chatellier
+ */
+public class SensitivityAnalysisTest extends AbstractIsisFishTest {
+
+ private static final Log log = LogFactory.getLog(SensitivityAnalysisTest.class);
+
+ /** Simulation dir used to save Rdata files. */
+ protected File simulationsDir;
+
+ /**
+ * Ces tests utilisent directement le moteur R, s'il n'est pas disponible,
+ * on va eviter de faire les tests.
+ */
+ @Before
+ public void setUp() {
+
+ System.setProperty("R.type", "jni");
+ try {
+ new RProxy();
+ } catch (RException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("R not available. Skipping current test");
+ }
+ Assume.assumeNoException(e);
+ }
+ simulationsDir = FileUtil.getTempDir("simulations");
+ }
+
+ protected DesignPlan getDesignPlan(Factor... factors) {
+ DesignPlan result = new DesignPlan();
+ int factorIndex = 1;
+ for (Factor factor : factors) {
+ factor.setName("f" + factorIndex++);
+ result.addFactor(factor);
+ }
+ return result;
+ }
+
+ protected FactorGroup getFactorGroup(boolean continuous, Factor... factors) {
+ FactorGroup result = new FactorGroup("", continuous);
+ for (Factor factor : factors) {
+ result.addFactor(factor);
+ }
+ return result;
+ }
+
+ protected Factor getContinuousDoubleUniformMMFactor() {
+ // factor 1, min/max on int
+ Factor factor1 = new Factor("test unifmm");
+ factor1.setCardinality(2);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain1.addDistributionParam("min", 0.0);
+ domain1.addDistributionParam("max", 2.0);
+ factor1.setDomain(domain1);
+ factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
+ return factor1;
+ }
+
+ protected Factor getContinuousDoubleUniformPcFactor() {
+ // factor 1, min/max on int
+ Factor factor2 = new Factor("test unifpc");
+ factor2.setCardinality(2);
+ ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain2.addDistributionParam("reference", 40.0);
+ domain2.addDistributionParam("coefficient", 0.05);
+ factor2.setDomain(domain2);
+ factor2.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
+ return factor2;
+ }
+
+ /*protected Factor getContinuousMatrixUniformPCFactor() {
+ // matrix 1
+ MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
+ new int[] { 3, 2 }, new String[] { "col1", "col2" });
+ matrix1.setValue(new int[] { 0, 0 }, 1);
+ matrix1.setValue(new int[] { 0, 1 }, -14);
+ matrix1.setValue(new int[] { 1, 0 }, 21);
+ matrix1.setValue(new int[] { 1, 1 }, 2);
+ matrix1.setValue(new int[] { 2, 0 }, 3);
+ matrix1.setValue(new int[] { 2, 1 }, -1);
+
+ // factor
+ Factor factor2 = new Factor("tes tmatrix unifpc");
+ factor2.setCardinality(3);
+ ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC);
+ domain2.addDistributionParam("reference", matrix1);
+ domain2.addDistributionParam("coefficient", 0.1);
+ factor2.setDomain(domain2);
+ factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
+ return factor2;
+ }*/
+
+ protected Factor getContinuousDoubleCauchyFactor() {
+ // factor 1, min/max on int
+ Factor factor2 = new Factor("test cauchy");
+ factor2.setCardinality(2);
+ ContinuousDomain domain2 = new ContinuousDomain(Distribution.DCAUCHY);
+ domain2.addDistributionParam("location", 0.0);
+ domain2.addDistributionParam("scale", 1.0);
+ factor2.setDomain(domain2);
+ factor2.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
+ return factor2;
+ }
+
+ protected Factor getContinuousDoubleChisqFactor() {
+ // factor 1, min/max on int
+ Factor factor1 = new Factor("test dchisq");
+ factor1.setCardinality(2);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.DCHISQ);
+ domain1.addDistributionParam("df", 1.0);
+ factor1.setDomain(domain1);
+ factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
+ return factor1;
+ }
+
+ protected Factor getDiscreteIntFactor() {
+ // factor 1, min/max on int
+ Factor factor1 = new Factor("test int");
+ DiscreteDomain domain1 = new DiscreteDomain();
+ domain1.getValues().put("1", 42.0);
+ domain1.getValues().put("2", 43.0);
+ domain1.getValues().put("3", 44.0);
+ factor1.setDomain(domain1);
+ factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
+ return factor1;
+ }
+
+ protected void displayScenarios(SensitivityScenarios scenarii) {
+ if (log.isDebugEnabled()) {
+ int scIndex = 1;
+ for (Scenario scenario : scenarii.getScenarios()) {
+ log.debug("Scenario " + scIndex++);
+ for (Factor factor : scenario.getFactors()) {
+ log.debug("Factor " + factor.getName() + " = " + factor.getValue());
+ }
+ }
+ }
+ }
+
+ /**
+ * Test tmp files/dir.
+ *
+ * @throws IOException
+ */
+ @After
+ public void clear() throws IOException {
+ FileUtils.deleteDirectory(simulationsDir);
+ }
+
+ /**
+ * Test de génération des scenarios via la methode Morris.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testMorris() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Morris").getNewInstance();
+ Assert.assertNotNull("Morris script not found in test data", script);
+
+ // uniform min/max
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertTrue(scenarii.getScenarios().size() >= 3); // random, can be 9, 12
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // uniform pc
+ designPlan = getDesignPlan(getContinuousDoubleUniformPcFactor(), getContinuousDoubleUniformPcFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertTrue(scenarii.getScenarios().size() >= 3); // random, can be 9, 12
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 30.0 && value <= 50.0);
+ }
+ }
+
+ /* matrix uniform
+ designPlan = getDesignPlan(getContinuousMatrixUniformPCFactor(), getContinuousMatrixUniformPCFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertTrue(scenarii.getScenarios().size() >= 3); // random, can be 9, 12
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ MatrixND value = (MatrixND)factor.getValue();
+ Assert.assertTrue(value.getValue(0, 0) >= 0.9 && value.getValue(0, 0) <= 1.1);
+ }
+ }*/
+
+ // check fail is discrete
+ designPlan = getDesignPlan(getDiscreteIntFactor(),getContinuousDoubleUniformMMFactor());
+ try {
+ script.compute(designPlan, simulationsDir);
+ Assert.fail("Exception should have been thrown at this stage");
+ } catch (SensitivityException eee){
+ //do nothing
+ }
+
+ }
+
+ /**
+ * Test de génération des scenarios via la methode DOptimal.
+ *
+ * This method accept discretes factors.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ @Ignore
+ public void testDOptimal() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("DOptimal").getNewInstance();
+ Assert.assertNotNull("DOptimal script not found in test data", script);
+
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // test discretes
+ designPlan = getDesignPlan(getDiscreteIntFactor(), getDiscreteIntFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ displayScenarios(scenarii);
+ }
+
+ /**
+ * Test de génération des scenarios via la methode Fast.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testFast() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Fast").getNewInstance();
+ Assert.assertNotNull("Fast script not found in test data", script);
+
+ // uniform min/max
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(40, scenarii.getScenarios().size());
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ // TODO: fix NaN values here
+ //Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // uniform pc
+ designPlan = getDesignPlan(getContinuousDoubleUniformPcFactor(), getContinuousDoubleUniformPcFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(40, scenarii.getScenarios().size());
+ displayScenarios(scenarii);
+
+ // check fail is discrete
+ designPlan = getDesignPlan(getDiscreteIntFactor(),getContinuousDoubleUniformMMFactor());
+ try {
+ script.compute(designPlan, simulationsDir);
+ Assert.fail("Exception should have been thrown at this stage");
+ } catch (SensitivityException eee){
+ //do nothing
+ }
+
+ }
+
+ /**
+ * Test de génération des scenarios via la methode OptimumLHS.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testOptimumLHS() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("OptimumLHS").getNewInstance();
+ Assert.assertNotNull("OptimumLHS script not found in test data", script);
+
+ // uniform min/max
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(10, scenarii.getScenarios().size());
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // uniform pc
+ designPlan = getDesignPlan(getContinuousDoubleUniformPcFactor(), getContinuousDoubleUniformPcFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(10, scenarii.getScenarios().size());
+ displayScenarios(scenarii);
+
+ // check fail is discrete
+ designPlan = getDesignPlan(getDiscreteIntFactor(),getContinuousDoubleUniformMMFactor());
+ try {
+ script.compute(designPlan, simulationsDir);
+ Assert.fail("Exception should have been thrown at this stage");
+ } catch (SensitivityException eee){
+ //do nothing
+ }
+
+ }
+
+ /**
+ * Test de génération des scenarios via la methode RandomLHS.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testRandomLHS() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("RandomLHS").getNewInstance();
+ Assert.assertNotNull("RandomLHS script not found in test data", script);
+
+ // uniform min/max
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(10, scenarii.getScenarios().size());
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // uniform pc
+ designPlan = getDesignPlan(getContinuousDoubleUniformPcFactor(), getContinuousDoubleUniformPcFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(10, scenarii.getScenarios().size());
+ displayScenarios(scenarii);
+
+ // check fail is discrete
+ designPlan = getDesignPlan(getDiscreteIntFactor(),getContinuousDoubleUniformMMFactor());
+ try {
+ script.compute(designPlan, simulationsDir);
+ Assert.fail("Exception should have been thrown at this stage");
+ } catch (SensitivityException eee){
+ //do nothing
+ }
+
+ }
+
+ /**
+ * Test de génération des scenarios via la methode RegularExpandGrid.
+ *
+ * This method accept discretes factors.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ @Ignore
+ public void testRegularExpandGrid() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("RegularExpandGrid").getNewInstance();
+ Assert.assertNotNull("RegularExpandGrid script not found in test data", script);
+
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // test discretes
+ designPlan = getDesignPlan(getDiscreteIntFactor(), getDiscreteIntFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ displayScenarios(scenarii);
+ }
+
+ /**
+ * Test de génération des scenarios via la methode RegularFractions.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testRegularFractions() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("RegularFractions").getNewInstance();
+ // this script need pathToFunction parameter to find R script in current directory
+ SensitivityAnalysisStorage.setParameterValue(script,"pathToFunction",
+ IsisFish.config.getDatabaseDirectory().getAbsolutePath() + File.separator + "sensitivityanalysis");
+ Assert.assertNotNull("RegularFractions script not found in test data", script);
+
+ // test continuous
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ displayScenarios(scenarii);
+
+ }
+
+ /**
+ * Test de génération des scenarios via la methode Sobol.
+ *
+ * @throws IsisFishException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testSobol() throws IsisFishException, SensitivityException {
+ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Sobol").getNewInstance();
+ Assert.assertNotNull("Sobol script not found in test data", script);
+
+ // sobol avec uniform MM
+ DesignPlan designPlan = getDesignPlan(getContinuousDoubleUniformMMFactor(), getContinuousDoubleUniformMMFactor());
+ SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(80, scenarii.getScenarios().size());
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value >= 0.0 && value <= 2.0);
+ }
+ }
+
+ // sobol avec cauchy/chisq
+ designPlan = getDesignPlan(getContinuousDoubleCauchyFactor(), getContinuousDoubleChisqFactor());
+ scenarii = script.compute(designPlan, simulationsDir);
+ Assert.assertEquals(80, scenarii.getScenarios().size());
+ for (Scenario scenario : scenarii.getScenarios()) {
+ for (Factor factor : scenario.getFactors()) {
+ double value = (Double)factor.getValue();
+ Assert.assertTrue(value != 0.0);
+ }
+ }
+
+ // check fail is discrete
+ designPlan = getDesignPlan(getDiscreteIntFactor(),getContinuousDoubleUniformMMFactor());
+ try {
+ script.compute(designPlan, simulationsDir);
+ Assert.fail("Exception should have been thrown at this stage");
+ } catch (SensitivityException eee){
+ //do nothing
+ }
+
+ }
+}
Modified: trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -23,9 +23,25 @@
package fr.ifremer.isisfish.simulator.sensitivity;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Properties;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaContextFactory;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaNotFoundException;
+import org.nuiton.topia.persistence.TopiaDAO;
+import org.nuiton.topia.persistence.TopiaEntity;
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.datastore.IsisH2Config;
+
/**
* Test for SensitivityUtils class.
*
@@ -37,6 +53,9 @@
*/
public class SensitivityUtilsTest {
+ /** Logger for this class */
+ private static final Log log = LogFactory.getLog(SensitivityUtilsTest.class);
+
/**
* Test le résultat attendu de l'echappement des noms de facteurs.
*/
@@ -45,4 +64,57 @@
Assert.assertEquals("test_factor_pour_R", SensitivityUtils.espaceFactorName("test factor pour R"));
Assert.assertEquals("factor2_selectivite", SensitivityUtils.espaceFactorName("factor2.sélectivité"));
}
+
+ /**
+ * Return a basic valid topia context.
+ *
+ * @throws TopiaNotFoundException
+ */
+ protected TopiaContext getTopiaContext() throws TopiaNotFoundException {
+ Properties config = new Properties();
+ IsisH2Config.addMemDatabaseConfig(config, "test");
+ IsisH2Config.addHibernateMapping(config);
+ TopiaContext context = TopiaContextFactory.getContext(config);
+ return context;
+ }
+
+ /**
+ * Test (par introspection) que tous les facteurs existent.
+ *
+ * @throws ClassNotFoundException
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws NoSuchMethodException
+ * @throws SecurityException
+ * @throws InvocationTargetException
+ * @throws IllegalArgumentException
+ * @throws TopiaException
+ */
+ @Test
+ public void testFactorExistence() throws InstantiationException, IllegalAccessException,
+ ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException,
+ InvocationTargetException, TopiaException {
+ Properties factors = SensitivityUtils.getProperties();
+
+ TopiaContext testTC = getTopiaContext();
+ TopiaContext context = testTC.beginTransaction();
+ for (String factorName : factors.stringPropertyNames()) {
+ String className = factorName.substring(0, factorName.indexOf("."));
+ String propertyName = StringUtils.capitalize(factorName.substring(factorName.indexOf(".") + 1));
+
+ // Harder method
+ // but topia context is needed by some getXXX() methods
+ Method mStatic = IsisFishDAOHelper.class.getMethod("get" + className + "DAO", TopiaContext.class);
+ TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) mStatic.invoke(null, new Object[] { context });
+ Assert.assertNotNull("No DOA found for factor " + factorName, dao);
+
+ // call proper property
+ if (log.isDebugEnabled()) {
+ log.debug(" and call get" + propertyName + "() on " + className);
+ }
+ Method m = dao.getEntityClass().getMethod("get" + propertyName);
+ Assert.assertNotNull("getter not found for " + factorName, m);
+ }
+ context.closeContext();
+ }
}
Modified: trunk/src/test/java/fr/ifremer/isisfish/types/MonthTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/types/MonthTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/types/MonthTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.types;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.util.LinkedList;
import java.util.List;
@@ -78,12 +78,12 @@
MatrixND tmp = MatrixFactory.getInstance().create(
"test",
new List[] { monthList },
- new String[] { _("isisfish.populationSeasonInfo.months") });
+ new String[] { t("isisfish.populationSeasonInfo.months") });
MatrixND result = MatrixFactory.getInstance().create(
"test",
new List[] { monthList2 },
- new String[] { _("isisfish.populationSeasonInfo.months") });
+ new String[] { t("isisfish.populationSeasonInfo.months") });
tmp.pasteSemantics(result);
}
Modified: trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -25,7 +25,7 @@
package fr.ifremer.isisfish.ui.sensitivity;
-import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.t;
import java.awt.HeadlessException;
import javax.swing.JDialog;
@@ -42,6 +42,7 @@
import org.nuiton.math.matrix.MatrixND;
import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
@@ -79,9 +80,9 @@
Factor factor1 = new Factor(
"testint");
- ContinuousDomain domain1 = new ContinuousDomain();
- domain1.setMinBound(0.0);
- domain1.setMaxBound(50.0);
+ ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM);
+ domain1.addDistributionParam("min", 0.0);
+ domain1.addDistributionParam("max", 50.0);
factor1.setDomain(domain1);
factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name");
factor1.setValueForIdentifier(0.5);
@@ -141,7 +142,7 @@
@Override
public void run() {
JOptionPane.showMessageDialog(dialog, tree,
- _("Tree factor model"),
+ t("Tree factor model"),
JOptionPane.INFORMATION_MESSAGE);
}
});
Deleted: trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,126 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 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.ui.sensitivity;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Properties;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Assert;
-import org.junit.Test;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaContextFactory;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.TopiaNotFoundException;
-import org.nuiton.topia.persistence.TopiaDAO;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import fr.ifremer.isisfish.AbstractIsisFishTest;
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.datastore.IsisH2Config;
-import fr.ifremer.isisfish.entities.VariableDAO;
-
-/**
- * Test for {@link SensitivityUtils} class.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class SensitivityUtilsTest extends AbstractIsisFishTest {
-
- /** Logger for this class */
- private static final Log log = LogFactory
- .getLog(SensitivityUtilsTest.class);
-
- /**
- * Return a basic valid topia context.
- *
- * @throws TopiaNotFoundException
- */
- protected TopiaContext getTopiaContext() throws TopiaNotFoundException {
- Properties config = new Properties();
- IsisH2Config.addMemDatabaseConfig(config, "test");
- IsisH2Config.addHibernateMapping(config);
- TopiaContext context = TopiaContextFactory.getContext(config);
- return context;
- }
-
- /**
- * Test (par introspection) que tous les facteurs existent.
- *
- * @throws ClassNotFoundException
- * @throws IllegalAccessException
- * @throws InstantiationException
- * @throws NoSuchMethodException
- * @throws SecurityException
- * @throws InvocationTargetException
- * @throws IllegalArgumentException
- * @throws TopiaException
- */
- @Test
- public void testFactorExistence() throws InstantiationException, IllegalAccessException,
- ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException,
- InvocationTargetException, TopiaException {
- Properties factors = SensitivityUtils.getProperties();
-
- TopiaContext testTC = getTopiaContext();
- TopiaContext context = testTC.beginTransaction();
- for (String factorName : factors.stringPropertyNames()) {
- String className = factorName.substring(0, factorName.indexOf("."));
-
- if ("Variable".equals(className)) {
- // test fails with Variable because of contraints integrity
- continue;
- }
-
- String propertyName = StringUtils.capitalize(factorName.substring(factorName.indexOf(".") + 1));
-
- // Simple method
- // TopiaEntity entity = (TopiaEntity)Class.forName("fr.ifremer.isisfish.entities." + className + "Impl").newInstance();
-
- // Harder method
- // but topia context is needed by some getXXX() methods
- Method mStatic = IsisFishDAOHelper.class.getMethod("get" + className + "DAO", TopiaContext.class);
- TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) mStatic.invoke(null, new Object[] { context });
- Assert.assertNotNull("No DOA found for factor " + factorName, dao);
- TopiaEntity entity = dao.create();
-
- // call proper property
- if (log.isDebugEnabled()) {
- log.debug(" and call get" + propertyName + "() on " + className);
- }
- Method m = entity.getClass().getMethod("get" + propertyName);
- m.invoke(entity, (Object[]) null);
- }
- context.closeContext();
- }
-}
Modified: trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -33,6 +33,7 @@
import java.util.Collections;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
@@ -108,7 +109,7 @@
File f = File.createTempFile("testCompile", ".java", getTestDirectory());
String filename = FileUtil.basename(f, ".java");
String code = getFirstClassContent(filename);
- FileUtil.writeString(f, code);
+ FileUtils.writeStringToFile(f, code);
List<File> classpath = new ArrayList<File>();
classpath.add(f.getParentFile());
@@ -118,10 +119,11 @@
// essai de chargement de la classe
URL[] cp = new URL[] { f.getParentFile().toURI().toURL() };
- ClassLoader cl = new URLClassLoader(cp);
- Class<?> c = cl.loadClass(filename);
- log.info("class name: " + c.getName());
- Assert.assertEquals(filename, c.getName());
+ try (URLClassLoader cl = new URLClassLoader(cp)) {
+ Class<?> c = cl.loadClass(filename);
+ log.info("class name: " + c.getName());
+ Assert.assertEquals(filename, c.getName());
+ }
// delete
File fclass = new File(f.getAbsolutePath().replaceAll("java$", "class"));
@@ -141,12 +143,12 @@
File fA = File.createTempFile("testCompileA", ".java", getTestDirectory());
String filenameA = FileUtil.basename(fA, ".java");
String codeA = getFirstClassContent(filenameA);
- FileUtil.writeString(fA, codeA);
+ FileUtils.writeStringToFile(fA, codeA);
File fB = File.createTempFile("testCompileB", ".java", getTestDirectory());
String filenameB = FileUtil.basename(fB, ".java");
String codeB = getSecondClassContent(filenameB, filenameA);
- FileUtil.writeString(fB, codeB);
+ FileUtils.writeStringToFile(fB, codeB);
File dest = new File(fB.getParentFile(), "testCompile");
@@ -157,18 +159,20 @@
// essai de chargement de la classe
URL[] cp = new URL[] { dest.toURI().toURL() };
- ClassLoader cl = new URLClassLoader(cp);
- Class<?> c = cl.loadClass(filenameB);
- log.info("class name: " + c.getName());
- Assert.assertEquals(filenameB, c.getName());
+ try (URLClassLoader cl = new URLClassLoader(cp)) {
+ Class<?> c = cl.loadClass(filenameB);
+ log.info("class name: " + c.getName());
+ Assert.assertEquals(filenameB, c.getName());
+ }
// essai de chargement de la classe
cp = new URL[] { dest.toURI().toURL() };
//URL[] cp = new URL[] { dest.toURL() };
- cl = new URLClassLoader(cp);
- c = cl.loadClass(filenameA);
- log.info("class name: " + c.getName());
- Assert.assertEquals(filenameA, c.getName());
+ try (URLClassLoader cl = new URLClassLoader(cp)) {
+ Class<?> c = cl.loadClass(filenameA);
+ log.info("class name: " + c.getName());
+ Assert.assertEquals(filenameA, c.getName());
+ }
// delete
File fclassA = new File(fA.getAbsolutePath().replaceAll("java$",
@@ -179,7 +183,7 @@
fclassB.delete();
fA.delete();
fB.delete();
- FileUtil.deleteRecursively(dest);
+ FileUtils.deleteQuietly(dest);
}
/**
Deleted: trunk/src/test/java/fr/ifremer/isisfish/util/EvaluateHelperTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/util/EvaluateHelperTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/util/EvaluateHelperTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,175 +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.util;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import fr.ifremer.isisfish.AbstractIsisFishTest;
-import fr.ifremer.isisfish.equation.EmigrationEquation;
-import fr.ifremer.isisfish.equation.PopulationGrowth;
-import fr.ifremer.isisfish.equation.PopulationGrowthReverse;
-import fr.ifremer.isisfish.equation.PopulationReproductionEquation;
-
-/**
- * Test class for {@link EvaluatorHelper}.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class EvaluateHelperTest extends AbstractIsisFishTest {
-
- /**
- * Test #normalizeClassName().
- */
- @Test
- public void testNormalizeClassName() {
- Assert.assertEquals("Test", EvaluatorHelper.normalizeClassName("Test"));
- Assert.assertEquals("Te_t", EvaluatorHelper.normalizeClassName("Te/t"));
- Assert.assertEquals("org_test_Test", EvaluatorHelper
- .normalizeClassName("org.test.Test"));
- }
-
- /**
- * Test #check().
- */
- @Test
- public void testCheck() {
- String equationContent = "return 12.0;";
-
- int result = EvaluatorHelper.check(EmigrationEquation.class,
- equationContent, null);
- Assert.assertEquals(0, result);
- }
-
- /**
- * Test #evaluate().
- */
- @Test
- public void testEvaluate() {
- String equationContent = "return age * 2.0;";
-
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("age", 2.0);
- args.put("group", null);
- Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
- "TestEvaluate", PopulationGrowth.class, equationContent, args);
-
- Assert.assertNotNull(result);
- Assert.assertEquals("4.0", result.toString());
- }
-
- /**
- * Test #evaluate() but twice to check that previous
- * class don't stay in class loader.
- */
- @Test
- public void testDoubleContentEvaluate() {
-
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("length", 2.0);
- args.put("group", null);
-
- String equationContent = "return length * 2.0;";
- Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
- "TestDoubleContentEvaluate", PopulationGrowthReverse.class,
- equationContent, args);
- Assert.assertNotNull(result);
- Assert.assertEquals("4.0", result.toString());
-
- equationContent = "return length * 3.0;";
- result = EvaluatorHelper.evaluate("fr.isisfish.equation",
- "TestDoubleContentEvaluate", PopulationGrowthReverse.class,
- equationContent, args);
- Assert.assertNotNull(result);
- Assert.assertEquals("6.0", result.toString());
- }
-
- /**
- * Test que le repertoire des scripts en bien présent
- * dans le classpath de compilation.
- */
- @Test
- public void testEquationWithDatabaseContent() {
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("length", 2.0);
- args.put("group", null);
-
- String equationContent = "String name = scripts.ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP;";
- equationContent += "return length * 2.0;";
- Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
- "TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
- equationContent, args);
- Assert.assertNotNull(result);
- Assert.assertEquals("4.0", result.toString());
- }
-
- /**
- * Test that commons logging logger in present for use in equation.
- */
- @Test
- public void testEquationWithLogger() {
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("length", 2.0);
- args.put("group", null);
-
- String equationContent = "log.info(\"Test logger\");";
- equationContent += "return 1.0;";
- Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
- "TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
- equationContent, args);
- Assert.assertNotNull(result);
- Assert.assertEquals("1.0", result.toString());
- }
-
- /**
- * Test que le contenu du fichier java correspondant à l'equation est
- * corectement généré.
- * Notemment suite à l'utilsation de paranamer et aux retrait des
- * annotations.
- */
- @Test
- public void testGenerateContent() {
- Class clazz = PopulationReproductionEquation.class;
- Method method = clazz.getDeclaredMethods()[0];
- String content = EvaluatorHelper.generateContent("fr.ifremer.isisfish.equation",
- "Test", method, "return 42.0;");
-
- Assert.assertTrue(content.contains("fr.ifremer.isisfish.simulator.SimulationContext context"));
- Assert.assertTrue(content.contains("java.util.List<PopulationGroup> groups"));
- }
-}
Copied: trunk/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java (from rev 3968, branches/4.0.1/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java)
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java (rev 0)
+++ trunk/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,177 @@
+/*
+ * #%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.util;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.equation.EmigrationEquation;
+import fr.ifremer.isisfish.equation.PopulationGrowth;
+import fr.ifremer.isisfish.equation.PopulationGrowthReverse;
+import fr.ifremer.isisfish.equation.PopulationReproductionEquation;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.simulator.SimulationPreScript;
+
+/**
+ * Test class for {@link EvaluatorHelper}.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class EvaluatorHelperTest extends AbstractIsisFishTest {
+
+ /**
+ * Test #normalizeClassName().
+ */
+ @Test
+ public void testNormalizeClassName() {
+ Assert.assertEquals("Test", EvaluatorHelper.normalizeClassName("Test"));
+ Assert.assertEquals("Te_t", EvaluatorHelper.normalizeClassName("Te/t"));
+ Assert.assertEquals("org_test_Test", EvaluatorHelper
+ .normalizeClassName("org.test.Test"));
+ }
+
+ /**
+ * Test #check().
+ */
+ @Test
+ public void testCheck() {
+ String equationContent = "return 12.0;";
+
+ int result = EvaluatorHelper.check(EmigrationEquation.class,
+ equationContent, null);
+ Assert.assertEquals(0, result);
+ }
+
+ /**
+ * Test #evaluate().
+ */
+ @Test
+ public void testEvaluate() {
+ String equationContent = "return age * 2.0;";
+
+ Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
+ "TestEvaluate", PopulationGrowth.class, equationContent, /*context*/null, /*length*/2.0, /*group*/null);
+
+ Assert.assertNotNull(result);
+ Assert.assertEquals("4.0", result.toString());
+ }
+
+ /**
+ * Test #evaluate() but twice to check that previous
+ * class don't stay in class loader.
+ */
+ @Test
+ public void testDoubleContentEvaluate() {
+
+ Map<String, Object> args = new HashMap<String, Object>();
+ args.put("context", null);
+ args.put("length", 2.0);
+ args.put("group", null);
+
+ String equationContent = "return length * 2.0;";
+ Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
+ "TestDoubleContentEvaluate", PopulationGrowthReverse.class,
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
+ Assert.assertNotNull(result);
+ Assert.assertEquals("4.0", result.toString());
+
+ equationContent = "return length * 3.0;";
+ result = EvaluatorHelper.evaluate("fr.isisfish.equation",
+ "TestDoubleContentEvaluate", PopulationGrowthReverse.class,
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
+ Assert.assertNotNull(result);
+ Assert.assertEquals("6.0", result.toString());
+ }
+
+ /**
+ * Test que le repertoire des scripts en bien présent
+ * dans le classpath de compilation.
+ */
+ @Test
+ public void testEquationWithDatabaseContent() {
+
+ String equationContent = "String name = scripts.ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP;";
+ equationContent += "return length * 2.0;";
+ Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
+ "TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
+ Assert.assertNotNull(result);
+ Assert.assertEquals("4.0", result.toString());
+ }
+
+ /**
+ * Test that commons logging logger in present for use in equation.
+ */
+ @Test
+ public void testEquationWithLogger() {
+
+ String equationContent = "log.info(\"Test logger\");";
+ equationContent += "return 1.0;";
+ Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
+ "TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
+ Assert.assertNotNull(result);
+ Assert.assertEquals("1.0", result.toString());
+ }
+
+ /**
+ * Test que le contenu du fichier java correspondant à l'equation est
+ * corectement généré.
+ * Notemment suite à l'utilsation de paranamer et aux retrait des
+ * annotations.
+ */
+ @Test
+ public void testGenerateContent() {
+ Class clazz = PopulationReproductionEquation.class;
+ Method method = clazz.getDeclaredMethods()[0];
+ String content = EvaluatorHelper.generateContent("fr.ifremer.isisfish.equation",
+ "Test", method, "return 42.0;");
+
+ Assert.assertTrue(content.contains("fr.ifremer.isisfish.simulator.SimulationContext context"));
+ Assert.assertTrue(content.contains("java.util.List<PopulationGroup> groups"));
+ }
+
+ /**
+ * Test d'execution d'un prescript.
+ */
+ @Test
+ public void testPrescriptContent() {
+ String content = "if (context != null) {\n" +
+ " // test\n" +
+ "}\n";
+ EvaluatorHelper.evaluate("fr.isisfish.prescript",
+ "TestPrescript", SimulationPreScript.class, content, /*context*/SimulationContext.get(), /*db*/null);
+ }
+}
Modified: trunk/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2008 - 2010 Ifremer, Code Lutin
+ * Copyright (C) 2008 - 2013 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
@@ -34,9 +34,9 @@
import java.util.List;
import java.util.Map;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
import org.nuiton.util.Version;
import org.junit.After;
import org.junit.Assert;
@@ -74,7 +74,12 @@
/** Class logger */
private static Log log = LogFactory.getLog(VCSSVNTest.class);
- public static final File TMPDIR = getTestDirectory();
+ /**
+ * Run test out of target directory for SVN to not find parent .svn with not supported svn format.
+ *
+ * FIXME echatellier 20131127 : try to relocate into target and chroot svnkit tests
+ */
+ public static final File TMPDIR = new File("/tmp");
public static final String FILECONTENTTAG = "Version 3.1.0";
public static final String FILECONTENTTRUNK = "Version 3.2.0";
@@ -126,14 +131,14 @@
+ File.separator + "data").mkdirs();
new File(template, "scripts").mkdirs();
- FileUtil.writeString(new File(template, "scripts" + File.separator
+ FileUtils.writeStringToFile(new File(template, "scripts" + File.separator
+ "version.txt"), FILECONTENTTAG);
// creation du repo pour les tests
SVNRepositoryFactory.createLocalRepository(remoteRepo, false, true);
// ajout de source dans le repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://"
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://"
+ remoteRepo.getAbsolutePath());
SVNURL svnRoot = svnURL.appendPath("isis-fish-data", false);
SVNURL svnTrunk = svnRoot.appendPath("trunk", false);
@@ -166,16 +171,16 @@
public void tearDown() {
// un peu de nettoyage
if (template.exists()) {
- FileUtil.deleteRecursively(template);
+ FileUtils.deleteQuietly(template);
}
if (remoteRepo.exists()) {
- FileUtil.deleteRecursively(remoteRepo);
+ FileUtils.deleteQuietly(remoteRepo);
}
if (localRepo.exists()) {
- FileUtil.deleteRecursively(localRepo);
+ FileUtils.deleteQuietly(localRepo);
}
if (localRepoTrunk.exists()) {
- FileUtil.deleteRecursively(localRepoTrunk);
+ FileUtils.deleteQuietly(localRepoTrunk);
}
}
@@ -297,12 +302,12 @@
File version = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
Assert.assertTrue(version.exists());
- Assert.assertEquals(FILECONTENTTAG, FileUtil.readAsString(version));
+ Assert.assertEquals(FILECONTENTTAG, FileUtils.readFileToString(version));
// modification du fichier version.txt
- FileUtil.writeString(version, FILECONTENTTRUNK);
+ FileUtils.writeStringToFile(version, FILECONTENTTRUNK);
vcs.commit(null, "modif du fichier version");
- Assert.assertEquals(FILECONTENTTRUNK, FileUtil.readAsString(version));
+ Assert.assertEquals(FILECONTENTTRUNK, FileUtils.readFileToString(version));
// recuperation de DemoRegion
File demo = new File(vcs.getLocalRepository(), "regions"
@@ -317,13 +322,13 @@
// ajout d'un fichier sur le trunk avant passage sur le tag
File fileToAdd = new File(vcs.getLocalRepository(), "newfile.txt");
String lecontent = "Le nouveau fichier";
- FileUtil.writeString(fileToAdd, lecontent);
+ FileUtils.writeStringToFile(fileToAdd, lecontent);
vcs.add(Arrays.asList(fileToAdd), "ajout d'un fichier");
// test switchTag
vcs.setTag(new Version(3, 1, 0));
Assert.assertTrue(vcs.getTag().startsWith("/tags/3.1.0"));
- Assert.assertEquals(FILECONTENTTAG, FileUtil.readAsString(version));
+ Assert.assertEquals(FILECONTENTTAG, FileUtils.readFileToString(version));
Assert.assertTrue(demo.exists());
// recherche du status des fichiers
@@ -340,7 +345,7 @@
Assert.assertTrue(map.containsKey(newfileAdded));
// modif dans repo trunk de version pour qu'il y ait un conflit
- FileUtil.writeString(fileVersion, "Le nouveau content de version");
+ FileUtils.writeStringToFile(fileVersion, "Le nouveau content de version");
// update global du repo trunk
List<File> conflictFile = trunk.update(null, true);
@@ -351,7 +356,7 @@
Assert.assertTrue(conflictFile.contains(fileVersion));
File fileAdded = new File(trunk.getLocalRepository(), "newfile.txt");
- Assert.assertEquals(lecontent, FileUtil.readAsString(fileAdded));
+ Assert.assertEquals(lecontent, FileUtils.readFileToString(fileAdded));
Assert.assertFalse(fileDeleted.exists());
// recherche du status des fichiers en remote, il ne doit plus y avoir de diff
@@ -379,23 +384,28 @@
/**
* Test of add method, of class VCSSVN.
- * @throws VCSException
+ *
+ * @throws Exception
*/
@Test
- public void testAdd() throws VCSException {
+ public void testAdd() throws Exception {
// log
if (log.isInfoEnabled()) {
log.info("testAdd()");
}
- List<File> files = new ArrayList<File>();
- String msg = "";
-
// checkout a TAG
- vcs.checkout(new Version(3, 1, 0), false);
+ vcs.checkout(null, true);
- vcs.add(files, msg);
+ // now, make a modification, on LOCAL repo
+ File firstFile = new File(vcs.getLocalRepository() + File.separator
+ + "scripts" + File.separator + "version.txt");
+ FileUtils.writeStringToFile(firstFile, "Version 3.2.1");
+
+ List<File> files = Collections.singletonList(firstFile);
+
+ vcs.add(files, "test commit");
}
/**
@@ -429,10 +439,10 @@
/**
* Return all changelog between local file version and remote repository
* file version.
+ *
* @throws VCSException
* @throws IOException
* @throws SVNException
- *
*/
@Test
public void testGetChanglog() throws VCSException, IOException,
@@ -456,8 +466,8 @@
vcs.checkout(null, true);
// now, make a modification, on LOCAL repo
- FileUtil.writeString(firstFile, "version 3.2.1");
- FileUtil.writeString(secondFile, "name = test1");
+ FileUtils.writeStringToFile(firstFile, "version 3.2.1");
+ FileUtils.writeStringToFile(secondFile, "name = test1");
SVNClientManager svnManager = SVNClientManager.newInstance();
svnManager.getWCClient().doAdd(secondFile, // File path
true, // boolean force
@@ -498,12 +508,11 @@
vcs.checkout(null, true);
// now, make a modification, on LOCAL repo
- FileUtil.writeString(firstFile, "Version 3.2.1");
+ FileUtils.writeStringToFile(firstFile, "Version 3.2.1");
String result = vcs.getDiff(firstFile);
- // quelques tests sur la sortie, pas
- // d'égalité parfaite
+ // quelques tests sur la sortie, pas d'égalité parfaite
Assert.assertTrue(result.indexOf("version.txt") > 0);
Assert.assertTrue(result.indexOf("-Version 3.1.0") > 0);
Assert.assertTrue(result.indexOf("+Version 3.2.1") > 0);
@@ -591,7 +600,7 @@
vcs.checkout(null, true);
// now, make a modification, on REMOTE repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://"
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://"
+ remoteRepo.getAbsolutePath());
SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false)
.appendPath("trunk", false).appendPath("test", false);
@@ -634,7 +643,7 @@
vcs.checkout(null, true);
// now, make a modification, on REMOTE repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://"
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://"
+ remoteRepo.getAbsolutePath());
SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false)
.appendPath("trunk", false).appendPath("test", false);
@@ -689,7 +698,7 @@
vcs.checkout(null, true);
// now, make a modification, on REMOTE repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://"
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://"
+ remoteRepo.getAbsolutePath());
SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false)
.appendPath("trunk", false).appendPath("test", false);
@@ -792,7 +801,7 @@
vcs.checkout(null, false);
// now, make a modification, on REMOTE repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://"
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://"
+ remoteRepo.getAbsolutePath());
SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false)
.appendPath("trunk", false).appendPath("test", false);
@@ -821,7 +830,7 @@
vcs.checkout(null, false);
// now, make a modification, on REMOTE repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://"
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://"
+ remoteRepo.getAbsolutePath());
SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false)
.appendPath("trunk", false).appendPath("scripts", false);
@@ -855,7 +864,7 @@
// modif on local repo
File file = new File(vcs.getLocalRepository() + File.separator
+ "test.txt");
- FileUtil.writeString(file, "name = test1");
+ FileUtils.writeStringToFile(file, "name = test1");
SVNClientManager svnManager = SVNClientManager.newInstance();
svnManager.getWCClient().doAdd(file, // File path
true, // boolean force
@@ -929,7 +938,7 @@
// modif on local repo
File file = new File(vcs.getLocalRepository() + File.separator
+ "test.txt");
- FileUtil.writeString(file, "name = test1");
+ FileUtils.writeStringToFile(file, "name = test1");
SVNClientManager svnManager = SVNClientManager.newInstance();
svnManager.getWCClient().doAdd(file, // File path
true, // boolean force
@@ -963,7 +972,7 @@
vcs.checkout(null, false);
// now, make a modification, on REMOTE repo
- SVNURL svnURL = SVNURL.parseURIDecoded("file://" + remoteRepo.getAbsolutePath());
+ SVNURL svnURL = SVNURL.parseURIEncoded("file://" + remoteRepo.getAbsolutePath());
SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false)
.appendPath("trunk", false).appendPath("test", false);
SVNClientManager svnManager = SVNClientManager.newInstance();
@@ -1004,7 +1013,7 @@
// modif on remote repo
File file = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file, "aaaaaz");
+ FileUtils.writeStringToFile(file, "aaaaaz");
SVNClientManager svnManager = SVNClientManager.newInstance();
SVNCommitInfo rev = svnManager.getCommitClient().doCommit(
new File[] { file },// File[] paths,
@@ -1074,7 +1083,7 @@
// modif on remote repo
File file = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file, "aaaaaz");
+ FileUtils.writeStringToFile(file, "aaaaaz");
SVNClientManager svnManager = SVNClientManager.newInstance();
SVNCommitInfo rev = svnManager.getCommitClient().doCommit(
new File[] { file },// File[] paths,
@@ -1103,7 +1112,7 @@
// modify one file
File file2 = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file2, "oooooo");
+ FileUtils.writeStringToFile(file2, "oooooo");
// try to update...
List<File> filesInConflict = vcs.update(null, true);
@@ -1140,7 +1149,7 @@
// modif on remote repo on tag :)
File file = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file, "aaaaaz");
+ FileUtils.writeStringToFile(file, "aaaaaz");
SVNClientManager svnManager = SVNClientManager.newInstance();
SVNCommitInfo rev = svnManager.getCommitClient().doCommit(
new File[] { file },// File[] paths,
@@ -1161,7 +1170,7 @@
// modify one file
File file2 = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file2, "oooooo");
+ FileUtils.writeStringToFile(file2, "oooooo");
// try to update...
List<File> filesInConflict = vcs.setTag(new Version(3, 1, 0));
@@ -1169,7 +1178,7 @@
Assert.assertEquals(1, filesInConflict.size());
log.debug("Conflicts are : " + filesInConflict);
}
-
+
/**
* Test a checkFileStatus (witch is doing an update)
*
@@ -1198,7 +1207,7 @@
// modif on remote repo
File file = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file, "aaaaaz");
+ FileUtils.writeStringToFile(file, "aaaaaz");
SVNClientManager svnManager = SVNClientManager.newInstance();
SVNCommitInfo rev = svnManager.getCommitClient().doCommit(
new File[] { file },// File[] paths,
@@ -1227,7 +1236,7 @@
// modify one file
File file2 = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file2, "oooooo");
+ FileUtils.writeStringToFile(file2, "oooooo");
// try to update...
List<File> filesInConflict = vcs.checkFileStatus();
@@ -1240,7 +1249,7 @@
filesInConflict = vcs.checkFileStatus();
Assert.assertNull(filesInConflict);
}
-
+
/**
* Test file local status.
*
@@ -1258,7 +1267,7 @@
// log
if (log.isInfoEnabled()) {
- log.info("testGetLocalStatus()");
+ log.info("testGetLocalStatusModified()");
}
// chechout
@@ -1267,11 +1276,11 @@
// modif on remote repo
File file = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- FileUtil.writeString(file, "modified content");
+ FileUtils.writeStringToFile(file, "modified content");
Assert.assertEquals(Status.STATUS_MODIFIED, vcs.getLocalStatus(file));
}
-
+
/**
* Test file local status.
*
@@ -1289,7 +1298,7 @@
// log
if (log.isInfoEnabled()) {
- log.info("testGetLocalStatus()");
+ log.info("testGetLocalStatusMissing()");
}
// chechout
@@ -1298,7 +1307,7 @@
// modif on remote repo
File file = new File(vcs.getLocalRepository(), "scripts"
+ File.separator + "version.txt");
- file.delete();
+ Assert.assertTrue(file.delete());
Map<File, SVNStatus> statusFiles = vcs.getLocalStatus(file, true, SVNStatusType.STATUS_MISSING);
Assert.assertEquals(1, statusFiles.size());
Modified: trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_basic.properties
===================================================================
--- trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_basic.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_basic.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,7 +38,7 @@
rules=GraviteVPUE1,Cantonnement,
useOptimization=true
useStatistic=false
-exportDirectory=/home/chatellier/isis-export
+exportDirectory=/home/user/isis-export
useSimulationPlan=false
isisFishVersion=3.2.0.6
rule.1.parameter.endMonth=10
Modified: trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_plan.properties
===================================================================
--- trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_plan.properties 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/fr/ifremer/isisfish/simulator/parameters_plan.properties 2014-04-17 16:48:13 UTC (rev 3969)
@@ -38,7 +38,7 @@
rules=GraviteVPUE1,Cantonnement,
useOptimization=true
useStatistic=false
-exportDirectory=/home/chatellier/isis-export
+exportDirectory=/home/user/isis-export
useSimulationPlan=true
isisFishVersion=3.2.0.6
rule.1.parameter.endMonth=11
Copied: trunk/src/test/resources/mexico/expDesign.xsd (from rev 3968, branches/4.0.1/src/test/resources/mexico/expDesign.xsd)
===================================================================
(Binary files differ)
Modified: trunk/src/test/resources/mexico/mexicohelper_designplan.xml
===================================================================
--- trunk/src/test/resources/mexico/mexicohelper_designplan.xml 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/mexico/mexicohelper_designplan.xml 2014-04-17 16:48:13 UTC (rev 3969)
@@ -93,7 +93,7 @@
<fixed cardinality="0">
<range max="1.0" min="0.0"/>
<coefficient operator="-" value="0.1"/>
- <equation reference="45.0" variable="L1"/>
+ <equation reference="45.0" variable="Ktemp"/>
</fixed>
</domain>
</factor>
Modified: trunk/src/test/resources/mexico/mexicohelper_designplanV2.xml
===================================================================
--- trunk/src/test/resources/mexico/mexicohelper_designplanV2.xml 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/mexico/mexicohelper_designplanV2.xml 2014-04-17 16:48:13 UTC (rev 3969)
@@ -92,7 +92,7 @@
<factor name="factor 5 (EquationContinuous)" property="equationcontinuous" type="real" cardinality="0">
<target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength</target>
<domain>
- <fixed variable="L1">
+ <fixed variable="Ktemp">
<reference coefficient="0.1">45.0</reference>
</fixed>
</domain>
Copied: trunk/src/test/resources/mexico/mexicohelper_designplanV3.xml (from rev 3968, branches/4.0.1/src/test/resources/mexico/mexicohelper_designplanV3.xml)
===================================================================
(Binary files differ)
Modified: trunk/src/test/resources/mexico/mexicohelper_factorgroupdp.xml
===================================================================
--- trunk/src/test/resources/mexico/mexicohelper_factorgroupdp.xml 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/mexico/mexicohelper_factorgroupdp.xml 2014-04-17 16:48:13 UTC (rev 3969)
@@ -67,7 +67,7 @@
<factor name="factor 5 (EquationContinuous)" property="equationcontinuous" type="real" cardinality="0">
<target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength</target>
<domain>
- <fixed variable="L1">
+ <fixed variable="Ktemp">
<reference coefficient="0.1">45.0</reference>
</fixed>
</domain>
Deleted: trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.1.log.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.data.db
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.h2.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/BaseMotosICA/data/data.h2.db)
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/BaseMotosICA/data/data.index.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/DemoRegion/data/data.2.log.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/DemoRegion/data/data.data.db
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/DemoRegion/data/data.h2.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/DemoRegion/data/data.h2.db)
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/DemoRegion/data/data.index.db
===================================================================
(Binary files differ)
Modified: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.h2.db
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/1.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/1.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/2.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/2.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/3.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/3.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/4.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/4.t42.lob.db)
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/46.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/47.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/48.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/49.t43.lob.db
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/5.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/5.t42.lob.db)
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/50.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/51.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/52.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/53.t43.lob.db
===================================================================
(Binary files differ)
Deleted: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/54.t43.lob.db
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/6.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/6.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/7.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/7.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/8.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/8.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/9.t42.lob.db (from rev 3968, branches/4.0.1/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/9.t42.lob.db)
===================================================================
(Binary files differ)
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/DOptimal.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/DOptimal.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/DOptimal.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,369 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+import fr.ifremer.isisfish.util.Doc;
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.j2r.REngine;
+import org.nuiton.j2r.RException;
+import org.nuiton.j2r.types.RDataFrame;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * User: couteau
+ * Date: 14 janv. 2010
+ * Time: 11:58:09
+ */
+public class DOptimal extends AbstractSensitivityAnalysis {
+
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ @Doc("Order")
+ public int param_order=1;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return false;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ //extract the factors from the design plan
+ List<Factor> factors = plan.getFactors();
+ int factorsNb = factors.size();
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ engine.voidEval("library(AlgDesign)");
+
+ //Create a list of the factors under the form factor1=factor1,...
+ String factorsNames = "";
+
+ //Create a list of the factors under the form factor1,factor2,...
+ String factorNames = "";
+
+ //Create a list of the factors under the form factor1+factor2+...
+ String factorPlus="";
+
+ //create the factors vectors
+ for (Factor factor : factors) {
+ //The factor values vector
+ String factorName = factor.getName().replaceAll(" ", "");
+ factorsNames += factorName + "=" + factorName + ",";
+ factorNames += factorName + ",";
+ factorPlus += factorName + "+";
+
+ String vector = factorName + "<-c(";
+
+ Domain domain = factor.getDomain();
+
+ if (domain instanceof ContinuousDomain) {
+ //ContinuousDomain contDomain = (ContinuousDomain) domain;
+ int card = factor.getCardinality();
+ Double min = 0.0;
+ Double max = 1.0;
+
+ for (int i = 0; i < card; i++) {
+ //add the ith value
+ vector += (min + (i * (max - min) / (card - 1))) + ",";
+ }
+ } else {
+ int nbValues = ((DiscreteDomain) domain).getValuesCount();
+ for (int i = 0; i < nbValues; i++) {
+ vector += "as.integer(" + i + "),";
+ }
+ }
+
+ vector = vector.substring(0, vector.length() - 1);
+
+ vector += ")";
+
+ engine.voidEval(vector);
+
+
+ }
+
+ factorsNames = factorsNames.substring(0,factorsNames.length()-1);
+ factorNames = factorNames.substring(0,factorNames.length()-1);
+ factorPlus = factorPlus.substring(0,factorPlus.length()-1);
+
+
+ //X<-expand.grid(vector=???,weight=???)
+ String expandGrid = "expandgrid<-expand.grid(%s)";
+
+
+
+ String rCall = String.format(expandGrid,factorsNames);
+
+ engine.voidEval(rCall);
+
+ if (param_order ==1 ){
+ rCall = "isis.methodAnalyse<-optFederov(~(%s),data=expandgrid, " +
+ "approximate =FALSE, center=F, criterion = \"D\"," +
+ "nRepeats=10)";
+ } else {
+ rCall = "isis.methodAnalyse<-optFederov(~(%s)^"+param_order+",data=expandgrid, " +
+ "approximate =FALSE, center=F, criterion = \"D\"," +
+ "nRepeats=10)";
+ }
+
+ rCall = String.format(rCall,factorPlus);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ engine.voidEval("runif(1)");
+
+ engine.voidEval(rCall);
+
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse$design)");
+ RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan");
+ dataFrame.setVariable("expPlan");
+ int nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse$design)[1]");
+
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+ for (int j = 0; j < nbExperiments; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorsNb; i++) {
+ Factor factor = factors.get(i);
+ factor.setValueForIdentifier(dataFrame.get(i, j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+
+ String factorDistribution = "isis.factor.distribution<-data.frame(" +
+ "NomFacteur=c(%s)," +
+ "NomDistribution=c(%s)," +
+ "ParametreDistribution=c(%s))";
+
+ String distribution = "";
+ String parameters = "";
+
+ for (int i = 0; i < factorsNb; i++) {
+ Domain domain = factors.get(i).getDomain();
+ if (i != 0) {
+ distribution += ",";
+ parameters += ",";
+ }
+ if (domain instanceof ContinuousDomain){
+ //ContinuousDomain contDomain = (ContinuousDomain)domain;
+ distribution += "\"qunif\"";
+ parameters += "\"[0.0;1.0]\"";
+ } else {
+ DiscreteDomain discDomain = (DiscreteDomain)domain;
+ distribution += "\"discrete\"";
+ parameters+="\"[";
+ Map<Object, Object> values = discDomain.getValues();
+ int count=0;
+ Collection<Object> collecValues = values.values();
+ for (Object value:collecValues) {
+ if (count!=0){
+ parameters += ",";
+ }
+ parameters += StringUtils.replace(value.toString(), "\"", "\\\"") ;
+ count++;
+ }
+ parameters+="]\"";
+ }
+ }
+ engine.voidEval(String.format(factorDistribution, factorNames,
+ distribution, parameters));
+
+ engine.voidEval("call<-\"" + rCall + "\"");
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+ engine.voidEval("attr(isis.methodExp," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ engine.voidEval("isis.simule<-isis.methodAnalyse$design");
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (RException eee) {
+ throw new SensitivityException("Can't generate scenarios", eee);
+ }
+
+ return thisExperiment;
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ //Get back the factors number
+ int factorNumber = (Integer)engine.eval("dim(isis.methodAnalyse$design)[2]");
+
+ SimulationParameter param = simulationStorages.get(0).getParameter();
+ int sensitivityNumber = param.getSensitivityExport().size();
+
+ String firstStorageName = outputDirectory.getName().replaceAll("-", "");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String name = sensitivityExport.getExportFilename();
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule,"
+ + name + ")");
+
+ //Create the dataforaov data.frame
+ String dataFrame = "dataforaov<-data.frame(isis.methodAnalyse$design,"
+ + name + "=" + name + ")";
+ engine.voidEval(dataFrame);
+
+ //Call aov()
+ String aovCall = "aovresult<-aov(" + name + "~(";
+ for (int j = 0; j < factorNumber; j++) {
+ if (j < (factorNumber - 1)) {
+ aovCall = aovCall
+ + engine.eval("names(isis.methodAnalyse$design)[" + (j + 1) + "]")
+ + "+";
+ } else {
+ aovCall = aovCall
+ + engine.eval("names(isis.methodAnalyse$design)[" + (j + 1) + "]")
+ + ")";
+ if(param_order>1){
+ aovCall+="^" + param_order + ",data=dataforaov)";
+ }else{
+ aovCall+=",data=dataforaov)";
+ }
+ }
+ }
+ engine.voidEval(aovCall);
+
+ /*Export the results
+ *Export format is csv, data separated by ','
+ *Results Export name is sensitivityExportName_Results.csv
+ *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
+ */
+
+ //Compute Sum of Squares and Sensitivity indices
+ engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
+ engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
+ engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
+
+ //Create a data.frame to export sensitivity important results in one file.
+ engine.voidEval("exportsensitivity<-data.frame(" +
+ "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
+ "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
+ engine.voidEval("names(exportsensitivity)<-c(" +
+ "\"Sum Of Squares\"," +
+ "\"Sensitivity indices\")");
+ engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
+
+
+ //Set dataforaov names
+ engine.voidEval("resultsnames<-c(names(x$design),\"Result\")");
+ engine.voidEval("names(dataforaov)<-resultsnames");
+
+
+ /*Set the export directory
+ *Export directory is the first simulation export directory.
+ */
+ engine.setwd(outputDirectory);
+
+ //Save the results with the scenarios.
+ engine.voidEval("write.csv(dataforaov,\""
+ + param.getSensitivityExport().get(k)
+
+ .getExportFilename() + "_Results.csv\")");
+
+ //Save the sensitivity indices
+ engine.voidEval("write.csv(exportsensitivity,\""
+ + param.getSensitivityExport().get(k)
+ .getExportFilename()
+ + "_SensitivityIndices.csv\")");
+ //FIXME export through java to enable export when using Rserve (when distant Rserve).
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", firstStorageName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "\"call_method\"=\"" + aovCall + "\"," +
+ "\"analysis_result\"=list(aovresult,IndSensibilite))");
+
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of D optimal method method using R, needs" +
+ "AlgDesign package to work";
+ }
+}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/Fast.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/Fast.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/Fast.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,283 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import java.io.File;
+import java.util.List;
+
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+
+import org.nuiton.j2r.REngine;
+import org.nuiton.j2r.RException;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.util.Doc;
+
+import org.nuiton.j2r.types.RDataFrame;
+
+/**
+ * Implementation of Fast method using R.
+ *
+ * @author jcouteau
+ * @version $Revision$
+ *
+ * Last update : $Date$ By :
+ * $Author$
+ */
+public class Fast extends AbstractSensitivityAnalysis {
+
+ @Doc("an integer giving the sample size, i.e. the length of the " +
+ "discretization of the s-space (see Cukier et al.). (default=20)")
+ public int param_n = 20;
+
+ @Doc("an integer specifying the interference parameter, i.e. the number " +
+ "of harmonics to sum in the Fourier series decomposition (see Cukier et " +
+ "al.). (default=6)")
+ public int param_M = 6;
+
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return true;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ RDataFrame dataFrame;
+ int nbExperiments;
+ int factorNumber = plan.getFactors().size();
+ List<Factor> factors = plan.getFactors();
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+
+ // only run with continuous
+ checkAllFactorContinuous(factors);
+
+ String rInstruction = "isis.methodAnalyse<-fast99(" +
+ "model=NULL," +
+ "factors=%s, " +
+ "n=%s, " +
+ "M=%s, " +
+ "q = \"qunif\", " +
+ "q.arg=list(min=0,max=1))";
+ String rCall = String.format(rInstruction, factors.size(), param_n,
+ param_M);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ // Load sensitivity package into R (if package already loaded,
+ // nothing happens.
+ engine.voidEval("library(sensitivity)");
+
+ // Run sensitivity analysis
+ engine.voidEval(rCall);
+
+ // Creating the factors vector.
+ rInstruction = "factornames<-c(";
+ for (int i = 0; i < factorNumber; i++) {
+ String factorName = factors.get(i).getName();
+ if (i != (factorNumber - 1)) {
+ rInstruction += "\"" + factorName + "\",";
+ } else {
+ rInstruction += "\"" + factorName + "\"";
+ }
+ }
+
+ rInstruction += ")";
+
+ engine.voidEval(rInstruction);
+
+ // Get back experiment plan
+ dataFrame = (RDataFrame) engine.eval("isis.methodAnalyse$X");
+ dataFrame.setVariable("isis.methodAnalyse$X");
+
+ nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse$X)[1]");
+
+ engine.voidEval(getIsisFactorDistribution(factors));
+
+ engine.voidEval("call<-isis.methodAnalyse$call");
+
+
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+
+ engine.voidEval("attr(isis.methodExp,\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse$X)");
+
+ engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ // Setting up the scenarios.
+ for (int j = 0; j < nbExperiments; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = plan.getFactors().get(i);
+ factor.setValueForIdentifier(dataFrame.get(i,j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+ closeEngine(engine, outputDirectory);
+ } catch (RException eee) {
+ throw new SensitivityException("Can't generate scenarios", eee);
+ }
+ return thisExperiment;
+
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ // for export
+ engine.setwd(outputDirectory);
+
+ // Call R
+ // Load sensitivity package into R (if package already loaded,
+ // nothing happens.
+ engine.voidEval("library(sensitivity)");
+
+ SimulationParameter param = simulationStorages.get(0).getParameter();
+
+ int sensitivityNumber = param.getSensitivityExport().size();
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," +
+ sensitivityExport.getExportFilename() + ")");
+ }
+
+ //adding attribute to isis.Simule
+ engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ // Creates the R expression to import results in R
+ String name = param.getSensitivityExport().get(k)
+ .getExportFilename();
+
+ //Compute results
+ engine.voidEval("tell(isis.methodAnalyse,y=" + name + ")");
+
+ engine.voidEval("names(isis.methodAnalyse$V)<-isis.factor.distribution$NomFacteur");
+ engine.voidEval("names(isis.methodAnalyse$X)<-isis.factor.distribution$NomFacteur");
+ engine.voidEval("names(isis.methodAnalyse$D1)<-isis.factor.distribution$NomFacteur");
+ engine.voidEval("names(isis.methodAnalyse$Dt)<-isis.factor.distribution$NomFacteur");
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "call_method=\"tell(isis.methodAnalyse,y=" + name + ")" + "\"," +
+ "\"analysis_result\"=isis.methodAnalyse)");
+
+ //setting isis.methodAnalyse attributes
+ engine.voidEval("attr(" + exportMethodAnalyse + ",\"nomModel\")<-" +
+ "\"isis-fish-externe-R\")");
+
+ //Create the data.frame of scenarios and results for export purpose
+ engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X,isis.methodAnalyse$y)");
+
+ //Set working directory
+ engine.setwd(outputDirectory);
+
+ //Export V
+ engine.voidEval("write.csv(isis.methodAnalyse$V,\"" + name + "_V.csv\")");
+
+ //Export D1
+ engine.voidEval("write.csv(isis.methodAnalyse$D1,\"" + name + "_D1.csv\")");
+
+ //Export Dt
+ engine.voidEval("write.csv(isis.methodAnalyse$Dt,\"" + name + "_Dt.csv\")");
+ //Set dfresults names
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+ engine.voidEval("names(dfresults)<-isis.factor.distribution$NomFacteur");
+
+ //Export results
+ engine.voidEval("write.csv(dfresults,\"" + name +
+ "_Results.csv\")");
+ //FIXME export through java to enable export when using Rserve
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of FAST method using R (needs the sensitivity " +
+ "package to work)";
+ }
+
+}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/Morris.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/Morris.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/Morris.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,324 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.util.Doc;
+
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.j2r.REngine;
+import org.nuiton.j2r.RException;
+import org.nuiton.j2r.types.RDataFrame;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Implementation of Morris method using R.
+ *
+ * @author jcouteau
+ * @version $Revision$
+ *
+ * Last update : $Date$ By :
+ * $Author$
+ */
+public class Morris extends AbstractSensitivityAnalysis {
+
+ @Doc("Integer giving the number of repetitions of the design, i.e. the number of elementary effect computed per factor. (Default value : 4)")
+ public int param_r = 4;
+
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continus.
+ *
+ * @return {@code true} s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return false;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ RDataFrame dataFrame;
+ int nbExperiments;
+ int factorNumber = plan.getFactors().size();
+
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+
+ List<Factor> factors = plan.getFactors();
+
+ if (param_r == 0) {
+ param_r = 4;
+ }
+
+ checkAllUniformDistribution(factors);
+
+ // Creating the vectors.
+ String factorNames = "";
+ String levels = "";
+ String gridJump = "";
+ String binf = "";
+ String bsup = "";
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = factors.get(i);
+ if (i != 0) {
+ factorNames += ",";
+ levels += ",";
+ gridJump += ",";
+ binf += ",";
+ bsup += ",";
+ }
+
+ factorNames += "\"" + factor.getName() + "\"";
+
+ levels += factor.getCardinality();
+
+ gridJump += factor.getCardinality() / 2;
+
+ binf += 0;
+ bsup += 1;
+ }
+
+ String rInstruction = "isis.methodAnalyse<-morris(model=NULL,factors=c(%s),r=%s," +
+ "design=list(type=\"oat\",levels=c(%s),grid.jump=c(%s))," +
+ "binf=c(%s),bsup=c(%s))";
+
+ String rCall = String.format(rInstruction, factorNames, param_r,
+ levels, gridJump, binf, bsup);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ // Load sensitivity package into R (if package already loaded,
+ // nothing happens.
+ engine.voidEval("library(sensitivity)");
+
+ // Run sensitivity analysis
+ engine.voidEval(rCall);
+
+ // Creating the factors vector.
+ rInstruction = "factornames<-c(%s)";
+ rCall = String.format(rInstruction, factorNames);
+
+ engine.voidEval(rCall);
+
+ // Set output directory
+ engine.setwd(outputDirectory);
+
+ // Get back experiment plan
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse$X)");
+ dataFrame = (RDataFrame) engine.eval("expPlan");
+ dataFrame.setVariable("expPlan");
+
+ nbExperiments = (Integer)engine.eval("dim(expPlan)[1]");
+
+ String factorDistribution = "isis.factor.distribution<-data.frame(" +
+ "NomFacteur=c(%s)," +
+ "NomDistribution=c(%s)," +
+ "ParametreDistribution=c(%s))";
+
+ String distribution = "";
+ String parameters = "";
+
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = factors.get(i);
+ ContinuousDomain domain = (ContinuousDomain) factor.getDomain();
+ if (i != 0) {
+ distribution += ",";
+ parameters += ",";
+ }
+
+ Distribution r_distribution = domain.getDistribution();
+
+ distribution += "\""+ r_distribution.getInstruction() +"\"";
+ parameters += "\"[";
+
+ for (Map.Entry<String,Object> param:domain.getDistributionParameters().entrySet()){
+ parameters += param.getKey() + "=" + param.getValue() + ";";
+ }
+
+ parameters = StringUtils.removeEnd(parameters,";");
+ parameters += "]\"";
+ }
+ engine.voidEval(String.format(factorDistribution, factorNames,
+ distribution, parameters));
+
+ engine.voidEval("call<-isis.methodAnalyse$call");
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+ engine.voidEval("attr(isis.methodExp,\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+ engine.voidEval("isis.simule<-data.frame(expPlan)");
+ engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ // Setting up the scenarios.
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+ for (int j = 0; j < nbExperiments; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = factors.get(i);
+ factor.setValueForIdentifier(dataFrame.get(i, j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (RException eee) {
+ throw new SensitivityException("Can't generate scenarios", eee);
+ }
+
+ return thisExperiment;
+
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ // Call R
+ // Load sensitivity package into R (if package already loaded,
+ // nothing happens.
+ engine.voidEval("library(sensitivity)");
+
+ //Set the working directory (for exports)
+ engine.setwd(outputDirectory);
+
+ SimulationParameter param = simulationStorages.get(0)
+ .getParameter();
+ int sensitivityNumber = param.getSensitivityExport().size();
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," +
+ sensitivityExport.getExportFilename() + ")");
+ }
+
+ //adding attribute to isis.Simule
+ engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ // Creates the R expression to import results in R
+ String name = param.getSensitivityExport().get(k)
+ .getExportFilename();
+
+ //Compute results
+ engine.voidEval("tell(isis.methodAnalyse,y=" + name + ")");
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ //"\"isis.factors\"=isis.factors," +
+ //"\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "\"call_method\"=\"tell(isis.methodAnalyse,y=" + name + ")" + "\"," +
+ "\"analysis_result\"=isis.methodAnalyse)");
+
+ //setting isis.methodAnalyse attributes
+ engine.voidEval("attr(" + exportMethodAnalyse + ",\"nomModel\")<-" +
+ "\"isis-fish-externe-R\"");
+
+ // Get back the sensitivity results, mu, mu star and sigma.
+ engine.voidEval("mu<-apply(isis.methodAnalyse$ee, 2, mean)");
+ engine.voidEval("mu.star <- apply(isis.methodAnalyse$ee, 2, function(a) mean(abs(a)))");
+ engine.voidEval("sigma <- apply(isis.methodAnalyse$ee, 2, sd)");
+
+ //Create the data.frame of sensitivity indices for export purpose
+ engine.voidEval("df<-data.frame(mu,mu.star,sigma)");
+ engine.voidEval("row.names(df)<-isis.factor.distribution$NomFacteur");
+
+ //Create the data.frame of scenarios and results for export purpose
+ engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X," + name + ")");
+
+ //Set dfresults names
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+ engine.voidEval("names(dfresults)<-resultsnames");
+
+ //Export sensitivity indices
+ engine.voidEval("write.csv(df," +
+ "\"" + name + "_SensitivityIndices.csv\")");
+
+ //Export results
+ engine.voidEval("write.csv(dfresults," +
+ "\"" + name + "_Results.csv\")");
+ //FIXME export through java to enable export when using Rserve
+
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of Morris method using R (needs the sensitivity" +
+ " package to work)";
+ }
+
+}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,337 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import java.io.File;
+import java.util.List;
+
+import org.nuiton.j2r.REngine;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+import fr.ifremer.isisfish.util.Doc;
+
+import org.nuiton.j2r.types.RDataFrame;
+
+/**
+ * Implementation of Optimum Latin Hypercube method using R.
+ *
+ * @author jcouteau
+ * @version $Revision$
+ */
+public class OptimumLHS extends AbstractSensitivityAnalysis {
+
+ @Doc("Number of simulations (default=10)")
+ public int param_simulationNumber = 10;
+ @Doc("The maximum number of times the Columnwise Pairwise algorithm is applied to all the columns(default=2).")
+ public int param_MaxSweeps = 2;
+ @Doc("The optimal stopping criterion (between 0 and 1) (default=0.1).")
+ public double param_eps = 0.1;
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return true;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ int factorNumber = plan.getFactors().size();
+ List<Factor> factors = plan.getFactors();
+ RDataFrame dataFrame;
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+
+ //Test all factors, if one is discrete, return null
+ checkAllFactorContinuous(factors);
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ //Load the lhs library
+ engine.voidEval("library(lhs)");
+
+ String rInstruction = "isis.methodAnalyse<-optimumLHS(n=%s,k=%s,maxSweeps=%s,eps=%s)";
+
+ String rCall = String.format(rInstruction, param_simulationNumber,
+ factorNumber, param_MaxSweeps, param_eps);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ //Create the scenarios
+ engine.voidEval(rCall);
+
+ // Get back experiment plan
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)");
+ dataFrame = (RDataFrame)engine.eval("expPlan");
+ dataFrame.setVariable("expPlan");
+
+ // Setting up the scenarios.
+ for (int j = 0; j < param_simulationNumber; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = plan.getFactors().get(i);
+ factor.setValueForIdentifier(dataFrame.get(i, j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+ engine.voidEval(getIsisFactorDistribution(factors));
+
+ engine.voidEval("call<-" + "\"isis.methodAnalyse<-optimumLHS("
+ + "n=" + param_simulationNumber
+ + ",k=" + factorNumber
+ + ",maxSweeps=" + param_MaxSweeps
+ + ",eps=" + param_eps + ")\"");
+
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+
+ engine.voidEval("attr(isis.methodExp," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse)");
+
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ String data = "data<-data.frame(";
+
+ //Create the factors vectors and the dataFrame instruction
+ for (int j = 0; j < factors.size(); j++) {
+ //The factor values vector
+ String vector;
+ //Get back the factor
+ Scenario scenario = thisExperimentScenarios.get(0);
+ Factor factor = scenario.getFactors().get(j);
+ String factorName = factor.getName().replaceAll(" ", "");
+
+ vector = factorName + "<-c(";
+ for (int i = 0; i < param_simulationNumber; i++) {
+ //Get back the displayed value the factor
+ Scenario tempScenario = thisExperimentScenarios.get(i);
+ Factor tempFactor = tempScenario.getFactors().get(j);
+ Object value = tempFactor.getDisplayedValue();
+
+ if (i < (param_simulationNumber - 1)) {
+ vector = vector + value + ",";
+ } else {
+ vector += value;
+ }
+
+ }
+ vector += ")";
+ engine.voidEval(vector);
+
+ if (j < factors.size() - 1) {
+ data += factorName + "=factor(" + factorName + "),";
+ } else {
+ data += factorName + "=factor(" + factorName + "))";
+ }
+ }
+ engine.voidEval(data);
+
+ // Creating the factors vector.
+ rInstruction = "factornames<-c(";
+ for (int i = 0; i < factorNumber; i++) {
+ if (i != (factorNumber - 1)) {
+ rInstruction = rInstruction + "\""
+ + factors.get(i).getName() + "\",";
+ } else {
+ rInstruction = rInstruction + "\""
+ + factors.get(i).getName() + "\"";
+ }
+ }
+
+ rInstruction += ")";
+
+ engine.voidEval(rInstruction);
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't generate scenarios", e);
+ }
+
+ return thisExperiment;
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ //The first storage to get the name and parameters all along the method
+ SimulationStorage storage = simulationStorages.get(0);
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ engine.voidEval("factors<-data.frame(isis.methodAnalyse)");
+ engine.voidEval("names(factors)<-isis.factor.distribution$NomFacteur");
+
+ //Get back the factors number
+ int factorNumber = (Integer) engine.eval("length(factors[1,])");
+ //Get back the simulation number
+ param_simulationNumber = (Integer) (engine.eval("length(factors[,1])"));
+
+ SimulationParameter param = storage.getParameter();
+ int sensitivityNumber = param.getSensitivityExport().size();
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," +
+ sensitivityExport.getExportFilename() + ")");
+ }
+
+ //adding attribute to isis.Simule
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ // Creates the R expression to import results in R
+ SensitivityExport export = param.getSensitivityExport().get(k);
+ String name = export.getExportFilename();
+
+ //Create the dataforaov data.frame
+ String dataframe = "dataforaov<-data.frame(factors," +
+ name + "=" + name + ")";
+ engine.voidEval(dataframe);
+
+ //Call aov()
+ String aovCall = "aovresult<-aov(" + name + "~";
+ for (int j = 0; j < factorNumber; j++) {
+
+ String factorName = (String) engine.eval("names(factors)[" + (j + 1) + "]");
+ factorName = factorName.replaceAll(" ", ".");
+
+ if (j < (factorNumber - 1)) {
+ aovCall += factorName +
+ "+";
+ } else {
+ aovCall += factorName + ",data=dataforaov)";
+ }
+ }
+ engine.voidEval(aovCall);
+
+ /*Export the results
+ *Export format is csv, data separated by ','
+ *Results Export name is sensitivityExportName_Results.csv
+ *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
+ */
+
+ //Compute Sum of Squares and Sensitivity indices
+ engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
+ engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
+ engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
+
+ //Create a data.frame to export sensitivity important results in one file.
+ engine.voidEval("exportsensitivity<-data.frame(" +
+ "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
+ "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
+ engine.voidEval("names(exportsensitivity)<-c(" +
+ "\"Sum Of Squares\"," +
+ "\"Sensitivity indices\")");
+ engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
+
+
+ //Set dataforaov names
+ engine.voidEval("names(dataforaov)<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+
+ /*Set the export directory
+ *Export directory is the first simulation export directory.
+ */
+ engine.setwd(outputDirectory);
+
+ //Save the results with the scenarios.
+ engine.voidEval("write.csv(dataforaov,\"" +
+ name + "_Results.csv\")");
+
+ //Save the sensitivity indices
+ engine.voidEval("write.csv(exportsensitivity,\"" +
+ name + "_SensitivityIndices.csv\")");
+ //FIXME export through java to enable export when using Rserve (when distant Rserve).
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "call_method=\"" + aovCall + "\""+
+ ",\"analysis_result\"=list(aovresult,IndSensibilite))");
+
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of Random Latin Hypercube method method " +
+ "using R (needs 'lhs' package to work)";
+ }
+
+}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,330 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import java.io.File;
+import java.lang.String;
+import java.util.List;
+
+import fr.ifremer.isisfish.export.SensitivityExport;
+import org.nuiton.j2r.REngine;
+import org.nuiton.j2r.types.RDataFrame;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+import fr.ifremer.isisfish.util.Doc;
+
+/**
+ * Implementation of Random Latin Hypercube method using R.
+ *
+ * @author jcouteau
+ * @version $Revision$
+ */
+public class RandomLHS extends AbstractSensitivityAnalysis {
+
+ @Doc("Simulation number (default=10)")
+ public int param_simulationNumber = 10;
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return true;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ int factorNumber = plan.getFactors().size();
+ RDataFrame dataFrame; //The dataframe to get back the scenarios from R
+ SensitivityScenarios thisExperiment = new SensitivityScenarios(); //The experiment we will build
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); //The list of scenarios
+ List<Factor> factors = plan.getFactors(); //The factors
+
+ checkAllFactorContinuous(factors);
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ //Load the lhs library
+ engine.voidEval("library(lhs)");
+
+ //Create the scenarios
+ String rInstruction = "isis.methodAnalyse<-randomLHS(%s,%s)";
+ String rCall = String.format(rInstruction, param_simulationNumber,
+ factorNumber);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ engine.voidEval(rCall);
+
+ // Get back experiment plan
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)");
+ dataFrame = (RDataFrame)engine.eval("expPlan");
+ dataFrame.setVariable("expPlan");
+
+ // Setting up the scenarios.
+ for (int j = 0; j < param_simulationNumber; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = plan.getFactors().get(i); //The factor we are setting
+ factor.setValueForIdentifier(dataFrame.get(i,j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+ engine.voidEval(getIsisFactorDistribution(factors));
+
+ engine.voidEval("call<-" + "\"isis.methodAnalyse<-randomLHS("
+ + param_simulationNumber + "," + factorNumber + ")\"");
+
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+
+ engine.voidEval("attr(isis.methodExp," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse)");
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ String data = "data<-data.frame(";
+
+ //Create the factors vectors and the dataFrame instruction
+ for (int j = 0; j < factors.size(); j++) {
+ Scenario firstScenario = thisExperimentScenarios.get(0);
+ Factor factor = firstScenario.getFactors().get(j);
+ String factorName = factor.getName().replaceAll(" ", "");
+
+ //the vector of the factor values
+ //read all the values one by one from the already created
+ //scenarios.
+ String vector = factorName + "<-c(";
+ for (int i = 0; i < param_simulationNumber; i++) {
+ Scenario scenario = thisExperimentScenarios.get(i);
+ List<Factor> factorList = scenario.getFactors();
+ Factor factor1 = factorList.get(j);
+ if (i < (param_simulationNumber - 1)) {
+ vector += factor1.getDisplayedValue() + ",";
+ } else {
+ vector += factor1.getDisplayedValue();
+ }
+
+ }
+ vector = vector + ")";
+ engine.voidEval(vector);
+
+ //add factor1=factor(factor1) for each factor...
+ if (j < factors.size() - 1) {
+ data += factorName + "=factor(" + factorName + "),";
+ } else {
+ data += factorName + "=factor(" + factorName + "))";
+ }
+
+ }
+ engine.voidEval(data);
+
+ // Creating the factors vector.
+ rInstruction = "factornames<-c(";
+ for (int i = 0; i < factorNumber; i++) {
+ if (i != (factorNumber - 1)) {
+ rInstruction = rInstruction + "\""
+ + factors.get(i).getName() + "\",";
+ } else {
+ rInstruction = rInstruction + "\""
+ + factors.get(i).getName() + "\"";
+ }
+ }
+ rInstruction += ")";
+ engine.voidEval(rInstruction);
+
+ // Clean RData
+ for (Factor factor : factors) {
+ String factorName = factor.getName().replaceAll(" ", "");
+ engine.remove(factorName);
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't generate scenarios", e);
+ }
+
+ return thisExperiment;
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ SimulationStorage simulationStorage1 = simulationStorages.get(0);
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
+ SimulationParameter param = simulationStorage1.getParameter();
+ int sensitivityNumber = param.getSensitivityExport().size();
+ //List<SensitivityExport> export = param.getSensitivityExport();
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ engine.voidEval("factors<-data.frame(isis.methodAnalyse)");
+
+ //Get back the factors number
+ int factorNumber = (Integer) engine.eval("length(factors)");
+
+ //Get back the simulation number
+ param_simulationNumber = (Integer) (engine.eval("length(factors[,1])"));
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," +
+ sensitivityExport.getExportFilename() + ")");
+ }
+
+ //adding attribute to isis.Simule
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ // Creates the R expression to import results in R
+ String name = param.getSensitivityExport().get(k)
+ .getExportFilename();
+
+ //Create the dataforaov data.frame
+ String dataframe = "dataforaov<-data.frame(factors," + name
+ + "=" + name + ")";
+ engine.voidEval(dataframe);
+
+ //Call aov()
+ String aovCall = "aovresult<-aov(" + name + "~";
+ for (int j = 0; j < factorNumber; j++) {
+
+ if (j < (factorNumber - 1)) {
+ aovCall += engine.eval("names(factors)[" + (j + 1) + "]")
+ + "+";
+ } else {
+ aovCall += engine.eval("names(factors)[" + (j + 1) + "]")
+ + ",data=dataforaov)";
+ }
+ }
+ engine.voidEval(aovCall);
+
+ /*Export the results
+ *Export format is csv, data separated by ','
+ *Results Export name is sensitivityExportName_Results.csv
+ *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
+ */
+
+ //Compute Sum of Squares and Sensitivity indices
+ engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
+ engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
+ engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
+
+ //Create a data.frame to export sensitivity important results in one file.
+ engine.voidEval("exportsensitivity<-data.frame(" +
+ "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
+ "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
+ engine.voidEval("names(exportsensitivity)<-c(" +
+ "\"Sum Of Squares\"," +
+ "\"Sensitivity indices\")");
+ engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
+
+
+ //Set dataforaov names
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+ engine.voidEval("names(dataforaov)<-resultsnames");
+
+ /*Set the export directory
+ *Export directory is the first simulation export directory.
+ */
+ engine.setwd(outputDirectory);
+
+ //Save the results with the scenarios.
+ engine.voidEval("write.csv(dataforaov,\"" +
+ param.getSensitivityExport().get(k).getExportFilename() +
+ "_Results.csv\")");
+
+ //Save the sensitivity indices
+ engine.voidEval("write.csv(exportsensitivity,\"" +
+ param.getSensitivityExport().get(k).getExportFilename() +
+ "_SensitivityIndices.csv\")");
+ //FIXME export through java to enable export when using Rserve (when distant Rserve).
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "call_method=\"" + aovCall + "\"," +
+ "\"analysis_result\"=list(aovresult,IndSensibilite))");
+
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of Random Latin Hypercube method method using" +
+ " R needs the 'lhs' package to work)";
+ }
+
+}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,344 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+import fr.ifremer.isisfish.util.Doc;
+
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.j2r.REngine;
+import org.nuiton.j2r.RException;
+import org.nuiton.j2r.types.RDataFrame;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * User: couteau
+ * Date: 6 janv. 2010
+ * Time: 14:31:09
+ */
+public class RegularExpandGrid extends AbstractSensitivityAnalysis {
+
+ @Doc("Interaction order")
+ public int param_order = 2;
+
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return false;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ //extract the factors from the design plan
+ List<Factor> factors = plan.getFactors();
+ int factorsNb = factors.size();
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ //Get Isis R session
+ engine.loadRData(outputDirectory.getParentFile(),
+ outputDirectory.getName());
+
+ //Create a list of the factors under the form factor1=factor1,...
+ String factorsNames = "";
+
+ //Create a list of the factors under the form factor1,factor2,...
+ String factorNames = "";
+
+ //create the factors vectors
+ for (Factor factor : factors) {
+ //The factor values vector
+ String factorName = factor.getName().replaceAll(" ", "");
+ factorsNames += factorName + "=" + factorName + ",";
+ factorNames += factorName + ",";
+ String vector = factorName + "<-c(";
+
+ Domain domain = factor.getDomain();
+
+ if (domain instanceof ContinuousDomain) {
+ //ContinuousDomain contDomain = (ContinuousDomain) domain;
+ int card = factor.getCardinality();
+ Double min = 0.0;
+ Double max = 1.0;
+
+ for (int i = 0; i < card; i++) {
+ //add the ith value
+ vector += (min + (i * (max - min) / (card - 1))) + ",";
+ }
+ }
+
+ if (domain instanceof DiscreteDomain) {
+ int nbValues = ((DiscreteDomain) domain).getValuesCount();
+ for (int i = 0; i < nbValues; i++) {
+ vector += "as.integer(" + i + "),";
+ }
+ }
+
+ vector = vector.substring(0, vector.length() - 1);
+
+ vector += ")";
+
+ engine.voidEval(vector);
+
+
+ }
+
+ factorsNames = factorsNames.substring(0,factorsNames.length()-1);
+ factorNames = factorNames.substring(0,factorNames.length()-1);
+
+
+ //X<-expand.grid(vector=???,weight=???)
+ String expandGrid = "isis.methodAnalyse<-expand.grid(%s)";
+
+ String rCall = String.format(expandGrid,factorsNames);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ engine.voidEval(rCall);
+
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)");
+ RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan");
+ dataFrame.setVariable("expPlan");
+ int nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse)[1]");
+
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+ for (int j = 0; j < nbExperiments; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorsNb; i++) {
+ Factor factor = factors.get(i);
+ factor.setValueForIdentifier(dataFrame.get(i, j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+
+ String factorDistribution = "isis.factor.distribution<-data.frame(" +
+ "NomFacteur=c(%s)," +
+ "NomDistribution=c(%s)," +
+ "ParametreDistribution=c(%s))";
+
+ String distribution = "";
+ String parameters = "";
+
+ for (int i = 0; i < factorsNb; i++) {
+ Domain domain = factors.get(i).getDomain();
+ if (i != 0) {
+ distribution += ",";
+ parameters += ",";
+ }
+ if (domain instanceof ContinuousDomain){
+ //ContinuousDomain contDomain = (ContinuousDomain)domain;
+ distribution += "\"qunif\"";
+ parameters += "\"[0.0;1.0]\"";
+ } else {
+ DiscreteDomain discDomain = (DiscreteDomain)domain;
+ distribution += "\"discrete\"";
+ parameters+="\"[";
+ Map<Object, Object> values = discDomain.getValues();
+ int count=0;
+ Collection<Object> collecValues = values.values();
+ for (Object value:collecValues){
+ if (count!=0){
+ parameters += ",";
+ }
+ parameters += StringUtils.replace(value.toString(), "\"", "\\\"") ;
+ count++;
+ }
+ parameters+="]\"";
+ }
+ }
+ engine.voidEval(String.format(factorDistribution, factorNames,
+ distribution, parameters));
+
+ engine.voidEval("call<-\"" +
+ String.format(expandGrid,factorsNames) + "\"");
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+ engine.voidEval("attr(isis.methodExp," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ engine.voidEval("isis.simule<-isis.methodAnalyse");
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (RException eee) {
+ throw new SensitivityException("Can't generate scenarios", eee);
+ }
+
+ return thisExperiment;
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ //Get back the factors number
+ int factorNumber = (Integer)engine.eval("dim(isis.methodAnalyse)[2]");
+
+ SimulationParameter param = simulationStorages.get(0).getParameter();
+ int sensitivityNumber = param.getSensitivityExport().size();
+
+ String firstStorageName = outputDirectory.getName().replaceAll("-", "");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String name = sensitivityExport.getExportFilename();
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule,"
+ + name + ")");
+
+ //Create the dataforaov data.frame
+ String dataFrame = "dataforaov<-data.frame(isis.methodAnalyse,"
+ + name + "=" + name + ")";
+ engine.voidEval(dataFrame);
+
+ //Call aov()
+ String aovCall = "aovresult<-aov(" + name + "~(";
+ for (int j = 0; j < factorNumber; j++) {
+ if (j < (factorNumber - 1)) {
+ aovCall = aovCall
+ + engine.eval("names(isis.methodAnalyse)[" + (j + 1) + "]")
+ + "+";
+ } else {
+ aovCall = aovCall
+ + engine.eval("names(isis.methodAnalyse)[" + (j + 1) + "]")
+ + ")";
+ if(param_order>1){
+ aovCall+="^" + param_order + ",data=dataforaov)";
+ }else{
+ aovCall+=",data=dataforaov)";
+ }
+ }
+ }
+ engine.voidEval(aovCall);
+
+ /*Export the results
+ *Export format is csv, data separated by ','
+ *Results Export name is sensitivityExportName_Results.csv
+ *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
+ */
+
+ //Compute Sum of Squares and Sensitivity indices
+ engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
+ engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
+ engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
+
+ //Create a data.frame to export sensitivity important results in one file.
+ engine.voidEval("exportsensitivity<-data.frame(" +
+ "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
+ "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
+ engine.voidEval("names(exportsensitivity)<-c(" +
+ "\"Sum Of Squares\"," +
+ "\"Sensitivity indices\")");
+ engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
+
+ /*Set the export directory
+ *Export directory is the first simulation export directory.
+ */
+ engine.setwd(outputDirectory);
+
+ //Save the results with the scenarios.
+ engine.voidEval("write.csv(dataforaov,\""
+ + param.getSensitivityExport().get(k)
+
+ .getExportFilename() + "_Results.csv\")");
+
+ //Save the sensitivity indices
+ engine.voidEval("write.csv(exportsensitivity,\""
+ + param.getSensitivityExport().get(k)
+ .getExportFilename()
+ + "_SensitivityIndices.csv\")");
+ //FIXME export through java to enable export when using Rserve (when distant Rserve).
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", firstStorageName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "\"call_method\"=\"" + aovCall + "\"," +
+ "\"analysis_result\"=list(aovresult,IndSensibilite))");
+
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of Expand Grid method using R";
+ }
+}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,343 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import java.io.File;
+import java.util.List;
+
+import fr.ifremer.isisfish.export.SensitivityExport;
+
+import org.nuiton.j2r.REngine;
+import org.nuiton.j2r.RException;
+import org.nuiton.j2r.types.RDataFrame;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+import fr.ifremer.isisfish.util.Doc;
+
+public class RegularFractions extends AbstractSensitivityAnalysis {
+
+ @Doc("the path of the directory where the R function is stored (do not indicate the RegularFractions.R file name)")
+ public String param_pathToFunction = "";
+
+ @Doc("unique prime number of levels of all input and unit factors")
+ public int param_p = 2;
+
+ @Doc("number of unit factors (so that there are N=p^r units)")
+ public int param_r = 2;
+
+ @Doc("resolution of the fraction")
+ public int param_resolution = 2;
+
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return true;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ RDataFrame dataFrame;
+ int factorNumber = plan.getFactors().size();
+ List<Factor> factors = plan.getFactors();
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+
+ String factorNames = "";
+
+ //Test all factors, if one is discrete, return null
+ checkAllFactorContinuous(factors);
+
+ //Create a string with all factors names
+ for (int i = 0; i < factorNumber; i++) {
+ if (i != 0) {
+ factorNames += ",";
+ }
+
+ factorNames += "\"" + factors.get(i).getName() + "\"";
+ }
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ //Clear session
+ engine.clearSession();
+
+ //Get Isis R session
+ engine.loadRData(outputDirectory.getParentFile(),
+ outputDirectory.getName());
+
+ //Set the working directory (to import the R function)
+ engine.setwd(new File(param_pathToFunction));
+
+ //Import the function
+ engine.voidEval("source(\"regularfractions.R\")");
+
+ //Create the instruction
+ String rInstruction = "isis.methodAnalyse<-regular.fraction(%s,%s,%s,%s)";
+ String rCall = String.format(rInstruction, factors.size(), param_p,
+ param_r, param_resolution);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ // Run function
+ engine.voidEval(rCall);
+
+ // Run function
+ engine.voidEval("call<-\"" + rCall + "\"");
+
+ // Creating the factors vector.
+ rInstruction = "factornames<-c(%s)";
+ rCall = String.format(rInstruction, factorNames);
+
+ engine.voidEval(rCall);
+
+
+ // Get back experiment plan
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse[[1]])");
+ dataFrame = (RDataFrame)engine.eval("expPlan");
+ dataFrame.setVariable("expPlan");
+
+ //Get back the simulation number
+ int simulationNumber = (Integer) engine.eval("length(isis.methodAnalyse[[1]][,1])");
+
+ // Setting up the scenarios.
+ for (int j = 0; j < simulationNumber; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factors.size(); i++) {
+ Factor factor = plan.getFactors().get(i);
+ factor.setValueForIdentifier(dataFrame.get(i,j));
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ }
+
+ String dataframe = "data<-data.frame(";
+
+ //Create the factors vectors and the dataframe instruction
+ for (int j = 0; j < factorNumber; j++) {
+ Factor factor = factors.get(j);
+ String factorName = factor.getName().replaceAll(" ", "");
+
+ String vector = factorName + "<-c(";
+ for (int i = 0; i < simulationNumber; i++) {
+ Scenario scenario = thisExperimentScenarios.get(i);
+ List<Factor> newFactors = scenario.getFactors();
+ Factor factor1 = newFactors.get(j);
+
+ if (i < (simulationNumber - 1)) {
+ vector += factor1.getDisplayedValue() + ",";
+ } else {
+ vector += factor1.getDisplayedValue();
+ }
+
+ }
+ vector = vector + ")";
+ engine.voidEval(vector);
+
+ if (j < factorNumber - 1) {
+ dataframe += factorName + "=factor(" + factorName + "),";
+ } else {
+ dataframe += factorName + "=factor(" + factorName + "))";
+ }
+
+ }
+ engine.voidEval(dataframe);
+
+ engine.voidEval(getIsisFactorDistribution(factors));
+
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+
+ engine.voidEval("attr(isis.methodExp," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ //Create isis.Simule
+ engine.voidEval("isis.simule<-data.frame(data)");
+
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (RException eee) {
+ throw new SensitivityException("Can't generate scenarios", eee);
+ }
+
+ return thisExperiment;
+
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ SimulationStorage firstStorage = simulationStorages.get(0);
+ SimulationParameter param = firstStorage.getParameter();
+ List<SensitivityExport> exports = param.getSensitivityExport();
+ int sensitivityNumber = exports.size();
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ //Get back the factors number
+ int factorNumber = (Integer) engine.eval("dim(isis.simule)[2]");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," +
+ sensitivityExport.getExportFilename() + ")");
+ }
+
+ //adding attribute to isis.Simule
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ for (SensitivityExport export : exports) {
+
+ String name = export.getExportFilename();
+
+ //Create the dataforaov data.frame
+ String dataFrame = "dataforaov<-data.frame(isis.simule," +
+ name + "=" + name + ")";
+ engine.voidEval(dataFrame);
+
+ //Call aov()
+ String aovCall = "aovresult<-aov(" + name + "~(";
+ for (int j = 0; j < factorNumber; j++) {
+
+ if (j < (factorNumber - 1)) {
+ aovCall = aovCall
+ + engine.eval("names(isis.simule)[" + (j + 1) + "]")
+ + "+";
+ } else {
+ aovCall = aovCall
+ + engine.eval("names(isis.simule)[" + (j + 1) + "]")
+ + ")";
+ if (param_resolution <= 4) {
+ aovCall += ",data=dataforaov)";
+ } else {
+ aovCall += "^2,data=dataforaov)";
+ }
+ }
+ }
+ engine.voidEval(aovCall);
+
+ /*Export the results
+ *Export format is csv, data separated by ','
+ *Results Export name is sensitivityExportName_Results.csv
+ *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
+ */
+
+ //Compute Sum of Squares and Sensitivity indices
+ engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
+ engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
+ engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
+
+ //Create a data.frame to export sensitivity important results in one file.
+ engine.voidEval("exportsensitivity<-data.frame(" +
+ "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
+ "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
+ engine.voidEval("names(exportsensitivity)<-c(" +
+ "\"Sum Of Squares\"," +
+ "\"Sensitivity indices\")");
+ engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
+
+ //Set dataforaov names
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+ engine.voidEval("names(dataforaov)<-isis.factor.distribution$NomFacteur");
+
+ /*Set the export directory
+ *Export directory is the first simulation export directory.
+ */
+ engine.setwd(outputDirectory);
+
+ //Save the results with the scenarios.
+ engine.voidEval("write.csv(dataforaov,\"" + name +
+ "_Results.csv\")");
+
+ //Save the sensitivity indices
+ engine.voidEval("write.csv(exportsensitivity,\"" + name +
+ "_SensitivityIndices.csv\")");
+ //FIXME export through java to enable export when using Rserve (when distant Rserve).
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "\"call_method\"=\"" + aovCall + "\"," +
+ "\"analysis_result\"=list(aovresult,IndSensibilite))");
+
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception eee) {
+ throw new SensitivityException("Can't evaluate results", eee);
+ }
+
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of Regular fractions method using R";
+ }
+
+}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorJavaExpandGrid.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,390 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
-
-/**
- * Implementation of ExpandGrid method using Java
- *
- * @author jcouteau
- * @version $Revision: 1.0 $
- *
- */
-public class SensitivityCalculatorJavaExpandGrid extends
- AbstractSensitivityAnalysis {
-
- @Doc("Interaction order")
- public int param_order = 2;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return false;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputDirectory);
-
- int k = 1; //number of sensitivity scenarios (initialization)
- int factorNumber = plan.getFactors().size(); //number of factors
- List<Factor> factors = plan.getFactors(); //list of factors
-
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = factors.get(i);
- Domain domain = factor.getDomain();
-
- //calculate the number of scenarios
- if (domain instanceof ContinuousDomain) {
- if (factor.getCardinality() != 0) {
- k = k * factor.getCardinality();
- }
- } else if (domain instanceof DiscreteDomain) {
- DiscreteDomain discreteDomain = (DiscreteDomain)domain;
- if (discreteDomain.getValues().size() != 0) {
- k = k * discreteDomain.getValues().size();
- }
- }
- }
-
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
-
- for (int i = 0; i < k; i++) {
- int result = 0; //used for the euclidian division
- int rest = i; //used for the euclidian division
- Scenario experimentScenario = new Scenario();
- for (int j = 0; j < factorNumber; j++) {
- Factor factor = factors.get(j);
- Domain domain = factor.getDomain();
- if (domain instanceof ContinuousDomain) {
- ContinuousDomain continuousDomain = (ContinuousDomain)domain;
- Double max = continuousDomain.getCalculatorMaxBound();
- Double min = continuousDomain.getCalculatorMinBound();
- int card = factor.getCardinality();
-
- //Do the euclidian division
- result = (int) Math.floor(rest / card);
- rest = rest - (card * result);
-
- //Calculate the value of the factor
- Double value = min + ((max - min) / (card - 1) * rest);
- if ((domain instanceof MatrixContinuousDomain)
- || (domain instanceof EquationContinuousDomain)) {
- factor.setValueForIdentifier(value);
- } else {
- factor.setValueForIdentifier(value);
- }
- }
- if (factor.getDomain() instanceof DiscreteDomain) {
- DiscreteDomain discreteDomain = (DiscreteDomain)domain;
- int card = discreteDomain.getValues().size();
-
- //Do the euclidian division
- result = (int) Math.floor(rest / card);
- rest = rest - (card * result);
-
- //Select the value of the factor
- factor.setValueForIdentifier(rest);
- }
- rest = result;
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
-
- }
- thisExperiment.setScenarios(thisExperimentScenarios);
-
- thisExperimentScenarios = thisExperiment.getScenarios();
-
- /*
- * Call R to save the data for result analysis
- */
- int scenariosNumber = thisExperimentScenarios.size();
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- String dataframe = "data<-data.frame(";
-
- //Create the factors vectors and the dataframe instruction
- for (int j = 0; j < factorNumber; j++) {
-
- Factor factor = factors.get(j);
- String factorName = factor.getName().replaceAll(" ", "");
-
- //String vector = "factor" + j + "<-c(";
- String vector = factorName + "<-c(";
- for (int i = 0; i < scenariosNumber; i++) {
- Scenario scenario = thisExperimentScenarios.get(i);
- List<Factor> newFactors = scenario.getFactors();
- Factor factor1 = newFactors.get(j);
-
- if (i < (scenariosNumber - 1)) {
- vector += factor1.getDisplayedValue() + ",";
- } else {
- vector += factor1.getDisplayedValue();
- }
-
- }
- vector = vector + ")";
- engine.voidEval(vector);
-
- if (j < factorNumber - 1) {
- dataframe += factorName + "=factor(" + factorName + "),";
- } else {
- dataframe += factorName + "=factor(" + factorName + "))";
- }
-
- }
- engine.voidEval(dataframe);
-
- // Creating the factors vector.
- String rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- if (i != (factorNumber - 1)) {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\",";
- } else {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\"";
- }
- }
-
- rInstruction += ")";
-
- engine.voidEval(rInstruction);
-
- //Create the isis.factor.distribution
- engine.voidEval("isis.factor.distribution<-c(0.0)");
-
- //Create isis.MethodExp
- engine.voidEval("isis.MethodExp<-list(" +
- "isis.factors," +
- "isis.factor.distribution," +
- "call_method=\"isis-fish-externeR\")");
-
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- //Create isis.Simule
- engine.voidEval("isis.simule<-data.frame(data)");
-
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't generate scenarios", e);
- }
-
- return thisExperiment;
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputdirectory) throws SensitivityException {
-
- SimulationStorage firstStorage = simulationStorages.get(0);
- String simulationName = firstStorage.getName().replaceAll("-", "");
- SimulationParameter param = firstStorage.getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- //Get back the factors number
- int factorNumber = (Integer)engine.eval("dim(data)[2]");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String name = sensitivityExport.getExportFilename();
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule,"
- + name + ")");
-
- //Create the dataforaov data.frame
- String dataframe = "dataforaov<-data.frame(data," +
- name + "=" + name + ")";
- engine.voidEval(dataframe);
-
- //Call aov()
- String aovCall = "aovresult<-aov(" + name + "~(";
- for (int j = 0; j < factorNumber; j++) {
- if (j < (factorNumber - 1)) {
- aovCall = aovCall +
- engine.eval("names(data)[" + (j + 1) + "]") +
- "+";
- } else {
- aovCall = aovCall +
- engine.eval("names(data)[" + (j + 1) + "]") +
- ")";
- if(param_order>1){
- aovCall+="^" + param_order + ",data=dataforaov)";
- }else{
- aovCall+=",data=dataforaov)";
- }
- }
- }
- engine.voidEval(aovCall);
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
- //Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity<-data.frame(" +
- "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
- "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\"," +
- "\"Sensitivity indices\")");
- engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
-
-
- //Set dataforaov names
- engine.voidEval("resultsnames<-c(" +
- "factornames," +
- "\"Result\")");
- engine.voidEval("names(dataforaov)<-resultsnames");
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.setwd(outputdirectory);
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\""
- + param.getSensitivityExport().get(k).getExportFilename() + "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\""
- + param.getSensitivityExport().get(k).getExportFilename()
- + "_SensitivityIndices.csv\")");
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "call_method=\"" + aovCall + "\"," +
- "\"analysis_result\"=list(aovresult,IndSensibilite))");
-
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- // Save Isis R session
- engine.saveRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Expand Grid method using Java";
- }
-
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRDOptimal.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRDOptimal.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRDOptimal.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,403 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * User: couteau
- * Date: 14 janv. 2010
- * Time: 11:58:09
- */
-public class SensitivityCalculatorRDOptimal
- extends AbstractSensitivityAnalysis {
-
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- @Doc("Order")
- public int param_order=1;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return false;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
-
- setIsisFactorsR(plan, outputDirectory);
-
- //extract the factors from the design plan
- List<Factor> factors = plan.getFactors();
- int factorsNb = factors.size();
-
- try {
- REngine engine = new RProxy();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.voidEval("library(AlgDesign)");
-
- //Create a list of the factors under the form factor1=factor1,...
- String factorsNames = "";
-
- //Create a list of the factors under the form factor1,factor2,...
- String factorNames = "";
-
- //Create a list of the factors under the form factor1+factor2+...
- String factorPlus="";
-
- //create the factors vectors
- for (Factor factor : factors) {
- //The factor values vector
- String factorName = factor.getName().replaceAll(" ", "");
- factorsNames += factorName + "=" + factorName + ",";
- factorNames += factorName + ",";
- factorPlus += factorName + "+";
-
- String vector = factorName + "<-c(";
-
- Domain domain = factor.getDomain();
-
- if (domain instanceof ContinuousDomain) {
- ContinuousDomain contDomain = (ContinuousDomain) domain;
- int card = factor.getCardinality();
- Double min = contDomain.getCalculatorMinBound();
- Double max = contDomain.getCalculatorMaxBound();
-
- for (int i = 0; i < card; i++) {
- //add the ith value
- vector += (min + (i * (max - min) / (card - 1))) + ",";
- }
- } else {
- Map<Object, Object> values = ((DiscreteDomain) domain).getValues();
- int nbValues = values.size();
- for (int i = 0; i < nbValues; i++) {
- vector += "as.integer(" + i + "),";
- }
- }
-
- vector = vector.substring(0, vector.length() - 1);
-
- vector += ")";
-
- engine.voidEval(vector);
-
-
- }
-
- factorsNames = factorsNames.substring(0,factorsNames.length()-1);
- factorNames = factorNames.substring(0,factorNames.length()-1);
- factorPlus = factorPlus.substring(0,factorPlus.length()-1);
-
-
- //X<-expand.grid(vector=???,weight=???)
- String expandGrid = "expandgrid<-expand.grid(%s)";
-
-
-
- String rCall = String.format(expandGrid,factorsNames);
-
- engine.voidEval(rCall);
-
- if (param_order ==1 ){
- rCall = "x<-optFederov(~(%s),data=expandgrid, " +
- "approximate =FALSE, center=F, criterion = \"D\"," +
- "nRepeats=10)";
- } else {
- rCall = "x<-optFederov(~(%s)^"+param_order+",data=expandgrid, " +
- "approximate =FALSE, center=F, criterion = \"D\"," +
- "nRepeats=10)";
- }
-
- rCall = String.format(rCall,factorPlus);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- engine.voidEval("runif(1)");
-
- engine.voidEval(rCall);
-
- engine.eval("expPlan<-as.data.frame(x$design)");
- RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan");
- dataFrame.setVariable("expPlan");
- int nbExperiments = (Integer)engine.eval("dim(x$design)[1]");
-
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
- for (int j = 0; j < nbExperiments; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorsNb; i++) {
- Factor factor = factors.get(i);
- factor.setValueForIdentifier(dataFrame.get(i, j));
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
-
- String factorDistribution = "isis.factor.distribution<-data.frame(" +
- "NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- String distribution = "";
- String parameters = "";
-
- for (int i = 0; i < factorsNb; i++) {
- Domain domain = factors.get(i).getDomain();
- if (i != 0) {
- distribution += ",";
- parameters += ",";
- }
- if (domain instanceof ContinuousDomain){
- ContinuousDomain contDomain = (ContinuousDomain)domain;
- distribution += "\"qunif\"";
- parameters += "\"[" + contDomain.getMinBound()
- + ";" + contDomain.getMaxBound()
- + "]\"";
- } else {
- DiscreteDomain discDomain = (DiscreteDomain)domain;
- distribution += "\"discrete\"";
- parameters+="\"[";
- Map<Object, Object> values = discDomain.getValues();
- int count=0;
- Collection<Object> collecValues = values.values();
- for (Object value:collecValues){
- if (count!=0){
- parameters += ",";
- }
- parameters += value;
- count++;
- }
- parameters+="]\"";
- }
- }
- engine.voidEval(String.format(factorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-\"" + rCall + "\"");
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-x$design");
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
-
- } catch (RException eee) {
- throw new SensitivityException("Can't generate scenarios", eee);
- }
-
- return thisExperiment;
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- try {
-
- REngine engine = new RProxy();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- //Get back the factors number
- int factorNumber = (Integer)engine.eval("dim(x$design)[2]");
-
- SimulationParameter param = simulationStorages.get(0).getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
-
- SimulationStorage firstStorage = simulationStorages.get(0);
-
- String firstStorageName = firstStorage.getName().replaceAll("-", "");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String name = sensitivityExport.getExportFilename();
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule,"
- + name + ")");
-
- //Create the dataforaov data.frame
- String dataFrame = "dataforaov<-data.frame(x$design,"
- + name + "=" + name + ")";
- engine.voidEval(dataFrame);
-
- //Call aov()
- String aovCall = "aovresult<-aov(" + name + "~(";
- for (int j = 0; j < factorNumber; j++) {
- if (j < (factorNumber - 1)) {
- aovCall = aovCall
- + engine.eval("names(x$design)[" + (j + 1) + "]")
- + "+";
- } else {
- aovCall = aovCall
- + engine.eval("names(x$design)[" + (j + 1) + "]")
- + ")";
- if(param_order>1){
- aovCall+="^" + param_order + ",data=dataforaov)";
- }else{
- aovCall+=",data=dataforaov)";
- }
- }
- }
- engine.voidEval(aovCall);
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
-//Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity<-data.frame(" +
- "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
- "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\"," +
- "\"Sensitivity indices\")");
- engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
-
-
- //Set dataforaov names
- engine.voidEval("resultsnames<-c(names(x$design),\"Result\")");
- engine.voidEval("names(dataforaov)<-resultsnames");
-
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.setwd(outputDirectory);
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\""
- + param.getSensitivityExport().get(k)
-
- .getExportFilename() + "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\""
- + param.getSensitivityExport().get(k)
- .getExportFilename()
- + "_SensitivityIndices.csv\")");
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "\"call_method\"=\"" + aovCall + "\"," +
- "\"analysis_result\"=list(aovresult,IndSensibilite))");
-
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- firstStorageName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
-
- renameObjects(engine, firstStorageName);
-
- //Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of D optimal method method using R, needs" +
- "AlgDesign package to work";
- }
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRExpandGrid.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,373 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * User: couteau
- * Date: 6 janv. 2010
- * Time: 14:31:09
- */
-public class SensitivityCalculatorRExpandGrid
- extends AbstractSensitivityAnalysis {
-
- @Doc("Interaction order")
- public int param_order = 2;
-
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return false;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
-
- setIsisFactorsR(plan, outputDirectory);
-
- //extract the factors from the design plan
- List<Factor> factors = plan.getFactors();
- int factorsNb = factors.size();
-
- try {
- REngine engine = new RProxy();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- //Create a list of the factors under the form factor1=factor1,...
- String factorsNames = "";
-
- //Create a list of the factors under the form factor1,factor2,...
- String factorNames = "";
-
- //create the factors vectors
- for (Factor factor : factors) {
- //The factor values vector
- String factorName = factor.getName().replaceAll(" ", "");
- factorsNames += factorName + "=" + factorName + ",";
- factorNames += factorName + ",";
- String vector = factorName + "<-c(";
-
- Domain domain = factor.getDomain();
-
- if (domain instanceof ContinuousDomain) {
- ContinuousDomain contDomain = (ContinuousDomain) domain;
- int card = factor.getCardinality();
- Double min = contDomain.getCalculatorMinBound();
- Double max = contDomain.getCalculatorMaxBound();
-
- for (int i = 0; i < card; i++) {
- //add the ith value
- vector += (min + (i * (max - min) / (card - 1))) + ",";
- }
- }
-
- if (domain instanceof DiscreteDomain) {
- Map<Object, Object> values = ((DiscreteDomain) domain).getValues();
- int nbValues = values.size();
- for (int i = 0; i < nbValues; i++) {
- vector += "as.integer(" + i + "),";
- }
- }
-
- vector = vector.substring(0, vector.length() - 1);
-
- vector += ")";
-
- engine.voidEval(vector);
-
-
- }
-
- factorsNames = factorsNames.substring(0,factorsNames.length()-1);
- factorNames = factorNames.substring(0,factorNames.length()-1);
-
-
- //X<-expand.grid(vector=???,weight=???)
- String expandGrid = "x<-expand.grid(%s)";
-
- String rCall = String.format(expandGrid,factorsNames);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- engine.voidEval(rCall);
-
- engine.eval("expPlan<-as.data.frame(x)");
- RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan");
- dataFrame.setVariable("expPlan");
- int nbExperiments = (Integer)engine.eval("dim(x)[1]");
-
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
- for (int j = 0; j < nbExperiments; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorsNb; i++) {
- Factor factor = factors.get(i);
- factor.setValueForIdentifier(dataFrame.get(i, j));
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
-
- String factorDistribution = "isis.factor.distribution<-data.frame(" +
- "NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- String distribution = "";
- String parameters = "";
-
- for (int i = 0; i < factorsNb; i++) {
- Domain domain = factors.get(i).getDomain();
- if (i != 0) {
- distribution += ",";
- parameters += ",";
- }
- if (domain instanceof ContinuousDomain){
- ContinuousDomain contDomain = (ContinuousDomain)domain;
- distribution += "\"qunif\"";
- parameters += "\"[" + contDomain.getMinBound()
- + ";" + contDomain.getMaxBound()
- + "]\"";
- } else {
- DiscreteDomain discDomain = (DiscreteDomain)domain;
- distribution += "\"discrete\"";
- parameters+="\"[";
- Map<Object, Object> values = discDomain.getValues();
- int count=0;
- Collection<Object> collecValues = values.values();
- for (Object value:collecValues){
- if (count!=0){
- parameters += ",";
- }
- parameters += value;
- count++;
- }
- parameters+="]\"";
- }
- }
- engine.voidEval(String.format(factorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-\"" +
- String.format(expandGrid,factorsNames) + "\"");
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-x");
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
-
- } catch (RException eee) {
- throw new SensitivityException("Can't generate scenarios", eee);
- }
-
- return thisExperiment;
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- try {
-
- REngine engine = new RProxy();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- //Get back the factors number
- int factorNumber = (Integer)engine.eval("dim(x)[2]");
-
- SimulationParameter param = simulationStorages.get(0).getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
-
- SimulationStorage firstStorage = simulationStorages.get(0);
-
- String firstStorageName = firstStorage.getName().replaceAll("-", "");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String name = sensitivityExport.getExportFilename();
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule,"
- + name + ")");
-
- //Create the dataforaov data.frame
- String dataFrame = "dataforaov<-data.frame(x,"
- + name + "=" + name + ")";
- engine.voidEval(dataFrame);
-
- //Call aov()
- String aovCall = "aovresult<-aov(" + name + "~(";
- for (int j = 0; j < factorNumber; j++) {
- if (j < (factorNumber - 1)) {
- aovCall = aovCall
- + engine.eval("names(x)[" + (j + 1) + "]")
- + "+";
- } else {
- aovCall = aovCall
- + engine.eval("names(x)[" + (j + 1) + "]")
- + ")";
- if(param_order>1){
- aovCall+="^" + param_order + ",data=dataforaov)";
- }else{
- aovCall+=",data=dataforaov)";
- }
- }
- }
- engine.voidEval(aovCall);
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
- //Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity<-data.frame(" +
- "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
- "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\"," +
- "\"Sensitivity indices\")");
- engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.setwd(outputDirectory);
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\""
- + param.getSensitivityExport().get(k)
-
- .getExportFilename() + "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\""
- + param.getSensitivityExport().get(k)
- .getExportFilename()
- + "_SensitivityIndices.csv\")");
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "\"call_method\"=\"" + aovCall + "\"," +
- "\"analysis_result\"=list(aovresult,IndSensibilite))");
-
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- firstStorageName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
-
- renameObjects(engine, firstStorageName);
-
- //Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Expand Grid method using R";
- }
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFast.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFast.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFast.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,355 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * Implementation of Fast method using R.
- *
- * @author jcouteau
- * @version $Revision: 89 $
- *
- * Last update : $Date: 2009-03-25 13:45:16 +0100 (mer., 25 mars 2009) $ By :
- * $Author: jcouteau $
- */
-public class SensitivityCalculatorRFast extends AbstractSensitivityAnalysis {
-
- @Doc("an integer giving the sample size, i.e. the length of the " +
- "discretization of the s-space (see Cukier et al.). (default=20)")
- public int param_n = 20;
-
- @Doc("an integer specifying the interference parameter, i.e. the number " +
- "of harmonics to sum in the Fourier series decomposition (see Cukier et " +
- "al.). (default=6)")
- public int param_M = 6;
-
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return true;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputDirectory);
-
- RDataFrame dataFrame;
- int nbExperiments;
- int factorNumber = plan.getFactors().size();
- List<Factor> factors = plan.getFactors();
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
-
- //Test all factors, if one is discrete, return null
- for (int i = 0; i < factorNumber; i++) {
- if (factors.get(i).getDomain() instanceof DiscreteDomain) {
- throw new SensitivityException(factors.get(i).getName() +
- " has a discrete domain, this is not acceptable for fast " +
- "method.");
- }
- }
- String rInstruction = "a<-fast99(" +
- "model=NULL," +
- "factors=%s, " +
- "n=%s, " +
- "M=%s, " +
- "q = \"qunif\", " +
- "q.arg=list(min=0,max=1))";
- String rCall = String.format(rInstruction, factors.size(), param_n,
- param_M);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- try {
-
- REngine engine = new RProxy();
-
- engine.clearSession();
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- // Load sensitivity package into R (if package already loaded,
- // nothing happens.
- engine.voidEval("library(sensitivity)");
-
- // Run sensitivity analysis
- engine.voidEval(rCall);
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- String factorName = factors.get(i).getName();
- if (i != (factorNumber - 1)) {
- rInstruction += "\"" + factorName + "\",";
- } else {
- rInstruction += "\"" + factorName + "\"";
- }
- }
-
- rInstruction += ")";
-
- engine.voidEval(rInstruction);
-
- // Get back experiment plan
- dataFrame = (RDataFrame) engine.eval("a$X");
- dataFrame.setVariable("a$X");
-
- nbExperiments = (Integer)engine.eval("dim(a$X)[1]");
-
- String factorDistribution = "isis.factor.distribution<-data.frame(" +
- "NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- // Creating the vectors.
- String distribution = "";
- String parameters = "";
- String factorNames = "";
-
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = factors.get(i);
- ContinuousDomain domain = (ContinuousDomain) factor.getDomain();
- if (i != 0) {
- distribution += ",";
- parameters += ",";
- factorNames += ",";
- }
-
- distribution += "\"qunif\"";
- parameters += "\"[" + domain.getMinBound() + ";" +
- domain.getMaxBound() + "]\"";
- factorNames += "\"" + factor.getName() + "\"";
- }
- engine.voidEval(String.format(factorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-a$call");
-
-
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
-
- engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
-
- engine.voidEval("isis.simule<-data.frame(a$X)");
-
- engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
-
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- // Setting up the scenarios.
- for (int j = 0; j < nbExperiments; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = plan.getFactors().get(i);
- Domain domain = factor.getDomain();
- if ((domain instanceof MatrixContinuousDomain)
- || (domain instanceof EquationContinuousDomain)) {
- factor.setValueForIdentifier(dataFrame.get(i,j));
- } else {
- ContinuousDomain continuousDomain = (ContinuousDomain)domain;
- Double min = continuousDomain.getCalculatorMinBound();
- Double max = continuousDomain.getCalculatorMaxBound();
- Double dFValue = (Double)dataFrame.get(i,j);
- Double value = min + (max - min) * dFValue;
- factor.setValueForIdentifier(value);
- }
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
- } catch (RException eee) {
- throw new SensitivityException("Can't generate scenarios", eee);
- }
- return thisExperiment;
-
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- SimulationStorage storage = simulationStorages.get(0);
- String simulationName = storage.getName().replaceAll("-", "");
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.setwd(outputDirectory);
-
- // Call R
- // Load sensitivity package into R (if package already loaded,
- // nothing happens.
- engine.voidEval("library(sensitivity)");
-
- SimulationParameter param = simulationStorages.get(0).getParameter();
-
- int sensitivityNumber = param.getSensitivityExport().size();
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule," +
- sensitivityExport.getExportFilename() + ")");
- }
-
- //adding attribute to isis.Simule
- engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- // Creates the R expression to import results in R
- String name = param.getSensitivityExport().get(k)
- .getExportFilename();
-
- //Compute results
- engine.voidEval("tell(a,y=" + name + ")");
-
- engine.voidEval("names(a$V)<-factornames");
- engine.voidEval("names(a$X)<-factornames");
- engine.voidEval("names(a$D1)<-factornames");
- engine.voidEval("names(a$Dt)<-factornames");
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "call_method=\"tell(a,y=" + name + ")" + "\"," +
- "\"analysis_result\"=a)");
-
- //setting isis.methodAnalyse attributes
- engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" +
- "\"isis-fish-externe-R\")");
-
- //Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults<-data.frame(a$X,a$y)");
-
- //Set working directory
- engine.setwd(outputDirectory);
-
- //Export V
- engine.voidEval("write.csv(a$V,\"" + name + "_V.csv\")");
-
- //Export D1
- engine.voidEval("write.csv(a$D1,\"" + name + "_D1.csv\")");
-
- //Export Dt
- engine.voidEval("write.csv(a$Dt,\"" + name + "_Dt.csv\")");
- //Set dfresults names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
- engine.voidEval("names(dfresults)<-resultsnames");
-
- //Export results
- engine.voidEval("write.csv(dfresults,\"" + name +
- "_Results.csv\")");
- //FIXME export through java to enable export when using Rserve
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse" +
- "<-isis.methodAnalyse";
-
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
- }
-
- @Override
- public String getDescription() {
- return "Implementation of FAST method using R (needs the sensitivity " +
- "package to work)";
- }
-
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFrF2.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFrF2.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRFrF2.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,387 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.math.matrix.MatrixFactory;
-import org.nuiton.math.matrix.MatrixND;
-import org.nuiton.util.FileUtil;
-
-/**
- * Implementation of FrF2 method using R.
- *
- * @author jcouteau
- * @version $Revision: 94 $
- *
- * Last update : $Date: 2009-04-03 13:13:35 +0200 (ven., 03 avr. 2009) $ By :
- * $Author: chatellier $
- */
-public class SensitivityCalculatorRFrF2 extends AbstractSensitivityAnalysis {
-
- //TODO jcouteau 20110607 need to use new ethods on REngine instead of coding R sentences by hand.
-
- /** to use log facility, just put in your code: log.info("..."); */
- private static Log log = LogFactory
- .getLog(SensitivityCalculatorRFrF2.class);
-
- @Doc("is the arabic numeral for the requested resolution of the design( 3 <= resolution <= 5). (if resolution=3, model = sum(Xi), if resolution = 4 or 5, model = sum(Xi)+sum(XiXj)")
- public int param_resolution;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return true;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
- throws SensitivityException {
-
- double[] dataframe;
- int nbExperiments;
- int factorNumber = plan.getFactors().size();
- List<Factor> factors = plan.getFactors();
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
-
- testNoDiscrete(factors);
-
- try {
- REngine engine = new RProxy();
-
- //Clear session
- engine.voidEval("rm(list=ls())");
-
- engine.voidEval("library(FrF2)");
-
- //Set the working directory (for import and exports)
- engine.voidEval("setwd(\""
- + outputdirectory.getAbsolutePath().replaceAll("\\\\", "/")
- + "\")");
-
- String rInstruction = "a<-FrF2(nfactors=" + factorNumber
- + ",resolution=" + param_resolution + ")";
-
- engine.voidEval(rInstruction);
-
- // Export the FrF2 object for the second run in a .FrF2 file
- engine.voidEval("dput(a,file=\".FrF2\")");
-
- // Get back experiment plan
- dataframe = (double[]) engine.eval("a$desnum");
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- if (i != (factorNumber - 1)) {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\",";
- } else {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\"";
- }
- }
-
- rInstruction += ")";
-
- engine.voidEval(rInstruction);
-
- // Export the factornames object for the second run in a .factornames file
- engine.voidEval("dput(factornames,file=\".factornames\")");
-
-
- nbExperiments = dataframe.length / factorNumber;
-
- // Transform the result from R in a matrix
- MatrixND frf2 = MatrixFactory.getInstance().create(dataframe,
- new int[] { factorNumber, nbExperiments });
-
- // Setting up the scenarios.
- for (int j = 0; j < nbExperiments; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = plan.getFactors().get(i);
-
- if (frf2.getValue(new int[]{i, j}) == -1) {
- factor.setValueForIdentifier(0);
- } else if (frf2.getValue(new int[]{i, j}) == 1) {
- factor.setValueForIdentifier(1);
- }
-
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
- //Create the factors vectors
- for (int j = 0; j < factorNumber; j++) {
- Factor factor = thisExperimentScenarios.get(0).getFactors()
- .get(j);
-
- String vector = "factor" + j + "<-c(";
- for (int i = 0; i < nbExperiments; i++) {
- if (i < (nbExperiments - 1)) {
- vector = vector + factor.getDisplayedValue() + ",";
- } else {
- vector = vector + factor.getDisplayedValue();
- }
-
- }
- vector = vector + ")";
- engine.voidEval(vector);
- }
-
- //Create the data data.frame from the factors
- String data = "data<-data.frame(";
- for (int j = 0; j < factorNumber; j++) {
- if (j < factorNumber - 1) {
- data = data + "factor" + j + "=factor(factor" + j + "),";
- } else {
- data = data + "factor" + j + "=factor(factor" + j + "))";
- }
-
- }
- engine.voidEval(data);
-
- // Set output directory
- engine.voidEval("setwd(\""
- + outputdirectory.getAbsolutePath().replaceAll("\\\\", "/")
- + "\")");
-
- // Export the scenario matrix for the second run in a .FrF2.csv file
- engine.voidEval("write.csv(data,file=\".FrF2.csv\")");
-
- engine.terminate();
-
- } catch (RException e) {
- throw new SensitivityException("Can't generate scenarios", e);
- }
- return thisExperiment;
-
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputdirectory) throws SensitivityException {
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.voidEval("rm(list=ls())");
-
- SimulationParameter param = simulationStorages.get(0)
- .getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- engine.voidEval("library(FrF2)");
-
- // Set output directory
- engine.voidEval("setwd(\""
- + outputdirectory.getAbsolutePath().replaceAll("\\\\",
- "/") + "\")");
-
- //Get back the FrF2 object
- engine.voidEval("a<-dget(\".FrF2\")");
-
- //Get back the scenarios
- engine.voidEval("factors<-read.csv(\".FrF2.csv\")");
-
- // Get the factornames object in the .factornames file
- engine.voidEval("factornames<-dget(\".factornames\")");
-
- //Get back the factors number
- int factorNumber = ((Double) engine.eval("length(factors)-1"))
- .intValue();
-
- // Creates the R expression to import results in R
- String name = param.getSensitivityExport().get(k)
- .getExportFilename();
- String rInstruction = name + "<-c(";
- for (int l = 0; l < simulationStorages.size(); l++) {
- File importFile = new File(simulationStorages.get(l)
- .getDirectory().toString()
- + File.separator
- + SimulationStorage.RESULT_EXPORT_DIRECTORY, param
- .getSensitivityExport().get(k).getExportFilename()
- + param.getSensitivityExport().get(k)
- .getExtensionFilename());
- String simulResult = FileUtil.readAsString(importFile);
- double simulationResult = Double.valueOf(simulResult);
- if (l < simulationStorages.size() - 1) {
- rInstruction = rInstruction + simulationResult + ",";
- } else {
- rInstruction = rInstruction + simulationResult;
- }
- }
- rInstruction = rInstruction + ")";
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Create the dataforaov data.frame
- String dataframe = "dataforaov<-data.frame(factors,result=result)";
- engine.voidEval(dataframe);
-
- //get back the resolution
- int resolution = (Integer) engine.eval("res.catlg(a$catentry)");
-
- String aovCall;
-
- switch (resolution) {
- case 3:
- //Call aov()
- aovCall = "aovresult<-aov(result~";
- for (int j = 0; j < factorNumber; j++) {
- if (j < (factorNumber - 1)) {
- aovCall = aovCall + "factor" + j + "+";
- } else {
- aovCall = aovCall + "factor" + j
- + ",data=dataforaov)";
- }
- }
- engine.voidEval(aovCall);
- break;
- case 4:
- aovCall = "aovresult<-aov(result~";
- for (int j = 0; j < factorNumber; j++) {
- aovCall = aovCall + "factor" + j + "+";
- }
- for (int i = 0; i < factorNumber; i++) {
- for (int j = 0; j < factorNumber; j++) {
- if (i < j) {
- aovCall = aovCall + "factor" + i + "*factor"
- + j + "+";
- }
- }
- }
- aovCall = aovCall.substring(0, aovCall.length() - 1);
- aovCall = aovCall + ",data=dataforaov)";
- engine.voidEval(aovCall);
- break;
- case 5:
- aovCall = "aovresult<-aov(result~";
- for (int j = 0; j < factorNumber; j++) {
- aovCall = aovCall + "factor" + j + "+";
- }
- for (int i = 0; i < factorNumber; i++) {
- for (int j = 0; j < factorNumber; j++) {
- if (i < j) {
- aovCall = aovCall + "factor" + i + "*factor"
- + j + "+";
- }
- }
- }
- aovCall = aovCall.substring(0, aovCall.length() - 1);
- aovCall = aovCall + ",data=dataforaov)";
- engine.voidEval(aovCall);
- break;
- default:
- log.info("This resolution is not managed");
- break;
- }
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
- //Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:"
- + factorNumber + ",2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:"
- + factorNumber + "]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity=data.frame(SoS[1:"
- + factorNumber + "],IndSensibilite[1:" + factorNumber
- + "])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\",\"Sensitivity indices\")");
-
- engine.voidEval("row.names(exportsensitivity)<-factornames");
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.voidEval("setwd(\""
- + outputdirectory.getAbsolutePath().replaceAll("\\\\",
- "/") + "\")");
-
- //Set dataforaov names
- engine.voidEval("resultsnames<-c(\"Simulation\"," +
- "factornames,\"Result\")");
- engine.voidEval("names(dataforaov)<-resultsnames");
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\""
- + param.getSensitivityExport().get(k)
- .getExportFilename() + "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\""
- + param.getSensitivityExport().get(k)
- .getExportFilename()
- + "_SensitivityIndices.csv\")");
-
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
- engine.terminate();
- }
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of FrF2 method method using R, at least 4 factors need to be declared (nneds the 'sensitivity' package to work)";
- }
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRMorris.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRMorris.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRMorris.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,341 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * Implementation of Morris method using R.
- *
- * @author jcouteau
- * @version $Revision: 253 $
- *
- * Last update : $Date: 2011-07-07 14:31:31 +0200 (jeu. 07 juil. 2011) $ By :
- * $Author: chatellier $
- */
-public class SensitivityCalculatorRMorris extends AbstractSensitivityAnalysis {
-
- @Doc("Integer giving the number of repetitions of the design, i.e. the number of elementary effect computed per factor. (Default value : 4)")
- public int param_r = 4;
-
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continus.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return false;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputDirectory);
-
- RDataFrame dataFrame;
- int nbExperiments;
- int factorNumber = plan.getFactors().size();
-
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
-
- List<Factor> factors = plan.getFactors();
-
- if (param_r == 0) {
- param_r = 4;
- }
-
- testNoDiscrete(factors);
-
- // Creating the vectors.
- String factorNames = "";
- String levels = "";
- String gridJump = "";
- String binf = "";
- String bsup = "";
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = factors.get(i);
- ContinuousDomain domain = (ContinuousDomain) factor.getDomain();
- if (i != 0) {
- factorNames += ",";
- levels += ",";
- gridJump += ",";
- binf += ",";
- bsup += ",";
- }
-
- factorNames += "\"" + factor.getName() + "\"";
-
- levels += factor.getCardinality();
-
- gridJump += factor.getCardinality() / 2;
-
- binf += domain.getCalculatorMinBound();
-
- bsup += domain.getCalculatorMaxBound();
- }
-
- String rInstruction = "a<-morris(model=NULL,factors=c(%s),r=%s," +
- "design=list(type=\"oat\",levels=c(%s),grid.jump=c(%s))," +
- "binf=c(%s),bsup=c(%s))";
-
- String rCall = String.format(rInstruction, factorNames, param_r,
- levels, gridJump, binf, bsup);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- try {
- REngine engine = new RProxy();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- // Load sensitivity package into R (if package already loaded,
- // nothing happens.
- engine.voidEval("library(sensitivity)");
-
- // Run sensitivity analysis
- engine.voidEval(rCall);
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(%s)";
- rCall = String.format(rInstruction, factorNames);
-
- engine.voidEval(rCall);
-
- // Set output directory
- engine.setwd(outputDirectory);
-
- // Get back experiment plan
- engine.eval("expPlan<-as.data.frame(a$X)");
- dataFrame = (RDataFrame) engine.eval("expPlan");
- dataFrame.setVariable("expPlan");
-
- nbExperiments = (Integer)engine.eval("dim(a$X)[1]");
-
- String factorDistribution = "isis.factor.distribution<-data.frame(" +
- "NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- String distribution = "";
- String parameters = "";
-
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = factors.get(i);
- ContinuousDomain domain = (ContinuousDomain) factor.getDomain();
- if (i != 0) {
- distribution += ",";
- parameters += ",";
- }
-
- distribution += "\"qunif\"";
- parameters += "\"[" + domain.getMinBound() + ";" +
- domain.getMaxBound() + "]\"";
- }
- engine.voidEval(String.format(factorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-a$call");
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-data.frame(a$X)");
- engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- // Setting up the scenarios.
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
- for (int j = 0; j < nbExperiments; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = factors.get(i);
- factor.setValueForIdentifier(dataFrame.get(i, j));
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
- } catch (RException eee) {
- throw new SensitivityException("Can't generate scenarios", eee);
- }
-
- return thisExperiment;
-
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- SimulationStorage storage = simulationStorages.get(0);
- String simulationName = storage.getName().replaceAll("-", "");
-
- try {
- REngine engine = new RProxy();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- // Call R
- // Load sensitivity package into R (if package already loaded,
- // nothing happens.
- engine.voidEval("library(sensitivity)");
-
- //Set the working directory (for exports)
- engine.setwd(outputDirectory);
-
- SimulationParameter param = simulationStorages.get(0)
- .getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule," +
- sensitivityExport.getExportFilename() + ")");
- }
-
- //adding attribute to isis.Simule
- engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
-
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- // Creates the R expression to import results in R
- String name = param.getSensitivityExport().get(k)
- .getExportFilename();
-
- //Compute results
- engine.voidEval("tell(a,y=" + name + ")");
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "\"call_method\"=\"tell(a,y=" + name + ")" + "\"," +
- "\"analysis_result\"=a)");
-
- //setting isis.methodAnalyse attributes
- engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" +
- "\"isis-fish-externe-R\"");
-
- // Get back the sensitivity results, mu, mu star and sigma.
- engine.voidEval("mu<-apply(a$ee, 2, mean)");
- engine.voidEval("mu.star <- apply(a$ee, 2, function(a) mean(abs(a)))");
- engine.voidEval("sigma <- apply(a$ee, 2, sd)");
-
- //Create the data.frame of sensitivity indices for export purpose
- engine.voidEval("df<-data.frame(mu,mu.star,sigma)");
- engine.voidEval("row.names(df)<-factornames");
-
- //Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults<-data.frame(a$X," + name + ")");
-
- //Set dfresults names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
- engine.voidEval("names(dfresults)<-resultsnames");
-
- //Export sensitivity indices
- engine.voidEval("write.csv(df," +
- "\"" + name + "_SensitivityIndices.csv\")");
-
- //Export results
- engine.voidEval("write.csv(dfresults," +
- "\"" + name + "_Results.csv\")");
- //FIXME export through java to enable export when using Rserve
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
-
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine,simulationName);
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Morris method using R (needs the sensitivity" +
- " package to work)";
- }
-
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorROptimumLHS.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,396 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * Implementation of Optimum Latin Hypercube method using R.
- *
- * @author jcouteau
- * @version $Revision: 1.0 $
- */
-public class SensitivityCalculatorROptimumLHS extends
- AbstractSensitivityAnalysis {
-
- @Doc("Number of simulations (default=10)")
- public int param_simulationNumber = 10;
- @Doc("The maximum number of times the Columnwise Pairwise algorithm is applied to all the columns(default=2).")
- public int param_MaxSweeps = 2;
- @Doc("The optimal stopping criterion (between 0 and 1) (default=0.1).")
- public double param_eps = 0.1;
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return true;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputdirectory);
-
- int factorNumber = plan.getFactors().size();
- List<Factor> factors = plan.getFactors();
- RDataFrame dataFrame;
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
-
- //Test all factors, if one is discrete, return null
- testNoDiscrete(factors);
-
- try {
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Set working directory to get Isis R session
- engine.loadRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- //Load the lhs library
- engine.voidEval("library(lhs)");
-
- String rInstruction = "x<-optimumLHS(n=%s,k=%s,maxSweeps=%s,eps=%s)";
-
- String rCall = String.format(rInstruction, param_simulationNumber,
- factorNumber, param_MaxSweeps, param_eps);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- //Create the scenarios
- engine.voidEval(rCall);
-
- // Get back experiment plan
- engine.eval("expPlan<-as.data.frame(x)");
- dataFrame = (RDataFrame)engine.eval("expPlan");
- dataFrame.setVariable("expPlan");
-
- // Setting up the scenarios.
- for (int j = 0; j < param_simulationNumber; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = plan.getFactors().get(i);
- factor.setValueForIdentifier(dataFrame.get(i, j));
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
- String isisFactorDistribution = "isis.factor.distribution<-" +
- "data.frame(" +
- "NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- String distribution = "";
- String parameters = "";
- String factorNames = "";
-
- for (int i = 0; i < factors.size(); i++) {
- Factor tempFactor = factors.get(i);
- ContinuousDomain domain = (ContinuousDomain) tempFactor.getDomain();
- if (i != 0) {
- distribution += ",";
- factorNames += ",";
- parameters += ",";
- }
-
- factorNames += "\"" + factors.get(i).getName() + "\"";
- distribution += "\"qunif\"";
- //add [min;max] to parameters
- parameters += "\"[" + domain.getMinBound() + ";" +
- domain.getMaxBound() + "]\"";
- }
-
- engine.voidEval(String.format(isisFactorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-" + "\"x<-optimumLHS("
- + "n=" + param_simulationNumber
- + ",k=" + factorNumber
- + ",maxSweeps=" + param_MaxSweeps
- + ",eps=" + param_eps + ")\"");
-
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
-
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("isis.simule<-data.frame(x)");
-
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- String data = "data<-data.frame(";
-
- //Create the factors vectors and the dataFrame instruction
- for (int j = 0; j < factors.size(); j++) {
- //The factor values vector
- String vector;
- //Get back the factor
- Scenario scenario = thisExperimentScenarios.get(0);
- Factor factor = scenario.getFactors().get(j);
- String factorName = factor.getName().replaceAll(" ", "");
-
- vector = factorName + "<-c(";
- for (int i = 0; i < param_simulationNumber; i++) {
- //Get back the displayed value the factor
- Scenario tempScenario = thisExperimentScenarios.get(i);
- Factor tempFactor = tempScenario.getFactors().get(j);
- Object value = tempFactor.getDisplayedValue();
-
- if (i < (param_simulationNumber - 1)) {
- vector = vector + value + ",";
- } else {
- vector += value;
- }
-
- }
- vector += ")";
- engine.voidEval(vector);
-
- if (j < factors.size() - 1) {
- data += factorName + "=factor(" + factorName + "),";
- } else {
- data += factorName + "=factor(" + factorName + "))";
- }
- }
- engine.voidEval(data);
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- if (i != (factorNumber - 1)) {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\",";
- } else {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\"";
- }
- }
-
- rInstruction += ")";
-
- engine.voidEval(rInstruction);
-
- // Save Isis R session
- engine.saveRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't generate scenarios", e);
- }
-
- return thisExperiment;
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- //The first storage to get the name and parameters all along the method
- SimulationStorage storage = simulationStorages.get(0);
-
- String simulationName = storage.getName().replaceAll("-", "");
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.voidEval("factors<-data.frame(x)");
- engine.voidEval("names(factors)<-factornames");
-
- //Get back the factors number
- int factorNumber = (Integer) engine.eval("length(factors[1,])");
- //Get back the simulation number
- param_simulationNumber = (Integer) (engine.eval("length(factors[,1])"));
-
- SimulationParameter param = storage.getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule," +
- sensitivityExport.getExportFilename() + ")");
- }
-
- //adding attribute to isis.Simule
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- // Creates the R expression to import results in R
- SensitivityExport export = param.getSensitivityExport().get(k);
- String name = export.getExportFilename();
-
- //Create the dataforaov data.frame
- String dataframe = "dataforaov<-data.frame(factors," +
- name + "=" + name + ")";
- engine.voidEval(dataframe);
-
- //Call aov()
- String aovCall = "aovresult<-aov(" + name + "~";
- for (int j = 0; j < factorNumber; j++) {
-
- String factorName = (String) engine.eval("names(factors)[" + (j + 1) + "]");
- factorName = factorName.replaceAll(" ", ".");
-
- if (j < (factorNumber - 1)) {
- aovCall += factorName +
- "+";
- } else {
- aovCall += factorName + ",data=dataforaov)";
- }
- }
- engine.voidEval(aovCall);
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
- //Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity<-data.frame(" +
- "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
- "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\"," +
- "\"Sensitivity indices\")");
- engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
-
-
- //Set dataforaov names
- engine.voidEval("names(dataforaov)<-c(factornames,\"Result\")");
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.setwd(outputDirectory);
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\"" +
- name + "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\"" +
- name + "_SensitivityIndices.csv\")");
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "call_method=\"" + aovCall + "\""+
- ",\"analysis_result\"=list(aovresult,IndSensibilite))");
-
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
-
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Random Latin Hypercube method method " +
- "using R (needs 'lhs' package to work)";
- }
-
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRRandomLHS.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,387 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * Implementation of Random Latin Hypercube method using R.
- *
- * @author jcouteau
- * @version $Revision: 1.0 $
- */
-public class SensitivityCalculatorRRandomLHS extends
- AbstractSensitivityAnalysis {
-
- @Doc("Simulation number (default=10)")
- public int param_simulationNumber = 10;
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return true;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputDirectory);
-
- int factorNumber = plan.getFactors().size();
- RDataFrame dataFrame; //The dataframe to get back the scenarios from R
- SensitivityScenarios thisExperiment = new SensitivityScenarios(); //The experiment we will build
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); //The list of scenarios
- List<Factor> factors = plan.getFactors(); //The factors
-
- testNoDiscrete(factors);
-
- try {
-
- REngine engine = new RProxy(); //The R engine
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- //Load the lhs library
- engine.voidEval("library(lhs)");
-
- //Create the scenarios
- String rInstruction = "x<-randomLHS(%s,%s)";
- String rCall = String.format(rInstruction, param_simulationNumber,
- factorNumber);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- engine.voidEval(rCall);
-
- // Get back experiment plan
- engine.eval("expPlan<-as.data.frame(x)");
- dataFrame = (RDataFrame)engine.eval("expPlan");
- dataFrame.setVariable("expPlan");
-
- // Setting up the scenarios.
- for (int j = 0; j < param_simulationNumber; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = plan.getFactors().get(i); //The factor we are setting
- factor.setValueForIdentifier(dataFrame.get(i,j));
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
- String isisFactorDistribution = "isis.factor.distribution<-" +
- "data.frame(" +
- "NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- String distribution = "";
- String parameters = "";
- String factorNames = "";
-
-
- //Create the strings for the isis.MethodExp instruction
- for (int i = 0; i < factors.size(); i++) {
- ContinuousDomain domain = (ContinuousDomain)factors.get(i).getDomain();
- if (i != 0) {
- distribution += ","; //the distribution
- factorNames += ","; //the factor names
- parameters += ","; //the parameters
- }
-
- factorNames += "\"" + factors.get(i).getName() + "\"";
- distribution += "\"qunif\""; //all distributions are qunif
- double min = domain.getCalculatorMinBound();
- double max = domain.getCalculatorMaxBound();
- parameters += "\"[" + min + ";" + max + "]\"";
- }
- engine.voidEval(String.format(isisFactorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-" + "\"x<-randomLHS("
- + param_simulationNumber + "," + factorNumber + ")\"");
-
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
-
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("isis.simule<-data.frame(x)");
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- String data = "data<-data.frame(";
-
- //Create the factors vectors and the dataFrame instruction
- for (int j = 0; j < factors.size(); j++) {
- Scenario firstScenario = thisExperimentScenarios.get(0);
- Factor factor = firstScenario.getFactors().get(j);
- String factorName = factor.getName().replaceAll(" ", "");
-
- //the vector of the factor values
- //read all the values one by one from the already created
- //scenarios.
- String vector = factorName + "<-c(";
- for (int i = 0; i < param_simulationNumber; i++) {
- Scenario scenario = thisExperimentScenarios.get(i);
- List<Factor> factorList = scenario.getFactors();
- Factor factor1 = factorList.get(j);
- if (i < (param_simulationNumber - 1)) {
- vector += factor1.getDisplayedValue() + ",";
- } else {
- vector += factor1.getDisplayedValue();
- }
-
- }
- vector = vector + ")";
- engine.voidEval(vector);
-
- //add factor1=factor(factor1) for each factor...
- if (j < factors.size() - 1) {
- data += factorName + "=factor(" + factorName + "),";
- } else {
- data += factorName + "=factor(" + factorName + "))";
- }
-
- }
- engine.voidEval(data);
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- if (i != (factorNumber - 1)) {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\",";
- } else {
- rInstruction = rInstruction + "\""
- + factors.get(i).getName() + "\"";
- }
- }
- rInstruction += ")";
- engine.voidEval(rInstruction);
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't generate scenarios", e);
- }
-
- return thisExperiment;
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- SimulationStorage simulationStorage1 = simulationStorages.get(0);
- String simName = simulationStorage1.getName();
- String simulationName = simName.replaceAll("-", "");
- SimulationParameter param = simulationStorage1.getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
- //List<SensitivityExport> export = param.getSensitivityExport();
-
- try {
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.voidEval("factors<-data.frame(x)");
-
- //Get back the factors number
- int factorNumber = (Integer) engine.eval("length(factors)");
-
- //Get back the simulation number
- param_simulationNumber = (Integer) (engine.eval("length(factors[,1])"));
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule," +
- sensitivityExport.getExportFilename() + ")");
- }
-
- //adding attribute to isis.Simule
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- // Creates the R expression to import results in R
- String name = param.getSensitivityExport().get(k)
- .getExportFilename();
-
- //Create the dataforaov data.frame
- String dataframe = "dataforaov<-data.frame(factors," + name
- + "=" + name + ")";
- engine.voidEval(dataframe);
-
- //Call aov()
- String aovCall = "aovresult<-aov(" + name + "~";
- for (int j = 0; j < factorNumber; j++) {
-
- if (j < (factorNumber - 1)) {
- aovCall += engine.eval("names(factors)[" + (j + 1) + "]")
- + "+";
- } else {
- aovCall += engine.eval("names(factors)[" + (j + 1) + "]")
- + ",data=dataforaov)";
- }
- }
- engine.voidEval(aovCall);
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
- //Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity<-data.frame(" +
- "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
- "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\"," +
- "\"Sensitivity indices\")");
- engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
-
-
- //Set dataforaov names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
- engine.voidEval("names(dataforaov)<-resultsnames");
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.setwd(outputDirectory);
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\"" +
- param.getSensitivityExport().get(k).getExportFilename() +
- "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\"" +
- param.getSensitivityExport().get(k).getExportFilename() +
- "_SensitivityIndices.csv\")");
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "call_method=\"" + aovCall + "\"," +
- "\"analysis_result\"=list(aovresult,IndSensibilite))");
-
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Random Latin Hypercube method method using" +
- " R needs the 'lhs' package to work)";
- }
-
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRSobol.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRSobol.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRSobol.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,334 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-/**
- * Implementation of Sobol method using R.
- *
- * @author jcouteau
- * @version $Revision: 89 $
- *
- * Last update : $Date: 2009-03-25 13:45:16 +0100 (mer., 25 mars 2009) $ By :
- * $Author: jcouteau $
- */
-public class SensitivityCalculatorRSobol extends AbstractSensitivityAnalysis {
-
- @Doc("the size of the 2 random samples")
- public int param_n = 20;
-
- @Doc("the number of bootstrap replicates.")
- public int param_nboot = 20;
-
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return true;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputdirectory);
-
- RDataFrame dataFrame;
- int nbExperiments;
- int factorNumber = plan.getFactors().size();
- List<Factor> factors = plan.getFactors();
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
-
- testNoDiscrete(factors);
-
- String rInstruction = "a<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)";
- String rCall = String.format(rInstruction, param_nboot);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- try {
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- engine.voidEval("library(sensitivity)");
-
- engine.voidEval("X1<-data.frame(matrix(runif(" + factorNumber + "*"
- + param_n + "),nrow=" + param_n + "))");
- engine.voidEval("X2<-data.frame(matrix(runif(" + factorNumber + "*"
- + param_n + "),nrow=" + param_n + "))");
-
- engine.voidEval(rCall);
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(";
- for (int i = 0; i < factorNumber; i++) {
- String factorName = factors.get(i).getName();
- if (i != (factorNumber - 1)) {
- rInstruction += "\"" + factorName + "\",";
- } else {
- rInstruction += "\"" + factorName + "\"";
- }
- }
-
- rInstruction += ")";
-
- engine.voidEval(rInstruction);
-
- // Get back experiment plan
- dataFrame = (RDataFrame) engine.eval("a$X");
- dataFrame.setVariable("a$X");
-
- nbExperiments = dataFrame.dim()[0];
-
- String isisFactorDistribution = "isis.factor.distribution<-" +
- "data.frame(NomFacteur=c(%s)," +
- "NomDistribution=c(%s)," +
- "ParametreDistribution=c(%s))";
-
- // Creating the vectors.
- String distribution = "";
- String parameters = "";
- String factorNames = "";
-
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = factors.get(i);
- Domain domain = factor.getDomain();
- if (i != 0) {
- distribution += ",";
- parameters += ",";
- factorNames += ",";
- }
-
- distribution += "\"qunif\"";
- ContinuousDomain continuousDomain = (ContinuousDomain) domain;
- double min = continuousDomain.getCalculatorMinBound();
- double max = continuousDomain.getCalculatorMaxBound();
- parameters += "\"[" + min + ";" + max + "]\"";
- factorNames += "\"" + factor.getName() + "\"";
- }
-
- engine.voidEval(String.format(isisFactorDistribution, factorNames,
- distribution, parameters));
-
- engine.voidEval("call<-a$call");
-
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
-
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("isis.simule<-data.frame(a$X)");
-
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- // Setting up the scenarios.
- for (int j = 0; j < nbExperiments; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factorNumber; i++) {
- Factor factor = plan.getFactors().get(i);
- Double dFValue = (Double) dataFrame.get(i, j);
- factor.setValueForIdentifier(dFValue);
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- }
-
- } catch (Exception e) {
- throw new SensitivityException("Can't generate scenarios", e);}
-
-
- thisExperiment.setScenarios(thisExperimentScenarios);
- return thisExperiment;
-
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- SimulationStorage firstStorage = simulationStorages.get(0);
- SimulationParameter param = firstStorage.getParameter();
- int sensitivityNumber = param.getSensitivityExport().size();
- String simulationName = firstStorage.getName().replaceAll("-", "");
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- // Call R
- // Load sensitivity package into R (if package already loaded,
- // nothing happens.
- engine.voidEval("library(sensitivity)");
-
- //Set X1 names
- engine.voidEval("names(X1)<-factornames");
- //Set X2 names
- engine.voidEval("names(X2)<-factornames");
-
- //Set a$X names
- engine.voidEval("names(a$X)<-factornames");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule," +
- sensitivityExport.getExportFilename() + ")");
- }
-
- //adding attribute to isis.Simule
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport = param.getSensitivityExport().get(k);
- String name = sensitivityExport.getExportFilename();
-
- //Compute results
- engine.voidEval("tell(a,y=" + name + ")");
-
- engine.voidEval("row.names(a$S)<-names(a$X)");
- engine.voidEval("row.names(a$T)<-names(a$X)");
- engine.voidEval("row.names(a$V)<-c(\"global\"," +
- "names(a$X),paste(\"-\",names(a$X),sep=\"\"))");
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "call_method=\"tell(a,y=" + name + ")" + "\"," +
- "\"analysis_result\"=a)");
-
- //setting isis.methodAnalyse attributes
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\")");
-
- //Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults<-data.frame(a$X,a$y)");
-
- //Set working directory
- engine.setwd(outputDirectory);
-
- //Export V
- engine.voidEval("write.csv(a$V,\""
- + name
- + "_SensitivityIndices.csv\")");
- //Export DD
- engine.voidEval("write.csv(a$D,\""
- + name + "_D.csv\")");
-
- //Export S
- engine.voidEval("write.csv(a$S,\""
- + name + "_S.csv\")");
-
- //Export results
- engine.voidEval("write.csv(dfresults,\""
- + name + "_Results.csv\")");
- //FIXME export through java to enable export when using Rserve
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
- } catch (Exception e) {
- throw new SensitivityException("Can't evaluate results", e);
- }
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Sobol method using R (use of the R " +
- "sobol2002 method, needs the 'sensitivity' package to work)";
- }
-}
Deleted: trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRegularFractions.java
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRegularFractions.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/SensitivityCalculatorRegularFractions.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -1,390 +0,0 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Jean Couteau
- * %%
- * 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 sensitivityanalysis;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.export.SensitivityExport;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain;
-import fr.ifremer.isisfish.util.Doc;
-import java.io.File;
-import java.util.List;
-import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
-import org.nuiton.j2r.types.RDataFrame;
-
-public class SensitivityCalculatorRegularFractions extends
- AbstractSensitivityAnalysis {
-
- @Doc("the path of the directory where the R function is stored (do not indicate the RegularFractions.R file name)")
- public String param_pathToFunction = "";
-
- @Doc("unique prime number of levels of all input and unit factors")
- public int param_p = 2;
-
- @Doc("number of unit factors (so that there are N=p^r units)")
- public int param_r = 2;
-
- @Doc("resolution of the fraction")
- public int param_resolution = 2;
-
- @Doc("True to be able to modify the code sent to R")
- public boolean param_modifR = false;
-
- /**
- * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
- * continue.
- *
- * @return <tt>true</tt> s'il sait la gerer
- */
- @Override
- public boolean canManageCardinality() {
- return true;
- }
-
- @Override
- public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
- throws SensitivityException {
-
- setIsisFactorsR(plan, outputDirectory);
-
- RDataFrame dataFrame;
- int factorNumber = plan.getFactors().size();
- List<Factor> factors = plan.getFactors();
- SensitivityScenarios thisExperiment = new SensitivityScenarios();
- List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
-
- String factorNames = "";
-
- //Test all factors, if one is discrete, return null
- //Create a string with all factors names
- for (int i = 0; i < factorNumber; i++) {
- Domain domain = factors.get(i).getDomain();
- if (i != 0) {
- factorNames += ",";
- }
-
- factorNames += "\"" + factors.get(i).getName() + "\"";
-
- if (domain instanceof DiscreteDomain) {
- throw new SensitivityException(factors.get(i).getName() +
- " has a discrete domain, this is not acceptable for " +
- "this method.");
- }
- }
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- //Set the working directory (to import the R function)
- engine.setwd(new File(param_pathToFunction));
-
- //Import the function
- engine.voidEval("source(\"regularfractions.R\")");
-
- //Create the instruction
- String rInstruction = "x<-regular.fraction(%s,%s,%s,%s)";
- String rCall = String.format(rInstruction, factors.size(), param_p,
- param_r, param_resolution);
-
- if (param_modifR) {
- rCall = editRInstruction(rCall);
- }
-
- // Run function
- engine.voidEval(rCall);
-
- // Run function
- engine.voidEval("call<-\"" + rCall + "\"");
-
- // Creating the factors vector.
- rInstruction = "factornames<-c(%s)";
- rCall = String.format(rInstruction, factorNames);
-
- engine.voidEval(rCall);
-
-
- // Get back experiment plan
- engine.eval("expPlan<-as.data.frame(x[[1]])");
- dataFrame = (RDataFrame)engine.eval("expPlan");
- dataFrame.setVariable("expPlan");
-
- //Get back the simulation number
- int simulationNumber = (Integer) engine.eval("length(x[[1]][,1])");
-
- // Setting up the scenarios.
- for (int j = 0; j < simulationNumber; j++) {
- Scenario experimentScenario = new Scenario();
- for (int i = 0; i < factors.size(); i++) {
- Factor factor = plan.getFactors().get(i);
- Domain domain = factor.getDomain();
- Double dFValue = (Double)dataFrame.get(i,j);
- if ((domain instanceof MatrixContinuousDomain)
- || (domain instanceof EquationContinuousDomain)) {
- factor.setValueForIdentifier(dFValue);
- } else {
- ContinuousDomain contDomain = (ContinuousDomain)domain;
- Double max = contDomain.getCalculatorMaxBound();
- Double min = contDomain.getCalculatorMinBound();
- Double value = min + (max - min) * dFValue / (param_p - 1);
- factor.setValueForIdentifier(value);
- }
- experimentScenario.addFactor(factor);
- }
- thisExperimentScenarios.add(experimentScenario);
- thisExperiment.setScenarios(thisExperimentScenarios);
- }
-
- String dataframe = "data<-data.frame(";
-
- //Create the factors vectors and the dataframe instruction
- for (int j = 0; j < factorNumber; j++) {
- Factor factor = factors.get(j);
- String factorName = factor.getName().replaceAll(" ", "");
-
- String vector = factorName + "<-c(";
- for (int i = 0; i < simulationNumber; i++) {
- Scenario scenario = thisExperimentScenarios.get(i);
- List<Factor> newFactors = scenario.getFactors();
- Factor factor1 = newFactors.get(j);
-
- if (i < (simulationNumber - 1)) {
- vector += factor1.getDisplayedValue() + ",";
- } else {
- vector += factor1.getDisplayedValue();
- }
-
- }
- vector = vector + ")";
- engine.voidEval(vector);
-
- if (j < factorNumber - 1) {
- dataframe += factorName + "=factor(" + factorName + "),";
- } else {
- dataframe += factorName + "=factor(" + factorName + "))";
- }
-
- }
- engine.voidEval(dataframe);
-
- engine.voidEval("isis.factor.distribution<-c(0.0)");
-
- engine.voidEval("isis.MethodExp<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"call\"=call)");
-
- engine.voidEval("attr(isis.MethodExp," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- //Create isis.Simule
- engine.voidEval("isis.simule<-data.frame(data)");
-
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (RException eee) {
- throw new SensitivityException("Can't generate scenarios", eee);
- }
-
- return thisExperiment;
-
- }
-
- @Override
- public void analyzeResult(List<SimulationStorage> simulationStorages,
- File outputDirectory) throws SensitivityException {
-
- SimulationStorage firstStorage = simulationStorages.get(0);
- SimulationParameter param = firstStorage.getParameter();
- List<SensitivityExport> exports = param.getSensitivityExport();
- int sensitivityNumber = exports.size();
- String simulationName = firstStorage.getName().replaceAll("-", "");
-
- try {
-
- REngine engine = new RProxy();
-
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- //Get back the factors number
- int factorNumber = (Integer) engine.eval("dim(data)[2]");
-
- for (int k = 0; k < sensitivityNumber; k++) {
-
- SensitivityExport sensitivityExport =
- param.getSensitivityExport().get(k);
-
- String rInstruction = createImportInstruction(sensitivityExport,
- simulationStorages);
-
- // Send the simulation results
- engine.voidEval(rInstruction);
-
- //Put results in isis.simule
- engine.voidEval("isis.simule<-data.frame(isis.simule," +
- sensitivityExport.getExportFilename() + ")");
- }
-
- //adding attribute to isis.Simule
- engine.voidEval("attr(isis.simule," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- for (SensitivityExport export : exports) {
-
- String name = export.getExportFilename();
-
- //Create the dataforaov data.frame
- String dataFrame = "dataforaov<-data.frame(data," +
- name + "=" + name + ")";
- engine.voidEval(dataFrame);
-
- //Call aov()
- String aovCall = "aovresult<-aov(" + name + "~(";
- for (int j = 0; j < factorNumber; j++) {
-
- if (j < (factorNumber - 1)) {
- aovCall = aovCall
- + engine.eval("names(data)[" + (j + 1) + "]")
- + "+";
- } else {
- aovCall = aovCall
- + engine.eval("names(data)[" + (j + 1) + "]")
- + ")";
- if (param_resolution <= 4) {
- aovCall += ",data=dataforaov)";
- } else {
- aovCall += "^2,data=dataforaov)";
- }
- }
- }
- engine.voidEval(aovCall);
-
- /*Export the results
- *Export format is csv, data separated by ','
- *Results Export name is sensitivityExportName_Results.csv
- *Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
- */
-
- //Compute Sum of Squares and Sensitivity indices
- engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
- engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
- engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
-
- //Create a data.frame to export sensitivity important results in one file.
- engine.voidEval("exportsensitivity<-data.frame(" +
- "SoS[1:dim(summary(aovresult)[[1]])[1]]," +
- "IndSensibilite[1:dim(summary(aovresult)[[1]])[1]])");
- engine.voidEval("names(exportsensitivity)<-c(" +
- "\"Sum Of Squares\"," +
- "\"Sensitivity indices\")");
- engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
-
- //Set dataforaov names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
- engine.voidEval("names(dataforaov)<-resultsnames");
-
- /*Set the export directory
- *Export directory is the first simulation export directory.
- */
- engine.setwd(outputDirectory);
-
- //Save the results with the scenarios.
- engine.voidEval("write.csv(dataforaov,\"" + name +
- "_Results.csv\")");
-
- //Save the sensitivity indices
- engine.voidEval("write.csv(exportsensitivity,\"" + name +
- "_SensitivityIndices.csv\")");
- //FIXME export through java to enable export when using Rserve (when distant Rserve).
-
- //creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
- "\"isis.factors\"=isis.factors," +
- "\"isis.factor.distribution\"=isis.factor.distribution," +
- "\"isis.simule\"=isis.simule," +
- "\"call_method\"=\"" + aovCall + "\"," +
- "\"analysis_result\"=list(aovresult,IndSensibilite))");
-
- engine.voidEval("attr(isis.methodAnalyse," +
- "\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
- }
-
- //Rename R objects for saving purpose
- renameObjects(engine,simulationName);
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
- } catch (Exception eee) {
- throw new SensitivityException("Can't evaluate results", eee);
- }
-
- }
-
- @Override
- public String getDescription() {
- return "Implementation of Regular fractions method using R";
- }
-
-}
Copied: trunk/src/test/resources/test-database/sensitivityanalysis/Sobol.java (from rev 3968, branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java)
===================================================================
--- trunk/src/test/resources/test-database/sensitivityanalysis/Sobol.java (rev 0)
+++ trunk/src/test/resources/test-database/sensitivityanalysis/Sobol.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -0,0 +1,286 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * %%
+ * 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 sensitivityanalysis;
+
+import java.io.File;
+import java.util.List;
+
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
+
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.j2r.REngine;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.util.Doc;
+
+import org.nuiton.j2r.types.RDataFrame;
+
+/**
+ * Implementation of Sobol method using R.
+ *
+ * @author jcouteau
+ * @version $Revision$
+ *
+ * Last update : $Date$ By :
+ * $Author$
+ */
+public class Sobol extends AbstractSensitivityAnalysis {
+
+ @Doc("the size of the 2 random samples")
+ public int param_n = 20;
+
+ @Doc("the number of bootstrap replicates.")
+ public int param_nboot = 20;
+
+ @Doc("True to be able to modify the code sent to R")
+ public boolean param_modifR = false;
+
+ /**
+ * Retourne vrai si le calculateur sait gerer la cardinalité des facteurs
+ * continue.
+ *
+ * @return <tt>true</tt> s'il sait la gerer
+ */
+ @Override
+ public boolean canManageCardinality() {
+ return true;
+ }
+
+ @Override
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
+ throws SensitivityException {
+
+ setIsisFactorsR(plan, outputDirectory);
+
+ RDataFrame dataFrame;
+ int nbExperiments;
+ int factorNumber = plan.getFactors().size();
+ List<Factor> factors = plan.getFactors();
+ SensitivityScenarios thisExperiment = new SensitivityScenarios();
+ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
+
+ checkAllFactorContinuous(factors);
+
+ String rInstruction = "isis.methodAnalyse<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)";
+ String rCall = String.format(rInstruction, param_nboot);
+
+ if (param_modifR) {
+ rCall = editRInstruction(rCall);
+ }
+
+ try {
+ REngine engine = openEngine(outputDirectory);
+
+ engine.voidEval("library(sensitivity)");
+
+ String x = "<-data.frame(matrix(c(";
+
+ for (int i = 0; i < factorNumber; i++) {
+ x += "runif("+param_n+"),";
+ }
+
+ x = StringUtils.removeEnd(x, ",");
+
+ x+="),nrow="+param_n+"))";
+
+ engine.voidEval("X1"+x);
+ engine.voidEval("X2"+x);
+
+ engine.voidEval(rCall);
+
+ // Creating the factors vector.
+ rInstruction = "factornames<-c(";
+ for (int i = 0; i < factorNumber; i++) {
+ String factorName = factors.get(i).getName();
+ if (i != (factorNumber - 1)) {
+ rInstruction += "\"" + factorName + "\",";
+ } else {
+ rInstruction += "\"" + factorName + "\"";
+ }
+ }
+
+ rInstruction += ")";
+
+ engine.voidEval(rInstruction);
+
+ // Get back experiment plan
+ dataFrame = (RDataFrame) engine.eval("isis.methodAnalyse$X");
+ dataFrame.setVariable("isis.methodAnalyse$X");
+
+ nbExperiments = dataFrame.dim()[0];
+
+ engine.voidEval(getIsisFactorDistribution(factors));
+
+ engine.voidEval("call<-isis.methodAnalyse$call");
+
+ engine.voidEval("isis.methodExp<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"call\"=call)");
+
+ engine.voidEval("attr(isis.methodExp," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse$X)");
+
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
+
+ // Setting up the scenarios.
+ for (int j = 0; j < nbExperiments; j++) {
+ Scenario experimentScenario = new Scenario();
+ for (int i = 0; i < factorNumber; i++) {
+ Factor factor = plan.getFactors().get(i);
+ Double dFValue = (Double) dataFrame.get(i, j);
+ factor.setValueForIdentifier(dFValue);
+ experimentScenario.addFactor(factor);
+ }
+ thisExperimentScenarios.add(experimentScenario);
+ }
+
+ closeEngine(engine, outputDirectory);
+
+ } catch (Exception e) {
+ throw new SensitivityException("Can't generate scenarios", e);
+ }
+
+ thisExperiment.setScenarios(thisExperimentScenarios);
+ return thisExperiment;
+
+ }
+
+ @Override
+ public void analyzeResult(List<SimulationStorage> simulationStorages,
+ File outputDirectory) throws SensitivityException {
+
+ SimulationStorage firstStorage = simulationStorages.get(0);
+ SimulationParameter param = firstStorage.getParameter();
+ int sensitivityNumber = param.getSensitivityExport().size();
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
+
+ try {
+
+ REngine engine = openEngine(outputDirectory);
+
+ // Call R
+ // Load sensitivity package into R (if package already loaded,
+ // nothing happens.
+ engine.voidEval("library(sensitivity)");
+
+ //Set X1 names
+ engine.voidEval("names(X1)<-factornames");
+ //Set X2 names
+ engine.voidEval("names(X2)<-factornames");
+
+ //Set a$X names
+ engine.voidEval("names(a$X)<-factornames");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport =
+ param.getSensitivityExport().get(k);
+
+ String rInstruction = createImportInstruction(sensitivityExport,
+ simulationStorages);
+
+ // Send the simulation results
+ engine.voidEval(rInstruction);
+
+ //Put results in isis.simule
+ engine.voidEval("isis.simule<-data.frame(isis.simule," +
+ sensitivityExport.getExportFilename() + ")");
+ }
+
+ //adding attribute to isis.Simule
+ engine.voidEval("attr(isis.simule," +
+ "\"nomModel\")<-\"isis-fish-externe-R\"");
+
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
+
+ for (int k = 0; k < sensitivityNumber; k++) {
+
+ SensitivityExport sensitivityExport = param.getSensitivityExport().get(k);
+ String name = sensitivityExport.getExportFilename();
+
+ //Compute results
+ engine.voidEval("tell(a,y=" + name + ")");
+
+ engine.voidEval("row.names(isis.methodAnalyse$S)<-names(isis.methodAnalyse$X)");
+ engine.voidEval("row.names(isis.methodAnalyse$T)<-names(isis.methodAnalyse$X)");
+ engine.voidEval("row.names(isis.methodAnalyse$V)<-c(\"global\"," +
+ "names(isis.methodAnalyse$X),paste(\"-\",names(isis.methodAnalyse$X),sep=\"\"))");
+
+ //creating isis.methodAnalyse
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
+ "\"isis.factors\"=isis.factors," +
+ "\"isis.factor.distribution\"=isis.factor.distribution," +
+ "\"isis.simule\"=isis.simule," +
+ "call_method=\"tell(a,y=" + name + ")" + "\"," +
+ "\"analysis_result\"=a)");
+
+ //setting isis.methodAnalyse attributes
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
+ "\"nomModel\")<-\"isis-fish-externe-R\")");
+
+ //Create the data.frame of scenarios and results for export purpose
+ engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X,isis.methodAnalyse$y)");
+
+ //Set working directory
+ engine.setwd(outputDirectory);
+
+ //Export V
+ engine.voidEval("write.csv(isis.methodAnalyse$V,\""
+ + name
+ + "_SensitivityIndices.csv\")");
+ //Export DD
+ engine.voidEval("write.csv(isis.methodAnalyse$D,\""
+ + name + "_D.csv\")");
+
+ //Export S
+ engine.voidEval("write.csv(isis.methodAnalyse$S,\""
+ + name + "_S.csv\")");
+
+ //Export results
+ engine.voidEval("write.csv(dfresults,\""
+ + name + "_Results.csv\")");
+ //FIXME export through java to enable export when using Rserve
+
+ }
+
+ closeEngine(engine, outputDirectory);
+ } catch (Exception e) {
+ throw new SensitivityException("Can't evaluate results", e);
+ }
+ }
+
+ @Override
+ public String getDescription() {
+ return "Implementation of Sobol method using R (use of the R " +
+ "sobol2002 method, needs the 'sensitivity' package to work)";
+ }
+}
Modified: trunk/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java
===================================================================
--- trunk/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java 2014-04-17 15:26:04 UTC (rev 3968)
+++ trunk/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java 2014-04-17 16:48:13 UTC (rev 3969)
@@ -29,6 +29,7 @@
import java.util.Collections;
import java.util.List;
+import fr.ifremer.isisfish.util.ScriptUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixIterator;
@@ -384,7 +385,7 @@
exportHisto += experiences.getExperience(number).q1 + ";"
+ experiences.getExperience(number).q2 + ";"
+ experiences.getExperience(number).criteria + "\n";
- org.nuiton.util.FileUtil.writeString(exportHistoric, exportHisto);
+ ScriptUtil.writeString(exportHistoric, exportHisto);
return doNext;
}// fin du after simulation
1
0
r3968 - in branches/4.0.1/src: main/java/fr/ifremer/isisfish/simulator main/java/fr/ifremer/isisfish/vcs main/resources/templates/script test/java/fr/ifremer/isisfish/simulator test/java/fr/ifremer/isisfish/simulator/sensitivity test/java/fr/ifremer/isisfish/vcs test/resources/test-database/sensitivityanalysis
by echatellier@users.forge.codelutin.com 17 Apr '14
by echatellier@users.forge.codelutin.com 17 Apr '14
17 Apr '14
Author: echatellier
Date: 2014-04-17 17:26:04 +0200 (Thu, 17 Apr 2014)
New Revision: 3968
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3968
Log:
Fix all tests
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java
branches/4.0.1/src/main/resources/templates/script/optimization.ftl
branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java
branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java
branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java
branches/4.0.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java
branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -80,7 +80,7 @@
/**
* Cette methode est appelee lorsqu'il n'y a plus de simulation a faire
- * (init ou getNextSimulation n'ont pas fait appel a context.addSimulation)
+ * (init ou nextSimulation n'ont pas fait appel a context.addSimulation)
* @param context
*/
void finish(OptimizationContext context) throws Exception;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -809,9 +809,9 @@
SVNDiffClient diffClient = getSVNManager().getDiffClient();
diffClient.doDiff(file, // File path1,
- SVNRevision.WORKING, // SVNRevision rN,
+ SVNRevision.HEAD, // SVNRevision rN,
file, // File path2,
- SVNRevision.HEAD, // SVNRevision rM,
+ SVNRevision.WORKING, // SVNRevision rM,
SVNDepth.IMMEDIATES, // SVNDepth depth,
false, // boolean useAncestry,
byte1, // OutputStream result,
Modified: branches/4.0.1/src/main/resources/templates/script/optimization.ftl
===================================================================
--- branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-17 15:26:04 UTC (rev 3968)
@@ -106,28 +106,27 @@
/**
* La premiere generation doit etre construite dans cette methode
- * via des appels a context.newSimulation(...)
+ * dans l'init.
*
* @param context
*/
public void firstSimulation(OptimizationContext context) throws Exception {
- // TODO
+
}
/**
* Génère une nouvelle série de simulation suivant le context d'optimisation.
- * Pour cela vous devez appeler context.newSimulation(...) pour ajouter
- * des simulations pour la prochaine generation.
- *
+ *
* @param context context
*/
- public void getNextSimulation(OptimizationContext context) {
- // TODO
+ public void nextSimulation(OptimizationContext context) {
+
}
/**
- * Cette methode est appelee après chaque serie de simulation
- * soit apres firstSimulation et nextSimulation
+ * Cette methode est appelee après chaque serie de simulation soit apres firstSimulation et
+ * nextSimulation.
+ *
* @param context
*/
public void endSimulation(OptimizationContext context) {
@@ -136,9 +135,10 @@
/**
* Cette methode est appelee lorsqu'il n'y a plus de simulation a faire
- * (firstSimulation ou nextSimulation n'ont pas fait appel a context.newSimulation)
+ * (init ou nextSimulation n'ont pas fait appel a context.addSimulation)
* @param context
*/
- public void finish(OptimizationContext context) throws Exception;
-
+ public void finish(OptimizationContext context) throws Exception {
+
+ }
}
Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java
===================================================================
--- branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -65,8 +65,9 @@
Assert.assertEquals("", params.getRegionName());
Assert.assertEquals(1, params.getNumberOfYear());
Assert.assertEquals("DefaultSimulator.java", params.getSimulatorName());
- Assert.assertTrue(params.getUseOptimization());
+ Assert.assertTrue(params.getUseCache());
Assert.assertFalse(params.getUseStatistic());
+ Assert.assertFalse(params.getUseOptimization());
Assert.assertTrue(params.getStrategies().isEmpty());
Assert.assertTrue(params.getPopulations().isEmpty());
// Not easy to test it
Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java
===================================================================
--- branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/FactorTest.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -134,128 +134,6 @@
* @see MatrixND
*/
@Test
- public void testMatrixContinuousFactor() {
-
- // matrix 1
- MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix1.setValue(new int[] { 0, 0 }, 1);
- matrix1.setValue(new int[] { 0, 1 }, -14);
- matrix1.setValue(new int[] { 1, 0 }, 21);
- matrix1.setValue(new int[] { 1, 1 }, 2);
- matrix1.setValue(new int[] { 2, 0 }, 3);
- matrix1.setValue(new int[] { 2, 1 }, -1);
-
- // matrix minBound
- MatrixND minBound = MatrixFactory.getInstance().create("test1",
- new int[]{3, 2}, new String[]{"col1", "col2"});
- minBound.setValue(new int[]{0, 0}, 0.9);
- minBound.setValue(new int[]{0, 1}, -15.4);
- minBound.setValue(new int[]{1, 0}, 18.9);
- minBound.setValue(new int[]{1, 1}, 1.8);
- minBound.setValue(new int[]{2, 0}, 2.7);
- minBound.setValue(new int[]{2, 1}, -1.1);
-
- // matrix maxBound
- MatrixND maxBound = MatrixFactory.getInstance().create("test1",
- new int[]{3, 2}, new String[]{"col1", "col2"});
- maxBound.setValue(new int[]{0, 0}, 1.1);
- maxBound.setValue(new int[]{0, 1}, -12.6);
- maxBound.setValue(new int[]{1, 0}, 23.1);
- maxBound.setValue(new int[]{1, 1}, 2.2);
- maxBound.setValue(new int[]{2, 0}, 3.3);
- maxBound.setValue(new int[]{2, 1}, -0.9);
-
- // factor
- Factor factor = new Factor("testmatrix");
- ContinuousDomain domain = new ContinuousDomain(Distribution.QUNIFPC);
- domain.addDistributionParam("reference", matrix1);
- domain.addDistributionParam("coefficient", 0.1);
- factor.setDomain(domain);
- factor.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor.setValueForIdentifier(0.1);
-
- Assert.assertEquals(0.92, ((MatrixND)factor.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.76, ((MatrixND)factor.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
- Assert.assertEquals(0.1, (Double)factor.getDisplayedValue(),0);
-
- // matrix 2
- MatrixND matrix2 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix2.setValue(new int[] { 0, 0 }, 1);
- matrix2.setValue(new int[] { 0, 1 }, -14);
- matrix2.setValue(new int[] { 1, 0 }, 21);
- matrix2.setValue(new int[] { 1, 1 }, 2);
- matrix2.setValue(new int[] { 2, 0 }, 3);
- matrix2.setValue(new int[] { 2, 1 }, -1);
-
- // factor 2
- Factor factor2 = new Factor("testmatrix");
- ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC);
- domain2.addDistributionParam("reference", matrix2);
- domain2.addDistributionParam("coefficient", 0.1);
- factor2.setDomain(domain2);
- factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor2.setValueForIdentifier(0.2);
-
- Assert.assertEquals(0.94, ((MatrixND)factor2.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.82, ((MatrixND)factor2.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
-
- // matrix 3
- MatrixND matrix3 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix3.setValue(new int[] { 0, 0 }, 1);
- matrix3.setValue(new int[] { 0, 1 }, -14);
- matrix3.setValue(new int[] { 1, 0 }, 21);
- matrix3.setValue(new int[] { 1, 1 }, 2);
- matrix3.setValue(new int[] { 2, 0 }, 3);
- matrix3.setValue(new int[] { 2, 1 }, -1);
-
- // factor 3
- Factor factor3 = new Factor("testmatrix");
- ContinuousDomain domain3 = new ContinuousDomain(Distribution.QUNIFPC);
- domain3.addDistributionParam("reference", matrix3);
- domain3.addDistributionParam("coefficient", 0.2);
- factor3.setDomain(domain3);
- factor3.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor3.setValueForIdentifier(0.1);
-
- Assert.assertEquals(0.84, ((MatrixND)factor3.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(2.52, ((MatrixND)factor3.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
-
- // matrix 4
- MatrixND matrix4 = MatrixFactory.getInstance().create("test1",
- new int[] { 3, 2 }, new String[] { "col1", "col2" });
- matrix4.setValue(new int[] { 0, 0 }, 4);
- matrix4.setValue(new int[] { 0, 1 }, -2);
- matrix4.setValue(new int[] { 1, 0 }, 42);
- matrix4.setValue(new int[] { 1, 1 }, 10);
- matrix4.setValue(new int[] { 2, 0 }, 7);
- matrix4.setValue(new int[] { 2, 1 }, 0);
-
- // factor 4
- Factor factor4 = new Factor("testmatrix");
- ContinuousDomain domain4 = new ContinuousDomain(Distribution.QUNIFMM);
- domain4.addDistributionParam("min", matrix3);
- domain4.addDistributionParam("max", matrix4);
- factor4.setDomain(domain4);
- factor4.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
- factor4.setValueForIdentifier(0.5);
-
- Assert.assertEquals(2.5, ((MatrixND)factor4.getValue()).getValue(new int[] { 0, 0 }),0.0000001);
- Assert.assertEquals(5.0, ((MatrixND)factor4.getValue()).getValue(new int[] { 2, 0 }),0.0000001);
-
- if (log.isInfoEnabled()) {
- log.info("factor#toString() = " + factor);
- }
- }
-
- /**
- * Test factor with matrix.
- *
- * @see MatrixND
- */
- @Test
public void testEquationContinuousFactor() {
// factor
Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java
===================================================================
--- branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -41,8 +41,6 @@
import org.junit.Test;
import org.nuiton.j2r.RException;
import org.nuiton.j2r.RProxy;
-import org.nuiton.math.matrix.MatrixFactory;
-import org.nuiton.math.matrix.MatrixND;
import fr.ifremer.isisfish.AbstractIsisFishTest;
import fr.ifremer.isisfish.IsisFishException;
@@ -123,7 +121,7 @@
return factor2;
}
- protected Factor getContinuousMatrixUniformPCFactor() {
+ /*protected Factor getContinuousMatrixUniformPCFactor() {
// matrix 1
MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
new int[] { 3, 2 }, new String[] { "col1", "col2" });
@@ -143,7 +141,7 @@
factor2.setDomain(domain2);
factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim");
return factor2;
- }
+ }*/
protected Factor getContinuousDoubleCauchyFactor() {
// factor 1, min/max on int
@@ -235,7 +233,7 @@
}
}
- // matrix uniform
+ /* matrix uniform
designPlan = getDesignPlan(getContinuousMatrixUniformPCFactor(), getContinuousMatrixUniformPCFactor());
scenarii = script.compute(designPlan, simulationsDir);
Assert.assertTrue(scenarii.getScenarios().size() >= 3); // random, can be 9, 12
@@ -244,7 +242,7 @@
MatrixND value = (MatrixND)factor.getValue();
Assert.assertTrue(value.getValue(0, 0) >= 0.9 && value.getValue(0, 0) <= 1.1);
}
- }
+ }*/
// check fail is discrete
designPlan = getDesignPlan(getDiscreteIntFactor(),getContinuousDoubleUniformMMFactor());
Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- branches/4.0.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -513,10 +513,7 @@
String result = vcs.getDiff(firstFile);
// quelques tests sur la sortie, pas d'égalité parfaite
- // TODO echatellier 20120607 depuis svnkit 1.7, le diff
- // ne mentionne plus le nom du fichier. Ca doit être un bug, mais
- // dans le cas d'isis c'est pas tres grave
- //Assert.assertTrue(result.indexOf("version.txt") > 0);
+ Assert.assertTrue(result.indexOf("version.txt") > 0);
Assert.assertTrue(result.indexOf("-Version 3.1.0") > 0);
Assert.assertTrue(result.indexOf("+Version 3.2.1") > 0);
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -32,7 +32,6 @@
import org.apache.commons.lang.StringUtils;
import org.nuiton.j2r.REngine;
import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
import org.nuiton.j2r.types.RDataFrame;
import java.io.File;
@@ -77,12 +76,8 @@
int factorsNb = factors.size();
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
engine.voidEval("library(AlgDesign)");
//Create a list of the factors under the form factor1=factor1,...
@@ -107,15 +102,15 @@
Domain domain = factor.getDomain();
if (domain instanceof ContinuousDomain) {
- ContinuousDomain contDomain = (ContinuousDomain) domain;
+ //ContinuousDomain contDomain = (ContinuousDomain) domain;
int card = factor.getCardinality();
-// Double min = contDomain.getCalculatorMinBound();
-// Double max = contDomain.getCalculatorMaxBound();
-//
-// for (int i = 0; i < card; i++) {
-// //add the ith value
-// vector += (min + (i * (max - min) / (card - 1))) + ",";
-// }
+ Double min = 0.0;
+ Double max = 1.0;
+
+ for (int i = 0; i < card; i++) {
+ //add the ith value
+ vector += (min + (i * (max - min) / (card - 1))) + ",";
+ }
} else {
int nbValues = ((DiscreteDomain) domain).getValuesCount();
for (int i = 0; i < nbValues; i++) {
@@ -147,11 +142,11 @@
engine.voidEval(rCall);
if (param_order ==1 ){
- rCall = "x<-optFederov(~(%s),data=expandgrid, " +
+ rCall = "isis.methodAnalyse<-optFederov(~(%s),data=expandgrid, " +
"approximate =FALSE, center=F, criterion = \"D\"," +
"nRepeats=10)";
} else {
- rCall = "x<-optFederov(~(%s)^"+param_order+",data=expandgrid, " +
+ rCall = "isis.methodAnalyse<-optFederov(~(%s)^"+param_order+",data=expandgrid, " +
"approximate =FALSE, center=F, criterion = \"D\"," +
"nRepeats=10)";
}
@@ -166,10 +161,10 @@
engine.voidEval(rCall);
- engine.eval("expPlan<-as.data.frame(x$design)");
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse$design)");
RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan");
dataFrame.setVariable("expPlan");
- int nbExperiments = (Integer)engine.eval("dim(x$design)[1]");
+ int nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse$design)[1]");
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
for (int j = 0; j < nbExperiments; j++) {
@@ -199,11 +194,9 @@
parameters += ",";
}
if (domain instanceof ContinuousDomain){
- ContinuousDomain contDomain = (ContinuousDomain)domain;
+ //ContinuousDomain contDomain = (ContinuousDomain)domain;
distribution += "\"qunif\"";
-// parameters += "\"[" + contDomain.getMinBound()
-// + ";" + contDomain.getMaxBound()
-// + "]\"";
+ parameters += "\"[0.0;1.0]\"";
} else {
DiscreteDomain discDomain = (DiscreteDomain)domain;
distribution += "\"discrete\"";
@@ -211,7 +204,7 @@
Map<Object, Object> values = discDomain.getValues();
int count=0;
Collection<Object> collecValues = values.values();
- for (Object value:collecValues){
+ for (Object value:collecValues) {
if (count!=0){
parameters += ",";
}
@@ -225,22 +218,19 @@
distribution, parameters));
engine.voidEval("call<-\"" + rCall + "\"");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
+ engine.voidEval("attr(isis.methodExp," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-x$design");
+ engine.voidEval("isis.simule<-isis.methodAnalyse$design");
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
+ closeEngine(engine, outputDirectory);
-
} catch (RException eee) {
throw new SensitivityException("Can't generate scenarios", eee);
}
@@ -254,22 +244,16 @@
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
//Get back the factors number
- int factorNumber = (Integer)engine.eval("dim(x$design)[2]");
+ int factorNumber = (Integer)engine.eval("dim(isis.methodAnalyse$design)[2]");
SimulationParameter param = simulationStorages.get(0).getParameter();
int sensitivityNumber = param.getSensitivityExport().size();
- SimulationStorage firstStorage = simulationStorages.get(0);
+ String firstStorageName = outputDirectory.getName().replaceAll("-", "");
- String firstStorageName = firstStorage.getName().replaceAll("-", "");
-
for (int k = 0; k < sensitivityNumber; k++) {
SensitivityExport sensitivityExport =
@@ -288,7 +272,7 @@
+ name + ")");
//Create the dataforaov data.frame
- String dataFrame = "dataforaov<-data.frame(x$design,"
+ String dataFrame = "dataforaov<-data.frame(isis.methodAnalyse$design,"
+ name + "=" + name + ")";
engine.voidEval(dataFrame);
@@ -297,11 +281,11 @@
for (int j = 0; j < factorNumber; j++) {
if (j < (factorNumber - 1)) {
aovCall = aovCall
- + engine.eval("names(x$design)[" + (j + 1) + "]")
+ + engine.eval("names(isis.methodAnalyse$design)[" + (j + 1) + "]")
+ "+";
} else {
aovCall = aovCall
- + engine.eval("names(x$design)[" + (j + 1) + "]")
+ + engine.eval("names(isis.methodAnalyse$design)[" + (j + 1) + "]")
+ ")";
if(param_order>1){
aovCall+="^" + param_order + ",data=dataforaov)";
@@ -318,7 +302,7 @@
*Sensitivity Indices export name is sensitivityExportName_SensitivityIndices.csv
*/
-//Compute Sum of Squares and Sensitivity indices
+ //Compute Sum of Squares and Sensitivity indices
engine.voidEval("SoS<-summary(aovresult)[[1]][1:dim(summary(aovresult)[[1]])[1],2]");
engine.voidEval("names(SoS)<-dimnames(summary(aovresult)[[1]])[[1]][1:dim(summary(aovresult)[[1]])[1]]");
engine.voidEval("IndSensibilite<-SoS/sum(SoS)");
@@ -357,39 +341,20 @@
//FIXME export through java to enable export when using Rserve (when distant Rserve).
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", firstStorageName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
"\"call_method\"=\"" + aovCall + "\"," +
"\"analysis_result\"=list(aovresult,IndSensibilite))");
- engine.voidEval("attr(isis.methodAnalyse," +
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- firstStorageName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine, firstStorageName);
+ closeEngine(engine, outputDirectory);
-
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(firstStorageName)){
- engine.remove(object);
- }
- }
-
- //Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -24,20 +24,17 @@
import java.io.File;
import java.util.List;
-import java.util.Map;
import fr.ifremer.isisfish.simulator.sensitivity.*;
-import org.apache.commons.lang3.StringUtils;
+
import org.nuiton.j2r.REngine;
import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
import fr.ifremer.isisfish.util.Doc;
+
import org.nuiton.j2r.types.RDataFrame;
/**
@@ -90,7 +87,7 @@
// only run with continuous
checkAllFactorContinuous(factors);
- String rInstruction = "a<-fast99(" +
+ String rInstruction = "isis.methodAnalyse<-fast99(" +
"model=NULL," +
"factors=%s, " +
"n=%s, " +
@@ -106,12 +103,8 @@
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- engine.clearSession();
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
// Load sensitivity package into R (if package already loaded,
// nothing happens.
engine.voidEval("library(sensitivity)");
@@ -135,35 +128,31 @@
engine.voidEval(rInstruction);
// Get back experiment plan
- dataFrame = (RDataFrame) engine.eval("a$X");
- dataFrame.setVariable("a$X");
+ dataFrame = (RDataFrame) engine.eval("isis.methodAnalyse$X");
+ dataFrame.setVariable("isis.methodAnalyse$X");
- nbExperiments = (Integer)engine.eval("dim(a$X)[1]");
+ nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse$X)[1]");
engine.voidEval(getIsisFactorDistribution(factors));
- engine.voidEval("call<-a$call");
+ engine.voidEval("call<-isis.methodAnalyse$call");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" +
+ engine.voidEval("attr(isis.methodExp,\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-data.frame(a$X)");
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse$X)");
engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
// Setting up the scenarios.
for (int j = 0; j < nbExperiments; j++) {
Scenario experimentScenario = new Scenario();
@@ -175,6 +164,8 @@
thisExperimentScenarios.add(experimentScenario);
thisExperiment.setScenarios(thisExperimentScenarios);
}
+
+ closeEngine(engine, outputDirectory);
} catch (RException eee) {
throw new SensitivityException("Can't generate scenarios", eee);
}
@@ -186,20 +177,13 @@
public void analyzeResult(List<SimulationStorage> simulationStorages,
File outputDirectory) throws SensitivityException {
- SimulationStorage storage = simulationStorages.get(0);
- String simulationName = storage.getName().replaceAll("-", "");
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
+ // for export
engine.setwd(outputDirectory);
// Call R
@@ -230,7 +214,7 @@
//adding attribute to isis.Simule
engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
for (int k = 0; k < sensitivityNumber; k++) {
@@ -239,70 +223,52 @@
.getExportFilename();
//Compute results
- engine.voidEval("tell(a,y=" + name + ")");
+ engine.voidEval("tell(isis.methodAnalyse,y=" + name + ")");
- engine.voidEval("names(a$V)<-factornames");
- engine.voidEval("names(a$X)<-factornames");
- engine.voidEval("names(a$D1)<-factornames");
- engine.voidEval("names(a$Dt)<-factornames");
+ engine.voidEval("names(isis.methodAnalyse$V)<-isis.factor.distribution$NomFacteur");
+ engine.voidEval("names(isis.methodAnalyse$X)<-isis.factor.distribution$NomFacteur");
+ engine.voidEval("names(isis.methodAnalyse$D1)<-isis.factor.distribution$NomFacteur");
+ engine.voidEval("names(isis.methodAnalyse$Dt)<-isis.factor.distribution$NomFacteur");
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
- "call_method=\"tell(a,y=" + name + ")" + "\"," +
- "\"analysis_result\"=a)");
+ "call_method=\"tell(isis.methodAnalyse,y=" + name + ")" + "\"," +
+ "\"analysis_result\"=isis.methodAnalyse)");
//setting isis.methodAnalyse attributes
- engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" +
+ engine.voidEval("attr(" + exportMethodAnalyse + ",\"nomModel\")<-" +
"\"isis-fish-externe-R\")");
//Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults<-data.frame(a$X,a$y)");
+ engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X,isis.methodAnalyse$y)");
//Set working directory
engine.setwd(outputDirectory);
//Export V
- engine.voidEval("write.csv(a$V,\"" + name + "_V.csv\")");
+ engine.voidEval("write.csv(isis.methodAnalyse$V,\"" + name + "_V.csv\")");
//Export D1
- engine.voidEval("write.csv(a$D1,\"" + name + "_D1.csv\")");
+ engine.voidEval("write.csv(isis.methodAnalyse$D1,\"" + name + "_D1.csv\")");
//Export Dt
- engine.voidEval("write.csv(a$Dt,\"" + name + "_Dt.csv\")");
+ engine.voidEval("write.csv(isis.methodAnalyse$Dt,\"" + name + "_Dt.csv\")");
//Set dfresults names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
- engine.voidEval("names(dfresults)<-resultsnames");
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+ engine.voidEval("names(dfresults)<-isis.factor.distribution$NomFacteur");
//Export results
engine.voidEval("write.csv(dfresults,\"" + name +
"_Results.csv\")");
//FIXME export through java to enable export when using Rserve
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse" +
- "<-isis.methodAnalyse";
-
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
}
+
+ closeEngine(engine, outputDirectory);
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(simulationName)){
- engine.remove(object);
- }
- }
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -28,10 +28,10 @@
import fr.ifremer.isisfish.simulator.sensitivity.*;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.util.Doc;
+
import org.apache.commons.lang3.StringUtils;
import org.nuiton.j2r.REngine;
import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
import org.nuiton.j2r.types.RDataFrame;
import java.io.File;
@@ -112,7 +112,7 @@
bsup += 1;
}
- String rInstruction = "a<-morris(model=NULL,factors=c(%s),r=%s," +
+ String rInstruction = "isis.methodAnalyse<-morris(model=NULL,factors=c(%s),r=%s," +
"design=list(type=\"oat\",levels=c(%s),grid.jump=c(%s))," +
"binf=c(%s),bsup=c(%s))";
@@ -123,17 +123,9 @@
rCall = editRInstruction(rCall);
}
- REngine engine;
-
try {
- engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
// Load sensitivity package into R (if package already loaded,
// nothing happens.
engine.voidEval("library(sensitivity)");
@@ -151,7 +143,7 @@
engine.setwd(outputDirectory);
// Get back experiment plan
- engine.eval("expPlan<-as.data.frame(a$X)");
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse$X)");
dataFrame = (RDataFrame) engine.eval("expPlan");
dataFrame.setVariable("expPlan");
@@ -188,22 +180,18 @@
engine.voidEval(String.format(factorDistribution, factorNames,
distribution, parameters));
- engine.voidEval("call<-a$call");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("call<-isis.methodAnalyse$call");
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp,\"nomModel\")<-" +
+ engine.voidEval("attr(isis.methodExp,\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
engine.voidEval("isis.simule<-data.frame(expPlan)");
engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
// Setting up the scenarios.
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
for (int j = 0; j < nbExperiments; j++) {
@@ -216,6 +204,8 @@
thisExperimentScenarios.add(experimentScenario);
thisExperiment.setScenarios(thisExperimentScenarios);
}
+
+ closeEngine(engine, outputDirectory);
} catch (RException eee) {
throw new SensitivityException("Can't generate scenarios", eee);
@@ -229,20 +219,11 @@
public void analyzeResult(List<SimulationStorage> simulationStorages,
File outputDirectory) throws SensitivityException {
- SimulationStorage storage = simulationStorages.get(0);
- String simulationName = storage.getName().replaceAll("-", "");
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
- REngine engine = null;
-
try {
- engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
// Call R
// Load sensitivity package into R (if package already loaded,
// nothing happens.
@@ -275,7 +256,7 @@
engine.voidEval("attr(isis.simule,\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
for (int k = 0; k < sensitivityNumber; k++) {
@@ -284,34 +265,35 @@
.getExportFilename();
//Compute results
- engine.voidEval("tell(a,y=" + name + ")");
+ engine.voidEval("tell(isis.methodAnalyse,y=" + name + ")");
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
//"\"isis.factors\"=isis.factors," +
//"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
- "\"call_method\"=\"tell(a,y=" + name + ")" + "\"," +
- "\"analysis_result\"=a)");
+ "\"call_method\"=\"tell(isis.methodAnalyse,y=" + name + ")" + "\"," +
+ "\"analysis_result\"=isis.methodAnalyse)");
//setting isis.methodAnalyse attributes
- engine.voidEval("attr(isis.methodAnalyse,\"nomModel\")<-" +
+ engine.voidEval("attr(" + exportMethodAnalyse + ",\"nomModel\")<-" +
"\"isis-fish-externe-R\"");
// Get back the sensitivity results, mu, mu star and sigma.
- engine.voidEval("mu<-apply(a$ee, 2, mean)");
- engine.voidEval("mu.star <- apply(a$ee, 2, function(a) mean(abs(a)))");
- engine.voidEval("sigma <- apply(a$ee, 2, sd)");
+ engine.voidEval("mu<-apply(isis.methodAnalyse$ee, 2, mean)");
+ engine.voidEval("mu.star <- apply(isis.methodAnalyse$ee, 2, function(a) mean(abs(a)))");
+ engine.voidEval("sigma <- apply(isis.methodAnalyse$ee, 2, sd)");
//Create the data.frame of sensitivity indices for export purpose
engine.voidEval("df<-data.frame(mu,mu.star,sigma)");
- engine.voidEval("row.names(df)<-factornames");
+ engine.voidEval("row.names(df)<-isis.factor.distribution$NomFacteur");
//Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults<-data.frame(a$X," + name + ")");
+ engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X," + name + ")");
//Set dfresults names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
engine.voidEval("names(dfresults)<-resultsnames");
//Export sensitivity indices
@@ -323,28 +305,10 @@
"\"" + name + "_Results.csv\")");
//FIXME export through java to enable export when using Rserve
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
-
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine,simulationName);
+ closeEngine(engine, outputDirectory);
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(simulationName)){
- engine.remove(object);
- }
- }
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -26,19 +26,13 @@
import java.util.List;
import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
import fr.ifremer.isisfish.util.Doc;
+
import org.nuiton.j2r.types.RDataFrame;
/**
@@ -70,10 +64,10 @@
}
@Override
- public SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
throws SensitivityException {
- setIsisFactorsR(plan, outputdirectory);
+ setIsisFactorsR(plan, outputDirectory);
int factorNumber = plan.getFactors().size();
List<Factor> factors = plan.getFactors();
@@ -85,19 +79,12 @@
checkAllFactorContinuous(factors);
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
-
- //Set working directory to get Isis R session
- engine.loadRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
//Load the lhs library
engine.voidEval("library(lhs)");
- String rInstruction = "x<-optimumLHS(n=%s,k=%s,maxSweeps=%s,eps=%s)";
+ String rInstruction = "isis.methodAnalyse<-optimumLHS(n=%s,k=%s,maxSweeps=%s,eps=%s)";
String rCall = String.format(rInstruction, param_simulationNumber,
factorNumber, param_MaxSweeps, param_eps);
@@ -110,7 +97,7 @@
engine.voidEval(rCall);
// Get back experiment plan
- engine.eval("expPlan<-as.data.frame(x)");
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)");
dataFrame = (RDataFrame)engine.eval("expPlan");
dataFrame.setVariable("expPlan");
@@ -128,21 +115,21 @@
engine.voidEval(getIsisFactorDistribution(factors));
- engine.voidEval("call<-" + "\"x<-optimumLHS("
+ engine.voidEval("call<-" + "\"isis.methodAnalyse<-optimumLHS("
+ "n=" + param_simulationNumber
+ ",k=" + factorNumber
+ ",maxSweeps=" + param_MaxSweeps
+ ",eps=" + param_eps + ")\"");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
+ engine.voidEval("attr(isis.methodExp," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-data.frame(x)");
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse)");
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
@@ -201,12 +188,8 @@
engine.voidEval(rInstruction);
- // Save Isis R session
- engine.saveRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
+ closeEngine(engine, outputDirectory);
- engine.terminate();
-
} catch (Exception e) {
throw new SensitivityException("Can't generate scenarios", e);
}
@@ -220,23 +203,15 @@
//The first storage to get the name and parameters all along the method
SimulationStorage storage = simulationStorages.get(0);
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
- String simulationName = storage.getName().replaceAll("-", "");
-
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
+ engine.voidEval("factors<-data.frame(isis.methodAnalyse)");
+ engine.voidEval("names(factors)<-isis.factor.distribution$NomFacteur");
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.voidEval("factors<-data.frame(x)");
- engine.voidEval("names(factors)<-factornames");
-
//Get back the factors number
int factorNumber = (Integer) engine.eval("length(factors[1,])");
//Get back the simulation number
@@ -264,7 +239,7 @@
//adding attribute to isis.Simule
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
for (int k = 0; k < sensitivityNumber; k++) {
@@ -315,7 +290,7 @@
//Set dataforaov names
- engine.voidEval("names(dataforaov)<-c(factornames,\"Result\")");
+ engine.voidEval("names(dataforaov)<-c(isis.factor.distribution$NomFacteur,\"Result\")");
/*Set the export directory
*Export directory is the first simulation export directory.
@@ -332,36 +307,21 @@
//FIXME export through java to enable export when using Rserve (when distant Rserve).
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
"call_method=\"" + aovCall + "\""+
",\"analysis_result\"=list(aovresult,IndSensibilite))");
- engine.voidEval("attr(isis.methodAnalyse," +
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
-
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
+ closeEngine(engine, outputDirectory);
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(simulationName)){
- engine.remove(object);
- }
- }
-
- engine.terminate();
-
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -28,18 +28,11 @@
import fr.ifremer.isisfish.export.SensitivityExport;
import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
import org.nuiton.j2r.types.RDataFrame;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
import fr.ifremer.isisfish.util.Doc;
/**
@@ -82,20 +75,13 @@
try {
- REngine engine = new RProxy(); //The R engine
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
//Load the lhs library
engine.voidEval("library(lhs)");
//Create the scenarios
- String rInstruction = "x<-randomLHS(%s,%s)";
+ String rInstruction = "isis.methodAnalyse<-randomLHS(%s,%s)";
String rCall = String.format(rInstruction, param_simulationNumber,
factorNumber);
@@ -106,7 +92,7 @@
engine.voidEval(rCall);
// Get back experiment plan
- engine.eval("expPlan<-as.data.frame(x)");
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)");
dataFrame = (RDataFrame)engine.eval("expPlan");
dataFrame.setVariable("expPlan");
@@ -124,18 +110,18 @@
engine.voidEval(getIsisFactorDistribution(factors));
- engine.voidEval("call<-" + "\"x<-randomLHS("
+ engine.voidEval("call<-" + "\"isis.methodAnalyse<-randomLHS("
+ param_simulationNumber + "," + factorNumber + ")\"");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
+ engine.voidEval("attr(isis.methodExp," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-data.frame(x)");
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse)");
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
@@ -191,16 +177,13 @@
engine.voidEval(rInstruction);
// Clean RData
- for (Factor factor:factors) {
- engine.remove(factor.getName().replaceAll(" ", ""));
+ for (Factor factor : factors) {
+ String factorName = factor.getName().replaceAll(" ", "");
+ engine.remove(factorName);
}
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
+ closeEngine(engine, outputDirectory);
- engine.terminate();
-
} catch (Exception e) {
throw new SensitivityException("Can't generate scenarios", e);
}
@@ -213,24 +196,16 @@
File outputDirectory) throws SensitivityException {
SimulationStorage simulationStorage1 = simulationStorages.get(0);
- String simName = simulationStorage1.getName();
- String simulationName = simName.replaceAll("-", "");
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
SimulationParameter param = simulationStorage1.getParameter();
int sensitivityNumber = param.getSensitivityExport().size();
//List<SensitivityExport> export = param.getSensitivityExport();
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
+ engine.voidEval("factors<-data.frame(isis.methodAnalyse)");
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.voidEval("factors<-data.frame(x)");
-
//Get back the factors number
int factorNumber = (Integer) engine.eval("length(factors)");
@@ -257,7 +232,7 @@
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
for (int k = 0; k < sensitivityNumber; k++) {
@@ -306,7 +281,7 @@
//Set dataforaov names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
engine.voidEval("names(dataforaov)<-resultsnames");
/*Set the export directory
@@ -326,40 +301,20 @@
//FIXME export through java to enable export when using Rserve (when distant Rserve).
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
"call_method=\"" + aovCall + "\"," +
"\"analysis_result\"=list(aovresult,IndSensibilite))");
- engine.voidEval("attr(isis.methodAnalyse," +
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
+ closeEngine(engine, outputDirectory);
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(simulationName)){
- engine.remove(object);
- }
- }
-
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -29,10 +29,10 @@
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
import fr.ifremer.isisfish.util.Doc;
+
import org.apache.commons.lang.StringUtils;
import org.nuiton.j2r.REngine;
import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
import org.nuiton.j2r.types.RDataFrame;
import java.io.File;
@@ -77,7 +77,7 @@
int factorsNb = factors.size();
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
//Get Isis R session
engine.loadRData(outputDirectory.getParentFile(),
@@ -100,15 +100,15 @@
Domain domain = factor.getDomain();
if (domain instanceof ContinuousDomain) {
-// ContinuousDomain contDomain = (ContinuousDomain) domain;
-// int card = factor.getCardinality();
-// Double min = contDomain.getCalculatorMinBound();
-// Double max = contDomain.getCalculatorMaxBound();
-//
-// for (int i = 0; i < card; i++) {
-// //add the ith value
-// vector += (min + (i * (max - min) / (card - 1))) + ",";
-// }
+ //ContinuousDomain contDomain = (ContinuousDomain) domain;
+ int card = factor.getCardinality();
+ Double min = 0.0;
+ Double max = 1.0;
+
+ for (int i = 0; i < card; i++) {
+ //add the ith value
+ vector += (min + (i * (max - min) / (card - 1))) + ",";
+ }
}
if (domain instanceof DiscreteDomain) {
@@ -132,7 +132,7 @@
//X<-expand.grid(vector=???,weight=???)
- String expandGrid = "x<-expand.grid(%s)";
+ String expandGrid = "isis.methodAnalyse<-expand.grid(%s)";
String rCall = String.format(expandGrid,factorsNames);
@@ -142,10 +142,10 @@
engine.voidEval(rCall);
- engine.eval("expPlan<-as.data.frame(x)");
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse)");
RDataFrame dataFrame = (RDataFrame)engine.eval("expPlan");
dataFrame.setVariable("expPlan");
- int nbExperiments = (Integer)engine.eval("dim(x)[1]");
+ int nbExperiments = (Integer)engine.eval("dim(isis.methodAnalyse)[1]");
List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios();
for (int j = 0; j < nbExperiments; j++) {
@@ -175,11 +175,9 @@
parameters += ",";
}
if (domain instanceof ContinuousDomain){
- ContinuousDomain contDomain = (ContinuousDomain)domain;
+ //ContinuousDomain contDomain = (ContinuousDomain)domain;
distribution += "\"qunif\"";
-// parameters += "\"[" + contDomain.getMinBound()
-// + ";" + contDomain.getMaxBound()
-// + "]\"";
+ parameters += "\"[0.0;1.0]\"";
} else {
DiscreteDomain discDomain = (DiscreteDomain)domain;
distribution += "\"discrete\"";
@@ -202,22 +200,19 @@
engine.voidEval("call<-\"" +
String.format(expandGrid,factorsNames) + "\"");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
+ engine.voidEval("attr(isis.methodExp," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-x");
+ engine.voidEval("isis.simule<-isis.methodAnalyse");
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
+ closeEngine(engine, outputDirectory);
-
} catch (RException eee) {
throw new SensitivityException("Can't generate scenarios", eee);
}
@@ -231,22 +226,16 @@
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
//Get back the factors number
- int factorNumber = (Integer)engine.eval("dim(x)[2]");
+ int factorNumber = (Integer)engine.eval("dim(isis.methodAnalyse)[2]");
SimulationParameter param = simulationStorages.get(0).getParameter();
int sensitivityNumber = param.getSensitivityExport().size();
- SimulationStorage firstStorage = simulationStorages.get(0);
+ String firstStorageName = outputDirectory.getName().replaceAll("-", "");
- String firstStorageName = firstStorage.getName().replaceAll("-", "");
-
for (int k = 0; k < sensitivityNumber; k++) {
SensitivityExport sensitivityExport =
@@ -265,7 +254,7 @@
+ name + ")");
//Create the dataforaov data.frame
- String dataFrame = "dataforaov<-data.frame(x,"
+ String dataFrame = "dataforaov<-data.frame(isis.methodAnalyse,"
+ name + "=" + name + ")";
engine.voidEval(dataFrame);
@@ -274,11 +263,11 @@
for (int j = 0; j < factorNumber; j++) {
if (j < (factorNumber - 1)) {
aovCall = aovCall
- + engine.eval("names(x)[" + (j + 1) + "]")
+ + engine.eval("names(isis.methodAnalyse)[" + (j + 1) + "]")
+ "+";
} else {
aovCall = aovCall
- + engine.eval("names(x)[" + (j + 1) + "]")
+ + engine.eval("names(isis.methodAnalyse)[" + (j + 1) + "]")
+ ")";
if(param_order>1){
aovCall+="^" + param_order + ",data=dataforaov)";
@@ -328,38 +317,20 @@
//FIXME export through java to enable export when using Rserve (when distant Rserve).
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", firstStorageName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
"\"call_method\"=\"" + aovCall + "\"," +
"\"analysis_result\"=list(aovresult,IndSensibilite))");
- engine.voidEval("attr(isis.methodAnalyse," +
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- firstStorageName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine, firstStorageName);
+ closeEngine(engine, outputDirectory);
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(firstStorageName)){
- engine.remove(object);
- }
- }
-
- //Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -2,7 +2,7 @@
* #%L
* IsisFish data
* %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Jean Couteau
+ * Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Jean Couteau
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -26,22 +26,14 @@
import java.util.List;
import fr.ifremer.isisfish.export.SensitivityExport;
+
import org.nuiton.j2r.REngine;
import org.nuiton.j2r.RException;
-import org.nuiton.j2r.RProxy;
import org.nuiton.j2r.types.RDataFrame;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.*;
import fr.ifremer.isisfish.util.Doc;
public class RegularFractions extends AbstractSensitivityAnalysis {
@@ -100,7 +92,7 @@
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
//Clear session
engine.clearSession();
@@ -116,7 +108,7 @@
engine.voidEval("source(\"regularfractions.R\")");
//Create the instruction
- String rInstruction = "x<-regular.fraction(%s,%s,%s,%s)";
+ String rInstruction = "isis.methodAnalyse<-regular.fraction(%s,%s,%s,%s)";
String rCall = String.format(rInstruction, factors.size(), param_p,
param_r, param_resolution);
@@ -138,12 +130,12 @@
// Get back experiment plan
- engine.eval("expPlan<-as.data.frame(x[[1]])");
+ engine.eval("expPlan<-as.data.frame(isis.methodAnalyse[[1]])");
dataFrame = (RDataFrame)engine.eval("expPlan");
dataFrame.setVariable("expPlan");
//Get back the simulation number
- int simulationNumber = (Integer) engine.eval("length(x[[1]][,1])");
+ int simulationNumber = (Integer) engine.eval("length(isis.methodAnalyse[[1]][,1])");
// Setting up the scenarios.
for (int j = 0; j < simulationNumber; j++) {
@@ -191,12 +183,12 @@
engine.voidEval(getIsisFactorDistribution(factors));
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
+ engine.voidEval("attr(isis.methodExp," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
//Create isis.Simule
@@ -207,12 +199,8 @@
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
+ closeEngine(engine, outputDirectory);
- engine.terminate();
-
} catch (RException eee) {
throw new SensitivityException("Can't generate scenarios", eee);
}
@@ -229,21 +217,14 @@
SimulationParameter param = firstStorage.getParameter();
List<SensitivityExport> exports = param.getSensitivityExport();
int sensitivityNumber = exports.size();
- String simulationName = firstStorage.getName().replaceAll("-", "");
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
//Get back the factors number
- int factorNumber = (Integer) engine.eval("dim(data)[2]");
+ int factorNumber = (Integer) engine.eval("dim(isis.simule)[2]");
for (int k = 0; k < sensitivityNumber; k++) {
@@ -270,7 +251,7 @@
String name = export.getExportFilename();
//Create the dataforaov data.frame
- String dataFrame = "dataforaov<-data.frame(data," +
+ String dataFrame = "dataforaov<-data.frame(isis.simule," +
name + "=" + name + ")";
engine.voidEval(dataFrame);
@@ -280,11 +261,11 @@
if (j < (factorNumber - 1)) {
aovCall = aovCall
- + engine.eval("names(data)[" + (j + 1) + "]")
+ + engine.eval("names(isis.simule)[" + (j + 1) + "]")
+ "+";
} else {
aovCall = aovCall
- + engine.eval("names(data)[" + (j + 1) + "]")
+ + engine.eval("names(isis.simule)[" + (j + 1) + "]")
+ ")";
if (param_resolution <= 4) {
aovCall += ",data=dataforaov)";
@@ -316,8 +297,8 @@
engine.voidEval("row.names(exportsensitivity)<-dimnames(summary(aovresult)[[1]])[1][[1]][1:dim(summary(aovresult)[[1]])[1]]");
//Set dataforaov names
- engine.voidEval("resultsnames<-c(factornames,\"Result\")");
- engine.voidEval("names(dataforaov)<-resultsnames");
+ engine.voidEval("resultsnames<-c(isis.factor.distribution$NomFacteur,\"Result\")");
+ engine.voidEval("names(dataforaov)<-isis.factor.distribution$NomFacteur");
/*Set the export directory
*Export directory is the first simulation export directory.
@@ -334,38 +315,20 @@
//FIXME export through java to enable export when using Rserve (when distant Rserve).
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
"\"call_method\"=\"" + aovCall + "\"," +
"\"analysis_result\"=list(aovresult,IndSensibilite))");
- engine.voidEval("attr(isis.methodAnalyse," +
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
-
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine,simulationName);
+ closeEngine(engine, outputDirectory);
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(simulationName)){
- engine.remove(object);
- }
- }
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
- engine.terminate();
-
} catch (Exception eee) {
throw new SensitivityException("Can't evaluate results", eee);
}
Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java
===================================================================
--- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java 2014-04-17 15:05:25 UTC (rev 3967)
+++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java 2014-04-17 15:26:04 UTC (rev 3968)
@@ -24,18 +24,17 @@
import java.io.File;
import java.util.List;
-import java.util.Map;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.simulator.sensitivity.*;
+
import org.apache.commons.lang3.StringUtils;
import org.nuiton.j2r.REngine;
-import org.nuiton.j2r.RProxy;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.util.Doc;
+
import org.nuiton.j2r.types.RDataFrame;
/**
@@ -70,10 +69,10 @@
}
@Override
- public SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
+ public SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
throws SensitivityException {
- setIsisFactorsR(plan, outputdirectory);
+ setIsisFactorsR(plan, outputDirectory);
RDataFrame dataFrame;
int nbExperiments;
@@ -84,7 +83,7 @@
checkAllFactorContinuous(factors);
- String rInstruction = "a<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)";
+ String rInstruction = "isis.methodAnalyse<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)";
String rCall = String.format(rInstruction, param_nboot);
if (param_modifR) {
@@ -92,15 +91,8 @@
}
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
engine.voidEval("library(sensitivity)");
String x = "<-data.frame(matrix(c(";
@@ -134,35 +126,31 @@
engine.voidEval(rInstruction);
// Get back experiment plan
- dataFrame = (RDataFrame) engine.eval("a$X");
- dataFrame.setVariable("a$X");
+ dataFrame = (RDataFrame) engine.eval("isis.methodAnalyse$X");
+ dataFrame.setVariable("isis.methodAnalyse$X");
nbExperiments = dataFrame.dim()[0];
engine.voidEval(getIsisFactorDistribution(factors));
- engine.voidEval("call<-a$call");
+ engine.voidEval("call<-isis.methodAnalyse$call");
- engine.voidEval("isis.MethodExp<-list(" +
+ engine.voidEval("isis.methodExp<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"call\"=call)");
- engine.voidEval("attr(isis.MethodExp," +
+ engine.voidEval("attr(isis.methodExp," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("isis.simule<-data.frame(a$X)");
+ engine.voidEval("isis.simule<-data.frame(isis.methodAnalyse$X)");
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
engine.voidEval("names(isis.simule)<-isis.factors[[1]]");
- // Save Isis R session
- engine.saveRData(outputdirectory.getParentFile(),
- outputdirectory.getName());
-
- // Setting up the scenarios.
+ // Setting up the scenarios.
for (int j = 0; j < nbExperiments; j++) {
Scenario experimentScenario = new Scenario();
for (int i = 0; i < factorNumber; i++) {
@@ -173,11 +161,13 @@
}
thisExperimentScenarios.add(experimentScenario);
}
+
+ closeEngine(engine, outputDirectory);
} catch (Exception e) {
- throw new SensitivityException("Can't generate scenarios", e);}
+ throw new SensitivityException("Can't generate scenarios", e);
+ }
-
thisExperiment.setScenarios(thisExperimentScenarios);
return thisExperiment;
@@ -190,19 +180,12 @@
SimulationStorage firstStorage = simulationStorages.get(0);
SimulationParameter param = firstStorage.getParameter();
int sensitivityNumber = param.getSensitivityExport().size();
- String simulationName = firstStorage.getName().replaceAll("-", "");
+ String simulationName = outputDirectory.getName().replaceAll("-", "");
try {
- REngine engine = new RProxy();
+ REngine engine = openEngine(outputDirectory);
- //Clear session
- engine.clearSession();
-
- //Get Isis R session
- engine.loadRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
-
// Call R
// Load sensitivity package into R (if package already loaded,
// nothing happens.
@@ -236,7 +219,7 @@
engine.voidEval("attr(isis.simule," +
"\"nomModel\")<-\"isis-fish-externe-R\"");
- engine.voidEval("attr(isis.simule,\"call\")<-isis.MethodExp$call");
+ engine.voidEval("attr(isis.simule,\"call\")<-isis.methodExp$call");
for (int k = 0; k < sensitivityNumber; k++) {
@@ -246,13 +229,14 @@
//Compute results
engine.voidEval("tell(a,y=" + name + ")");
- engine.voidEval("row.names(a$S)<-names(a$X)");
- engine.voidEval("row.names(a$T)<-names(a$X)");
- engine.voidEval("row.names(a$V)<-c(\"global\"," +
- "names(a$X),paste(\"-\",names(a$X),sep=\"\"))");
+ engine.voidEval("row.names(isis.methodAnalyse$S)<-names(isis.methodAnalyse$X)");
+ engine.voidEval("row.names(isis.methodAnalyse$T)<-names(isis.methodAnalyse$X)");
+ engine.voidEval("row.names(isis.methodAnalyse$V)<-c(\"global\"," +
+ "names(isis.methodAnalyse$X),paste(\"-\",names(isis.methodAnalyse$X),sep=\"\"))");
//creating isis.methodAnalyse
- engine.voidEval("isis.methodAnalyse<-list(" +
+ String exportMethodAnalyse = String.format("%s.isis.methodAnalyse", simulationName + "." + name);
+ engine.voidEval(exportMethodAnalyse + "<-list(" +
"\"isis.factors\"=isis.factors," +
"\"isis.factor.distribution\"=isis.factor.distribution," +
"\"isis.simule\"=isis.simule," +
@@ -260,25 +244,25 @@
"\"analysis_result\"=a)");
//setting isis.methodAnalyse attributes
- engine.voidEval("attr(isis.methodAnalyse," +
+ engine.voidEval("attr(" + exportMethodAnalyse + "," +
"\"nomModel\")<-\"isis-fish-externe-R\")");
//Create the data.frame of scenarios and results for export purpose
- engine.voidEval("dfresults<-data.frame(a$X,a$y)");
+ engine.voidEval("dfresults<-data.frame(isis.methodAnalyse$X,isis.methodAnalyse$y)");
//Set working directory
engine.setwd(outputDirectory);
//Export V
- engine.voidEval("write.csv(a$V,\""
+ engine.voidEval("write.csv(isis.methodAnalyse$V,\""
+ name
+ "_SensitivityIndices.csv\")");
//Export DD
- engine.voidEval("write.csv(a$D,\""
+ engine.voidEval("write.csv(isis.methodAnalyse$D,\""
+ name + "_D.csv\")");
//Export S
- engine.voidEval("write.csv(a$S,\""
+ engine.voidEval("write.csv(isis.methodAnalyse$S,\""
+ name + "_S.csv\")");
//Export results
@@ -286,26 +270,9 @@
+ name + "_Results.csv\")");
//FIXME export through java to enable export when using Rserve
- String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-" +
- "isis.methodAnalyse";
- engine.voidEval(String.format(renameIsisMethodAnalyse,
- simulationName + "." + name));
-
}
- //Rename R objects for saving purpose
- renameObjects(engine, simulationName);
-
- //Clean temporary R objects
- for (String object:engine.ls()) {
- if (!object.startsWith(simulationName)){
- engine.remove(object);
- }
- }
-
- // Save Isis R session
- engine.saveRData(outputDirectory.getParentFile(),
- outputDirectory.getName());
+ closeEngine(engine, outputDirectory);
} catch (Exception e) {
throw new SensitivityException("Can't evaluate results", e);
}
1
0
r3967 - branches/4.0.1/src/test/java/fr/ifremer/isisfish/util
by echatellier@users.forge.codelutin.com 17 Apr '14
by echatellier@users.forge.codelutin.com 17 Apr '14
17 Apr '14
Author: echatellier
Date: 2014-04-17 17:05:25 +0200 (Thu, 17 Apr 2014)
New Revision: 3967
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3967
Log:
Fix test (args map remove, only varargs now)
Modified:
branches/4.0.1/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java
Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java
===================================================================
--- branches/4.0.1/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java 2014-04-17 14:57:34 UTC (rev 3966)
+++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/util/EvaluatorHelperTest.java 2014-04-17 15:05:25 UTC (rev 3967)
@@ -81,12 +81,8 @@
public void testEvaluate() {
String equationContent = "return age * 2.0;";
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("age", 2.0);
- args.put("group", null);
Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
- "TestEvaluate", PopulationGrowth.class, equationContent, args);
+ "TestEvaluate", PopulationGrowth.class, equationContent, /*context*/null, /*length*/2.0, /*group*/null);
Assert.assertNotNull(result);
Assert.assertEquals("4.0", result.toString());
@@ -107,14 +103,14 @@
String equationContent = "return length * 2.0;";
Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
"TestDoubleContentEvaluate", PopulationGrowthReverse.class,
- equationContent, args);
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
Assert.assertNotNull(result);
Assert.assertEquals("4.0", result.toString());
equationContent = "return length * 3.0;";
result = EvaluatorHelper.evaluate("fr.isisfish.equation",
"TestDoubleContentEvaluate", PopulationGrowthReverse.class,
- equationContent, args);
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
Assert.assertNotNull(result);
Assert.assertEquals("6.0", result.toString());
}
@@ -125,16 +121,12 @@
*/
@Test
public void testEquationWithDatabaseContent() {
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("length", 2.0);
- args.put("group", null);
String equationContent = "String name = scripts.ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP;";
equationContent += "return length * 2.0;";
Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
"TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
- equationContent, args);
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
Assert.assertNotNull(result);
Assert.assertEquals("4.0", result.toString());
}
@@ -144,16 +136,12 @@
*/
@Test
public void testEquationWithLogger() {
- Map<String, Object> args = new HashMap<String, Object>();
- args.put("context", null);
- args.put("length", 2.0);
- args.put("group", null);
String equationContent = "log.info(\"Test logger\");";
equationContent += "return 1.0;";
Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
"TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
- equationContent, args);
+ equationContent, /*context*/null, /*length*/2.0, /*group*/null);
Assert.assertNotNull(result);
Assert.assertEquals("1.0", result.toString());
}
@@ -183,9 +171,7 @@
String content = "if (context != null) {\n" +
" // test\n" +
"}\n";
- Map<String, Object> args = new HashMap<>();
- args.put("context", SimulationContext.get());
EvaluatorHelper.evaluate("fr.isisfish.prescript",
- "TestPrescript", SimulationPreScript.class, content, args);
+ "TestPrescript", SimulationPreScript.class, content, /*context*/SimulationContext.get(), /*db*/null);
}
}
1
0
r3966 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity
by echatellier@users.forge.codelutin.com 17 Apr '14
by echatellier@users.forge.codelutin.com 17 Apr '14
17 Apr '14
Author: echatellier
Date: 2014-04-17 16:57:34 +0200 (Thu, 17 Apr 2014)
New Revision: 3966
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3966
Log:
fixes #725: Prise en compte de la distribution dans les AS
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-04-17 09:04:43 UTC (rev 3965)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-04-17 14:57:34 UTC (rev 3966)
@@ -211,6 +211,79 @@
}
/**
+ * Open R engine and load RData file.
+ *
+ * @param outputDirectory save directory
+ * @return rengine
+ * @throws RException
+ */
+ protected REngine openEngine(File outputDirectory) throws RException {
+ REngine engine = new RProxy();
+
+ // Clear session
+ engine.clearSession();
+
+ String sensitivityAnalysisName = outputDirectory.getName();
+ // Get Isis R session
+ engine.loadRData(outputDirectory.getParentFile(), sensitivityAnalysisName);
+
+ // - is a non allowed character name in R
+ String prefixName = sensitivityAnalysisName.replaceAll("-", "");
+
+ // Rename R objects for manipulation purpose (if exists)
+ String renameIsisSimule = "if (exists(\"%1$s.isis.simule\")) isis.simule<-%1$s.isis.simule";
+ String renameIsisFactorDistribution = "if (exists(\"%1$s.isis.factor.distribution\")) isis.factor.distribution<-%1$s.isis.factor.distribution";
+ String renameIsisFactor = "if (exists(\"%1$s.isis.factors\")) isis.factors<-%1$s.isis.factors";
+ String renameIsisMethodExp = "if (exists(\"%1$s.isis.methodExp\")) isis.methodExp<-%1$s.isis.methodExp";
+ String renameIsisMethodAnalyse = "if (exists(\"%1$s.isis.methodAnalyse\")) isis.methodAnalyse<-%1$s.isis.methodAnalyse";
+ engine.voidEval(String.format(renameIsisSimule, prefixName));
+ engine.voidEval(String.format(renameIsisFactorDistribution, prefixName));
+ engine.voidEval(String.format(renameIsisFactor, prefixName));
+ engine.voidEval(String.format(renameIsisMethodExp, prefixName));
+ engine.voidEval(String.format(renameIsisMethodAnalyse, prefixName));
+
+ return engine;
+ }
+
+ /**
+ * Save RData file and close Rengine.
+ *
+ * @param engine r engine
+ * @param outputDirectory save directory
+ * @throws RException
+ */
+ protected void closeEngine(REngine engine, File outputDirectory) throws RException {
+
+ String sensitivityAnalysisName = outputDirectory.getName();
+ // - is a non allowed character name in R
+ String prefixName = sensitivityAnalysisName.replaceAll("-", "");
+
+ // Rename R objects for saving purpose
+ String renameIsisSimule = "%s.isis.simule<-isis.simule";
+ String renameIsisFactorDistribution = "%s.isis.factor.distribution<-isis.factor.distribution";
+ String renameIsisFactor = "%s.isis.factors<-isis.factors";
+ String renameIsisMethodExp = "%s.isis.methodExp<-isis.methodExp";
+ String renameIsisMethodAnalyse = "%s.isis.methodAnalyse<-isis.methodAnalyse";
+ engine.voidEval(String.format(renameIsisSimule, prefixName));
+ engine.voidEval(String.format(renameIsisFactorDistribution, prefixName));
+ engine.voidEval(String.format(renameIsisFactor, prefixName));
+ engine.voidEval(String.format(renameIsisMethodExp, prefixName));
+ engine.voidEval(String.format(renameIsisMethodAnalyse, prefixName));
+
+ // Clean temporary R objects
+ for (String object : engine.ls()) {
+ if (!object.startsWith(prefixName)) {
+ engine.remove(object);
+ }
+ }
+
+ // Save Isis R session
+ engine.saveRData(outputDirectory.getParentFile(), sensitivityAnalysisName);
+
+ engine.terminate();
+ }
+
+ /**
* Affiche une boite de dialogue modale permettant de modifier l'expression
* R.
*
@@ -320,31 +393,6 @@
}
/**
- * Renome les objets R en les prefixant par l'identifiant de la simulation.
- *
- * @param engine r engine
- * @param simulationName simulation name
- * @throws RException
- */
- protected void renameObjects(REngine engine, String simulationName)
- throws RException {
-
- String renameIsisSimule = "%s.isis.simule<-isis.simule";
- String renameIsisFactorDistribution = "%s.isis.factor.distribution<-isis.factor.distribution";
- String renameIsisFactor = "%s.isis.factor<-isis.factors";
- String renameIsisMethodExp = "%s.isis.methodExp<-isis.MethodExp";
-
- engine.voidEval(String.format(renameIsisSimule, simulationName));
-
- engine.voidEval(String.format(renameIsisFactorDistribution,
- simulationName));
-
- engine.voidEval(String.format(renameIsisFactor, simulationName));
-
- engine.voidEval(String.format(renameIsisMethodExp, simulationName));
- }
-
- /**
* Get factor domain min bound depending on distribution.
*/
protected double getMinBound(Factor factor) {
@@ -435,12 +483,4 @@
return String.format(isisFactorDistribution, factorNames, distribution, parameters);
}
-
- /**
- *
- * @param value
- */
- protected void setFactorValue(double value) {
-
- }
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java 2014-04-17 09:04:43 UTC (rev 3965)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysis.java 2014-04-17 14:57:34 UTC (rev 3966)
@@ -65,7 +65,7 @@
* scenarios à prendre en compte pour les simulations.
*
* @param plan plan a analyser
- * @param outputdirectory master sensitivity export directory
+ * @param outputDirectory master sensitivity export directory
*
* @return un {@link SensitivityScenarios}
* @throws SensitivityException if calculator impl fail to execute
@@ -74,7 +74,7 @@
* @see Scenario
* @see SensitivityScenarios
*/
- SensitivityScenarios compute(DesignPlan plan, File outputdirectory)
+ SensitivityScenarios compute(DesignPlan plan, File outputDirectory)
throws SensitivityException;
/**
1
0
r3965 - in branches/4.0.1: . src/main/java/fr/ifremer/isisfish/util
by echatellier@users.forge.codelutin.com 17 Apr '14
by echatellier@users.forge.codelutin.com 17 Apr '14
17 Apr '14
Author: echatellier
Date: 2014-04-17 11:04:43 +0200 (Thu, 17 Apr 2014)
New Revision: 3965
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3965
Log:
Fix RuleAspect failure
Modified:
branches/4.0.1/pom.xml
branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java
Modified: branches/4.0.1/pom.xml
===================================================================
--- branches/4.0.1/pom.xml 2014-04-17 08:16:36 UTC (rev 3964)
+++ branches/4.0.1/pom.xml 2014-04-17 09:04:43 UTC (rev 3965)
@@ -291,11 +291,13 @@
<artifactId>aspectjweaver</artifactId>
<version>1.7.4</version>
</dependency>
- <!-- <dependency>
+ <!-- This one seams to be required for RuleAspect to work, but not directly used -->
+ <dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.7.4</version>
- </dependency> -->
+ <scope>runtime</scope>
+ </dependency>
<dependency>
<groupId>net.sourceforge</groupId>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2014-04-17 08:16:36 UTC (rev 3964)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2014-04-17 09:04:43 UTC (rev 3965)
@@ -41,7 +41,6 @@
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
1
0
r3964 - in branches/4.0.1: . src/main/java/fr/ifremer/isisfish/map src/main/java/fr/ifremer/isisfish/ui/input src/main/java/fr/ifremer/isisfish/ui/result
by echatellier@users.forge.codelutin.com 17 Apr '14
by echatellier@users.forge.codelutin.com 17 Apr '14
17 Apr '14
Author: echatellier
Date: 2014-04-17 10:16:36 +0200 (Thu, 17 Apr 2014)
New Revision: 3964
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3964
Log:
Update openmap to 5.0.4
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java
Removed:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java
Modified:
branches/4.0.1/pom.xml
branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java
Modified: branches/4.0.1/pom.xml
===================================================================
--- branches/4.0.1/pom.xml 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/pom.xml 2014-04-17 08:16:36 UTC (rev 3964)
@@ -255,7 +255,7 @@
<dependency>
<groupId>com.bbn</groupId>
<artifactId>openmap</artifactId>
- <version>5.0</version>
+ <version>5.0.4</version>
<scope>compile</scope>
</dependency>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/IsisMapBean.java 2014-04-17 08:16:36 UTC (rev 3964)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2002 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Copyright (C) 2002 - 2014 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -27,25 +27,30 @@
import static org.nuiton.i18n.I18n.t;
+import java.awt.Color;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import com.bbn.openmap.BufferedMapBean;
import com.bbn.openmap.Layer;
import com.bbn.openmap.LayerHandler;
+import com.bbn.openmap.MapBean;
import com.bbn.openmap.MouseDelegator;
+import com.bbn.openmap.PropertyHandler;
+import com.bbn.openmap.event.CoordMouseMode;
import com.bbn.openmap.event.MapMouseListener;
import com.bbn.openmap.event.MapMouseMode;
import com.bbn.openmap.event.NavMouseMode;
+import com.bbn.openmap.gui.OverlayMapPanel;
import com.bbn.openmap.layer.GraticuleLayer;
import com.bbn.openmap.layer.dted.DTEDLayer;
import com.bbn.openmap.layer.e00.E00Layer;
@@ -74,7 +79,7 @@
* Mise a jour: $Date$
* par : $Author$
*/
-public class IsisMapBean extends BufferedMapBean {
+public class IsisMapBean extends OverlayMapPanel {
/** serialVersionUID. */
private static final long serialVersionUID = -4162103384132928473L;
@@ -101,24 +106,36 @@
protected static final float SCALE = 9500000f;
public IsisMapBean() {
+ super(new PropertyHandler(new Properties()), true);
+ create();
init();
- setActiveMouseMode(new NavMouseMode());
}
- protected void init() {
- setScale(SCALE);
+ public void init() {
+ MapBean mapBean = getMapBean();
+ mapBean.setScale(SCALE);
// Let the LayerHandler know who is interested in Layers.
//MapBean is just one component
- layerHandler.addLayerListener(this);
+ //layerHandler.addLayerListener(this);
- md = new MouseDelegator(this);
+ md = new MouseDelegator(mapBean);
// md.addMouseMode(selectMouseMode);
// Tell the delegator to use the default modes: Navigation
// and Selection
md.setDefaultMouseModes();
+ addMapComponent(md);
+ addMapComponent(layerHandler);
+
+ getMapBean().setBackgroundColor(new Color(0x99b3cc));
+
+ NavMouseMode mouseMode = new NavMouseMode();
+ setActiveMouseMode(mouseMode);
+
+ // add copy to clipboard support
+ addMapMouseListener(new CopyMapToClipboardListener(mapBean));
}
- public void setActiveMouseMode(MapMouseMode mode) {
+ public void setActiveMouseMode(CoordMouseMode mode) {
md.setActiveMouseMode(mode);
currentMouseMode = mode;
// il faut remettre les listeners
@@ -278,7 +295,7 @@
public void addResultatLayer(String id, ResultatLayer layer) {
layer.setName(id);
addMapMouseListener(layer);
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
public void removeAllResultatLayer() {
@@ -304,25 +321,27 @@
Layer layer = null;
// get layer depending on type
- if (mapFile.endsWith(".shp")) {
+ switch (FilenameUtils.getExtension(mapFile)) {
+ case "shp":
layer = getShapeLayer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".e00")) {
+ break;
+ case "e00":
layer = getE00Layer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".mif")) {
+ break;
+ case "mif":
layer = getMIFLayer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".rpf") || mapFile.endsWith(".cadrg") || mapFile.endsWith(".cib")) {
+ break;
+ case "rpf":
+ case "cadrg":
+ case "cib":
layer = getRPFLayer(layerId, mapFile, lineColor, fillColor);
- }
- else if (mapFile.endsWith(".vmap") || mapFile.endsWith(".dcw") || mapFile.endsWith(".vpf")) {
+ break;
+ case "vmap":
+ case "dcw":
+ case "vpf":
layer = getVPFLayer(layerId, mapFile, lineColor, fillColor);
- }
- /*else if (mapFile.endsWith(".dt0")) {
- layer = getDTEDLayer(layerId, mapFile, lineColor, fillColor);
- }*/
- else {
+ break;
+ default:
if (log.isErrorEnabled()) {
log.error("Can't find layer for " + mapFile + " (unknown type)");
}
@@ -333,7 +352,7 @@
if (log.isDebugEnabled()) {
log.debug("Add layer " + layer);
}
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
}
@@ -561,12 +580,12 @@
p.setProperty("." + GraticuleLayer.TextColorProperty, "FF000000");
layer.setProperties("", p);
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
protected void addZoneDelimiterLayer() throws TopiaException {
ZoneDelimiterLayer layer = new ZoneDelimiterLayer(fisheryRegion);
- layerHandler.addLayer(layer);
+ addMapComponent(layer);
}
protected void addSpecificLayer() {
@@ -595,9 +614,8 @@
// OR this one
//setProjection(new CADRG(new LatLonPoint(centerLat, centerLong), SCALE, 480, 540));
- setCenter(new LatLonPoint.Float(centerLat, centerLong));
+ getMapBean().setCenter(new LatLonPoint.Float(centerLat, centerLong));
//setScale(SCALE);
- addSpecificLayer();
addGraticuleLayer();
// ajout des shapes
@@ -621,6 +639,8 @@
String filename = IsisFish.config.getDefaultMapFilename();
addLayer(filename, filename, "ff000000", "ffbdde83");
}
+
+ addSpecificLayer();
} catch (Exception eee) {
if (log.isErrorEnabled()) {
@@ -653,7 +673,7 @@
try {
activeSelectionLayer = new CellSelectionLayer(fisheryRegion, getSelectionMode());
addMapMouseListener(activeSelectionLayer);
- layerHandler.addLayer(activeSelectionLayer);
+ addMapComponent(activeSelectionLayer);
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
log.warn("Can't add selection layer", eee);
Copied: branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java (from rev 3945, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java)
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/map/OpenMapEvents.java 2014-04-17 08:16:36 UTC (rev 3964)
@@ -0,0 +1,129 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2005 - 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.map;
+
+import java.awt.event.MouseEvent;
+
+import com.bbn.openmap.Layer;
+import com.bbn.openmap.event.CoordMouseMode;
+import com.bbn.openmap.event.MapMouseListener;
+import com.bbn.openmap.event.MapMouseMode;
+import com.bbn.openmap.event.ProjectionEvent;
+import com.bbn.openmap.event.SelectMouseMode;
+
+/**
+ * OpenMapEvents.java
+ *
+ * Created: 5 septembre 2005 03:21:41 CEST
+ *
+ * @author Benjamin POUSSIN <poussin(a)codelutin.com>
+ * @version $Revision: 202 $
+ *
+ * Last update: $Date: 2006-06-30 18:39:09 +0200 (ven, 30 jun 2006) $
+ * by : $Author: bpoussin $
+ */
+public abstract class OpenMapEvents extends Layer implements MapMouseListener { // OpenMapEvents
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -8365120112075269288L;
+
+ /**
+ * SelectMouseMode property: Null, Distance, Nav, Select
+ */
+ protected MapMouseMode mouseMode;
+ protected IsisMapBean map;
+
+ protected int selectMode = CellSelectionLayer.SINGLE_SELECTION;
+
+ /**
+ * Constructor.
+ *
+ * Register himself to {@code map} mapMouseListener.
+ * Also set mouseMode and selectMode on map.
+ *
+ * @param map map bean
+ * @param mouseMode mouse mode
+ * @param selectMode select mode
+ */
+ public OpenMapEvents(IsisMapBean map, CoordMouseMode mouseMode, int selectMode) {
+ super();
+ this.mouseMode = mouseMode;
+ this.map = map;
+ this.selectMode = selectMode;
+ map.setSelectionMode(selectMode);
+ map.setActiveMouseMode(mouseMode);
+ map.addMapMouseListener(this);
+
+ }
+
+ @Override
+ public void projectionChanged(ProjectionEvent e) {
+ // do nothing, it's not reel layer
+ }
+
+ @Override
+ public String[] getMouseModeServiceList() {
+ return new String[] { SelectMouseMode.modeID };
+ }
+
+ @Override
+ public boolean mouseClicked(MouseEvent e) {
+ return true;
+ }
+
+ @Override
+ public boolean mouseDragged(MouseEvent e) {
+ return false;
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseMoved() {
+ }
+
+ @Override
+ public boolean mouseMoved(MouseEvent e) {
+ return false;
+ }
+
+ @Override
+ public boolean mousePressed(MouseEvent e) {
+ return false;
+ }
+
+ @Override
+ public boolean mouseReleased(MouseEvent e) {
+ return false;
+ }
+
+} // OpenMapEvents
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2014-04-17 08:16:36 UTC (rev 3964)
@@ -30,17 +30,16 @@
<import>
static org.nuiton.i18n.I18n.n
static org.nuiton.i18n.I18n.t
- java.awt.event.MouseEvent;
- fr.ifremer.isisfish.entities.Cell;
- com.bbn.openmap.gui.Tool;
- com.bbn.openmap.gui.OMToolSet;
- com.bbn.openmap.event.SelectMouseMode;
- fr.ifremer.isisfish.map.CellSelectionLayer;
- fr.ifremer.isisfish.map.CopyMapToClipboardListener;
- fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
- java.beans.PropertyChangeEvent;
- java.beans.PropertyChangeListener;
- javax.swing.DefaultComboBoxModel;
+ java.awt.event.MouseEvent
+ fr.ifremer.isisfish.entities.Cell
+ com.bbn.openmap.event.SelectMouseMode
+ fr.ifremer.isisfish.map.CellSelectionLayer
+ fr.ifremer.isisfish.map.OpenMapEvents
+ fr.ifremer.isisfish.map.CopyMapToClipboardListener
+ fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
+ javax.swing.DefaultComboBoxModel
</import>
<BeanValidator id='validator'
@@ -50,14 +49,13 @@
</BeanValidator>
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
-
boolean cellChanged = true;
protected void $afterCompleteSetup() {
setButtonTitle(t("isisfish.input.continueZones"));
setNextPath(n("isisfish.input.tree.zones"));
+ //cellMap.init(cellMapInfo);
new OpenMapEvents(cellMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
@@ -78,11 +76,6 @@
}
};
- // add copy to clipboard support
- cellMap.addMapMouseListener(new CopyMapToClipboardListener(cellMap));
- toolSet.setupListeners(cellMap);
- toolMap.add((Tool)toolSet);
-
addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
@@ -208,12 +201,11 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap' javaBean='new com.bbn.openmap.gui.ToolPanel()'
- constraints='BorderLayout.NORTH' decorator='boxed' enabled='{getBean() != null}' />
<fr.ifremer.isisfish.map.IsisMapBean id='cellMap' javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.SINGLE_SELECTION}"
fisheryRegion='{getFisheryRegion()}' selectedCells='{getBean()}'
constraints='BorderLayout.CENTER' decorator='boxed' enabled='{getBean() != null}'/>
+ <com.bbn.openmap.InformationDelegator id="cellMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx 2014-04-17 08:16:36 UTC (rev 3964)
@@ -32,8 +32,6 @@
static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.FisheryRegion;
fr.ifremer.isisfish.map.CopyMapToClipboardListener;
- com.bbn.openmap.gui.Tool;
- com.bbn.openmap.gui.OMToolSet;
java.beans.PropertyChangeEvent;
java.beans.PropertyChangeListener;
javax.swing.DefaultListModel
@@ -47,15 +45,11 @@
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
protected void $afterCompleteSetup() {
- toolSet.setupListeners(cellMap);
- toolMap.add((Tool)toolSet);
+
+ //cellMap.init(cellMapInfo);
- // add copy to clipboard support
- cellMap.addMapMouseListener(new CopyMapToClipboardListener(cellMap));
-
setButtonTitle(t("isisfish.input.continueCells"));
setNextPath(n("isisfish.input.tree.cells"));
@@ -314,12 +308,11 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap' javaBean='new com.bbn.openmap.gui.ToolPanel()'
- constraints='BorderLayout.NORTH' decorator='boxed'/>
<fr.ifremer.isisfish.map.IsisMapBean id='cellMap'
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.NO_SELECTION}"
javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
fisheryRegion='{getBean()}' constraints='BorderLayout.CENTER' decorator='boxed'/>
+ <com.bbn.openmap.InformationDelegator id="cellMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Deleted: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java 2014-04-17 08:16:36 UTC (rev 3964)
@@ -1,131 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2005 - 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.input;
-
-import java.awt.event.MouseEvent;
-
-import com.bbn.openmap.Layer;
-import com.bbn.openmap.event.MapMouseListener;
-import com.bbn.openmap.event.MapMouseMode;
-import com.bbn.openmap.event.ProjectionEvent;
-import com.bbn.openmap.event.SelectMouseMode;
-
-import fr.ifremer.isisfish.map.CellSelectionLayer;
-import fr.ifremer.isisfish.map.IsisMapBean;
-
-/**
- * OpenMapEvents.java
- *
- * Created: 5 septembre 2005 03:21:41 CEST
- *
- * @author Benjamin POUSSIN <poussin(a)codelutin.com>
- * @version $Revision: 202 $
- *
- * Last update: $Date: 2006-06-30 18:39:09 +0200 (ven, 30 jun 2006) $
- * by : $Author: bpoussin $
- */
-public abstract class OpenMapEvents extends Layer implements MapMouseListener { // OpenMapEvents
-
- /** serialVersionUID. */
- private static final long serialVersionUID = -8365120112075269288L;
-
- /**
- * SelectMouseMode property: Null, Distance, Nav, Select
- */
- protected MapMouseMode mouseMode;
- protected IsisMapBean map;
-
- protected int selectMode = CellSelectionLayer.SINGLE_SELECTION;
-
- /**
- * Constructor.
- *
- * Register himself to {@code map} mapMouseListener.
- * Also set mouseMode and selectMode on map.
- *
- * @param map map bean
- * @param mouseMode mouse mode
- * @param selectMode select mode
- */
- public OpenMapEvents(IsisMapBean map, MapMouseMode mouseMode, int selectMode) {
- super();
- this.mouseMode = mouseMode;
- this.map = map;
- this.selectMode = selectMode;
- map.setSelectionMode(selectMode);
- map.setActiveMouseMode(mouseMode);
- map.addMapMouseListener(this);
-
- }
-
- @Override
- public void projectionChanged(ProjectionEvent e) {
- // do nothing, it's not reel layer
- }
-
- @Override
- public String[] getMouseModeServiceList() {
- return new String[] { SelectMouseMode.modeID };
- }
-
- @Override
- public boolean mouseClicked(MouseEvent e) {
- return true;
- }
-
- @Override
- public boolean mouseDragged(MouseEvent e) {
- return false;
- }
-
- @Override
- public void mouseEntered(MouseEvent e) {
- }
-
- @Override
- public void mouseExited(MouseEvent e) {
- }
-
- @Override
- public void mouseMoved() {
- }
-
- @Override
- public boolean mouseMoved(MouseEvent e) {
- return false;
- }
-
- @Override
- public boolean mousePressed(MouseEvent e) {
- return false;
- }
-
- @Override
- public boolean mouseReleased(MouseEvent e) {
- return false;
- }
-
-} // OpenMapEvents
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2014-04-17 08:16:36 UTC (rev 3964)
@@ -32,10 +32,9 @@
static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.Port
fr.ifremer.isisfish.entities.Cell
- com.bbn.openmap.gui.Tool
- com.bbn.openmap.gui.OMToolSet
fr.ifremer.isisfish.map.CellSelectionLayer
fr.ifremer.isisfish.map.CopyMapToClipboardListener
+ fr.ifremer.isisfish.map.OpenMapEvents
com.bbn.openmap.event.SelectMouseMode
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
@@ -50,16 +49,11 @@
</BeanValidator>
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
-
boolean portChanged = true;
protected void $afterCompleteSetup() {
- toolSet.setupListeners(portMap);
- toolMap.add((Tool)toolSet);
-
- // add copy to clipboard support
- portMap.addMapMouseListener(new CopyMapToClipboardListener(portMap));
+
+ //portMap.init(portMapInfo);
new OpenMapEvents(portMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
@@ -192,12 +186,11 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap' javaBean='new com.bbn.openmap.gui.ToolPanel()'
- constraints='BorderLayout.NORTH' decorator='boxed' enabled='{getBean() != null}' />
<fr.ifremer.isisfish.map.IsisMapBean id='portMap' javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
constraints='BorderLayout.CENTER' selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.SINGLE_SELECTION}"
decorator='boxed' enabled='{getBean() != null}' fisheryRegion='{getFisheryRegion()}'
selectedCells='{getBean() == null ? null : bean.getCell()}' />
+ <com.bbn.openmap.InformationDelegator id="portMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneBasicsUI.jaxx 2014-04-17 08:16:36 UTC (rev 3964)
@@ -33,10 +33,9 @@
fr.ifremer.isisfish.entities.Zone
fr.ifremer.isisfish.map.CellSelectionLayer
fr.ifremer.isisfish.map.CopyMapToClipboardListener
+ fr.ifremer.isisfish.map.OpenMapEvents
fr.ifremer.isisfish.ui.input.model.TopiaEntityListModel
com.bbn.openmap.event.SelectMouseMode
- com.bbn.openmap.gui.Tool
- com.bbn.openmap.gui.OMToolSet
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
java.awt.event.MouseEvent
@@ -51,15 +50,9 @@
</BeanValidator>
<script><![CDATA[
-protected OMToolSet toolSet = new OMToolSet();
-
protected void $afterCompleteSetup() {
- toolSet.setupListeners(zoneMap);
- toolMap.add((Tool)toolSet);
-
- // add copy to clipboard support
- zoneMap.addMapMouseListener(new CopyMapToClipboardListener(zoneMap));
+ //zoneMap.init(zoneMapInfo);
new OpenMapEvents(zoneMap, new SelectMouseMode(false), CellSelectionLayer.MULT_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
@@ -190,15 +183,12 @@
</row>
</Table>
<JPanel id='map' layout='{new BorderLayout()}'>
- <com.bbn.openmap.gui.ToolPanel id='toolMap'
- javaBean='new com.bbn.openmap.gui.ToolPanel()'
- decorator='boxed' constraints='BorderLayout.NORTH'/>
<fr.ifremer.isisfish.map.IsisMapBean id='zoneMap'
javaBean='new fr.ifremer.isisfish.map.IsisMapBean()'
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.MULT_SELECTION}"
fisheryRegion='{getFisheryRegion()}' selectedCells='{getBean()==null?null:bean.getCell()}'
decorator='boxed' constraints='BorderLayout.CENTER'/>
- <!-- FIXME echatellier 20110429 : binding -->
+ <com.bbn.openmap.InformationDelegator id="zoneMapInfo" constraints='BorderLayout.SOUTH' />
</JPanel>
</JSplitPane>
</JPanel>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx 2014-04-17 08:16:36 UTC (rev 3964)
@@ -26,24 +26,28 @@
<import>
static org.nuiton.i18n.I18n.t
</import>
- <row>
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ //isisMapBean.init(informationDelegator);
+ }
+ ]]></script>
+ <!-- <row>
<cell fill="horizontal">
<com.bbn.openmap.gui.ToolPanel id="toolPanel" />
</cell>
- </row>
+ </row> -->
<row>
<cell fill="both" weightx="1" weighty="1">
<fr.ifremer.isisfish.map.IsisMapBean id="isisMapBean"
selectionMode="{fr.ifremer.isisfish.map.CellSelectionLayer.NO_SELECTION}"/>
</cell>
</row>
- <!-- <row>
+ <row>
<cell fill="horizontal">
<com.bbn.openmap.InformationDelegator id="informationDelegator"
- label='{t("isisfish.simpleResult.more.information")}'
- map="{getIsisMapBean()}" showLights="false" />
+ showLights="false" />
</cell>
- </row> -->
+ </row>
<row>
<cell fill="horizontal">
<LegendPanel id="legendPanel" />
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java 2014-04-16 15:45:15 UTC (rev 3963)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MatrixMapRenderer.java 2014-04-17 08:16:36 UTC (rev 3964)
@@ -55,11 +55,11 @@
mapRendererUI = new MapRendererUI();
// Create the directional and zoom control tool
- OMToolSet resultatMapOMTS = new OMToolSet();
+ //OMToolSet resultatMapOMTS = new OMToolSet();
// Associate the tool with the map
- resultatMapOMTS.setupListeners(mapRendererUI.getIsisMapBean());
+ //resultatMapOMTS.setupListeners(mapRendererUI.getIsisMapBean());
// Add the tool to the map toolbar
- mapRendererUI.getToolPanel().add((Tool)resultatMapOMTS);
+ //mapRendererUI.getToolPanel().add((Tool)resultatMapOMTS);
//mapRendererUI.getInformationDelegator().setMap(getIsisMapBean());
//mapRendererUI.getInformationDelegator().setShowLights(false);
1
0