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
July 2009
- 3 participants
- 64 discussions
r2502 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
by chatellier@users.labs.libre-entreprise.org 17 Jul '09
17 Jul '09
Author: chatellier
Date: 2009-07-17 09:20:39 +0000 (Fri, 17 Jul 2009)
New Revision: 2502
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
Log:
#1905 : nom des labels pour une somme par ann?\195?\169e
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2009-07-17 08:01:27 UTC (rev 2501)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2009-07-17 09:20:39 UTC (rev 2502)
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
@@ -44,6 +45,8 @@
import org.codelutin.util.FileUtil;
import org.codelutin.util.Resource;
+import sun.print.resources.serviceui;
+
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
@@ -380,6 +383,31 @@
matrix.setDimensionName(i, name);
}
+
+ // #1905 : modifie les semantiques de type Date pour que lorsque
+ // c'est par exemple une somme par année
+ // les semantique se nomment
+ // janvier 0, janvier 1...
+ // plutot que
+ // janvier 0, fevrier 0...
+ Object sem = matrix.getSemantics(i);
+ if (sem instanceof List) {
+ List<Object> semList = (List<Object>)sem;
+ List<Object> newList = new ArrayList<Object>();
+ for (int index = 0 ; index < semList.size(); ++index) {
+ Object semObject = semList.get(index);
+ if (semObject instanceof Date) {
+ Date semDate = (Date)semObject;
+ Date newDate = new Date(semDate.getDate() * item.getSumStep());
+ newList.add(newDate);
+ }
+ else {
+ newList.add(semObject);
+ }
+ }
+ matrix.setSemantics(i, newList);
+ }
+ // end semantics modification
}
log.debug("matrice apres sum de la dim "+i+" :"+matrix);
}
1
0
Author: chatellier
Date: 2009-07-17 08:01:27 +0000 (Fri, 17 Jul 2009)
New Revision: 2501
Modified:
isis-fish/trunk/changelog.txt
Log:
Unify changelog format
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-07-16 16:44:22 UTC (rev 2500)
+++ isis-fish/trunk/changelog.txt 2009-07-17 08:01:27 UTC (rev 2501)
@@ -1,5 +1,8 @@
-isis-fish (3.2.0.5-rc1) chatellier
+isis-fish (3.2.0.5) stable; urgency=low
+
+isis-fish (3.2.0.5-rc1) stable; urgency=low
+
* Remove inprocess launcher (due to memory consumption)
* Readd tools.jar (isis don't need jdk anymore)
* Fix bug 1772 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1772&gr… )
@@ -11,17 +14,23 @@
* Add tests on each storage for testing template content compilation
* Add script templates based on freemarker template engine
-isis-fish (3.2.0.4) chatellier
+ -- Eric Chatellier <chatellier at codelutin.com> Thu Jul 16 19:10:14 CEST 2009
+isis-fish (3.2.0.4) stable; urgency=high
+
* Add sensitivity analysis
-isis-fish (3.2.0.4-rc1) sletellier
+ -- Eric Chatellier <chatellier at codelutin.com> Fri, 8 May 2008 11:53:00 +0200
+isis-fish (3.2.0.4-rc1) stable; urgency=low
+
* Fix ask passphrase in svn+ssh mode
* Bugfix release
-isis-fish (3.2.0.3) chemit
-
+ -- Sylvain Letellier <letellier at codelutin.com> Wed, 25 Feb 2008 16:42:00 +0200
+
+isis-fish (3.2.0.3) stable; urgency=low
+
* Change simulation monitoring to work better with SSH launcher
* Update XML-RPC launcher to xmlprc 3
* Add ssh simulation launcher
@@ -31,20 +40,26 @@
* switch to topia-service 1.0.1
* switch to topia-persistence 2.1.1
* remove tools.jar (now isis need JDK !!!)
-
-isis-fish (3.2.0.2) chatellier
-
+
+ -- Tony Chemit <chemit at codelutin.com> Sat, 18 Dec 2008 12:00:00 +0200
+
+isis-fish (3.2.0.2) stable; urgency=low
+
* fix missing lutinxml dependencies
-isis-fish (3.2.0.1) chemit
+ -- Eric Chatellier <chatellier at codelutin.com> Mon, 19 Nov 2008 11:07:00 +0200
+isis-fish (3.2.0.1) stable; urgency=low
+
* all ui are now in src/main/java
* use maven 2 directory layout
* use org.codelutin:lutinproject 3.0
* passageto UTF-8
-isis-fish (3.2.0.0) poussin
+ -- Tony Chemit <chemit at codelutin.com> Mon, 13 Oct 2008 12:00:00 +0200
+isis-fish (3.2.0.0) stable; urgency=low
+
* complete refactoring option, vcs
* complete refactoring simulation engin
* new launcher type (subprocess, caparmor ...) in progress
@@ -52,17 +67,20 @@
* add TechnicalEfficiency equation
* add Inactivity equation support
+ -- Benjamin Poussin <poussin at codelutin.com> Mon, 01 Sept 2008 19:00:00 +0200
+
isis-fish (3.1.3) stable; urgency=high
* bug correction when migration failed, still launch application on a new database
* bug correction changing local database in configuration ui has no effect on next launch
- * bug correction if no svn connexion, application could not start
+ * bug correction if no svn connection, application could not start
* use commandline 0.4 (improve init and user options)
* improve i18n loading (lutinutil)
* refactor init and vcs init
- -- Tony Chemit <chemit at codelutin.com> Fri, 19 Mar 2008 02:02:02 +0200
+ -- Tony Chemit <chemit at codelutin.com> Fri, 19 Mar 2008 02:02:02 +0200
+isis-fish (3.1.2) stable; urgency=high
* bug correction #1605 add annotation on scripts for contextual help
* bug correction #1617 Non prise en compte du changement de base locale
@@ -70,13 +88,14 @@
-- Tony Chemit <chemit at codelutin.com> Fri, 26 Feb 2008 23:34:02 +0200
+isis-fish (3.1.1) stable; urgency=high
+
* bug correction #1601 Exception et erreur apres une simulation
* bug correction #1602 Gros probleme de mise a jour de database entre v3.0 vers 3.1 perte des pecheries
* bug i18n (loose some translate while using Isis-Fish from a jar)
-- Tony Chemit <chemit at codelutin.com> Fri, 21 Dec 2007 11:34:02 +0200
-
isis-fish (3.0.22) stable; urgency=high
* bug correction when launch many simulation with AnalysePlan (OutOfMemory)
1
0
Author: chatellier
Date: 2009-07-16 16:44:22 +0000 (Thu, 16 Jul 2009)
New Revision: 2500
Modified:
isis-fish/trunk/pom.xml
Log:
[maven-release-plugin] prepare for next development iteration
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-07-16 16:44:13 UTC (rev 2499)
+++ isis-fish/trunk/pom.xml 2009-07-16 16:44:22 UTC (rev 2500)
@@ -13,7 +13,7 @@
<groupId>ifremer</groupId>
<artifactId>isis-fish</artifactId>
- <version>3.2.0.5-rc1</version>
+ <version>3.2.0.5-rc2-SNAPSHOT</version>
<!-- POM Relationships : Inheritance : Dependencies -->
<dependencies>
@@ -585,9 +585,9 @@
<!-- *** Build Environment ************************************** -->
<!-- ************************************************************* -->
<scm>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/tags/isis-fish-3.2.0.…</connection>
- <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/tags/isis-fish-3.2.0.…</developerConnection>
- <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/isis-fish/tags/…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/trunk</connection>
+ <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/trunk</developerConnection>
+ <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/isis-fish/trunk…</url>
</scm>
<!--Code Lutin Repository-->
1
0
r2499 - in isis-fish/tags: . isis-fish-3.2.0.5-rc1 isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input isis-fish-3.2.0.5-rc1/src/main/resources isis-fish-3.2.0.5-rc1/src/main/resources/i18n
by chatellier@users.labs.libre-entreprise.org 16 Jul '09
by chatellier@users.labs.libre-entreprise.org 16 Jul '09
16 Jul '09
Author: chatellier
Date: 2009-07-16 16:44:13 +0000 (Thu, 16 Jul 2009)
New Revision: 2499
Added:
isis-fish/tags/isis-fish-3.2.0.5-rc1/
isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt
isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties
Removed:
isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt
isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties
isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties
Log:
[maven-release-plugin] copy for tag isis-fish-3.2.0.5-rc1
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1 (from rev 2478, isis-fish/trunk)
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,304 +0,0 @@
-isis-fish (3.2.0.4-rc2) xxx
- * Fix bug 1772 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1772&gr… )
- * Fix bug 1900 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1900&gr… )
- * Fix simulation plan subjob number : start at 0
- * Fix bug, database migration asked twice
- * Fix VCSSVN getRemoteStatus(), not showed added status file
- * Rename "factors" package to "sensitivity"
- * Add tests on each storage for testing template content compilation
- * Add script templates based on freemarker template engine
-
-isis-fish (3.2.0.4-rc1) sletellier
-
- * Fix ask passphrase in svn+ssh mode
- * Bugfix release
-
-isis-fish (3.2.0.3) chemit
-
- * Change simulation monitoring to work better with SSH launcher
- * Update XML-RPC launcher to xmlprc 3
- * Add ssh simulation launcher
- * Add Jaxx UI for all interfaces
- * Remove SwixAT UI
- * switch to lutinproject 3.3
- * switch to topia-service 1.0.1
- * switch to topia-persistence 2.1.1
- * remove tools.jar (now isis need JDK !!!)
-
-isis-fish (3.2.0.2) chatellier
-
- * fix missing lutinxml dependencies
-
-isis-fish (3.2.0.1) chemit
-
- * all ui are now in src/main/java
- * use maven 2 directory layout
- * use org.codelutin:lutinproject 3.0
- * passageto UTF-8
-
-isis-fish (3.2.0.0) poussin
-
- * complete refactoring option, vcs
- * complete refactoring simulation engin
- * new launcher type (subprocess, caparmor ...) in progress
- * modify script to use cell and not zone in some computation
- * add TechnicalEfficiency equation
- * add Inactivity equation support
-
-isis-fish (3.1.3) stable; urgency=high
-
- * bug correction when migration failed, still launch application on a new database
- * bug correction changing local database in configuration ui has no effect on next launch
- * bug correction if no svn connexion, application could not start
- * use commandline 0.4 (improve init and user options)
- * improve i18n loading (lutinutil)
- * refactor init and vcs init
-
- -- Tony Chemit <chemit at codelutin.com> Fri, 19 Mar 2008 02:02:02 +0200
-
-
- * bug correction #1605 add annotation on scripts for contextual help
- * bug correction #1617 Non prise en compte du changement de base locale
- * add new ui for configuration
-
- -- Tony Chemit <chemit at codelutin.com> Fri, 26 Feb 2008 23:34:02 +0200
-
- * bug correction #1601 Exception et erreur apres une simulation
- * bug correction #1602 Gros probleme de mise a jour de database entre v3.0 vers 3.1 perte des pecheries
- * bug i18n (loose some translate while using Isis-Fish from a jar)
-
- -- Tony Chemit <chemit at codelutin.com> Fri, 21 Dec 2007 11:34:02 +0200
-
-
-isis-fish (3.0.22) stable; urgency=high
-
- * bug correction when launch many simulation with AnalysePlan (OutOfMemory)
- now we don't use cglib but javassist
-
- -- Benjamin Poussin <poussin at codelutin.com> Wed, 7 Nov 2007 21:48:31 +0100
-
-isis-fish (3.0.21) stable; urgency=high
-
- * bug correction in ResultDatastore, bad database used to get result during simulation
- * add call to close method on SimulationStorage for in memory database
- * bug correction when launch many simulation with AnalysePlan (OutOfMemory)
-
- -- Benjamin Poussin <poussin at codelutin.com> Wed, 7 Nov 2007 21:48:31 +0100
-
-isis-fish (3.0.20) stable; urgency=high
-
- * add clean temp directory simulation preparation
- * add IsisFish version number in parameter
- * add getPopulations method in PopulationMonitor
- * bug correction #1592 in totalFishingMortality during reduction of matrix
- * bug correction #1583 about too many file open
- * bug in export script template
- * bug correction in rule Cantonnement
- * modify database simulation usage, now we use in memory database for
- data, and file storage for result, to separate result and data. This
- improve performance (70%).
- * bug switch to h2 database version 1.0.60, this prevent rollback exception
- during simulation
-
- -- Benjamin Poussin <poussin at codelutin.com> Mon, 15 Oct 2007 11:34:02 +0200
-
-isis-fish (3.0.19) stable; urgency=low
-
- * bug in cache for String and number in parameter
- * bug RuleMonitor add Rule as parameter
- * add extraRules field in SimulationParameter to permit Analyse Plan to
- add rules in parameter
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 06 Jun 2007 15:39:17 +0200
-
-isis-fish (3.0.18) stable; urgency=low
-
- * bug go.bat have correct DOS end of line
- * improve build-release.sh to send email to user and devel list after deploy
- * bug correction in delete simulation, remove close context at begin of
- clear method
- * bug permit simulation without SimulationControl
- * bug in queue model test if no more simulation to prevent Index Out of
- bound Exception
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 24 May 2007 15:39:17 +0200
-
-isis-fish (3.0.17) stable; urgency=low
-
- * add support for filename and extension in export script
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 24 May 2007 15:38:17 +0200
-
-isis-fish (3.0.16) stable; urgency=low
-
- * add ssj jar to have random library
- * add support to auto upgrade database (topia migration service)
- * bug force reload parameter in thread simulation to prevent class cast
- exception because same class is loaded in two different classloader
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 21 May 2007 15:38:17 +0200
-
-isis-fish (3.0.15) stable; urgency=low
-
- * change database lock_mode to permit read with out lock
- * change database version to 1.0.20070304
- * bug end line in equation editor
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 06 Apr 2007 15:38:17 +0200
-
-isis-fish (3.0.14) stable; urgency=low
-
- * add beforeOrEquals and afterOrEquals methods to Date and Month
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 02 Apr 2007 15:38:17 +0200
-
-isis-fish (3.0.13) stable; urgency=low
-
- * add simulation information support
- * change aspect deployment classloader (not used Agent)
- * bug in cache aspect when used without trace aspect
- * add checkout maven file option
- * change MatrixPanel context menu
- * bug in datastore closeContext (nullify storage)
- * bug in datastore getStorage (if closed create new)
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 30 Mar 2007 15:38:17 +0200
-
-isis-fish (3.0.12) stable; urgency=low
-
- * bug in cache, help garbage with clear on collection
- * add on matrix sumOverDim(dim, start, nb)
- * change statistic is not used by default
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 20 Mar 2007 15:38:17 +0200
-
-isis-fish (3.0.11) stable; urgency=low
-
- * add result support in analyse plan
- * bug in AnalysePlanContext values access
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 09 Mar 2007 15:38:17 +0200
-
-isis-fish (3.0.10) stable; urgency=low
-
- * Analyse Plan implementation
- * feature #1531 date automaticaly added to simulation id
- * bug in Range value inversion of integer and real
- * bug #1492 matrix index error for result matrix
- * bug #1493 simulation, region deletion
- * bug #1495 view population number with one population
- * bug #1496 simulation, region order
- * bug #1528 in min size in wizard class creation
- * bug #1535 save/cancel button activation/desactivation
- * bug #1536 simulation queue
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 05 Mar 2007 15:38:17 +0200
-
-isis-fish (3.0.9) stable; urgency=low
-
- * add equation editor with syntaxe checking on all equation
- * implement Region checking mecanisme
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 08 Feb 2007 15:38:17 +0200
-
-isis-fish (3.0.8) stable; urgency=low
-
- * force checkout of directory not checkouted at startup
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 05 Feb 2007 15:38:17 +0200
-
-isis-fish (3.0.7) stable; urgency=low
-
- * add import region and rename menu
- * bug in update script
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 25 Jan 2007 15:38:17 +0200
-
-isis-fish (3.0.6) stable; urgency=low
-
- * add support for user prompt update file at startup
- * bug saisons (bad converter init)
- * simulation thread completely rewriten
- * first version of systray
- * region copy
- * bug tree refresh after delete region
- * cvs synchronisation menu
- * test de non regression
- * bug in exports
- * bug in rules
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 25 Jan 2007 15:38:17 +0200
-
-isis-fish (3.0.5) stable; urgency=low
-
- * add support for delete prompt message and delete cascade prompt message
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 20 Nov 2006 15:38:17 +0200
-
-isis-fish (3.0.4) stable; urgency=low
-
- * improve cache key computation (use string), (gain 80%)
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 17 Nov 2006 15:38:17 +0200
-
-isis-fish (3.0.3) stable; urgency=low
-
- * bug in getMonth if date is negative
- * bug in message error during equation compilation, now we show the
- equation type
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 16 Nov 2006 15:38:17 +0200
-
-isis-fish (3.0.2) stable; urgency=low
-
- * add import from isis-fish v2
- * change rules from region to root
- * improve equation frame editor (equation documentation)
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 13 Nov 2006 15:38:17 +0200
-
-isis-fish (3.0.1) stable; urgency=low
-
- * bug selection cell (selected in list -> note selected in map)
- * add extension to file for model equation
- * improve refresh in input
- * add argument force to ResultStorage.addResult method
- * bug put new Population in right Species when more than one Species (tree problem)
- * bug put new Rule script in right region (tree problem)
- * add firstNull='true' for gear values types
- * bug when load gear with no values (null)
- * change method call: Input.CommitRegionInCVS -> Input.commitRegionInCVS
- * add Equation model editor
- * bug in script editor, don't used translated String for script type
- * bug in script editor, menu save/delete/deleteCVS work now
- * change use for(int i...) in GravityModel and SiMatrix for matrix access
- (gain factor 4 on matrix access and 65% on simulation)
- * change use Soft cache in ResultStorage (gain 10%)
- * improve ResultStorage keep in memory all result available to prevent unecessary
- query on database. Useful with Soft cache.
- * change use commons-collection in Cache aspect (prevent garbage bug in HashMapMultiKey)
- * bug in tools.jar search pattern for Windows
- * bug when create SetOfVessels in Effort description Add button
- was always grey
- * add getNecessaryResult in Rule to know result necessary for this rule
- and activate it automaticaly
- * improve all results are now optionnal
- * add compute and add as result discard weight if necessary
- * add TACweight in DemoRegion
- * add result MATRIX_NO_ACTIVITY
- * bug can set rule parameter
- * bug rule parameter can be saved and restored
- * improve when TopiaContext is used to read, error if another try to write
- (lock table timeout).
- * bug many correction in persistence (lock problem, load cycle problem)
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 26 Sep 2006 15:38:17 +0200
-
-isis-fish (3.0.0) stable; urgency=low
-
- * Utililsation de DoubleBigVector par defaut pour les Matrix
- (gain facteur entre 2 et 8 suivant parcours (Iterator, Semantic, Index)
- * Suppression de tous les scripts utilisation de Java et compilation
- (gain facteur 1000 pour l'eval des equations donc 91% sur la simulation)
-
- -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 07 Sep 2006 15:38:17 +0200
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt (from rev 2495, isis-fish/trunk/changelog.txt)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/changelog.txt 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,311 @@
+isis-fish (3.2.0.5-rc1) chatellier
+
+ * Remove inprocess launcher (due to memory consumption)
+ * Readd tools.jar (isis don't need jdk anymore)
+ * Fix bug 1772 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1772&gr… )
+ * Fix bug 1900 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1900&gr… )
+ * Fix simulation plan subjob number : start at 0
+ * Fix bug, database migration asked twice
+ * Fix VCSSVN getRemoteStatus(), not showed added status file
+ * Rename "factors" package to "sensitivity"
+ * Add tests on each storage for testing template content compilation
+ * Add script templates based on freemarker template engine
+
+isis-fish (3.2.0.4) chatellier
+
+ * Add sensitivity analysis
+
+isis-fish (3.2.0.4-rc1) sletellier
+
+ * Fix ask passphrase in svn+ssh mode
+ * Bugfix release
+
+isis-fish (3.2.0.3) chemit
+
+ * Change simulation monitoring to work better with SSH launcher
+ * Update XML-RPC launcher to xmlprc 3
+ * Add ssh simulation launcher
+ * Add Jaxx UI for all interfaces
+ * Remove SwixAT UI
+ * switch to lutinproject 3.3
+ * switch to topia-service 1.0.1
+ * switch to topia-persistence 2.1.1
+ * remove tools.jar (now isis need JDK !!!)
+
+isis-fish (3.2.0.2) chatellier
+
+ * fix missing lutinxml dependencies
+
+isis-fish (3.2.0.1) chemit
+
+ * all ui are now in src/main/java
+ * use maven 2 directory layout
+ * use org.codelutin:lutinproject 3.0
+ * passageto UTF-8
+
+isis-fish (3.2.0.0) poussin
+
+ * complete refactoring option, vcs
+ * complete refactoring simulation engin
+ * new launcher type (subprocess, caparmor ...) in progress
+ * modify script to use cell and not zone in some computation
+ * add TechnicalEfficiency equation
+ * add Inactivity equation support
+
+isis-fish (3.1.3) stable; urgency=high
+
+ * bug correction when migration failed, still launch application on a new database
+ * bug correction changing local database in configuration ui has no effect on next launch
+ * bug correction if no svn connexion, application could not start
+ * use commandline 0.4 (improve init and user options)
+ * improve i18n loading (lutinutil)
+ * refactor init and vcs init
+
+ -- Tony Chemit <chemit at codelutin.com> Fri, 19 Mar 2008 02:02:02 +0200
+
+
+ * bug correction #1605 add annotation on scripts for contextual help
+ * bug correction #1617 Non prise en compte du changement de base locale
+ * add new ui for configuration
+
+ -- Tony Chemit <chemit at codelutin.com> Fri, 26 Feb 2008 23:34:02 +0200
+
+ * bug correction #1601 Exception et erreur apres une simulation
+ * bug correction #1602 Gros probleme de mise a jour de database entre v3.0 vers 3.1 perte des pecheries
+ * bug i18n (loose some translate while using Isis-Fish from a jar)
+
+ -- Tony Chemit <chemit at codelutin.com> Fri, 21 Dec 2007 11:34:02 +0200
+
+
+isis-fish (3.0.22) stable; urgency=high
+
+ * bug correction when launch many simulation with AnalysePlan (OutOfMemory)
+ now we don't use cglib but javassist
+
+ -- Benjamin Poussin <poussin at codelutin.com> Wed, 7 Nov 2007 21:48:31 +0100
+
+isis-fish (3.0.21) stable; urgency=high
+
+ * bug correction in ResultDatastore, bad database used to get result during simulation
+ * add call to close method on SimulationStorage for in memory database
+ * bug correction when launch many simulation with AnalysePlan (OutOfMemory)
+
+ -- Benjamin Poussin <poussin at codelutin.com> Wed, 7 Nov 2007 21:48:31 +0100
+
+isis-fish (3.0.20) stable; urgency=high
+
+ * add clean temp directory simulation preparation
+ * add IsisFish version number in parameter
+ * add getPopulations method in PopulationMonitor
+ * bug correction #1592 in totalFishingMortality during reduction of matrix
+ * bug correction #1583 about too many file open
+ * bug in export script template
+ * bug correction in rule Cantonnement
+ * modify database simulation usage, now we use in memory database for
+ data, and file storage for result, to separate result and data. This
+ improve performance (70%).
+ * bug switch to h2 database version 1.0.60, this prevent rollback exception
+ during simulation
+
+ -- Benjamin Poussin <poussin at codelutin.com> Mon, 15 Oct 2007 11:34:02 +0200
+
+isis-fish (3.0.19) stable; urgency=low
+
+ * bug in cache for String and number in parameter
+ * bug RuleMonitor add Rule as parameter
+ * add extraRules field in SimulationParameter to permit Analyse Plan to
+ add rules in parameter
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 06 Jun 2007 15:39:17 +0200
+
+isis-fish (3.0.18) stable; urgency=low
+
+ * bug go.bat have correct DOS end of line
+ * improve build-release.sh to send email to user and devel list after deploy
+ * bug correction in delete simulation, remove close context at begin of
+ clear method
+ * bug permit simulation without SimulationControl
+ * bug in queue model test if no more simulation to prevent Index Out of
+ bound Exception
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 24 May 2007 15:39:17 +0200
+
+isis-fish (3.0.17) stable; urgency=low
+
+ * add support for filename and extension in export script
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 24 May 2007 15:38:17 +0200
+
+isis-fish (3.0.16) stable; urgency=low
+
+ * add ssj jar to have random library
+ * add support to auto upgrade database (topia migration service)
+ * bug force reload parameter in thread simulation to prevent class cast
+ exception because same class is loaded in two different classloader
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 21 May 2007 15:38:17 +0200
+
+isis-fish (3.0.15) stable; urgency=low
+
+ * change database lock_mode to permit read with out lock
+ * change database version to 1.0.20070304
+ * bug end line in equation editor
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 06 Apr 2007 15:38:17 +0200
+
+isis-fish (3.0.14) stable; urgency=low
+
+ * add beforeOrEquals and afterOrEquals methods to Date and Month
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 02 Apr 2007 15:38:17 +0200
+
+isis-fish (3.0.13) stable; urgency=low
+
+ * add simulation information support
+ * change aspect deployment classloader (not used Agent)
+ * bug in cache aspect when used without trace aspect
+ * add checkout maven file option
+ * change MatrixPanel context menu
+ * bug in datastore closeContext (nullify storage)
+ * bug in datastore getStorage (if closed create new)
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 30 Mar 2007 15:38:17 +0200
+
+isis-fish (3.0.12) stable; urgency=low
+
+ * bug in cache, help garbage with clear on collection
+ * add on matrix sumOverDim(dim, start, nb)
+ * change statistic is not used by default
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 20 Mar 2007 15:38:17 +0200
+
+isis-fish (3.0.11) stable; urgency=low
+
+ * add result support in analyse plan
+ * bug in AnalysePlanContext values access
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 09 Mar 2007 15:38:17 +0200
+
+isis-fish (3.0.10) stable; urgency=low
+
+ * Analyse Plan implementation
+ * feature #1531 date automaticaly added to simulation id
+ * bug in Range value inversion of integer and real
+ * bug #1492 matrix index error for result matrix
+ * bug #1493 simulation, region deletion
+ * bug #1495 view population number with one population
+ * bug #1496 simulation, region order
+ * bug #1528 in min size in wizard class creation
+ * bug #1535 save/cancel button activation/desactivation
+ * bug #1536 simulation queue
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 05 Mar 2007 15:38:17 +0200
+
+isis-fish (3.0.9) stable; urgency=low
+
+ * add equation editor with syntaxe checking on all equation
+ * implement Region checking mecanisme
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 08 Feb 2007 15:38:17 +0200
+
+isis-fish (3.0.8) stable; urgency=low
+
+ * force checkout of directory not checkouted at startup
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 05 Feb 2007 15:38:17 +0200
+
+isis-fish (3.0.7) stable; urgency=low
+
+ * add import region and rename menu
+ * bug in update script
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 25 Jan 2007 15:38:17 +0200
+
+isis-fish (3.0.6) stable; urgency=low
+
+ * add support for user prompt update file at startup
+ * bug saisons (bad converter init)
+ * simulation thread completely rewriten
+ * first version of systray
+ * region copy
+ * bug tree refresh after delete region
+ * cvs synchronisation menu
+ * test de non regression
+ * bug in exports
+ * bug in rules
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 25 Jan 2007 15:38:17 +0200
+
+isis-fish (3.0.5) stable; urgency=low
+
+ * add support for delete prompt message and delete cascade prompt message
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 20 Nov 2006 15:38:17 +0200
+
+isis-fish (3.0.4) stable; urgency=low
+
+ * improve cache key computation (use string), (gain 80%)
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 17 Nov 2006 15:38:17 +0200
+
+isis-fish (3.0.3) stable; urgency=low
+
+ * bug in getMonth if date is negative
+ * bug in message error during equation compilation, now we show the
+ equation type
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 16 Nov 2006 15:38:17 +0200
+
+isis-fish (3.0.2) stable; urgency=low
+
+ * add import from isis-fish v2
+ * change rules from region to root
+ * improve equation frame editor (equation documentation)
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 13 Nov 2006 15:38:17 +0200
+
+isis-fish (3.0.1) stable; urgency=low
+
+ * bug selection cell (selected in list -> note selected in map)
+ * add extension to file for model equation
+ * improve refresh in input
+ * add argument force to ResultStorage.addResult method
+ * bug put new Population in right Species when more than one Species (tree problem)
+ * bug put new Rule script in right region (tree problem)
+ * add firstNull='true' for gear values types
+ * bug when load gear with no values (null)
+ * change method call: Input.CommitRegionInCVS -> Input.commitRegionInCVS
+ * add Equation model editor
+ * bug in script editor, don't used translated String for script type
+ * bug in script editor, menu save/delete/deleteCVS work now
+ * change use for(int i...) in GravityModel and SiMatrix for matrix access
+ (gain factor 4 on matrix access and 65% on simulation)
+ * change use Soft cache in ResultStorage (gain 10%)
+ * improve ResultStorage keep in memory all result available to prevent unecessary
+ query on database. Useful with Soft cache.
+ * change use commons-collection in Cache aspect (prevent garbage bug in HashMapMultiKey)
+ * bug in tools.jar search pattern for Windows
+ * bug when create SetOfVessels in Effort description Add button
+ was always grey
+ * add getNecessaryResult in Rule to know result necessary for this rule
+ and activate it automaticaly
+ * improve all results are now optionnal
+ * add compute and add as result discard weight if necessary
+ * add TACweight in DemoRegion
+ * add result MATRIX_NO_ACTIVITY
+ * bug can set rule parameter
+ * bug rule parameter can be saved and restored
+ * improve when TopiaContext is used to read, error if another try to write
+ (lock table timeout).
+ * bug many correction in persistence (lock problem, load cycle problem)
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 26 Sep 2006 15:38:17 +0200
+
+isis-fish (3.0.0) stable; urgency=low
+
+ * Utililsation de DoubleBigVector par defaut pour les Matrix
+ (gain facteur entre 2 et 8 suivant parcours (Iterator, Semantic, Index)
+ * Suppression de tous les scripts utilisation de Java et compilation
+ (gain facteur 1000 pour l'eval des equations donc 91% sur la simulation)
+
+ -- Benjamin Poussin <poussin at cube.codelutin.com> Thu, 07 Sep 2006 15:38:17 +0200
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,759 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
- <parent>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinproject</artifactId>
- <version>3.5</version>
- </parent>
-
- <groupId>ifremer</groupId>
- <artifactId>isis-fish</artifactId>
- <version>3.2.0.5-rc1-SNAPSHOT</version>
-
- <!-- POM Relationships : Inheritance : Dependencies -->
- <dependencies>
-
- <!--Compile-->
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- <scope>compile</scope>
- </dependency>
-
- <!--Librairies CodeLutin-->
- <dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinutil</artifactId>
- <version>${lutinutil.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.codelutin.topia</groupId>
- <artifactId>topia-persistence</artifactId>
- <version>${topia.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>topia-service</artifactId>
- <version>${topia.service.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinmatrix</artifactId>
- <version>${lutinmatrix.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinwidget</artifactId>
- <version>${lutinwidget.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <!--Jaxx-->
- <dependency>
- <groupId>org.codelutin.jaxx</groupId>
- <artifactId>jaxx-runtime-swing</artifactId>
- <version>${jaxx.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.codelutin.jaxx</groupId>
- <artifactId>jaxx-runtime-validator</artifactId>
- <version>${jaxx.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.codelutin.jaxx</groupId>
- <artifactId>jaxx-runtime-swing-widget</artifactId>
- <version>${jaxx.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <!-- Utilisé dans les scripts -->
- <dependency>
- <groupId>org.codelutin</groupId>
- <artifactId>lutinj2r</artifactId>
- <version>${lutinj2r.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <!--Commons-->
- <dependency>
- <groupId>commons-jxpath</groupId>
- <artifactId>commons-jxpath</artifactId>
- <version>1.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.4</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-math</groupId>
- <artifactId>commons-math</artifactId>
- <version>1.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2.1</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.8.0</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.4</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>1.6.1</version>
- <scope>compile</scope>
- </dependency>
-
- <!--Other-->
- <dependency>
- <groupId>jfreechart</groupId>
- <artifactId>jfreechart</artifactId>
- <version>0.9.3</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>jcommon</groupId>
- <artifactId>jcommon</artifactId>
- <version>0.7.0</version>
- <scope>compile</scope>
- </dependency>
-
- <!-- XML-RPC Client and server -->
- <dependency>
- <groupId>org.apache.xmlrpc</groupId>
- <artifactId>xmlrpc-client</artifactId>
- <version>${xmlrpc.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.xmlrpc</groupId>
- <artifactId>xmlrpc-server</artifactId>
- <version>${xmlrpc.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>3.1</version>
- <scope>runtime</scope>
- </dependency>
-
- <!-- encore utilise pour les pre-scripts -->
- <dependency>
- <groupId>org.beanshell</groupId>
- <artifactId>bsh</artifactId>
- <version>2.0b4</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>openmap</groupId>
- <artifactId>openmap</artifactId>
- <version>${openmap.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.fife</groupId>
- <artifactId>rsyntaxtextarea</artifactId>
- <version>1.3.3</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>com.jcraft</groupId>
- <artifactId>jsch</artifactId>
- <version>0.1.41</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>
- </dependency>
-
- <!-- Change this dependence if you change database -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.1.114</version>
- <scope>compile</scope>
- </dependency>
-
- <!-- aspectwerkz -->
- <dependency>
- <groupId>aspectwerkz</groupId>
- <artifactId>aspectwerkz</artifactId>
- <version>${aspectwerkz.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>aspectwerkz</groupId>
- <artifactId>aspectwerkz-jdk5</artifactId>
- <version>${aspectwerkz.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>aspectwerkz</groupId>
- <artifactId>aspectwerkz-core</artifactId>
- <version>${aspectwerkz.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <!-- ssj pour les calculs stockastiques -->
- <dependency>
- <groupId>ssj</groupId>
- <artifactId>ssj</artifactId>
- <version>2.1.1</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</groupId>
- <artifactId>svnkit</artifactId>
- <version>1.2.3.5521</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.trilead</groupId>
- <artifactId>trilead-ssh2</artifactId>
- <version>build213-svnkit-1.2</version>
- <scope>runtime</scope>
- </dependency>
- <!-- fin svnkit pour communication subversion -->
-
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.15</version>
- </dependency>
-
- <dependency>
- <groupId>net.sourceforge.cpdetector</groupId>
- <artifactId>cpdetector</artifactId>
- <version>1.0.7</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>com.sun</groupId>
- <artifactId>tools</artifactId>
- <version>1.6.0</version>
- </dependency>
- </dependencies>
-
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
- <name>IsisFish</name>
- <description>Simulateur de pecherie complexe.</description>
- <inceptionYear>1999</inceptionYear>
-
- <licenses>
- <license>
- <name>GPL</name>
- <url>http://www.gnu.org/copyleft/gpl.html</url>
- <distribution>repo</distribution>
- </license>
- </licenses>
-
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
- <packaging>jar</packaging>
-
- <properties>
- <!-- id du projet du labs -->
- <labs.id>8</labs.id>
-
- <!-- nom du projet du labs -->
- <labs.project>isis-fish</labs.project>
-
- <!-- Custom version -->
- <jaxx.version>1.5.1-SNAPSHOT</jaxx.version>
- <topia.version>2.1.6.1-SNAPSHOT</topia.version>
- <topia.service.version>1.0.3</topia.service.version>
- <lutinmatrix.version>1.3</lutinmatrix.version>
- <lutinutil.version>1.0.6</lutinutil.version>
- <i18n.version>0.9</i18n.version>
- <lutinwidget.version>0.14.1-SNAPSHOT</lutinwidget.version>
- <generator.version>0.64</generator.version>
- <lutinj2r.version>0.4</lutinj2r.version>
- <jrst.version>0.8.4</jrst.version>
- <license-switcher.version>0.6</license-switcher.version>
- <openmap.version>4.6.4</openmap.version>
- <aspectwerkz.version>2.0</aspectwerkz.version>
- <xmlrpc.version>3.1.2</xmlrpc.version>
-
- <!-- for compilation test to run -->
- <maven.test.forkMode>once</maven.test.forkMode>
-
- <!--Main class in JAR -->
- <maven.jar.main.class>fr.ifremer.isisfish.IsisFish</maven.jar.main.class>
-
- <!-- jnlp -->
- <keystorepath>${codelutin.keystorepath}</keystorepath>
- <keystorealias>CodeLutin</keystorealias>
- <keystorepass>codelutin</keystorepass>
- <jnlp.build.directory>${project.build.directory}/jnlp</jnlp.build.directory>
-
- <jnlpCodebase>${project.url}</jnlpCodebase>
- <!-- to test jnlp file locally -->
- <jnlpCodebase>file://${jnlp.build.directory}</jnlpCodebase>
- </properties>
-
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.codelutin</groupId>
- <artifactId>maven-generator-plugin</artifactId>
- <version>${generator.version}</version>
- <executions>
- <execution>
- <id>Generator</id>
- <phase>generate-sources</phase>
- <configuration>
- <srcDirZuml>${project.basedir}/src/main/xmi</srcDirZuml>
- <srcXmiDest>${maven.gen.dir}/xmi/</srcXmiDest>
- <fullPackagePath>fr.ifremer.isisfish</fullPackagePath>
- <extractedPackages>fr.ifremer.isisfish</extractedPackages>
- <!--Config generator-->
- <srcGenDest>${maven.gen.dir}/objectmodel/</srcGenDest>
- <includes>**/*.objectmodel</includes>
- <templates>org.codelutin.topia.generator.TopiaMetaGenerator</templates>
- <excludeTemplates>
- <value>org.codelutin.topia.generator.EntityEnumGenerator</value>
- <value>org.codelutin.topia.generator.EntityProviderGenerator</value>
- </excludeTemplates>
- <destDirGen>${maven.gen.dir}/java</destDirGen>
- <defaultPackage>fr.ifremer.isisfish</defaultPackage>
- <copyVersionDir>${project.basedir}/src/main/resources/oldmappings/%MODELNAME%
- </copyVersionDir>
- <copyVersionFiles>**/*.hbm.xml</copyVersionFiles>
- <copyOverwrite>true</copyOverwrite>
- </configuration>
- <goals>
- <goal>zargo2xmi</goal>
- <goal>xmi2objectmodel</goal>
- <goal>generate</goal>
- <goal>copyVersionFiles</goal>
- </goals>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>org.codelutin.topia</groupId>
- <artifactId>topia-persistence</artifactId>
- <version>${topia.version}</version>
- <scope>runtime</scope>
- </dependency>
- </dependencies>
- </plugin>
-
- <plugin>
- <groupId>org.codelutin.jaxx</groupId>
- <artifactId>maven-jaxx-plugin</artifactId>
- <version>${jaxx.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <extraImportList>jaxx.runtime.SwingUtil,static jaxx.runtime.Util.getStringValue</extraImportList>
- <addSourcesToClassPath>true</addSourcesToClassPath>
- <addProjectClassPath>true</addProjectClassPath>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.codelutin</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
- <version>${i18n.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>parserJava</goal>
- <goal>gen</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <!-- Always process jrst files, but only called on pre-site phase -->
- <plugin>
- <groupId>org.codelutin</groupId>
- <artifactId>maven-jrst-plugin</artifactId>
- <version>${jrst.version}</version>
- <configuration>
- <defaultLocale>fr</defaultLocale>
- </configuration>
- <executions>
- <execution>
- <phase>pre-site</phase>
- <goals>
- <goal>jrst</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-4</version>
- <configuration>
- <descriptors>
- <descriptor>src/main/assembly/bin.xml</descriptor>
- </descriptors>
- <attach>false</attach>
- </configuration>
- <executions>
- <execution>
- <phase>verify</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
-
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addClasspath>true</addClasspath>
- <classpathPrefix>lib/</classpathPrefix>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemProperties>
- <property>
- <name>java.io.tmpdir</name>
- <value>${project.build.directory}/surefire-workdir</value>
- </property>
- </systemProperties>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.5</version>
- <configuration>
- <links>
- <link>http://java.sun.com/javase/6/docs/api/</link>
- <link>http://lutinutil.labs.libre-entreprise.org/lutinutil/apidocs/</link>
- <link>http://lutinmatrix.labs.libre-entreprise.org/lutinmatrix/apidocs/</link>
- <link>http://topia.labs.libre-entreprise.org/topia/topia-persistence/apidocs/</link>
- </links>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <version>2.1</version>
- </plugin>
- </plugins>
- </reporting>
-
- <!-- ************************************************************* -->
- <!-- *** Build Environment ************************************** -->
- <!-- ************************************************************* -->
- <scm>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/trunk</connection>
- <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/trunk</developerConnection>
- <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/isis-fish/trunk…</url>
- </scm>
-
- <!--Code Lutin Repository-->
- <repositories>
- <repository>
- <id>codelutin-repository</id>
- <name>CodeLutinRepository</name>
- <url>http://lutinbuilder.labs.libre-entreprise.org/maven2</url>
- <snapshots>
- <enabled>true</enabled>
- <checksumPolicy>warn</checksumPolicy>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- <checksumPolicy>warn</checksumPolicy>
- </releases>
- </repository>
- </repositories>
-
- <profiles>
- <profile>
- <id>release-profile</id>
- <activation>
- <property>
- <name>performRelease</name>
- <value>true</value>
- </property>
- </activation>
- <build>
- <plugins>
-
- <!-- always add license and third-party files to classpath -->
- <plugin>
- <groupId>org.codelutin</groupId>
- <artifactId>maven-license-switcher-plugin</artifactId>
- <version>${license-switcher.version}</version>
- <configuration>
- <licenseName>${license-switcher.licenseName}</licenseName>
- </configuration>
- <executions>
- <execution>
- <id>attach-licenses</id>
- <goals>
- <!--goal>license</goal-->
- <goal>third-party</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <!-- Ajout des libs signe par Sun dans un fichier jnlp separe -->
- <execution>
- <id>JnlpSun</id>
- <phase>verify</phase>
- <configuration>
- <tasks>
- <mkdir dir="${jnlp.build.directory}" />
- <copy file="${project.basedir}/src/main/jnlp/sun.jnlp" verbose="${maven.verbose}" todir="${jnlp.build.directory}" failonerror="false">
- <filterset>
- <filter token="lib-javahelp" value="javahelp-2.0.02.jar" />
- <filter token="lib-activation" value="activation-1.1.jar" />
- <filter token="lib-mail" value="mail-1.4.jar" />
- <filter token="url" value="${jnlpCodebase}" />
- </filterset>
- </copy>
- <copy file="${project.basedir}/src/main/jnlp/jxlayer.jnlp" verbose="${maven.verbose}" todir="${jnlp.build.directory}" failonerror="false">
- <filterset>
- <filter token="lib" value="jxlayer-3.0.1.jar" />
- <filter token="url" value="${jnlpCodebase}" />
- </filterset>
- </copy>
-
- <copy verbose="${maven.verbose}" todir="${jnlp.build.directory}/lib" failonerror="false">
- <fileset dir="${project.build.directory}/lib">
- <include name="javahelp-2.0.02.jar" />
- <include name="activation-1.1.jar" />
- <include name="mail-1.4.jar" />
- <include name="jxlayer-3.0.1.jar" />
- </fileset>
- </copy>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
-
- <execution>
- <id>JnlpToSite</id>
- <phase>pre-site</phase>
- <configuration>
- <tasks>
- <mkdir dir="${maven.site.gen.dir}/resources" />
- <copy todir="${maven.site.gen.dir}/resources" verbose="true" failonerror="false" overwrite="false">
- <fileset dir="${jnlp.build.directory}">
- <include name="**" />
- </fileset>
- <!-- should be better to use the deployed assembly in lutinbuilder ? -->
- <fileset dir="target">
- <include name="${project.build.finalName}-bin.zip" />
- </fileset>
-
- </copy>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo.webstart</groupId>
- <artifactId>webstart-maven-plugin</artifactId>
- <version>1.0-alpha-2-cl_20090204</version>
- <executions>
- <execution>
- <phase>verify</phase>
- <goals>
- <goal>jnlp-inline</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <force>false</force>
- <dependencies>
- <excludes>
- <exclude>javax.help:javahelp</exclude>
- <exclude>javax.mail:mail</exclude>
- <exclude>javax.activation:activation</exclude>
- <exclude>org.swinglabs:jxlayer</exclude>
- </excludes>
- </dependencies>
- <libPath>lib</libPath>
- <extensions>
- <sun>sun.jnlp</sun>
- <jxlayer>jxlayer.jnlp</jxlayer>
- </extensions>
- <jnlp>
- <outputFile>isis-fish-v3.jnlp</outputFile>
- <mainClass>${maven.jar.main.class}</mainClass>
- <allPermissions>true</allPermissions>
- <offlineAllowed>true</offlineAllowed>
- </jnlp>
-
- <sign>
- <keystore>${keystorepath}</keystore>
- <keypass />
- <storepass>${keystorepass}</storepass>
- <storetype />
- <alias>${keystorealias}</alias>
- <validity />
- <dnameCn />
- <dnameOu />
- <dnameO />
- <dnameL />
- <dnameSt />
- <dnameC />
- <verify>true</verify>
- <keystoreConfig>
- <delete>false</delete>
- <gen>false</gen>
- </keystoreConfig>
- </sign>
- <pack200>false</pack200>
- <gzip>true</gzip>
- <verbose>false</verbose>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
- </profile>
-
- </profiles>
-
-</project>
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml (from rev 2498, isis-fish/trunk/pom.xml)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/pom.xml 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,770 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
+ <parent>
+ <groupId>org.codelutin</groupId>
+ <artifactId>lutinproject</artifactId>
+ <version>3.5</version>
+ </parent>
+
+ <groupId>ifremer</groupId>
+ <artifactId>isis-fish</artifactId>
+ <version>3.2.0.5-rc1</version>
+
+ <!-- POM Relationships : Inheritance : Dependencies -->
+ <dependencies>
+
+ <!--Compile-->
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!--Librairies CodeLutin-->
+ <dependency>
+ <groupId>org.codelutin</groupId>
+ <artifactId>lutinutil</artifactId>
+ <version>${lutinutil.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codelutin.topia</groupId>
+ <artifactId>topia-persistence</artifactId>
+ <version>${topia.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codelutin</groupId>
+ <artifactId>topia-service</artifactId>
+ <version>${topia.service.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codelutin</groupId>
+ <artifactId>lutinmatrix</artifactId>
+ <version>${lutinmatrix.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codelutin</groupId>
+ <artifactId>lutinwidget</artifactId>
+ <version>${lutinwidget.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!--Jaxx-->
+ <dependency>
+ <groupId>org.codelutin.jaxx</groupId>
+ <artifactId>jaxx-runtime-swing</artifactId>
+ <version>${jaxx.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codelutin.jaxx</groupId>
+ <artifactId>jaxx-runtime-validator</artifactId>
+ <version>${jaxx.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codelutin.jaxx</groupId>
+ <artifactId>jaxx-runtime-swing-widget</artifactId>
+ <version>${jaxx.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- Utilisé dans les scripts -->
+ <dependency>
+ <groupId>org.codelutin</groupId>
+ <artifactId>lutinj2r</artifactId>
+ <version>${lutinj2r.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!--Commons-->
+ <dependency>
+ <groupId>commons-jxpath</groupId>
+ <artifactId>commons-jxpath</artifactId>
+ <version>1.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-math</groupId>
+ <artifactId>commons-math</artifactId>
+ <version>1.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.8.0</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!--Other-->
+ <dependency>
+ <groupId>jfreechart</groupId>
+ <artifactId>jfreechart</artifactId>
+ <version>0.9.3</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>jcommon</groupId>
+ <artifactId>jcommon</artifactId>
+ <version>0.7.0</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- XML-RPC Client and server -->
+ <dependency>
+ <groupId>org.apache.xmlrpc</groupId>
+ <artifactId>xmlrpc-client</artifactId>
+ <version>${xmlrpc.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.xmlrpc</groupId>
+ <artifactId>xmlrpc-server</artifactId>
+ <version>${xmlrpc.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- encore utilise pour les pre-scripts -->
+ <dependency>
+ <groupId>org.beanshell</groupId>
+ <artifactId>bsh</artifactId>
+ <version>2.0b4</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>openmap</groupId>
+ <artifactId>openmap</artifactId>
+ <version>${openmap.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.fife</groupId>
+ <artifactId>rsyntaxtextarea</artifactId>
+ <version>1.3.3</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.jcraft</groupId>
+ <artifactId>jsch</artifactId>
+ <version>0.1.41</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>
+ </dependency>
+
+ <!-- Change this dependence if you change database -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.1.114</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- aspectwerkz -->
+ <dependency>
+ <groupId>aspectwerkz</groupId>
+ <artifactId>aspectwerkz</artifactId>
+ <version>${aspectwerkz.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>aspectwerkz</groupId>
+ <artifactId>aspectwerkz-jdk5</artifactId>
+ <version>${aspectwerkz.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>aspectwerkz</groupId>
+ <artifactId>aspectwerkz-core</artifactId>
+ <version>${aspectwerkz.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- ssj pour les calculs stockastiques -->
+ <dependency>
+ <groupId>ssj</groupId>
+ <artifactId>ssj</artifactId>
+ <version>2.1.1</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</groupId>
+ <artifactId>svnkit</artifactId>
+ <version>1.2.3.5521</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.trilead</groupId>
+ <artifactId>trilead-ssh2</artifactId>
+ <version>build213-svnkit-1.2</version>
+ <scope>runtime</scope>
+ </dependency>
+ <!-- fin svnkit pour communication subversion -->
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.15</version>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sourceforge.cpdetector</groupId>
+ <artifactId>cpdetector</artifactId>
+ <version>1.0.7</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun</groupId>
+ <artifactId>tools</artifactId>
+ <version>1.6.0</version>
+ </dependency>
+ </dependencies>
+
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
+ <name>IsisFish</name>
+ <description>Simulateur de pecherie complexe.</description>
+ <inceptionYear>1999</inceptionYear>
+
+ <licenses>
+ <license>
+ <name>GPL</name>
+ <url>http://www.gnu.org/copyleft/gpl.html</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
+ <packaging>jar</packaging>
+
+ <properties>
+ <!-- id du projet du labs -->
+ <labs.id>8</labs.id>
+
+ <!-- nom du projet du labs -->
+ <labs.project>isis-fish</labs.project>
+
+ <!-- Custom version -->
+ <jaxx.version>1.5.1</jaxx.version>
+ <topia.version>2.1.6.1</topia.version>
+ <topia.service.version>1.0.3</topia.service.version>
+ <lutinmatrix.version>1.3</lutinmatrix.version>
+ <lutinutil.version>1.0.6</lutinutil.version>
+ <i18n.version>0.9</i18n.version>
+ <lutinwidget.version>0.14.1</lutinwidget.version>
+ <generator.version>0.64</generator.version>
+ <lutinj2r.version>0.4</lutinj2r.version>
+ <jrst.version>0.8.4</jrst.version>
+ <license-switcher.version>0.6</license-switcher.version>
+ <openmap.version>4.6.4</openmap.version>
+ <aspectwerkz.version>2.0</aspectwerkz.version>
+ <xmlrpc.version>3.1.2</xmlrpc.version>
+
+ <!-- for compilation test to run -->
+ <maven.test.forkMode>once</maven.test.forkMode>
+
+ <!--Main class in JAR -->
+ <maven.jar.main.class>fr.ifremer.isisfish.IsisFish</maven.jar.main.class>
+
+ <!-- jnlp -->
+ <keystorepath>${codelutin.keystorepath}</keystorepath>
+ <keystorealias>CodeLutin</keystorealias>
+ <keystorepass>codelutin</keystorepass>
+ <jnlp.build.directory>${project.build.directory}/jnlp</jnlp.build.directory>
+
+ <jnlpCodebase>${project.url}</jnlpCodebase>
+ <!-- to test jnlp file locally -->
+ <jnlpCodebase>file://${jnlp.build.directory}</jnlpCodebase>
+ </properties>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-generator-plugin</artifactId>
+ <version>${generator.version}</version>
+ <executions>
+ <execution>
+ <id>Generator</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <srcDirZuml>${project.basedir}/src/main/xmi</srcDirZuml>
+ <srcXmiDest>${maven.gen.dir}/xmi/</srcXmiDest>
+ <fullPackagePath>fr.ifremer.isisfish</fullPackagePath>
+ <extractedPackages>fr.ifremer.isisfish</extractedPackages>
+ <!--Config generator-->
+ <srcGenDest>${maven.gen.dir}/objectmodel/</srcGenDest>
+ <includes>**/*.objectmodel</includes>
+ <templates>org.codelutin.topia.generator.TopiaMetaGenerator</templates>
+ <excludeTemplates>
+ <value>org.codelutin.topia.generator.EntityEnumGenerator</value>
+ <value>org.codelutin.topia.generator.EntityProviderGenerator</value>
+ </excludeTemplates>
+ <destDirGen>${maven.gen.dir}/java</destDirGen>
+ <defaultPackage>fr.ifremer.isisfish</defaultPackage>
+ <copyVersionDir>${project.basedir}/src/main/resources/oldmappings/%MODELNAME%
+ </copyVersionDir>
+ <copyVersionFiles>**/*.hbm.xml</copyVersionFiles>
+ <copyOverwrite>true</copyOverwrite>
+ </configuration>
+ <goals>
+ <goal>zargo2xmi</goal>
+ <goal>xmi2objectmodel</goal>
+ <goal>generate</goal>
+ <goal>copyVersionFiles</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.codelutin.topia</groupId>
+ <artifactId>topia-persistence</artifactId>
+ <version>${topia.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codelutin.jaxx</groupId>
+ <artifactId>maven-jaxx-plugin</artifactId>
+ <version>${jaxx.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <extraImportList>jaxx.runtime.SwingUtil,static jaxx.runtime.Util.getStringValue</extraImportList>
+ <addSourcesToClassPath>true</addSourcesToClassPath>
+ <addProjectClassPath>true</addProjectClassPath>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-i18n-plugin</artifactId>
+ <version>${i18n.version}</version>
+ <configuration>
+ <entries>
+ <entry>
+ <basedir>${maven.gen.dir}/java/</basedir>
+ <specificGoal>parserJava</specificGoal>
+ <includes>
+ <param>**\/**UI.java</param>
+ </includes>
+ </entry>
+ </entries>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>parserJava</goal>
+ <goal>gen</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Always process jrst files, but only called on pre-site phase -->
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-jrst-plugin</artifactId>
+ <version>${jrst.version}</version>
+ <configuration>
+ <defaultLocale>fr</defaultLocale>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>pre-site</phase>
+ <goals>
+ <goal>jrst</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-4</version>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assembly/bin.xml</descriptor>
+ </descriptors>
+ <attach>false</attach>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>verify</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <classpathPrefix>lib/</classpathPrefix>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemProperties>
+ <property>
+ <name>java.io.tmpdir</name>
+ <value>${project.build.directory}/surefire-workdir</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <links>
+ <link>http://java.sun.com/javase/6/docs/api/</link>
+ <link>http://lutinutil.labs.libre-entreprise.org/lutinutil/apidocs/</link>
+ <link>http://lutinmatrix.labs.libre-entreprise.org/lutinmatrix/apidocs/</link>
+ <link>http://topia.labs.libre-entreprise.org/topia/topia-persistence/apidocs/</link>
+ </links>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ <version>2.1</version>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Environment ************************************** -->
+ <!-- ************************************************************* -->
+ <scm>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/tags/isis-fish-3.2.0.…</connection>
+ <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/tags/isis-fish-3.2.0.…</developerConnection>
+ <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/isis-fish/tags/…</url>
+ </scm>
+
+ <!--Code Lutin Repository-->
+ <repositories>
+ <repository>
+ <id>codelutin-repository</id>
+ <name>CodeLutinRepository</name>
+ <url>http://lutinbuilder.labs.libre-entreprise.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ <checksumPolicy>warn</checksumPolicy>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ <checksumPolicy>warn</checksumPolicy>
+ </releases>
+ </repository>
+ </repositories>
+
+ <profiles>
+ <profile>
+ <id>release-profile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+
+ <!-- always add license and third-party files to classpath -->
+ <plugin>
+ <groupId>org.codelutin</groupId>
+ <artifactId>maven-license-switcher-plugin</artifactId>
+ <version>${license-switcher.version}</version>
+ <configuration>
+ <licenseName>${license-switcher.licenseName}</licenseName>
+ </configuration>
+ <executions>
+ <execution>
+ <id>attach-licenses</id>
+ <goals>
+ <!--goal>license</goal-->
+ <goal>third-party</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <!-- Ajout des libs signe par Sun dans un fichier jnlp separe -->
+ <execution>
+ <id>JnlpSun</id>
+ <phase>verify</phase>
+ <configuration>
+ <tasks>
+ <mkdir dir="${jnlp.build.directory}" />
+ <copy file="${project.basedir}/src/main/jnlp/sun.jnlp" verbose="${maven.verbose}" todir="${jnlp.build.directory}" failonerror="false">
+ <filterset>
+ <filter token="lib-javahelp" value="javahelp-2.0.02.jar" />
+ <filter token="lib-activation" value="activation-1.1.jar" />
+ <filter token="lib-mail" value="mail-1.4.jar" />
+ <filter token="url" value="${jnlpCodebase}" />
+ </filterset>
+ </copy>
+ <copy file="${project.basedir}/src/main/jnlp/jxlayer.jnlp" verbose="${maven.verbose}" todir="${jnlp.build.directory}" failonerror="false">
+ <filterset>
+ <filter token="lib" value="jxlayer-3.0.1.jar" />
+ <filter token="url" value="${jnlpCodebase}" />
+ </filterset>
+ </copy>
+
+ <copy verbose="${maven.verbose}" todir="${jnlp.build.directory}/lib" failonerror="false">
+ <fileset dir="${project.build.directory}/lib">
+ <include name="javahelp-2.0.02.jar" />
+ <include name="activation-1.1.jar" />
+ <include name="mail-1.4.jar" />
+ <include name="jxlayer-3.0.1.jar" />
+ </fileset>
+ </copy>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+
+ <execution>
+ <id>JnlpToSite</id>
+ <phase>pre-site</phase>
+ <configuration>
+ <tasks>
+ <mkdir dir="${maven.site.gen.dir}/resources" />
+ <copy todir="${maven.site.gen.dir}/resources" verbose="true" failonerror="false" overwrite="false">
+ <fileset dir="${jnlp.build.directory}">
+ <include name="**" />
+ </fileset>
+ <!-- should be better to use the deployed assembly in lutinbuilder ? -->
+ <fileset dir="target">
+ <include name="${project.build.finalName}-bin.zip" />
+ </fileset>
+
+ </copy>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <version>1.0-alpha-2-cl_20090204</version>
+ <executions>
+ <execution>
+ <phase>verify</phase>
+ <goals>
+ <goal>jnlp-inline</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <force>false</force>
+ <dependencies>
+ <excludes>
+ <exclude>javax.help:javahelp</exclude>
+ <exclude>javax.mail:mail</exclude>
+ <exclude>javax.activation:activation</exclude>
+ <exclude>org.swinglabs:jxlayer</exclude>
+ </excludes>
+ </dependencies>
+ <libPath>lib</libPath>
+ <extensions>
+ <sun>sun.jnlp</sun>
+ <jxlayer>jxlayer.jnlp</jxlayer>
+ </extensions>
+ <jnlp>
+ <outputFile>isis-fish-v3.jnlp</outputFile>
+ <mainClass>${maven.jar.main.class}</mainClass>
+ <allPermissions>true</allPermissions>
+ <offlineAllowed>true</offlineAllowed>
+ </jnlp>
+
+ <sign>
+ <keystore>${keystorepath}</keystore>
+ <keypass />
+ <storepass>${keystorepass}</storepass>
+ <storetype />
+ <alias>${keystorealias}</alias>
+ <validity />
+ <dnameCn />
+ <dnameOu />
+ <dnameO />
+ <dnameL />
+ <dnameSt />
+ <dnameC />
+ <verify>true</verify>
+ <keystoreConfig>
+ <delete>false</delete>
+ <gen>false</gen>
+ </keystoreConfig>
+ </sign>
+ <pack200>false</pack200>
+ <gzip>true</gzip>
+ <verbose>false</verbose>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+
+</project>
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,1001 +0,0 @@
-/* *##%
- * Copyright (C) 2002-2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- * ##%*/
-
-package fr.ifremer.isisfish;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.lang.time.DurationFormatUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.util.ApplicationConfig;
-import org.codelutin.util.ArgumentsParserException;
-import org.codelutin.util.StringUtil;
-import org.codelutin.util.VersionNumber;
-
-import fr.ifremer.isisfish.actions.ExportAction;
-import fr.ifremer.isisfish.actions.ImportAction;
-import fr.ifremer.isisfish.actions.OtherAction;
-import fr.ifremer.isisfish.actions.SimulationAction;
-import fr.ifremer.isisfish.actions.VCSAction;
-import fr.ifremer.isisfish.simulator.SimulationContext;
-import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
-import fr.ifremer.isisfish.simulator.launcher.SimulationService;
-import fr.ifremer.isisfish.simulator.launcher.SSHSimulatorLauncher;
-import fr.ifremer.isisfish.simulator.launcher.SubProcessSimulationLauncher;
-import fr.ifremer.isisfish.vcs.VCS;
-
-/**
- * Isis fish configuration.
- *
- * @author poussin
- * @version $Revision: 1310 $
- *
- * Last update: $Date: 2008-08-23 00:46:00 +0200 (Sat, 23 Aug 2008) $
- * by : $Author: bpoussin $
- */
-public class IsisConfig extends ApplicationConfig {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static Log log = LogFactory.getLog(IsisConfig.class);
-
- /**
- * Config step after init.
- *
- * Refactored, can't be in enum
- *
- * @see org.codelutin.util.ApplicationConfig.Action.Step
- */
- public static final int STEP_AFTER_INIT = 0;
-
- /**
- * Config step after init vcs.
- *
- * Refactored, can't be in enum
- *
- * @see org.codelutin.util.ApplicationConfig.Action.Step
- */
- public static final int STEP_AFTER_INIT_VCS = 1;
-
- /**
- * Config step after ui.
- *
- * Refactored, can't be in enum
- *
- * @see org.codelutin.util.ApplicationConfig.Action.Step
- */
- public static final int STEP_AFTER_UI = 2;
-
- /**
- * Config step before exit.
- *
- * Refactored, can't be in enum
- *
- * @see org.codelutin.util.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
- * <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
- * lors de l'increment de a, r est remis a 0
- * <p>
- * Un changement d'UI ne modifie jamais le numero de version de database
- * Un changement de schema de base pour lequel on ne peut pas faire de
- * migration de donnees demande automatiquement un changement de version
- * d'application.
- */
- protected final static VersionNumber version = new VersionNumber(3, 2, 0, 5);
- protected final static VersionNumber databaseVersion = new VersionNumber(
- version.getNumber(0), version.getNumber(1));
- protected final static VersionNumber apiVersion = new VersionNumber(
- version.getNumber(0), version.getNumber(1), version.getNumber(2));
-
- public static VersionNumber getVersionNumber() {
- return version;
- }
-
- /**
- * le nombre global ex: 3.2.0.0
- * @return
- */
- static public String getVersion() {
- String result = version.toString();
- return result;
- }
-
- /**
- * La version de la base ex: 3.2
- * @return
- */
- public static VersionNumber getDatabaseVersion() {
- return databaseVersion;
- }
-
- /**
- * La version de l'api de programmation ex: 3.2.0
- * @return
- */
- public static VersionNumber getApiVersion() {
- return apiVersion;
- }
-
- static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2009";
- static final public String CONFIG_FILENAME = "isis-config-" + version.getNumber(0);
-
- /** separateur de liste */
- static final public String SEP = ",";
- static final public String REPORT_EMAIL = "isis-fish-bugreport at lists.labs.libre-entreprise.org";
-
- protected transient File backupSessionDirectory = null;
- protected long startingTime = System.nanoTime();
-
- public IsisConfig() {
-
- for (Option o : Option.values()) {
- setDefaultOption(o.key, o.defaultValue);
- }
-
- for (Action a : Action.values()) {
- for (String alias : a.aliases) {
- addActionAlias(alias, a.action);
- }
- }
-
- }
-
- //////////////////////////////////////////////////
- // Methode d'acces aux options
- //////////////////////////////////////////////////
-
- /**
- * Retourne le repertoire racine de toutes les donnees (script, simulation
- * region, ...)
- * @return
- */
- public File getDatabaseDirectory() {
- File result = getOptionAsFile(Option.DATABASE_DIRECTORY.key);
- return result;
- }
-
- /**
- * Retourne le lock a utiliser pour la base h2.
- *
- * Par defaut la base utilise 'file'.
- *
- * Les valeurs acceptées sont :
- * - file
- * - socket
- * - no
- *
- * http://www.h2database.com/html/features.html#database_file_locking
- *
- * @return h2 db lock mode
- */
- public String getDatabaseLockMode() {
- String result = getOption(Option.DATABASE_LOCK_MODE.key);
- return result;
- }
-
- /**
- * Retourne le repertoire ou sont stockes les scripts compiles.
- *
- * Create directory if not exists.
- *
- * @return compilation directory
- */
- public File getCompileDirectory() {
- File result = getOptionAsFile(Option.COMPILATION_DIRECTORY.key);
- if (!result.exists()) {
- result.mkdirs();
- }
- return result;
- }
-
- /**
- * Get javadoc directory.
- *
- * Create directory if not exists.
- *
- * @return javadoc directory
- */
- public File getJavadocDirectory() {
- File result = getOptionAsFile(Option.COMPILATION_DIRECTORY.key);
- if (!result.exists()) {
- result.mkdirs();
- }
- return result;
- }
-
- /**
- * Retourne l'objet {@link Locale} a utilise pour la langue.
- *
- * @return application {@link Locale}
- */
- public Locale getLocale() {
- String value = getOption(Option.LOCALE.key);
- Locale result = (Locale)ConvertUtils.convert(value, Locale.class);
- return result;
- }
-
- /**
- * Retourne l'encoding a utiliser pour les fichiers textes
- * @return
- */
- public String getEncoding() {
- String result = getOption(Option.ENCODING.key);
- return result;
- }
-
- /**
- * Retourne le serveur SMTP a utiliser pour l'envoie de mail
- * @return
- */
- public String getSmtpServer() {
- String result = getOption(Option.SMTP_SERVER.key);
- return result;
- }
-
- /**
- * Retourne le nom usuel de l'utilisateur
- * @return
- */
- public String getUserName() {
- String result = getOption(Option.USER_NAME.key);
- return result;
- }
-
- /**
- * Retourne l'email de l'utilisateur
- * @return
- */
- public String getUserMail() {
- String result = getOption(Option.USER_MAIL.key);
- return result;
- }
-
- /**
- * Retourne l'url du serveur de simulation
- * @return simulator server
- */
- public String getSimulatorServer() {
- String result = getOption(Option.SIMULATOR_SERVER.key);
- return result;
- }
-
- /**
- * Retourne le login pour acceder au serveur de simulation
- * @return simulator username
- */
- public String getSimulatorUsername() {
- String result = getOption(Option.SIMULATOR_USER_NAME.key);
- return result;
- }
-
- /**
- * Retourne le mot de passe pour acceder au serveur de simulation
- * @return simulator password
- */
- public String getSimulatorPassword() {
- String result = getOption(Option.SIMULATOR_PASSWORD.key);
- return result;
- }
-
- public String getSimulatorClassfile() {
- String result = getOption(Option.SIMULATOR_CLASSFILE.key);
- return result;
- }
-
- public void setSimulatorClassfile(String value) {
- setOption(Option.SIMULATOR_CLASSFILE.key, value);
- }
-
- /**
- * Retourne l'url du serveur de simulation accessible via SSH.
- *
- * @return simulator server
- */
- public String getSimulatorSshServer() {
- String result = getOption(Option.SIMULATOR_SSH_SERVER.key);
- return result;
- }
-
- /**
- * Change ssh server url value.
- *
- * @param sshServer
- */
- public void setSimulatorSshServer(String sshServer) {
- setOption(Option.SIMULATOR_SSH_SERVER.key, sshServer);
- }
-
- /**
- * Retourne le login pour acceder au serveur de simulation accessible via SSH.
- *
- * @return simulator username
- */
- public String getSimulatorSshUsername() {
- String result = getOption(Option.SIMULATOR_SSH_USER_NAME.key);
- return result;
- }
-
- /**
- * Change ssh username.
- *
- * @param username username
- */
- public void setSimulatorSshUsername(String username) {
- setOption(Option.SIMULATOR_SSH_USER_NAME.key, username);
- }
-
- /**
- * Retourne le chemin relatif ou abs du repertoire root des données d'isis.
- *
- * @return simulator data path
- */
- public String getSimulatorSshDataPath() {
- String result = getOption(Option.SIMULATOR_SSH_DATAPATH.key);
- return result;
- }
-
- /**
- * Change remote datapath.
- *
- * @param datapath datapath
- */
- public void setSimulatorSshDataPath(String datapath) {
- setOption(Option.SIMULATOR_SSH_DATAPATH.key, datapath);
- }
-
- /**
- * Get remote user home directory.
- *
- * @return remote user home
- */
- public String getSimulatorSshUserHome() {
- String result = getOption(Option.SIMULATOR_SSH_USER_HOME.key);
- return result;
- }
-
- /**
- * Change isis remote home directory.
- *
- * @param userhome new remote home
- */
- public void setSimulatorSshUserHome(String userhome) {
- setOption(Option.SIMULATOR_SSH_USER_HOME.key, userhome);
- }
-
- /**
- * Retourne le chemin distant ou est installé isis.
- *
- * @return remote isis home
- */
- public String getSimulatorSshIsisHome() {
- String result = getOption(Option.SIMULATOR_SSH_ISIS_HOME.key);
- return result;
- }
-
- /**
- * Change isis home on ssh server.
- *
- * @param isishome isis home
- */
- public void setSimulatorSshIsisHome(String isishome) {
- setOption(Option.SIMULATOR_SSH_ISIS_HOME.key, isishome);
- }
-
- /**
- * Retourne l'emplacement du dossier temporaire distant.
- *
- * Ce dossier doit être ABSOLUT.
- *
- * @return tmp dir
- */
- public String getSimulatorSshTmpPath() {
- String result = getOption(Option.SIMULATOR_SSH_TMPPATH.key);
- return result;
- }
-
- /**
- * Change ssh temp path.
- *
- * @param sshtemppath temp path
- */
- public void setSimulatorSshTmpPath(String sshtemppath) {
- setOption(Option.SIMULATOR_SSH_TMPPATH.key, sshtemppath);
- }
-
- /**
- * PBS bin path directory.
- *
- * @return path
- */
- public String getSimulatorSshPbsBinPath() {
- String result = getOption(Option.SIMULATOR_SSH_PBSBINPATH.key);
- return result;
- }
-
- /**
- * Change PBS bin path.
- *
- * @param path new path
- */
- public void setSimulatorSshPbsBinPath(String path) {
- setOption(Option.SIMULATOR_SSH_PBSBINPATH.key, path);
- }
-
- /**
- * Retourne l'interval de temps a utiliser
- * pour recuperer le fichier de control.
- *
- * @return time (in seconds)
- */
- public long getSimulatorSshControlCheckInterval() {
- int result = getOptionAsInt(Option.SIMULATOR_SSH_CONTROLCHECKINTERVAL.key);
- return result;
- }
-
- /**
- * Change control check interval.
- *
- * @param interval interval
- */
- public void setSimulatorSshControlCheckInterval(long interval) {
- setOption(Option.SIMULATOR_SSH_CONTROLCHECKINTERVAL.key, String.valueOf(interval));
- }
-
- /**
- * Retourne le nombre simultané de simulations authorisées sur
- * caparmor.
- *
- * Utilisé pour l'envoie des simulations.
- *
- * @return le nombre de simulations authorisé
- */
- public int getSimulatorSshMaxSimultaneousSimulation() {
- int result = getOptionAsInt(Option.SIMULATOR_SSH_MAX_SIMULTANEOUS_SIMULATION.key);
- return result;
- }
-
- /**
- * Change max simultaneous simulation at a time.
- *
- * @param max max
- */
- public void setSimulatorSshMaxSimultaneousSimulation(int max) {
- setOption(Option.SIMULATOR_SSH_MAX_SIMULTANEOUS_SIMULATION.key, String.valueOf(max));
- }
-
- /**
- * Retourne la clé privée de l'utilisteur courant.
- *
- * @return private ssh key path
- */
- public File getSSHPrivateKeyFilePath() {
- File result = getOptionAsFile(Option.SSH_KEY_FILE.key);
- return result;
- }
-
- /**
- * Set ssh private key file path.
- *
- * @param sshFile new value
- */
- public void setSSHPrivateKeyFilePath(File sshFile) {
- setOption(Option.SSH_KEY_FILE.key, sshFile.getAbsolutePath());
- }
-
- /*
- * Le type de simulation par defaut a utiliser (local, remote, ...)
- * @return
- *)
- public boolean isSimulatorLocal() {
- // FIXME never called
- String value = getOption(Option.SIMULATOR_LAUNCHER.key);
- // and following code always return false :
- boolean result = "local".equalsIgnoreCase(value);
- return result;
- }*/
-
- /*public boolean isUseVCS() {
- String value = getOption(Option.VCS_TYPE.key);
- boolean result = !VCSNone.TYPE_NONE.equals(value);
- return result;
- }*/
-
- public boolean isLaunchUI() {
- boolean result = getOptionAsBoolean(Option.LAUNCH_UI.key);
- return result;
- }
-
- public void setSimulatorLauncher(String value) {
- setOption(Option.SIMULATOR_LAUNCHER.key, value);
- }
-
-// public boolean isSimulationShowOnlyQueue() {
-// Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_QUEUE.key);
-// return result;
-// }
-
- public boolean isSimulationShowOnlyError() {
- Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_ERROR.key);
- return result;
- }
-
- public File getDefaultExportDirectory() {
- File result = getOptionAsFile(Option.DEFAULT_EXPORT_DIRECTORY.key);
- if (!result.exists()) {
- result.mkdirs();
- }
- return result;
- }
-
- public void setDefaultExportDirectory(String value) {
- setOption(Option.DEFAULT_EXPORT_DIRECTORY.key, value);
- }
-
- public String getDefaultExportNames() {
- String result = getOption(Option.DEFAULT_EXPORT_NAMES.key);
- return result;
- }
-
- public void setDefaultExportNames(List<String> exportNames) {
- StringBuilder sb = new StringBuilder();
- for (String exportName : exportNames) {
- sb.append(SEP).append(exportName);
- }
- String value = sb.toString();
- // remove first SEP
- if (value.length() > 0) {
- value = value.substring(1);
- }
- setOption(Option.DEFAULT_EXPORT_NAMES.key, value);
- saveForUser();
- }
-
- /**
- * @return la liste des noms d'exports par defaut sous forme de liste,
- * a partir de la propriete {@link Option#DEFAULT_EXPORT_NAMES}
- * ou null si ils n'ont jamais ete sauves par l'utilisateur.
- * by user.
- * @see Option#DEFAULT_EXPORT_NAMES
- */
- public List<String> getDefaultExportNamesAsList() {
- List<String> result = null;
- String exportNamesList = getDefaultExportNames();
- if (exportNamesList != null) {
- result = new ArrayList<String>();
- String[] exportNames = StringUtil.split(exportNamesList, ",");
- result.addAll(Arrays.asList(exportNames));
- }
- return result;
- }
-
- public String getDefaultMapFilename() {
- String result = getOption(Option.DEFAULT_MAP_FILENAME.key);
- return result;
- }
-
- public String getDefaultResultNames() {
- String result = getOption(Option.DEFAULT_RESULT_NAMES.key);
- return result;
- }
-
- public void setDefaultResultNames(List<String> resultNames) {
- StringBuilder sb = new StringBuilder();
- for (String resultName : resultNames) {
- sb.append(SEP).append(resultName);
- }
- String value = sb.toString();
- // remove first SEP
- if (value.length() > 0) {
- value = value.substring(1);
- }
- setOption(Option.DEFAULT_RESULT_NAMES.key, value);
- saveForUser();
- }
-
- /**
- * @return les resultats par defaut d'une simulation sous forme de liste
- * a partir de la propriete {@link Option#DEFAULT_RESULT_NAMES}
- * @see Option#DEFAULT_RESULT_NAMES
- */
- public List<String> getDefaultResultNamesAsList() {
- List<String> result = null;
- String resultNamesList = getDefaultResultNames();
- if (resultNamesList != null) {
- result = new ArrayList<String>();
- String[] resultNames = StringUtil.split(resultNamesList, ",");
- result.addAll(Arrays.asList(resultNames));
- }
- return result;
- }
-
- public String getDefaultTagValue() {
- String result = getOption(Option.DEFAULT_TAG_VALUE.key);
- return result;
- }
-
- public void setDefaultTagValues(Map<String, String> tagValues) {
- StringBuilder sb = new StringBuilder(" ");
- for (Map.Entry<String, String> entry : tagValues.entrySet()) {
- sb.append(SEP).append('"').append(entry.getKey()).append("\":\"").append(entry.getValue()).append('"');
- }
- String value = sb.toString().trim();
- setOption(Option.DEFAULT_TAG_VALUE.key, value.isEmpty() ? "" : value.substring(1));
- saveForUser();
- }
-
-
-
- /**
- * @return le dictionnaire des tags par defaut d'une simulation a partir
- * de la propriete {@link Option#DEFAULT_TAG_VALUE}
- * @see Option#DEFAULT_TAG_VALUE
- */
- public Map<String, String> getDefaultTagValueAsMap() {
- Map<String, String> result = new HashMap<String, String>();
- String tagValuesList = getDefaultTagValue();
- if (tagValuesList != null) {
- String[] tagValues = StringUtil.split(tagValuesList, ",");
- for (String tagValue : tagValues) {
- String[] tagAndValue = StringUtil.split(tagValue, ":");
-
- String tag = tagAndValue[0].trim();
- tag = tag.substring(1, tag.length() - 1); // remove "..."
-
- String value = tagAndValue[1].trim();
- value = value.substring(1, value.length() - 1); // remove "..."
-
- result.put(tag, value);
- }
- }
- return result;
- }
-
- public String getJavadocURL() {
- String result = getOption(Option.JAVADOC_URL.key);
- return result;
- }
-
- public File getBackupDirectory() {
- File result = getOptionAsFile(Option.BACKUP_DIRECTORY.key);
- return result;
- }
-
- public long getStartingTime() {
- return startingTime;
- }
-
- public String getElapsedTimeAsString() {
- long diff = System.nanoTime() - getStartingTime();
- String result = DurationFormatUtils.formatDuration(diff / 1000000, "s'.'S");
- return result;
- }
-
- public File getBackupSessionDirectory() {
- if (backupSessionDirectory == null) {
- // le timestamp est en nano (on le veut en ms)
- long time = getStartingTime() / 1000;
- // creation de l'unique répertoire de backup pour la session
- String path = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new java.util.Date(time));
- backupSessionDirectory = new File(getBackupDirectory(), path);
- if (!backupSessionDirectory.exists()) {
- backupSessionDirectory.mkdirs();
- }
- }
- return backupSessionDirectory;
- }
-
- /**
- * Retourne un class loader contenant le repertoire de compilation
- * Il permet alors de charger des classes qui viennent d'etre compilees
- * dans isis
- * If current thread is in simulation then return specific simulation
- * compilation directory, else default compilation directory
- *
- * @return the class loader adequate
- */
- public ClassLoader getScriptClassLoader() {
- SimulationContext simContext = SimulationContext.get();
- ClassLoader result = simContext.getClassLoader();
- if (result == null) {
- // on est pas dans une simulation, il faut retourner un nouveau
- // a chaque fois. on force la creation d'un nouveau classloader
- // a chaque fois pour
- // que l'ancienne class compiler et charg<E9> ne soit pas presente
- File f = getCompileDirectory();
- try {
- URL[] cp = new URL[]{f.toURI().toURL()};
- // il faut prendre le ClassLoader du thread courant comme parent
- // car pour les simulations il a ete modifi<E9>, et il faut
- // que les classes de script soit recherch<E9> dedans avant
- // la recherche dans le getCompileDirectory().
- // ce qui est le cas avec les URLClassLoader
- ClassLoader parent = Thread.currentThread().getContextClassLoader();
- result = new URLClassLoader(cp, parent);
- } catch (MalformedURLException eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.load.classloader", f, eee.getMessage()), eee);
- }
- }
- return result;
- }
-
- /**
- * Surcharge pour la migration des options de config qui ont change de nom
- * <p>
- * TODO: lors du passage en version 4.0 on pourrait supprimer cette methode
- *
- * @param args
- * @throws org.codelutin.util.ArgumentsParserException
- */
- @Override
- public void parse(String[] args) throws ArgumentsParserException {
- super.parse(args);
- // dans la version precedente (3.1) seul le fichier user existe, il est
- // donc le seul a devoir etre modifie
- boolean mustSave = false;
- String[] keys = new String[]{
- "compileDirectory", Option.COMPILATION_DIRECTORY.key,
- "defaultBackupDirectory", Option.BACKUP_DIRECTORY.key,
- "defaultExportDirectory", Option.DEFAULT_EXPORT_DIRECTORY.key,
- "defaultExportNames", Option.DEFAULT_EXPORT_NAMES.key,
- "defaultMapFile", Option.DEFAULT_MAP_FILENAME.key,
- "defaultResultNames", Option.DEFAULT_RESULT_NAMES.key,
- "defaultSimulator", Option.SIMULATOR_CLASSFILE.key,
- "defaultTagValue", Option.DEFAULT_TAG_VALUE.key,
- "javadocURL", Option.JAVADOC_URL.key,
- "locale", Option.LOCALE.key,
- "login", Option.SIMULATOR_USER_NAME.key,
- "password", Option.SIMULATOR_PASSWORD.key,
- "simulationServer", Option.SIMULATOR_SERVER.key,
- "simulationShowOnlyError", Option.SIMULATION_SHOW_ONLY_ERROR.key,
- "simulationShowOnlyQueue", null, // Option.SIMULATION_SHOW_ONLY_QUEUE.key,
- "smtpServer", Option.SMTP_SERVER.key,
- "userMail", Option.USER_MAIL.key,
- "userName", Option.USER_NAME.key,
- "vcs.keyFile", Option.VCS_SSH_KEY_FILE.key,
- "vcs.localDatabasePath", Option.DATABASE_DIRECTORY.key,
- // on supprime car non compatible, les valeurs par defaut sont tres bien
- "localSimulator", null,
- "vcs.databaseVersion", null,
- "vcs.hostName", null,
- "vcs.noPassPhrase", null,
- "vcs.remoteDatabase", null,
- "vcs.remotePath", null,
- "vcs.type", null,
- "vcs.typeRepo", null,
- "vcs.useSshConnexion", null,
- "vcs.userName", null,
- "version", null,
- "projectName", null,
- "simulationReportMail", null,
-
- };
-
- if (log.isInfoEnabled()) {
- log.info("Check configuration change");
- }
-
- for(int i=0; i<keys.length;) {
- String oldKey = keys[i++];
- String newKey = keys[i++];
- if (!oldKey.equals(newKey)) {
- String value = getOption(oldKey);
- if (value != null) {
- mustSave = true;
- // quoi qu'il arrive on enleve l'ancienne cle
- homefile.remove(oldKey);
- if (newKey != null) {
- setOption(newKey, value);
- }
- }
- }
- }
- if (mustSave) {
- saveForUser();
- if (log.isInfoEnabled()) {
- log.info("Config file migration done");
- }
- }
- if (log.isDebugEnabled()) {
- printConfig();
- }
- }
-
- //////////////////////////////////////////////////
- // Toutes les options disponibles
- //////////////////////////////////////////////////
-
- /**
- * Options.
- *
- * Set it protected to force getOption() call.
- */
- public static enum Option {
-
- COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
- JAVADOC_DIRECTORY("javadoc.directory", _("isisfish.config.main.javadocDirectory.description"), getUserHome() + File.separator + "isis-docs"),
- CONFIG_FILE(CONFIG_FILE_NAME, _("isisfish.config.main.configFileName.description"), CONFIG_FILENAME),
- BACKUP_DIRECTORY("backup.directory", _("isisfish.config.main.defaultBackupDirectory.description"), getUserHome() + File.separator + "isis-backup"),
-
- DEFAULT_EXPORT_DIRECTORY("default.export.directory", _("isisfish.config.main.defaultExportDirectory.description"), getUserHome() + File.separator + "isis-export"),
- DEFAULT_EXPORT_NAMES("default.export.names", _("isisfish.config.main.defaultExportNames.description"), ""),
- DEFAULT_RESULT_NAMES("default.result.names", _("isisfish.config.main.defaultResultNames.description"), ""),
- DEFAULT_MAP_FILENAME("default.map.filename", _("isisfish.config.main.defaultMapFile.description"), "maps/vmap_area_thin"),
- DEFAULT_TAG_VALUE("default.tagvalue", _("isisfish.config.main.defaultTagValue.description"), ""),
- ENCODING("encoding", _("isisfish.config.main.encoding.description"), "UTF-8"),
- JAVADOC_URL("javadoc.url", _("isisfish.config.main.javadocURL.description"), "http://isis-fish.labs.libre-entreprise.org/isis-fish/apidocs/"),
-
- SIMULATOR_CLASSFILE("simulator.classfile", _("isisfish.config.main.defaultSimulator.description"), "DefaultSimulator.java"),
- /** prevu pour l'architecture de lancement en plugin: local, isis-server, caparmor, ... */
- SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localDefault", _("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
- SIMULATOR_LAUNCHER_SUB(SimulationService.SIMULATION_LAUNCHER + ".subDefault", _("isisfish.config.main.subSimulator.description"), SubProcessSimulationLauncher.class.getName()),
- SIMULATOR_LAUNCHER_REMOTE(SimulationService.SIMULATION_LAUNCHER + ".remoteCaparmor", _("isisfish.config.main.remoteCaparmor.description"), SSHSimulatorLauncher.class.getName()),
-
- SIMULATOR_SERVER("simulation.server", _("isisfish.config.main.simulationServer.description"), "http://simulateur.ifremer.fr:9090"),
- /** le login a utiliser pour les launcher distant, le type du launcher est ajouter a la cle (car 1 login par launcher) */
- SIMULATOR_USER_NAME("simulator.username", _("isisfish.config.main.login.description"), "anonymous"),
- SIMULATOR_PASSWORD("simulator.password", _("isisfish.config.main.password.description"), "guest"),
-
- /** Serveur accessible par ssh : address */
- SIMULATOR_SSH_SERVER("simulation.ssh.server", _("isisfish.config.main.simulation.ssh.server.description"), "caparmor.ifremer.fr"),
- /** Serveur accessible par ssh : login */
- SIMULATOR_SSH_USER_NAME("simulation.ssh.username", _("isisfish.config.main.simulation.ssh.username.description"), ""),
- /** Serveur accessible par ssh : user home directory */
- SIMULATOR_SSH_USER_HOME("simulation.ssh.userhome", _("isisfish.config.main.simulation.ssh.userhome.description"), ""),
- /** Serveur accessible par ssh : remote data path */
- SIMULATOR_SSH_DATAPATH("simulation.ssh.datapath", _("isisfish.config.main.simulation.ssh.datapath.description"), "isis-database-3"),
- /** Serveur accessible par ssh : remote isis home install */
- SIMULATOR_SSH_ISIS_HOME("simulation.ssh.isis.home", _("isisfish.config.main.simulation.ssh.isis.home.description"), "/home3/caparmor/poussin/isis-fish"),
- /** Serveur accessible par ssh : remote tmp path */
- SIMULATOR_SSH_TMPPATH("simulation.ssh.tmppath", _("isisfish.config.main.simulation.ssh.tmppath.description"), "isis-tmp"),
- /** Serveur accessible par SSH : emplacement des executables pbs */
- SIMULATOR_SSH_PBSBINPATH("simulation.ssh.pbsbinpath", _("isisfish.config.main.simulation.ssh.pbsbinpath.description"), "/usr/pbs/bin"),
- /** Serveur accessible par SSH : interval de check du fichier de control */
- SIMULATOR_SSH_CONTROLCHECKINTERVAL("simulation.ssh.control.check.interval", _("isisfish.config.main.simulation.ssh.control.check.interval.description"), "120"),
- /** Serveur accessible par SSH : nombre de simulations simultanées sur caparmor */
- SIMULATOR_SSH_MAX_SIMULTANEOUS_SIMULATION("simulation.ssh.max.simultaneous.simulation", _("isisfish.config.main.simulation.max.simultaneous.simulation.description"), "20"),
-
- LOCALE("locale", _("isisfish.config.main.locale.description"), "fr_FR"),
- // REGION_MAP("regionMap", _("isisfish.config.main.regionMap.description"), "maps"),
- // RESULT_EXPORT("resultExport", String.class, 15, n_("isisfish.config.main.resultExport.description"), "resultExports"),
- SIMULATION_SHOW_ONLY_ERROR("simulationShowOnlyError", _("isisfish.config.main.simulationShowOnlyError.description"), "false"),
- // SIMULATION_SHOW_ONLY_QUEUE("simulationShowOnlyQueue", _("isisfish.config.main.simulationShowOnlyQueue.description"), "true"),
-
- // if false no graphical interface
- LAUNCH_UI("launch.ui", _("isisfish.config.main.launchUI.description"), "true"),
-
- DATABASE_DIRECTORY("database.directory", _("isisfish.config.vcs.localDatabasePath.description"), getUserHome() + File.separator + "isis-database-3"),
-
- DATABASE_LOCK_MODE("database.lockmode", _("isisfish.config.database.lockmode.description"), "file"),
-
- // TODO remove duplicated ssh key configuration
- SSH_KEY_FILE("ssh.key.file", _("isisfish.config.ssh.key.file.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
- SSH_PASSPHRASE_ENABLED("ssh.passphrase.enabled", _("isisfish.config.vcs.noPassPhrase.description"), "false"),
- SSH_PASSPHRASE("ssh.passphrase", _("isisfish.config.vcs.passphrase.description"), ""),
-
- // can be None, CVS or SVN. only None or SVN work
- VCS_TYPE(VCS.VCS_TYPE, _("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
- // depend of VCS_TYPE, for SVN can be svn, svn+ssh, http or file
- VCS_PROTOCOLE(VCS.VCS_PROTOCOLE, _("isisfish.config.vcs.useSshConnexion.description"), "svn"),
- VCS_SSH_KEY_FILE(VCS.VCS_SSH_KEY_FILE, _("isisfish.config.vcs.keyFile.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
- // user login to access vcs
- VCS_USER_NAME(VCS.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), ""),
- VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, _("isisfish.config.vcs.userPassword.description"), ""),
- VCS_HOST_NAME(VCS.VCS_HOST_NAME, _("isisfish.config.vcs.hostName.description"), "labs.libre-entreprise.org"),
- VCS_PATH(VCS.VCS_PATH, _("isisfish.config.vcs.remotePath.description"), "/svnroot/isis-fish-data/"),
- // VCS_TAG(VCS.VCS_TAG, _("isisfish.config.vcs.remoteDatabase.description"), "/trunk"),
- // TYPE_REPO_PROPERTY_KEY = newConfigPropertyKey("typeRepo", VCSTypeRepo.class, 9, n_("isisfish.config.vcs.typeRepo.description"), "TAG"),
- // PROJECT_NAME_PROPERTY_KEY = newConfigPropertyKey("projectName", String.class, 11, n_("isisfish.config.main.projectName.description"), "Isis-Fish"),
-
- USER_NAME("user.name", _("isisfish.config.main.userName.description"), System.getProperty("user.name")),
- SMTP_SERVER("smtpServer", _("isisfish.config.main.smtpServer.description"), "smtp"),
- USER_MAIL("userMail", _("isisfish.config.main.userMail.description"), USER_NAME.key + "@" + VCS_HOST_NAME.key);
-
- public final String key;
- public final String description;
- public final String defaultValue;
-
- private Option(String key, String description, String defaultValue) {
- this.key = key;
- this.description = description;
- this.defaultValue = defaultValue;
- }
- }
-
- //////////////////////////////////////////////////
- // Toutes les actions disponibles
- //////////////////////////////////////////////////
-
- public static enum Action {
- HELP(_("Show help"), OtherAction.class.getName() + "#help", "-h", "--help"),
-
- IMPORT_ANALYSE_PLAN(_(""), ImportAction.class.getName() + "#importAnalysePlan", "--importAnalysePlan"),
- IMPORT_EXPORT(_(""), ImportAction.class.getName() + "#importExport", "--importExport"),
- IMPORT_RULE(_(""), ImportAction.class.getName() + "#importRule", "--importRule"),
- IMPORT_SCRIPT(_("Import one java file script source"), ImportAction.class.getName() + "#importScript", "--importScript"),
- IMPORT_SIMULATOR(_(""), ImportAction.class.getName() + "#importSimulator", "--importSimulator"),
- IMPORT_FORMULA(_(""), ImportAction.class.getName() + "#importFormula", "--importFormula"),
- IMPORT_REGION(_(""), ImportAction.class.getName() + "#importRegion", "--importRegion"),
- IMPORT_REGION_AND_RENAME(_(""), ImportAction.class.getName() + "#importRegionAndRename", "--importRegionAndRename"),
- IMPORT_SIMULATION(_(""), ImportAction.class.getName() + "#importSimulation", "--importSimulation"),
- IMPORT_SCRIPT_MODULE(_("Import zipped file containing all scripts directory structure"), ImportAction.class.getName() + "#importScriptModule", "--importScriptModule"),
-
- LIST_ANALYSE_PLAN(_(""), ExportAction.class.getName() + "#listAnalysePlan", "--listAnalysePlan"),
- LIST_EXPORT(_(""), ExportAction.class.getName() + "#listExport", "--listExport"),
- LIST_RULE(_(""), ExportAction.class.getName() + "#listRule", "--listRule"),
- LIST_SCRIPT(_(""), ExportAction.class.getName() + "#listScript", "--listScript"),
- LIST_SIMULATOR(_(""), ExportAction.class.getName() + "#listSimulator", "--listSimulator"),
- LIST_FORMULA(_(""), ExportAction.class.getName() + "#listFormula", "--listFormula"),
- LIST_REGION(_(""), ExportAction.class.getName() + "#listRegion", "--listRegion"),
- LIST_SIMULATION(_(""), ExportAction.class.getName() + "#listSimulation", "--listSimulation"),
-
- EXPORT_ANALYSE_PLAN(_(""), ExportAction.class.getName() + "#exportAnalysePlan", "--exportAnalysePlan"),
- EXPORT_EXPORT(_(""), ExportAction.class.getName() + "#exportExport", "--exportExport"),
- EXPORT_RULE(_(""), ExportAction.class.getName() + "#exportRule", "--exportRule"),
- EXPORT_SCRIPT(_(""), ExportAction.class.getName() + "#exportScript", "--exportScript"),
- EXPORT_SIMULATOR(_(""), ExportAction.class.getName() + "#exportSimulator", "--exportSimulator"),
- EXPORT_FORMULA(_(""), ExportAction.class.getName() + "#exportFormula", "--exportFormula"),
- EXPORT_REGION(_(""), ExportAction.class.getName() + "#exportRegion", "--exportRegion"),
- EXPORT_SIMULATION(_(""), ExportAction.class.getName() + "#exportSimulation", "--exportSimulation"),
-
- VCS_SSH_CREATE_KEY(_(""), VCSAction.class.getName() + "#sshCreateKey", "--sshCreateKey"),
- VCS_UPDATE(_(""), VCSAction.class.getName() + "#vcsUpdate", "--vcsUpdate"),
- VCS_ADD(_(""), VCSAction.class.getName() + "#vcsAdd", "--vcsAdd"),
- VCS_REMOVE(_(""), VCSAction.class.getName() + "#vcsRemove", "--vcsRemove"),
- VCS_COMMIT(_(""), VCSAction.class.getName() + "#vcsCommit", "--vcsCommit"),
-
- SIMULATE_WITH_REGION(_(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"),
- SIMULATE_WITH_SIMULATION(_(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"),
- SIMULATE_WITH_SIMULATION_AND_SCRIPT(_(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"),
- SIMULATE_REMOTELLY(_(""), SimulationAction.class.getName() + "#simulateRemotelly", "--simulateRemotelly"),
- SIMULATE_REMOTELLY_WITH_PRESCRIPT(_(""), SimulationAction.class.getName() + "#simulateRemotellyWithPreScript", "--simulateRemotellyWithPreScript");
-
- public String description;
- public String action;
- public String[] aliases;
-
- private Action(String description, String action, String ... aliases) {
- this.description = description;
- this.action = action;
- this.aliases = aliases;
- }
- }
-}
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java (from rev 2496, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,1001 @@
+/* *##%
+ * Copyright (C) 2002-2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ * ##%*/
+
+package fr.ifremer.isisfish;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.lang.time.DurationFormatUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.ApplicationConfig;
+import org.codelutin.util.ArgumentsParserException;
+import org.codelutin.util.StringUtil;
+import org.codelutin.util.VersionNumber;
+
+import fr.ifremer.isisfish.actions.ExportAction;
+import fr.ifremer.isisfish.actions.ImportAction;
+import fr.ifremer.isisfish.actions.OtherAction;
+import fr.ifremer.isisfish.actions.SimulationAction;
+import fr.ifremer.isisfish.actions.VCSAction;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SSHSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SubProcessSimulationLauncher;
+import fr.ifremer.isisfish.vcs.VCS;
+
+/**
+ * Isis fish configuration.
+ *
+ * @author poussin
+ * @version $Revision: 1310 $
+ *
+ * Last update: $Date: 2008-08-23 00:46:00 +0200 (Sat, 23 Aug 2008) $
+ * by : $Author: bpoussin $
+ */
+public class IsisConfig extends ApplicationConfig {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static Log log = LogFactory.getLog(IsisConfig.class);
+
+ /**
+ * Config step after init.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_AFTER_INIT = 0;
+
+ /**
+ * Config step after init vcs.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_AFTER_INIT_VCS = 1;
+
+ /**
+ * Config step after ui.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_AFTER_UI = 2;
+
+ /**
+ * Config step before exit.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.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
+ * <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
+ * lors de l'increment de a, r est remis a 0
+ * <p>
+ * Un changement d'UI ne modifie jamais le numero de version de database
+ * Un changement de schema de base pour lequel on ne peut pas faire de
+ * migration de donnees demande automatiquement un changement de version
+ * d'application.
+ */
+ protected final static VersionNumber version = new VersionNumber(3, 2, 0, 5);
+ protected final static VersionNumber databaseVersion = new VersionNumber(
+ version.getNumber(0), version.getNumber(1));
+ protected final static VersionNumber apiVersion = new VersionNumber(
+ version.getNumber(0), version.getNumber(1), version.getNumber(2));
+
+ public static VersionNumber getVersionNumber() {
+ return version;
+ }
+
+ /**
+ * le nombre global ex: 3.2.0.0
+ * @return
+ */
+ static public String getVersion() {
+ String result = version.toString();
+ return result;
+ }
+
+ /**
+ * La version de la base ex: 3.2
+ * @return
+ */
+ public static VersionNumber getDatabaseVersion() {
+ return databaseVersion;
+ }
+
+ /**
+ * La version de l'api de programmation ex: 3.2.0
+ * @return
+ */
+ public static VersionNumber getApiVersion() {
+ return apiVersion;
+ }
+
+ static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2009";
+ static final public String CONFIG_FILENAME = "isis-config-" + version.getNumber(0);
+
+ /** separateur de liste */
+ static final public String SEP = ",";
+ static final public String REPORT_EMAIL = "isis-fish-bugreport at lists.labs.libre-entreprise.org";
+
+ protected transient File backupSessionDirectory = null;
+ protected long startingTime = System.nanoTime();
+
+ public IsisConfig() {
+
+ for (Option o : Option.values()) {
+ setDefaultOption(o.key, o.defaultValue);
+ }
+
+ for (Action a : Action.values()) {
+ for (String alias : a.aliases) {
+ addActionAlias(alias, a.action);
+ }
+ }
+
+ }
+
+ //////////////////////////////////////////////////
+ // Methode d'acces aux options
+ //////////////////////////////////////////////////
+
+ /**
+ * Retourne le repertoire racine de toutes les donnees (script, simulation
+ * region, ...)
+ * @return
+ */
+ public File getDatabaseDirectory() {
+ File result = getOptionAsFile(Option.DATABASE_DIRECTORY.key);
+ return result;
+ }
+
+ /**
+ * Retourne le lock a utiliser pour la base h2.
+ *
+ * Par defaut la base utilise 'file'.
+ *
+ * Les valeurs acceptées sont :
+ * - file
+ * - socket
+ * - no
+ *
+ * http://www.h2database.com/html/features.html#database_file_locking
+ *
+ * @return h2 db lock mode
+ */
+ public String getDatabaseLockMode() {
+ String result = getOption(Option.DATABASE_LOCK_MODE.key);
+ return result;
+ }
+
+ /**
+ * Retourne le repertoire ou sont stockes les scripts compiles.
+ *
+ * Create directory if not exists.
+ *
+ * @return compilation directory
+ */
+ public File getCompileDirectory() {
+ File result = getOptionAsFile(Option.COMPILATION_DIRECTORY.key);
+ if (!result.exists()) {
+ result.mkdirs();
+ }
+ return result;
+ }
+
+ /**
+ * Get javadoc directory.
+ *
+ * Create directory if not exists.
+ *
+ * @return javadoc directory
+ */
+ public File getJavadocDirectory() {
+ File result = getOptionAsFile(Option.COMPILATION_DIRECTORY.key);
+ if (!result.exists()) {
+ result.mkdirs();
+ }
+ return result;
+ }
+
+ /**
+ * Retourne l'objet {@link Locale} a utilise pour la langue.
+ *
+ * @return application {@link Locale}
+ */
+ public Locale getLocale() {
+ String value = getOption(Option.LOCALE.key);
+ Locale result = (Locale)ConvertUtils.convert(value, Locale.class);
+ return result;
+ }
+
+ /**
+ * Retourne l'encoding a utiliser pour les fichiers textes
+ * @return
+ */
+ public String getEncoding() {
+ String result = getOption(Option.ENCODING.key);
+ return result;
+ }
+
+ /**
+ * Retourne le serveur SMTP a utiliser pour l'envoie de mail
+ * @return
+ */
+ public String getSmtpServer() {
+ String result = getOption(Option.SMTP_SERVER.key);
+ return result;
+ }
+
+ /**
+ * Retourne le nom usuel de l'utilisateur
+ * @return
+ */
+ public String getUserName() {
+ String result = getOption(Option.USER_NAME.key);
+ return result;
+ }
+
+ /**
+ * Retourne l'email de l'utilisateur
+ * @return
+ */
+ public String getUserMail() {
+ String result = getOption(Option.USER_MAIL.key);
+ return result;
+ }
+
+ /**
+ * Retourne l'url du serveur de simulation
+ * @return simulator server
+ */
+ public String getSimulatorServer() {
+ String result = getOption(Option.SIMULATOR_SERVER.key);
+ return result;
+ }
+
+ /**
+ * Retourne le login pour acceder au serveur de simulation
+ * @return simulator username
+ */
+ public String getSimulatorUsername() {
+ String result = getOption(Option.SIMULATOR_USER_NAME.key);
+ return result;
+ }
+
+ /**
+ * Retourne le mot de passe pour acceder au serveur de simulation
+ * @return simulator password
+ */
+ public String getSimulatorPassword() {
+ String result = getOption(Option.SIMULATOR_PASSWORD.key);
+ return result;
+ }
+
+ public String getSimulatorClassfile() {
+ String result = getOption(Option.SIMULATOR_CLASSFILE.key);
+ return result;
+ }
+
+ public void setSimulatorClassfile(String value) {
+ setOption(Option.SIMULATOR_CLASSFILE.key, value);
+ }
+
+ /**
+ * Retourne l'url du serveur de simulation accessible via SSH.
+ *
+ * @return simulator server
+ */
+ public String getSimulatorSshServer() {
+ String result = getOption(Option.SIMULATOR_SSH_SERVER.key);
+ return result;
+ }
+
+ /**
+ * Change ssh server url value.
+ *
+ * @param sshServer
+ */
+ public void setSimulatorSshServer(String sshServer) {
+ setOption(Option.SIMULATOR_SSH_SERVER.key, sshServer);
+ }
+
+ /**
+ * Retourne le login pour acceder au serveur de simulation accessible via SSH.
+ *
+ * @return simulator username
+ */
+ public String getSimulatorSshUsername() {
+ String result = getOption(Option.SIMULATOR_SSH_USER_NAME.key);
+ return result;
+ }
+
+ /**
+ * Change ssh username.
+ *
+ * @param username username
+ */
+ public void setSimulatorSshUsername(String username) {
+ setOption(Option.SIMULATOR_SSH_USER_NAME.key, username);
+ }
+
+ /**
+ * Retourne le chemin relatif ou abs du repertoire root des données d'isis.
+ *
+ * @return simulator data path
+ */
+ public String getSimulatorSshDataPath() {
+ String result = getOption(Option.SIMULATOR_SSH_DATAPATH.key);
+ return result;
+ }
+
+ /**
+ * Change remote datapath.
+ *
+ * @param datapath datapath
+ */
+ public void setSimulatorSshDataPath(String datapath) {
+ setOption(Option.SIMULATOR_SSH_DATAPATH.key, datapath);
+ }
+
+ /**
+ * Get remote user home directory.
+ *
+ * @return remote user home
+ */
+ public String getSimulatorSshUserHome() {
+ String result = getOption(Option.SIMULATOR_SSH_USER_HOME.key);
+ return result;
+ }
+
+ /**
+ * Change isis remote home directory.
+ *
+ * @param userhome new remote home
+ */
+ public void setSimulatorSshUserHome(String userhome) {
+ setOption(Option.SIMULATOR_SSH_USER_HOME.key, userhome);
+ }
+
+ /**
+ * Retourne le chemin distant ou est installé isis.
+ *
+ * @return remote isis home
+ */
+ public String getSimulatorSshIsisHome() {
+ String result = getOption(Option.SIMULATOR_SSH_ISIS_HOME.key);
+ return result;
+ }
+
+ /**
+ * Change isis home on ssh server.
+ *
+ * @param isishome isis home
+ */
+ public void setSimulatorSshIsisHome(String isishome) {
+ setOption(Option.SIMULATOR_SSH_ISIS_HOME.key, isishome);
+ }
+
+ /**
+ * Retourne l'emplacement du dossier temporaire distant.
+ *
+ * Ce dossier doit être ABSOLUT.
+ *
+ * @return tmp dir
+ */
+ public String getSimulatorSshTmpPath() {
+ String result = getOption(Option.SIMULATOR_SSH_TMPPATH.key);
+ return result;
+ }
+
+ /**
+ * Change ssh temp path.
+ *
+ * @param sshtemppath temp path
+ */
+ public void setSimulatorSshTmpPath(String sshtemppath) {
+ setOption(Option.SIMULATOR_SSH_TMPPATH.key, sshtemppath);
+ }
+
+ /**
+ * PBS bin path directory.
+ *
+ * @return path
+ */
+ public String getSimulatorSshPbsBinPath() {
+ String result = getOption(Option.SIMULATOR_SSH_PBSBINPATH.key);
+ return result;
+ }
+
+ /**
+ * Change PBS bin path.
+ *
+ * @param path new path
+ */
+ public void setSimulatorSshPbsBinPath(String path) {
+ setOption(Option.SIMULATOR_SSH_PBSBINPATH.key, path);
+ }
+
+ /**
+ * Retourne l'interval de temps a utiliser
+ * pour recuperer le fichier de control.
+ *
+ * @return time (in seconds)
+ */
+ public long getSimulatorSshControlCheckInterval() {
+ int result = getOptionAsInt(Option.SIMULATOR_SSH_CONTROLCHECKINTERVAL.key);
+ return result;
+ }
+
+ /**
+ * Change control check interval.
+ *
+ * @param interval interval
+ */
+ public void setSimulatorSshControlCheckInterval(long interval) {
+ setOption(Option.SIMULATOR_SSH_CONTROLCHECKINTERVAL.key, String.valueOf(interval));
+ }
+
+ /**
+ * Retourne le nombre simultané de simulations authorisées sur
+ * caparmor.
+ *
+ * Utilisé pour l'envoie des simulations.
+ *
+ * @return le nombre de simulations authorisé
+ */
+ public int getSimulatorSshMaxSimultaneousSimulation() {
+ int result = getOptionAsInt(Option.SIMULATOR_SSH_MAX_SIMULTANEOUS_SIMULATION.key);
+ return result;
+ }
+
+ /**
+ * Change max simultaneous simulation at a time.
+ *
+ * @param max max
+ */
+ public void setSimulatorSshMaxSimultaneousSimulation(int max) {
+ setOption(Option.SIMULATOR_SSH_MAX_SIMULTANEOUS_SIMULATION.key, String.valueOf(max));
+ }
+
+ /**
+ * Retourne la clé privée de l'utilisteur courant.
+ *
+ * @return private ssh key path
+ */
+ public File getSSHPrivateKeyFilePath() {
+ File result = getOptionAsFile(Option.SSH_KEY_FILE.key);
+ return result;
+ }
+
+ /**
+ * Set ssh private key file path.
+ *
+ * @param sshFile new value
+ */
+ public void setSSHPrivateKeyFilePath(File sshFile) {
+ setOption(Option.SSH_KEY_FILE.key, sshFile.getAbsolutePath());
+ }
+
+ /*
+ * Le type de simulation par defaut a utiliser (local, remote, ...)
+ * @return
+ *)
+ public boolean isSimulatorLocal() {
+ // FIXME never called
+ String value = getOption(Option.SIMULATOR_LAUNCHER.key);
+ // and following code always return false :
+ boolean result = "local".equalsIgnoreCase(value);
+ return result;
+ }*/
+
+ /*public boolean isUseVCS() {
+ String value = getOption(Option.VCS_TYPE.key);
+ boolean result = !VCSNone.TYPE_NONE.equals(value);
+ return result;
+ }*/
+
+ public boolean isLaunchUI() {
+ boolean result = getOptionAsBoolean(Option.LAUNCH_UI.key);
+ return result;
+ }
+
+ public void setSimulatorLauncher(String value) {
+ setOption(Option.SIMULATOR_LAUNCHER.key, value);
+ }
+
+// public boolean isSimulationShowOnlyQueue() {
+// Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_QUEUE.key);
+// return result;
+// }
+
+ public boolean isSimulationShowOnlyError() {
+ Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_ERROR.key);
+ return result;
+ }
+
+ public File getDefaultExportDirectory() {
+ File result = getOptionAsFile(Option.DEFAULT_EXPORT_DIRECTORY.key);
+ if (!result.exists()) {
+ result.mkdirs();
+ }
+ return result;
+ }
+
+ public void setDefaultExportDirectory(String value) {
+ setOption(Option.DEFAULT_EXPORT_DIRECTORY.key, value);
+ }
+
+ public String getDefaultExportNames() {
+ String result = getOption(Option.DEFAULT_EXPORT_NAMES.key);
+ return result;
+ }
+
+ public void setDefaultExportNames(List<String> exportNames) {
+ StringBuilder sb = new StringBuilder();
+ for (String exportName : exportNames) {
+ sb.append(SEP).append(exportName);
+ }
+ String value = sb.toString();
+ // remove first SEP
+ if (value.length() > 0) {
+ value = value.substring(1);
+ }
+ setOption(Option.DEFAULT_EXPORT_NAMES.key, value);
+ saveForUser();
+ }
+
+ /**
+ * @return la liste des noms d'exports par defaut sous forme de liste,
+ * a partir de la propriete {@link Option#DEFAULT_EXPORT_NAMES}
+ * ou null si ils n'ont jamais ete sauves par l'utilisateur.
+ * by user.
+ * @see Option#DEFAULT_EXPORT_NAMES
+ */
+ public List<String> getDefaultExportNamesAsList() {
+ List<String> result = null;
+ String exportNamesList = getDefaultExportNames();
+ if (exportNamesList != null) {
+ result = new ArrayList<String>();
+ String[] exportNames = StringUtil.split(exportNamesList, ",");
+ result.addAll(Arrays.asList(exportNames));
+ }
+ return result;
+ }
+
+ public String getDefaultMapFilename() {
+ String result = getOption(Option.DEFAULT_MAP_FILENAME.key);
+ return result;
+ }
+
+ public String getDefaultResultNames() {
+ String result = getOption(Option.DEFAULT_RESULT_NAMES.key);
+ return result;
+ }
+
+ public void setDefaultResultNames(List<String> resultNames) {
+ StringBuilder sb = new StringBuilder();
+ for (String resultName : resultNames) {
+ sb.append(SEP).append(resultName);
+ }
+ String value = sb.toString();
+ // remove first SEP
+ if (value.length() > 0) {
+ value = value.substring(1);
+ }
+ setOption(Option.DEFAULT_RESULT_NAMES.key, value);
+ saveForUser();
+ }
+
+ /**
+ * @return les resultats par defaut d'une simulation sous forme de liste
+ * a partir de la propriete {@link Option#DEFAULT_RESULT_NAMES}
+ * @see Option#DEFAULT_RESULT_NAMES
+ */
+ public List<String> getDefaultResultNamesAsList() {
+ List<String> result = null;
+ String resultNamesList = getDefaultResultNames();
+ if (resultNamesList != null) {
+ result = new ArrayList<String>();
+ String[] resultNames = StringUtil.split(resultNamesList, ",");
+ result.addAll(Arrays.asList(resultNames));
+ }
+ return result;
+ }
+
+ public String getDefaultTagValue() {
+ String result = getOption(Option.DEFAULT_TAG_VALUE.key);
+ return result;
+ }
+
+ public void setDefaultTagValues(Map<String, String> tagValues) {
+ StringBuilder sb = new StringBuilder(" ");
+ for (Map.Entry<String, String> entry : tagValues.entrySet()) {
+ sb.append(SEP).append('"').append(entry.getKey()).append("\":\"").append(entry.getValue()).append('"');
+ }
+ String value = sb.toString().trim();
+ setOption(Option.DEFAULT_TAG_VALUE.key, value.isEmpty() ? "" : value.substring(1));
+ saveForUser();
+ }
+
+
+
+ /**
+ * @return le dictionnaire des tags par defaut d'une simulation a partir
+ * de la propriete {@link Option#DEFAULT_TAG_VALUE}
+ * @see Option#DEFAULT_TAG_VALUE
+ */
+ public Map<String, String> getDefaultTagValueAsMap() {
+ Map<String, String> result = new HashMap<String, String>();
+ String tagValuesList = getDefaultTagValue();
+ if (tagValuesList != null) {
+ String[] tagValues = StringUtil.split(tagValuesList, ",");
+ for (String tagValue : tagValues) {
+ String[] tagAndValue = StringUtil.split(tagValue, ":");
+
+ String tag = tagAndValue[0].trim();
+ tag = tag.substring(1, tag.length() - 1); // remove "..."
+
+ String value = tagAndValue[1].trim();
+ value = value.substring(1, value.length() - 1); // remove "..."
+
+ result.put(tag, value);
+ }
+ }
+ return result;
+ }
+
+ public String getJavadocURL() {
+ String result = getOption(Option.JAVADOC_URL.key);
+ return result;
+ }
+
+ public File getBackupDirectory() {
+ File result = getOptionAsFile(Option.BACKUP_DIRECTORY.key);
+ return result;
+ }
+
+ public long getStartingTime() {
+ return startingTime;
+ }
+
+ public String getElapsedTimeAsString() {
+ long diff = System.nanoTime() - getStartingTime();
+ String result = DurationFormatUtils.formatDuration(diff / 1000000, "s'.'S");
+ return result;
+ }
+
+ public File getBackupSessionDirectory() {
+ if (backupSessionDirectory == null) {
+ // le timestamp est en nano (on le veut en ms)
+ long time = getStartingTime() / 1000;
+ // creation de l'unique répertoire de backup pour la session
+ String path = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new java.util.Date(time));
+ backupSessionDirectory = new File(getBackupDirectory(), path);
+ if (!backupSessionDirectory.exists()) {
+ backupSessionDirectory.mkdirs();
+ }
+ }
+ return backupSessionDirectory;
+ }
+
+ /**
+ * Retourne un class loader contenant le repertoire de compilation
+ * Il permet alors de charger des classes qui viennent d'etre compilees
+ * dans isis
+ * If current thread is in simulation then return specific simulation
+ * compilation directory, else default compilation directory
+ *
+ * @return the class loader adequate
+ */
+ public ClassLoader getScriptClassLoader() {
+ SimulationContext simContext = SimulationContext.get();
+ ClassLoader result = simContext.getClassLoader();
+ if (result == null) {
+ // on est pas dans une simulation, il faut retourner un nouveau
+ // a chaque fois. on force la creation d'un nouveau classloader
+ // a chaque fois pour
+ // que l'ancienne class compiler et charg<E9> ne soit pas presente
+ File f = getCompileDirectory();
+ try {
+ URL[] cp = new URL[]{f.toURI().toURL()};
+ // il faut prendre le ClassLoader du thread courant comme parent
+ // car pour les simulations il a ete modifi<E9>, et il faut
+ // que les classes de script soit recherch<E9> dedans avant
+ // la recherche dans le getCompileDirectory().
+ // ce qui est le cas avec les URLClassLoader
+ ClassLoader parent = Thread.currentThread().getContextClassLoader();
+ result = new URLClassLoader(cp, parent);
+ } catch (MalformedURLException eee) {
+ throw new IsisFishRuntimeException(_("isisfish.error.load.classloader", f, eee.getMessage()), eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Surcharge pour la migration des options de config qui ont change de nom
+ * <p>
+ * TODO: lors du passage en version 4.0 on pourrait supprimer cette methode
+ *
+ * @param args
+ * @throws org.codelutin.util.ArgumentsParserException
+ */
+ @Override
+ public void parse(String[] args) throws ArgumentsParserException {
+ super.parse(args);
+ // dans la version precedente (3.1) seul le fichier user existe, il est
+ // donc le seul a devoir etre modifie
+ boolean mustSave = false;
+ String[] keys = new String[]{
+ "compileDirectory", Option.COMPILATION_DIRECTORY.key,
+ "defaultBackupDirectory", Option.BACKUP_DIRECTORY.key,
+ "defaultExportDirectory", Option.DEFAULT_EXPORT_DIRECTORY.key,
+ "defaultExportNames", Option.DEFAULT_EXPORT_NAMES.key,
+ "defaultMapFile", Option.DEFAULT_MAP_FILENAME.key,
+ "defaultResultNames", Option.DEFAULT_RESULT_NAMES.key,
+ "defaultSimulator", Option.SIMULATOR_CLASSFILE.key,
+ "defaultTagValue", Option.DEFAULT_TAG_VALUE.key,
+ "javadocURL", Option.JAVADOC_URL.key,
+ "locale", Option.LOCALE.key,
+ "login", Option.SIMULATOR_USER_NAME.key,
+ "password", Option.SIMULATOR_PASSWORD.key,
+ "simulationServer", Option.SIMULATOR_SERVER.key,
+ "simulationShowOnlyError", Option.SIMULATION_SHOW_ONLY_ERROR.key,
+ "simulationShowOnlyQueue", null, // Option.SIMULATION_SHOW_ONLY_QUEUE.key,
+ "smtpServer", Option.SMTP_SERVER.key,
+ "userMail", Option.USER_MAIL.key,
+ "userName", Option.USER_NAME.key,
+ "vcs.keyFile", Option.VCS_SSH_KEY_FILE.key,
+ "vcs.localDatabasePath", Option.DATABASE_DIRECTORY.key,
+ // on supprime car non compatible, les valeurs par defaut sont tres bien
+ "localSimulator", null,
+ "vcs.databaseVersion", null,
+ "vcs.hostName", null,
+ "vcs.noPassPhrase", null,
+ "vcs.remoteDatabase", null,
+ "vcs.remotePath", null,
+ "vcs.type", null,
+ "vcs.typeRepo", null,
+ "vcs.useSshConnexion", null,
+ "vcs.userName", null,
+ "version", null,
+ "projectName", null,
+ "simulationReportMail", null,
+
+ };
+
+ if (log.isInfoEnabled()) {
+ log.info("Check configuration change");
+ }
+
+ for(int i=0; i<keys.length;) {
+ String oldKey = keys[i++];
+ String newKey = keys[i++];
+ if (!oldKey.equals(newKey)) {
+ String value = getOption(oldKey);
+ if (value != null) {
+ mustSave = true;
+ // quoi qu'il arrive on enleve l'ancienne cle
+ homefile.remove(oldKey);
+ if (newKey != null) {
+ setOption(newKey, value);
+ }
+ }
+ }
+ }
+ if (mustSave) {
+ saveForUser();
+ if (log.isInfoEnabled()) {
+ log.info("Config file migration done");
+ }
+ }
+ if (log.isDebugEnabled()) {
+ printConfig();
+ }
+ }
+
+ //////////////////////////////////////////////////
+ // Toutes les options disponibles
+ //////////////////////////////////////////////////
+
+ /**
+ * Options.
+ *
+ * Set it protected to force getOption() call.
+ */
+ public static enum Option {
+
+ COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
+ JAVADOC_DIRECTORY("javadoc.directory", _("isisfish.config.main.javadocDirectory.description"), getUserHome() + File.separator + "isis-docs"),
+ CONFIG_FILE(CONFIG_FILE_NAME, _("isisfish.config.main.configFileName.description"), CONFIG_FILENAME),
+ BACKUP_DIRECTORY("backup.directory", _("isisfish.config.main.defaultBackupDirectory.description"), getUserHome() + File.separator + "isis-backup"),
+
+ DEFAULT_EXPORT_DIRECTORY("default.export.directory", _("isisfish.config.main.defaultExportDirectory.description"), getUserHome() + File.separator + "isis-export"),
+ DEFAULT_EXPORT_NAMES("default.export.names", _("isisfish.config.main.defaultExportNames.description"), ""),
+ DEFAULT_RESULT_NAMES("default.result.names", _("isisfish.config.main.defaultResultNames.description"), ""),
+ DEFAULT_MAP_FILENAME("default.map.filename", _("isisfish.config.main.defaultMapFile.description"), "maps/vmap_area_thin"),
+ DEFAULT_TAG_VALUE("default.tagvalue", _("isisfish.config.main.defaultTagValue.description"), ""),
+ ENCODING("encoding", _("isisfish.config.main.encoding.description"), "UTF-8"),
+ JAVADOC_URL("javadoc.url", _("isisfish.config.main.javadocURL.description"), "http://isis-fish.labs.libre-entreprise.org/isis-fish/apidocs/"),
+
+ SIMULATOR_CLASSFILE("simulator.classfile", _("isisfish.config.main.defaultSimulator.description"), "DefaultSimulator.java"),
+ /** prevu pour l'architecture de lancement en plugin: local, isis-server, caparmor, ... */
+ //SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localDefault", _("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
+ SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localSubProcessDefault", _("isisfish.config.main.subSimulator.description"), SubProcessSimulationLauncher.class.getName()),
+ SIMULATOR_LAUNCHER_REMOTE(SimulationService.SIMULATION_LAUNCHER + ".remoteCaparmor", _("isisfish.config.main.remoteCaparmor.description"), SSHSimulatorLauncher.class.getName()),
+
+ SIMULATOR_SERVER("simulation.server", _("isisfish.config.main.simulationServer.description"), "http://simulateur.ifremer.fr:9090"),
+ /** le login a utiliser pour les launcher distant, le type du launcher est ajouter a la cle (car 1 login par launcher) */
+ SIMULATOR_USER_NAME("simulator.username", _("isisfish.config.main.login.description"), "anonymous"),
+ SIMULATOR_PASSWORD("simulator.password", _("isisfish.config.main.password.description"), "guest"),
+
+ /** Serveur accessible par ssh : address */
+ SIMULATOR_SSH_SERVER("simulation.ssh.server", _("isisfish.config.main.simulation.ssh.server.description"), "caparmor.ifremer.fr"),
+ /** Serveur accessible par ssh : login */
+ SIMULATOR_SSH_USER_NAME("simulation.ssh.username", _("isisfish.config.main.simulation.ssh.username.description"), ""),
+ /** Serveur accessible par ssh : user home directory */
+ SIMULATOR_SSH_USER_HOME("simulation.ssh.userhome", _("isisfish.config.main.simulation.ssh.userhome.description"), ""),
+ /** Serveur accessible par ssh : remote data path */
+ SIMULATOR_SSH_DATAPATH("simulation.ssh.datapath", _("isisfish.config.main.simulation.ssh.datapath.description"), "isis-database-3"),
+ /** Serveur accessible par ssh : remote isis home install */
+ SIMULATOR_SSH_ISIS_HOME("simulation.ssh.isis.home", _("isisfish.config.main.simulation.ssh.isis.home.description"), "/home3/caparmor/poussin/isis-fish"),
+ /** Serveur accessible par ssh : remote tmp path */
+ SIMULATOR_SSH_TMPPATH("simulation.ssh.tmppath", _("isisfish.config.main.simulation.ssh.tmppath.description"), "isis-tmp"),
+ /** Serveur accessible par SSH : emplacement des executables pbs */
+ SIMULATOR_SSH_PBSBINPATH("simulation.ssh.pbsbinpath", _("isisfish.config.main.simulation.ssh.pbsbinpath.description"), "/usr/pbs/bin"),
+ /** Serveur accessible par SSH : interval de check du fichier de control */
+ SIMULATOR_SSH_CONTROLCHECKINTERVAL("simulation.ssh.control.check.interval", _("isisfish.config.main.simulation.ssh.control.check.interval.description"), "120"),
+ /** Serveur accessible par SSH : nombre de simulations simultanées sur caparmor */
+ SIMULATOR_SSH_MAX_SIMULTANEOUS_SIMULATION("simulation.ssh.max.simultaneous.simulation", _("isisfish.config.main.simulation.max.simultaneous.simulation.description"), "20"),
+
+ LOCALE("locale", _("isisfish.config.main.locale.description"), "fr_FR"),
+ // REGION_MAP("regionMap", _("isisfish.config.main.regionMap.description"), "maps"),
+ // RESULT_EXPORT("resultExport", String.class, 15, n_("isisfish.config.main.resultExport.description"), "resultExports"),
+ SIMULATION_SHOW_ONLY_ERROR("simulationShowOnlyError", _("isisfish.config.main.simulationShowOnlyError.description"), "false"),
+ // SIMULATION_SHOW_ONLY_QUEUE("simulationShowOnlyQueue", _("isisfish.config.main.simulationShowOnlyQueue.description"), "true"),
+
+ // if false no graphical interface
+ LAUNCH_UI("launch.ui", _("isisfish.config.main.launchUI.description"), "true"),
+
+ DATABASE_DIRECTORY("database.directory", _("isisfish.config.vcs.localDatabasePath.description"), getUserHome() + File.separator + "isis-database-3"),
+
+ DATABASE_LOCK_MODE("database.lockmode", _("isisfish.config.database.lockmode.description"), "file"),
+
+ // TODO remove duplicated ssh key configuration
+ SSH_KEY_FILE("ssh.key.file", _("isisfish.config.ssh.key.file.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
+ SSH_PASSPHRASE_ENABLED("ssh.passphrase.enabled", _("isisfish.config.vcs.noPassPhrase.description"), "false"),
+ SSH_PASSPHRASE("ssh.passphrase", _("isisfish.config.vcs.passphrase.description"), ""),
+
+ // can be None, CVS or SVN. only None or SVN work
+ VCS_TYPE(VCS.VCS_TYPE, _("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
+ // depend of VCS_TYPE, for SVN can be svn, svn+ssh, http or file
+ VCS_PROTOCOLE(VCS.VCS_PROTOCOLE, _("isisfish.config.vcs.useSshConnexion.description"), "svn"),
+ VCS_SSH_KEY_FILE(VCS.VCS_SSH_KEY_FILE, _("isisfish.config.vcs.keyFile.description"), getUserHome() + File.separator + ".ssh" + File.separator + "isis_rsa"),
+ // user login to access vcs
+ VCS_USER_NAME(VCS.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), ""),
+ VCS_USER_PASSWORD(VCS.VCS_USER_PASSWORD, _("isisfish.config.vcs.userPassword.description"), ""),
+ VCS_HOST_NAME(VCS.VCS_HOST_NAME, _("isisfish.config.vcs.hostName.description"), "labs.libre-entreprise.org"),
+ VCS_PATH(VCS.VCS_PATH, _("isisfish.config.vcs.remotePath.description"), "/svnroot/isis-fish-data/"),
+ // VCS_TAG(VCS.VCS_TAG, _("isisfish.config.vcs.remoteDatabase.description"), "/trunk"),
+ // TYPE_REPO_PROPERTY_KEY = newConfigPropertyKey("typeRepo", VCSTypeRepo.class, 9, n_("isisfish.config.vcs.typeRepo.description"), "TAG"),
+ // PROJECT_NAME_PROPERTY_KEY = newConfigPropertyKey("projectName", String.class, 11, n_("isisfish.config.main.projectName.description"), "Isis-Fish"),
+
+ USER_NAME("user.name", _("isisfish.config.main.userName.description"), System.getProperty("user.name")),
+ SMTP_SERVER("smtpServer", _("isisfish.config.main.smtpServer.description"), "smtp"),
+ USER_MAIL("userMail", _("isisfish.config.main.userMail.description"), USER_NAME.key + "@" + VCS_HOST_NAME.key);
+
+ public final String key;
+ public final String description;
+ public final String defaultValue;
+
+ private Option(String key, String description, String defaultValue) {
+ this.key = key;
+ this.description = description;
+ this.defaultValue = defaultValue;
+ }
+ }
+
+ //////////////////////////////////////////////////
+ // Toutes les actions disponibles
+ //////////////////////////////////////////////////
+
+ public static enum Action {
+ HELP(_("Show help"), OtherAction.class.getName() + "#help", "-h", "--help"),
+
+ IMPORT_ANALYSE_PLAN(_(""), ImportAction.class.getName() + "#importAnalysePlan", "--importAnalysePlan"),
+ IMPORT_EXPORT(_(""), ImportAction.class.getName() + "#importExport", "--importExport"),
+ IMPORT_RULE(_(""), ImportAction.class.getName() + "#importRule", "--importRule"),
+ IMPORT_SCRIPT(_("Import one java file script source"), ImportAction.class.getName() + "#importScript", "--importScript"),
+ IMPORT_SIMULATOR(_(""), ImportAction.class.getName() + "#importSimulator", "--importSimulator"),
+ IMPORT_FORMULA(_(""), ImportAction.class.getName() + "#importFormula", "--importFormula"),
+ IMPORT_REGION(_(""), ImportAction.class.getName() + "#importRegion", "--importRegion"),
+ IMPORT_REGION_AND_RENAME(_(""), ImportAction.class.getName() + "#importRegionAndRename", "--importRegionAndRename"),
+ IMPORT_SIMULATION(_(""), ImportAction.class.getName() + "#importSimulation", "--importSimulation"),
+ IMPORT_SCRIPT_MODULE(_("Import zipped file containing all scripts directory structure"), ImportAction.class.getName() + "#importScriptModule", "--importScriptModule"),
+
+ LIST_ANALYSE_PLAN(_(""), ExportAction.class.getName() + "#listAnalysePlan", "--listAnalysePlan"),
+ LIST_EXPORT(_(""), ExportAction.class.getName() + "#listExport", "--listExport"),
+ LIST_RULE(_(""), ExportAction.class.getName() + "#listRule", "--listRule"),
+ LIST_SCRIPT(_(""), ExportAction.class.getName() + "#listScript", "--listScript"),
+ LIST_SIMULATOR(_(""), ExportAction.class.getName() + "#listSimulator", "--listSimulator"),
+ LIST_FORMULA(_(""), ExportAction.class.getName() + "#listFormula", "--listFormula"),
+ LIST_REGION(_(""), ExportAction.class.getName() + "#listRegion", "--listRegion"),
+ LIST_SIMULATION(_(""), ExportAction.class.getName() + "#listSimulation", "--listSimulation"),
+
+ EXPORT_ANALYSE_PLAN(_(""), ExportAction.class.getName() + "#exportAnalysePlan", "--exportAnalysePlan"),
+ EXPORT_EXPORT(_(""), ExportAction.class.getName() + "#exportExport", "--exportExport"),
+ EXPORT_RULE(_(""), ExportAction.class.getName() + "#exportRule", "--exportRule"),
+ EXPORT_SCRIPT(_(""), ExportAction.class.getName() + "#exportScript", "--exportScript"),
+ EXPORT_SIMULATOR(_(""), ExportAction.class.getName() + "#exportSimulator", "--exportSimulator"),
+ EXPORT_FORMULA(_(""), ExportAction.class.getName() + "#exportFormula", "--exportFormula"),
+ EXPORT_REGION(_(""), ExportAction.class.getName() + "#exportRegion", "--exportRegion"),
+ EXPORT_SIMULATION(_(""), ExportAction.class.getName() + "#exportSimulation", "--exportSimulation"),
+
+ VCS_SSH_CREATE_KEY(_(""), VCSAction.class.getName() + "#sshCreateKey", "--sshCreateKey"),
+ VCS_UPDATE(_(""), VCSAction.class.getName() + "#vcsUpdate", "--vcsUpdate"),
+ VCS_ADD(_(""), VCSAction.class.getName() + "#vcsAdd", "--vcsAdd"),
+ VCS_REMOVE(_(""), VCSAction.class.getName() + "#vcsRemove", "--vcsRemove"),
+ VCS_COMMIT(_(""), VCSAction.class.getName() + "#vcsCommit", "--vcsCommit"),
+
+ SIMULATE_WITH_REGION(_(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"),
+ SIMULATE_WITH_SIMULATION(_(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"),
+ SIMULATE_WITH_SIMULATION_AND_SCRIPT(_(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"),
+ SIMULATE_REMOTELLY(_(""), SimulationAction.class.getName() + "#simulateRemotelly", "--simulateRemotelly"),
+ SIMULATE_REMOTELLY_WITH_PRESCRIPT(_(""), SimulationAction.class.getName() + "#simulateRemotellyWithPreScript", "--simulateRemotellyWithPreScript");
+
+ public String description;
+ public String action;
+ public String[] aliases;
+
+ private Action(String description, String action, String ... aliases) {
+ this.description = description;
+ this.action = action;
+ this.aliases = aliases;
+ }
+ }
+}
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,636 +0,0 @@
-/* *##%
- * Copyright (C) 2006 - 2009
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-package fr.ifremer.isisfish.entities;
-
-import static org.codelutin.i18n.I18n._;
-import static org.codelutin.i18n.I18n.n_;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixException;
-import org.codelutin.math.matrix.MatrixFactory;
-import org.codelutin.math.matrix.MatrixIterator;
-import org.codelutin.math.matrix.MatrixND;
-import org.codelutin.topia.TopiaException;
-
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.equation.Language;
-import fr.ifremer.isisfish.equation.PopulationGrowth;
-import fr.ifremer.isisfish.equation.PopulationGrowthReverse;
-import fr.ifremer.isisfish.equation.PopulationMeanWeight;
-import fr.ifremer.isisfish.equation.PopulationNaturalDeathRate;
-import fr.ifremer.isisfish.equation.PopulationPrice;
-import fr.ifremer.isisfish.equation.PopulationReproductionEquation;
-import fr.ifremer.isisfish.types.Month;
-
-/**
- * PopulationImpl.
- *
- * Created: 11 janv. 2006 20:16:27
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class PopulationImpl extends PopulationAbstract {
-
- /** Logger for this class. */
- private static final Log log = LogFactory.getLog(PopulationImpl.class);
-
- /** serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- /**
- * Overwrite delete.
- * @throws TopiaException
- */
- @Override
- public void delete() throws TopiaException {
- // chatellier 20090317 fix hibernate exception
- // object will be resaved ...
- // FIXME should be fixed on topia maybe ?
- this.getSpecies().getPopulation().remove(this);
-
- super.delete();
- }
-
- /*
- * @see fr.ifremer.isisfish.entities.PopulationAbstract#toString()
- */
- @Override
- public String toString() {
- return getName();
- }
-
- /**
- * override to change name of equation
- * @see fr.ifremer.isisfish.entities.PopulationAbstract#setName(java.lang.String)
- */
- @Override
- public void setName(String value) {
- super.setName(value);
- updateEquationName();
- }
-
- private void updateEquationName() {
- Equation eq = null;
- eq = getGrowth();
- if (eq != null) {
- eq.setName(getName());
- }
- eq = getGrowthReverse();
- if (eq != null) {
- eq.setName(getName());
- }
- eq = getMeanWeight();
- if (eq != null) {
- eq.setName(getName());
- }
- eq = getNaturalDeathRate();
- if (eq != null) {
- eq.setName(getName());
- }
- eq = getPrice();
- if (eq != null) {
- eq.setName(getName());
- }
- eq = getReproductionEquation();
- if (eq != null) {
- eq.setName(getName());
- }
- }
-
- public void setEquationReproductionEquation(String content) {
- try {
- Equation eq = getReproductionEquation();
-
- if (eq == null) {
- EquationDAO dao = IsisFishDAOHelper
- .getEquationDAO(getTopiaContext());
- // create equation
- eq = dao.create();
- eq.setCategory("Reproduction");
- eq.setJavaInterface(PopulationReproductionEquation.class);
- eq.setLanguage(Language.JAVA);
- setReproductionEquation(eq);
- }
-
- eq.setName(getName());
-
- // Fire
- String _oldValue = eq.getContent();
- fireOnPreWrite("content", _oldValue, content);
-
- eq.setContent(content);
- eq.update();
-
- fireOnPostWrite("content", _oldValue, content);
-
- } catch (TopiaException eee) {
- throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
- }
- }
-
- public void setEquationGrowth(String content) {
- try {
- Equation eq = getGrowth();
-
- if (eq == null) {
- EquationDAO dao = IsisFishDAOHelper
- .getEquationDAO(getTopiaContext());
- // create Growth equation
- eq = dao.create();
- eq.setCategory("Growth");
- eq.setJavaInterface(PopulationGrowth.class);
- eq.setLanguage(Language.JAVA);
- setGrowth(eq);
- }
-
- eq.setName(getName());
-
- // Fire
- String _oldValue = eq.getContent();
- fireOnPreWrite("content", _oldValue, content);
-
- eq.setContent(content);
- eq.update();
-
- fireOnPostWrite("content", _oldValue, content);
-
- } catch (TopiaException eee) {
- throw new IsisFishRuntimeException(_("isisfish.change.equation"),
- eee);
- }
- }
-
- public void setEquationGrowthReverse(String content) {
- try {
- Equation eq = getGrowthReverse();
-
- if (eq == null) {
- EquationDAO dao = IsisFishDAOHelper
- .getEquationDAO(getTopiaContext());
- // create equation
- eq = dao.create();
- eq.setCategory("GrowthReverse");
- eq.setJavaInterface(PopulationGrowthReverse.class);
- eq.setLanguage(Language.JAVA);
- setGrowthReverse(eq);
- }
-
- eq.setName(getName());
-
- // Fire
- String _oldValue = eq.getContent();
- fireOnPreWrite("content", _oldValue, content);
-
- eq.setContent(content);
- eq.update();
-
- fireOnPostWrite("content", _oldValue, content);
-
- } catch (TopiaException eee) {
- throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
- }
- }
-
- public void setEquationNaturalDeathRate(String content) {
- try {
- Equation eq = getNaturalDeathRate();
-
- if (eq == null) {
- EquationDAO dao = IsisFishDAOHelper
- .getEquationDAO(getTopiaContext());
- // create equation
- eq = dao.create();
- eq.setCategory("NaturalDeathRate");
- eq.setJavaInterface(PopulationNaturalDeathRate.class);
- eq.setLanguage(Language.JAVA);
- setNaturalDeathRate(eq);
- }
-
- eq.setName(getName());
-
- // Fire
- String _oldValue = eq.getContent();
- fireOnPreWrite("content", _oldValue, content);
-
- eq.setContent(content);
- eq.update();
-
- fireOnPostWrite("content", _oldValue, content);
-
- } catch (TopiaException eee) {
- throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
- }
- }
-
- public void setEquationMeanWeight(String content) {
- try {
- Equation eq = getMeanWeight();
-
- if (eq == null) {
- EquationDAO dao = IsisFishDAOHelper
- .getEquationDAO(getTopiaContext());
- // create equation
- eq = dao.create();
- eq.setCategory("MeanWeight");
- eq.setJavaInterface(PopulationMeanWeight.class);
- eq.setLanguage(Language.JAVA);
- setMeanWeight(eq);
- }
-
- eq.setName(getName());
-
- // Fire
- String _oldValue = eq.getContent();
- fireOnPreWrite("content", _oldValue, content);
-
- eq.setContent(content);
- eq.update();
-
- fireOnPostWrite("content", _oldValue, content);
-
- } catch (TopiaException eee) {
- throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
- }
- }
-
- public void setEquationPrice(String content) {
- try {
- Equation eq = getPrice();
-
- if (eq == null) {
- EquationDAO dao = IsisFishDAOHelper
- .getEquationDAO(getTopiaContext());
- // create equation
- eq = dao.create();
- eq.setCategory("Price");
- eq.setJavaInterface(PopulationPrice.class);
- eq.setLanguage(Language.JAVA);
- setPrice(eq);
- }
-
- eq.setName(getName());
-
- // Fire
- String _oldValue = eq.getContent();
- fireOnPreWrite("content", _oldValue, content);
-
- eq.setContent(content);
- eq.update();
-
- fireOnPostWrite("content", _oldValue, content);
-
- } catch (TopiaException eee) {
- throw new IsisFishRuntimeException(
- _("isisfish.error.change.equation"), eee);
- }
- }
-
- /*
- * @see fr.ifremer.isisfish.entities.Population#getNaturalDeathBirth()
- */
- @Override
- public double getNaturalDeathBirth(Zone zone) {
- double result = 0;
- try {
- Equation eq = getNaturalDeathRate();
- result = eq.evaluate("pop", this, "group", null, "zone", zone);
- } catch (Exception eee) {
- if (log.isWarnEnabled()) {
- log.warn("Error in natural death rate equation");
- }
- if (log.isDebugEnabled()) {
- log.debug("StackTrace", eee);
- }
- }
- return result;
- }
-
- /**
- * Return Matrix [groups x zones] of Natural death rate.
- *
- * @return a matrix
- */
- @Override
- public MatrixND getNaturalDeathRateMatrix() {
- List<PopulationGroup> groups = getPopulationGroup();
- List<Zone> zones = getPopulationZone();
-
- MatrixND result = MatrixFactory.getInstance().create(
- "Natural death rate", new List[] { groups, zones },
- new String[] { "Groups", "Zones" });
-
- for (MatrixIterator i = result.iterator(); i.hasNext();) {
- i.next();
- PopulationGroup group = (PopulationGroup) i
- .getSemanticsCoordinates()[0];
- Zone zone = (Zone) i.getSemanticsCoordinates()[1];
-
- double value = group.getNaturalDeathRate(zone);
- i.setValue(value);
- }
-
- return result;
- }
-
- @Override
- public PopulationSeasonInfo getPopulationSeasonInfo(Month month) {
- Collection<PopulationSeasonInfo> all = getPopulationSeasonInfo();
- PopulationSeasonInfo result = null;
- for (PopulationSeasonInfo psi : all) {
- if (psi.containsMonth(month)) {
- result = psi;
- break;
- }
- }
- return result;
- }
-
- /**
- * Compute age of group with length
- * @param length length of group
- * @param group group
- * @return age in month
- */
- @Override
- public double getAge(double length, PopulationGroup group) {
- double result = 0;
- try {
- Equation growth = getGrowthReverse();
- result = growth.evaluate("length", length, "group", group);
- } catch (Exception eee) {
- if (log.isWarnEnabled()) {
- log.warn("Error in get age");
- }
- if (log.isDebugEnabled()) {
- log.debug("StackTrace", eee);
- }
- }
- return result;
- }
-
- /**
- * Compute length of group with age.
- *
- * @param age age of group in month
- * @param group group
- * @return length of group
- */
- @Override
- public double getLength(double age, PopulationGroup group) {
- double result = 0;
- try {
- Equation growth = getGrowth();
- result = growth.evaluate("age", age, "group", group);
- } catch (Exception eee) {
- if (log.isWarnEnabled()) {
- log.warn("Error in get length");
- }
- if (log.isDebugEnabled()) {
- log.debug("StackTrace", eee);
- }
- }
- return result;
- }
-
- // /* (non-Javadoc)
- // * @see fr.ifremer.isisfish.entities.PopulationAbstract#addPopulationSeasonInfo(fr.ifremer.isisfish.entities.PopulationSeasonInfo)
- // */
- // @Override
- // public void addPopulationSeasonInfo(PopulationSeasonInfo populationSeasonInfo) {
- // super.addPopulationSeasonInfo(populationSeasonInfo);
- // changeCapturability();
- // }
- //
- // /* (non-Javadoc)
- // * @see fr.ifremer.isisfish.entities.PopulationAbstract#addPopulationGroup(fr.ifremer.isisfish.entities.PopulationGroup)
- // */
- // @Override
- // public void addPopulationGroup(PopulationGroup populationGroup) {
- // super.addPopulationGroup(populationGroup);
- // changeCapturability();
- // }
-
- // protected void changeCapturability() {
- // MatrixND mat = null;
- // if (sizePopulationGroup() == 0 || sizePopulationSeasonInfo() == 0) {
- // log.warn("Population doesn't have population group or population season info");
- // } else {
- // List [] sems = new List[]{
- // getPopulationGroup(),
- // getPopulationSeasonInfo(),
- // };
- // mat = MatrixFactory.getInstance().create(_("isisfish.population.capturability"), sems,
- // new String[]{_("isisfish.population.group"), _("isisfish.population.season")});
- //
- //
- // MatrixND oldMat = getCapturability();
- // if (oldMat != null) {
- // mat.pasteSemantics(oldMat);
- // }
- // }
- // setCapturability(mat);
- // }
-
- @Override
- public void setCapturability(MatrixND value) {
- List[] sems = value.getSemantics();
-
- boolean allNull = true;
- for (List l : sems) {
- for (Object o : l) {
- allNull = (o == null);
- }
- }
-
- // toutes les semantiques de la matrice sont null
- // on cree une nouvelle matrice avec les bonnes dimensions et les
- // bonnes semantiques avec les valeurs de la matrice passee en parametre
- if (allNull) {
- List[] newsems = new List[]{getPopulationGroup(),
- getPopulationSeasonInfo(),};
-
- MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.population.capturability"),
- newsems,
- new String[] { n_("isisfish.population.group"),
- n_("isisfish.population.season") });
- newmat.paste(value);
- value = newmat;
- }
- super.setCapturability(value);
- }
-
- /*
- * @see fr.ifremer.isisfish.entities.PopulationAbstract#getCapturability()
- */
- @Override
- public MatrixND getCapturability() {
- MatrixND mat = super.getCapturability();
- // check the validity
- if (sizePopulationGroup() == 0 || sizePopulationSeasonInfo() == 0) {
- log.warn("Population doesn't have population group or population season info");
- return null;
- }
- List[] sems = new List[] { getPopulationGroup(),
- getPopulationSeasonInfo(), };
- if (mat == null) {
- log.debug("Capturability is null, create new matrix");
- mat = MatrixFactory.getInstance().create(
- n_("isisfish.population.capturability"),
- sems,
- 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"),
- sems,
- new String[] { n_("isisfish.population.group"),
- n_("isisfish.population.season") });
-
- boolean allNull = true;
- for (List l : mat.getSemantics()) {
- for (Object o : l) {
- allNull = (o == null);
- }
- }
-
- // les dimensions de la matrice en base sont toutes null, on
- // fait en simple copy de matrice sans utiliser la semantique
- if (allNull) {
- newmat.paste(mat);
- } else {
- newmat.pasteSemantics(mat);
- }
- mat = newmat;
- // perhaps call setCapturability, but if possible wait the user
- // call setCapturability explicitly with this new matrix
- }
- return mat;
- }
-
- /*
- * @see fr.ifremer.isisfish.entities.PopulationAbstract#getMappingZoneReproZoneRecru()
- */
- @Override
- public MatrixND getMappingZoneReproZoneRecru() {
- if (sizeReproductionZone() == 0 || sizeRecruitmentZone() == 0) {
- log.warn("Population doesn't have zone reproduction or zone recruitment");
- return null;
- }
- MatrixND mat = super.getMappingZoneReproZoneRecru();
- List[] sems = new List[] { getReproductionZone(), getRecruitmentZone(), };
- if (mat == null) {
- mat = MatrixFactory.getInstance().create(
- n_("isisfish.population.mappingZoneReproZoneRecru"),
- sems,
- 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"),
- sems,
- new String[] { n_("isisfish.population.reproduction"),
- n_("isisfish.population.recruitment") });
- newmat.paste(mat);
- mat = newmat;
- }
- return mat;
- }
-
- /**
- * Convertie une matrice N 2D en une matrice N 1D strucutre pour les calculer.
- *
- * N2D[classes, zones] --> N1D[classe1(zone1, zone2, ...), classe2(zone1, zone2, ...)]
- *
- * @see #split2D(MatrixND)
- */
- public MatrixND N2DToN1D(MatrixND N) {
- int maxX = N.getDim(0);
- int maxY = N.getDim(1);
-
- MatrixND result = MatrixFactory.getInstance().create(
- n_("isisfish.population.matrixAbundance1D"),
- new int[] { 1, maxX * maxY });
-
- for (int x = 0; x < maxX; x++) {
- for (int y = 0; y < maxY; y++) {
- result.setValue(0, x * maxY + y, N.getValue(x, y));
- }
- }
- return result;
- }
-
- /**
- * A partir d'une matrice N structure selon l'ecriture matricielle
- * en classe puis en zone, construit une matrice 2D en Classe(X)
- * et en Zone(Y)
- *
- * @see #N2DToN1D(MatrixND)
- */
- public MatrixND split2D(MatrixND N) {
- List<Zone> zones = getPopulationZone();
- List<PopulationGroup> groups = getPopulationGroup();
- int nbZone = zones.size();
-
- MatrixND result = MatrixFactory.getInstance().create(
- n_("isisfish.population.matrixAbundance"),
- new List[] { groups, zones },
- new String[] { n_("isisfish.population.groups"),
- n_("isisfish.population.zones") });
-
- try {
- int c = 0;
- int z = 0;
- for (MatrixIterator mi = N.iterator(); mi.next();) {
- result.setValue(c, z, mi.getValue());
- if (z + 1 == nbZone) {
- c++;
- }
- z = (z + 1) % nbZone;
- }
- } catch (MatrixException eee) {
- log.warn("MatrixException", eee);
- }
- return result;
- }
-
-}
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java (from rev 2479, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,636 @@
+/* *##%
+ * Copyright (C) 2006 - 2009
+ * 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.entities;
+
+import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18n.n_;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixException;
+import org.codelutin.math.matrix.MatrixFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+import org.codelutin.topia.TopiaException;
+
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.equation.Language;
+import fr.ifremer.isisfish.equation.PopulationGrowth;
+import fr.ifremer.isisfish.equation.PopulationGrowthReverse;
+import fr.ifremer.isisfish.equation.PopulationMeanWeight;
+import fr.ifremer.isisfish.equation.PopulationNaturalDeathRate;
+import fr.ifremer.isisfish.equation.PopulationPrice;
+import fr.ifremer.isisfish.equation.PopulationReproductionEquation;
+import fr.ifremer.isisfish.types.Month;
+
+/**
+ * PopulationImpl.
+ *
+ * Created: 11 janv. 2006 20:16:27
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class PopulationImpl extends PopulationAbstract {
+
+ /** Logger for this class. */
+ private static final Log log = LogFactory.getLog(PopulationImpl.class);
+
+ /** serialVersionUID */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Overwrite delete.
+ * @throws TopiaException
+ */
+ @Override
+ public void delete() throws TopiaException {
+ // chatellier 20090317 fix hibernate exception
+ // object will be resaved ...
+ // FIXME should be fixed on topia maybe ?
+ this.getSpecies().getPopulation().remove(this);
+
+ super.delete();
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.entities.PopulationAbstract#toString()
+ */
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ /**
+ * override to change name of equation
+ * @see fr.ifremer.isisfish.entities.PopulationAbstract#setName(java.lang.String)
+ */
+ @Override
+ public void setName(String value) {
+ super.setName(value);
+ updateEquationName();
+ }
+
+ private void updateEquationName() {
+ Equation eq = null;
+ eq = getGrowth();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ eq = getGrowthReverse();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ eq = getMeanWeight();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ eq = getNaturalDeathRate();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ eq = getPrice();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ eq = getReproductionEquation();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ }
+
+ public void setEquationReproductionEquation(String content) {
+ try {
+ Equation eq = getReproductionEquation();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper
+ .getEquationDAO(getTopiaContext());
+ // create equation
+ eq = dao.create();
+ eq.setCategory("Reproduction");
+ eq.setJavaInterface(PopulationReproductionEquation.class);
+ eq.setLanguage(Language.JAVA);
+ setReproductionEquation(eq);
+ }
+
+ eq.setName(getName());
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
+ public void setEquationGrowth(String content) {
+ try {
+ Equation eq = getGrowth();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper
+ .getEquationDAO(getTopiaContext());
+ // create Growth equation
+ eq = dao.create();
+ eq.setCategory("Growth");
+ eq.setJavaInterface(PopulationGrowth.class);
+ eq.setLanguage(Language.JAVA);
+ setGrowth(eq);
+ }
+
+ eq.setName(getName());
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(_("isisfish.change.equation"),
+ eee);
+ }
+ }
+
+ public void setEquationGrowthReverse(String content) {
+ try {
+ Equation eq = getGrowthReverse();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper
+ .getEquationDAO(getTopiaContext());
+ // create equation
+ eq = dao.create();
+ eq.setCategory("GrowthReverse");
+ eq.setJavaInterface(PopulationGrowthReverse.class);
+ eq.setLanguage(Language.JAVA);
+ setGrowthReverse(eq);
+ }
+
+ eq.setName(getName());
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
+ public void setEquationNaturalDeathRate(String content) {
+ try {
+ Equation eq = getNaturalDeathRate();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper
+ .getEquationDAO(getTopiaContext());
+ // create equation
+ eq = dao.create();
+ eq.setCategory("NaturalDeathRate");
+ eq.setJavaInterface(PopulationNaturalDeathRate.class);
+ eq.setLanguage(Language.JAVA);
+ setNaturalDeathRate(eq);
+ }
+
+ eq.setName(getName());
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
+ public void setEquationMeanWeight(String content) {
+ try {
+ Equation eq = getMeanWeight();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper
+ .getEquationDAO(getTopiaContext());
+ // create equation
+ eq = dao.create();
+ eq.setCategory("MeanWeight");
+ eq.setJavaInterface(PopulationMeanWeight.class);
+ eq.setLanguage(Language.JAVA);
+ setMeanWeight(eq);
+ }
+
+ eq.setName(getName());
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
+ public void setEquationPrice(String content) {
+ try {
+ Equation eq = getPrice();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper
+ .getEquationDAO(getTopiaContext());
+ // create equation
+ eq = dao.create();
+ eq.setCategory("Price");
+ eq.setJavaInterface(PopulationPrice.class);
+ eq.setLanguage(Language.JAVA);
+ setPrice(eq);
+ }
+
+ eq.setName(getName());
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.entities.Population#getNaturalDeathBirth()
+ */
+ @Override
+ public double getNaturalDeathBirth(Zone zone) {
+ double result = 0;
+ try {
+ Equation eq = getNaturalDeathRate();
+ result = eq.evaluate("pop", this, "group", null, "zone", zone);
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Error in natural death rate equation");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("StackTrace", eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return Matrix [groups x zones] of Natural death rate.
+ *
+ * @return a matrix
+ */
+ @Override
+ public MatrixND getNaturalDeathRateMatrix() {
+ List<PopulationGroup> groups = getPopulationGroup();
+ List<Zone> zones = getPopulationZone();
+
+ MatrixND result = MatrixFactory.getInstance().create(
+ "Natural death rate", new List[] { groups, zones },
+ new String[] { "Groups", "Zones" });
+
+ for (MatrixIterator i = result.iterator(); i.hasNext();) {
+ i.next();
+ PopulationGroup group = (PopulationGroup) i
+ .getSemanticsCoordinates()[0];
+ Zone zone = (Zone) i.getSemanticsCoordinates()[1];
+
+ double value = group.getNaturalDeathRate(zone);
+ i.setValue(value);
+ }
+
+ return result;
+ }
+
+ @Override
+ public PopulationSeasonInfo getPopulationSeasonInfo(Month month) {
+ Collection<PopulationSeasonInfo> all = getPopulationSeasonInfo();
+ PopulationSeasonInfo result = null;
+ for (PopulationSeasonInfo psi : all) {
+ if (psi.containsMonth(month)) {
+ result = psi;
+ break;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Compute age of group with length
+ * @param length length of group
+ * @param group group
+ * @return age in month
+ */
+ @Override
+ public double getAge(double length, PopulationGroup group) {
+ double result = 0;
+ try {
+ Equation growth = getGrowthReverse();
+ result = growth.evaluate("length", length, "group", group);
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Error in get age");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("StackTrace", eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Compute length of group with age.
+ *
+ * @param age age of group in month
+ * @param group group
+ * @return length of group
+ */
+ @Override
+ public double getLength(double age, PopulationGroup group) {
+ double result = 0;
+ try {
+ Equation growth = getGrowth();
+ result = growth.evaluate("age", age, "group", group);
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Error in get length");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("StackTrace", eee);
+ }
+ }
+ return result;
+ }
+
+ // /* (non-Javadoc)
+ // * @see fr.ifremer.isisfish.entities.PopulationAbstract#addPopulationSeasonInfo(fr.ifremer.isisfish.entities.PopulationSeasonInfo)
+ // */
+ // @Override
+ // public void addPopulationSeasonInfo(PopulationSeasonInfo populationSeasonInfo) {
+ // super.addPopulationSeasonInfo(populationSeasonInfo);
+ // changeCapturability();
+ // }
+ //
+ // /* (non-Javadoc)
+ // * @see fr.ifremer.isisfish.entities.PopulationAbstract#addPopulationGroup(fr.ifremer.isisfish.entities.PopulationGroup)
+ // */
+ // @Override
+ // public void addPopulationGroup(PopulationGroup populationGroup) {
+ // super.addPopulationGroup(populationGroup);
+ // changeCapturability();
+ // }
+
+ // protected void changeCapturability() {
+ // MatrixND mat = null;
+ // if (sizePopulationGroup() == 0 || sizePopulationSeasonInfo() == 0) {
+ // log.warn("Population doesn't have population group or population season info");
+ // } else {
+ // List [] sems = new List[]{
+ // getPopulationGroup(),
+ // getPopulationSeasonInfo(),
+ // };
+ // mat = MatrixFactory.getInstance().create(_("isisfish.population.capturability"), sems,
+ // new String[]{_("isisfish.population.group"), _("isisfish.population.season")});
+ //
+ //
+ // MatrixND oldMat = getCapturability();
+ // if (oldMat != null) {
+ // mat.pasteSemantics(oldMat);
+ // }
+ // }
+ // setCapturability(mat);
+ // }
+
+ @Override
+ public void setCapturability(MatrixND value) {
+ List[] sems = value.getSemantics();
+
+ boolean allNull = true;
+ for (List l : sems) {
+ for (Object o : l) {
+ allNull = (o == null);
+ }
+ }
+
+ // toutes les semantiques de la matrice sont null
+ // on cree une nouvelle matrice avec les bonnes dimensions et les
+ // bonnes semantiques avec les valeurs de la matrice passee en parametre
+ if (allNull) {
+ List[] newsems = new List[]{getPopulationGroup(),
+ getPopulationSeasonInfo(),};
+
+ MatrixND newmat = MatrixFactory.getInstance().create(
+ n_("isisfish.population.capturability"),
+ newsems,
+ new String[] { n_("isisfish.population.group"),
+ n_("isisfish.population.season") });
+ newmat.paste(value);
+ value = newmat;
+ }
+ super.setCapturability(value);
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.entities.PopulationAbstract#getCapturability()
+ */
+ @Override
+ public MatrixND getCapturability() {
+ MatrixND mat = super.getCapturability();
+ // check the validity
+ if (sizePopulationGroup() == 0 || sizePopulationSeasonInfo() == 0) {
+ log.warn("Population doesn't have population group or population season info");
+ return null;
+ }
+ List[] sems = new List[] { getPopulationGroup(),
+ getPopulationSeasonInfo(), };
+ if (mat == null) {
+ log.debug("Capturability is null, create new matrix");
+ mat = MatrixFactory.getInstance().create(
+ _("isisfish.population.capturability"),
+ sems,
+ new String[] { _("isisfish.population.group"),
+ _("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(
+ _("isisfish.population.capturability"),
+ sems,
+ new String[] { _("isisfish.population.group"),
+ _("isisfish.population.season") });
+
+ boolean allNull = true;
+ for (List l : mat.getSemantics()) {
+ for (Object o : l) {
+ allNull = (o == null);
+ }
+ }
+
+ // les dimensions de la matrice en base sont toutes null, on
+ // fait en simple copy de matrice sans utiliser la semantique
+ if (allNull) {
+ newmat.paste(mat);
+ } else {
+ newmat.pasteSemantics(mat);
+ }
+ mat = newmat;
+ // perhaps call setCapturability, but if possible wait the user
+ // call setCapturability explicitly with this new matrix
+ }
+ return mat;
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.entities.PopulationAbstract#getMappingZoneReproZoneRecru()
+ */
+ @Override
+ public MatrixND getMappingZoneReproZoneRecru() {
+ if (sizeReproductionZone() == 0 || sizeRecruitmentZone() == 0) {
+ log.warn("Population doesn't have zone reproduction or zone recruitment");
+ return null;
+ }
+ MatrixND mat = super.getMappingZoneReproZoneRecru();
+ List[] sems = new List[] { getReproductionZone(), getRecruitmentZone(), };
+ if (mat == null) {
+ mat = MatrixFactory.getInstance().create(
+ n_("isisfish.population.mappingZoneReproZoneRecru"),
+ sems,
+ new String[] { _("isisfish.population.reproduction"),
+ _("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(
+ _("isisfish.population.mappingZoneReproZoneRecru"),
+ sems,
+ new String[] { _("isisfish.population.reproduction"),
+ _("isisfish.population.recruitment") });
+ newmat.paste(mat);
+ mat = newmat;
+ }
+ return mat;
+ }
+
+ /**
+ * Convertie une matrice N 2D en une matrice N 1D strucutre pour les calculer.
+ *
+ * N2D[classes, zones] --> N1D[classe1(zone1, zone2, ...), classe2(zone1, zone2, ...)]
+ *
+ * @see #split2D(MatrixND)
+ */
+ public MatrixND N2DToN1D(MatrixND N) {
+ int maxX = N.getDim(0);
+ int maxY = N.getDim(1);
+
+ MatrixND result = MatrixFactory.getInstance().create(
+ _("isisfish.population.matrixAbundance1D"),
+ new int[] { 1, maxX * maxY });
+
+ for (int x = 0; x < maxX; x++) {
+ for (int y = 0; y < maxY; y++) {
+ result.setValue(0, x * maxY + y, N.getValue(x, y));
+ }
+ }
+ return result;
+ }
+
+ /**
+ * A partir d'une matrice N structure selon l'ecriture matricielle
+ * en classe puis en zone, construit une matrice 2D en Classe(X)
+ * et en Zone(Y)
+ *
+ * @see #N2DToN1D(MatrixND)
+ */
+ public MatrixND split2D(MatrixND N) {
+ List<Zone> zones = getPopulationZone();
+ List<PopulationGroup> groups = getPopulationGroup();
+ int nbZone = zones.size();
+
+ MatrixND result = MatrixFactory.getInstance().create(
+ _("isisfish.population.matrixAbundance"),
+ new List[] { groups, zones },
+ new String[] { _("isisfish.population.groups"),
+ _("isisfish.population.zones") });
+
+ try {
+ int c = 0;
+ int z = 0;
+ for (MatrixIterator mi = N.iterator(); mi.next();) {
+ result.setValue(c, z, mi.getValue());
+ if (z + 1 == nbZone) {
+ c++;
+ }
+ z = (z + 1) % nbZone;
+ }
+ } catch (MatrixException eee) {
+ log.warn("MatrixException", eee);
+ }
+ return result;
+ }
+
+}
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,789 +0,0 @@
-/* *##%
- * Copyright (C) 2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-package fr.ifremer.isisfish.simulator.launcher;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.rmi.RemoteException;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.SortedSet;
-import java.util.Timer;
-import java.util.TreeSet;
-import java.util.AbstractMap.SimpleEntry;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.util.FileUtil;
-
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishException;
-import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.simulator.AnalysePlan;
-import fr.ifremer.isisfish.simulator.SimulationControl;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.launcher.SimulationJob.PostAction;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-
-/**
- * Moniteur singleton pour pouvoir sauvegarder
- * localement la liste des simulations démarrées et
- * permettre de continuer le monitoring au relancemenent
- * d'Isis.
- *
- * Cette classe n'implemente pas {@link SimulationServiceListener}
- * car elle ne doit pas écouter toutes les simulations, mais
- * seulement celle dit simple, c'est-à-dire "master plan" du plan
- * d'analyse.
- *
- * @since 3.2.0.4
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class SimulationMonitor extends Thread {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static Log log = LogFactory.getLog(SimulationMonitor.class);
-
- /** Instance. */
- protected static SimulationMonitor instance = new SimulationMonitor();
-
- /**
- * Simulation information saving file.
- *
- * Saved in $HOME/.isis-simulations-3
- */
- protected File monitorFile;
-
- /**
- * Separator used in monitor file.
- *
- * Can't be ","
- */
- protected static final String MONITORFILESEPARATOR = "/";
-
- /**
- * Liste des simulations en cours,
- * Le format est défini ainsi :
- * id=launcher/datedelancement/onlyexport/exports/plandependant/plans
- */
- protected Properties properties = new Properties();
-
- /**
- * Map to remember when a simulation have to be checked.
- *
- * Sorted on date ASC.
- */
- protected SortedSet<SimpleEntry<Date, SimulationJob>> checkSet;
-
- /**
- * Check scheduler.
- */
- protected Timer checkScheduler;
-
- /**
- * Constructeur.
- */
- protected SimulationMonitor() {
- // FIXME configure this path
- String monitorSaveFile = System.getProperty("user.home")
- + File.separator + ".isis-simulations-3";
- monitorFile = new File(monitorSaveFile);
-
- // init monitor check map
- checkSet = new TreeSet<SimpleEntry<Date, SimulationJob>>(new Comparator<SimpleEntry<Date, SimulationJob>>(){
- @Override
- public int compare(SimpleEntry<Date, SimulationJob> o1,
- SimpleEntry<Date, SimulationJob> o2) {
- return o1.getKey().compareTo(o2.getKey());
- }
-
- });
-
- // init timer
- checkScheduler = new Timer();
- }
-
- /**
- * Instance getter.
- *
- * @return instance
- */
- public static SimulationMonitor getInstance() {
- return instance;
- }
-
- /**
- * Reload config and read non simulation job
- * into simulation service.
- *
- * @param service SimulationService
- */
- public void reloadConfig(final SimulationService service) {
-
- if (monitorFile.canRead()) {
- try {
- properties.load(new FileInputStream(monitorFile));
-
- // in a thead
- // don't temporize UI loading
- new Thread() {
- public void run() {
- restartSimulationProgression(service);
- }
- }.start();
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't reload monitor file", e);
- }
- }
- }
-
- }
-
- /**
- * Take all simulation in loaded file.
- * And add it into simulation service.
- */
- protected void restartSimulationProgression(SimulationService service) {
-
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {
- String simulationId = (String) entry.getKey();
- String simulationInfo = (String) entry.getValue();
-
- // 0 = launcher
- // 1 = date
- // 2 = export
- // 3 = plan dependent
- String[] simulationInfos = simulationInfo.split(MONITORFILESEPARATOR);
- String simulationLauncher = simulationInfos[0];
- String simulationDate = simulationInfos[1];
- String simulationOnlyExport = simulationInfos[2];
- String simulationExports = simulationInfos[3];
- String simulationUseAnalysePlan = simulationInfos[4];
- String simulationPlans = "";
- if(simulationInfos.length >= 6) {
- simulationPlans = simulationInfos[5];
- }
-
- if (log.isInfoEnabled()) {
- log.info("Restart monitoring of " + simulationId);
- if (log.isDebugEnabled()) {
- log.debug(" launcher= " + simulationLauncher + ", date = "
- + simulationDate);
- }
- }
-
- // FIXME date remove simulation that are older than a week ?
-
- // re add simulation in
- try {
- // launcher
- SimulatorLauncher launcher = (SimulatorLauncher) Class.forName(
- simulationLauncher).newInstance();
-
- SimulationParameter params = new SimulationParameter();
- // UseAnalysePlan
- params.setUseAnalysePlan("true".equalsIgnoreCase(simulationUseAnalysePlan));
- // plans
- String[] planList = simulationPlans.split(",");
- for (String name : planList) {
- if (name != null && !name.isEmpty()) {
- try {
- AnalysePlan plan = AnalysePlanStorage.getAnalysePlan(name).getNewAnalysePlanInstance();
- params.getAnalysePlans().add(plan);
- } catch (IsisFishException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Can't find plan: " + name, eee);
- }
- }
- }
- }
- // OnlyExport
- params.setOnlyExport("true".equalsIgnoreCase(simulationOnlyExport));
- // exports
- String[] exportList = simulationExports.split(",");
- for (String name : exportList) {
- if (name != null && !name.isEmpty()) {
- params.getExportNames().add(name);
- }
- }
-
- // FIXME needed
- params.setExportDirectory(IsisFish.config.getDefaultExportDirectory().toString());
-
- service.submitForCheckOnly(simulationId, params, launcher, 0);
- } catch (ClassNotFoundException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't found launcher for this simulation", e);
- }
- } catch (InstantiationException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get launcher for this simulation", e);
- }
- } catch (IllegalAccessException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get launcher for this simulation", e);
- }
- }
- }
- }
-
- public synchronized void simulationStart(SimulationJob job) {
-
- String monitorKey = job.getId();
- SimulatorLauncher launcher = job.getLauncher();
- SimulationParameter params = job.getItem().getParameter();
-
- // 0 = launcher
- String monitorValue = launcher.getClass().getName();
- // 1 = date
- monitorValue += MONITORFILESEPARATOR + System.currentTimeMillis();
- // 2 = onlyexport
- monitorValue += MONITORFILESEPARATOR + params.getOnlyExport();
- // 3 = exports
- monitorValue += MONITORFILESEPARATOR + collectionToString(params.getExportNames());
- // 4 = plan dependent
- monitorValue += MONITORFILESEPARATOR + params.getUseAnalysePlan();
- // 5 = plan dependent
- String planList = "";
- for (AnalysePlan plan : params.getAnalysePlans()) {
- planList += AnalysePlanStorage.getName(plan) + ",";
- }
- monitorValue += MONITORFILESEPARATOR + planList;
-
- properties.put(monitorKey, monitorValue);
- try {
- properties.store(new FileOutputStream(monitorFile),
- "Simulation added at " + new Date());
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't save monitor file", e);
- }
- }
-
- if (log.isInfoEnabled()) {
- log.info("Saving simulation " + monitorKey + " as started");
- }
-
- // put interval in launcher ?
- Date checkDate = new Date();
- // do check at start
- //long intervalInSeconds = launcher.getCheckProgressionInterval();
- //checkDate.setTime(checkDate.getTime() + intervalInSeconds);
-
- // add simulation to check queue
- checkSet.add(new SimpleEntry<Date, SimulationJob>(checkDate, job));
-
- // start thread if not already started
- if (!this.isAlive()) {
- this.start();
- }
- }
-
- /**
- * Mark a simulation as stopped.
- * Remove it from save file.
- *
- * @param job job that control the simulation
- */
- public synchronized void simulationStop(SimulationJob job) {
- String monitorKey = job.getId();
-
- properties.remove(monitorKey);
- try {
- if (properties.isEmpty()) {
- monitorFile.delete();
- } else {
- properties.store(new FileOutputStream(monitorFile),
- "Simulation delete at " + new Date());
- }
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't save monitor file", e);
- }
- }
-
- if (log.isInfoEnabled()) {
- log.info("Saving simulation " + monitorKey + " as stopped");
- }
- }
-
- /*
- * @see java.util.TimerTask#run()
- */
- @Override
- public void run() {
-
- // main loop to monitor "all" running simulation
-
- while (true) {
-
- // quoi qu'il arrive, le thread ne doit jamais s'arreter
- try {
- waitAndCheckProgression();
- }
- catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("An exception occurs durring monitoring", e);
- }
- }
- }
- }
-
- /**
- * Wait one second, and check for first
- * simulation progression, if first simulation time
- * is reached.
- */
- protected void waitAndCheckProgression() {
-
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- if (log.isErrorEnabled()) {
- log.error("Monitor thread has been interrupted", e);
- }
- }
-
- // log
- if (log.isDebugEnabled()) {
- log.debug("Simulation monitor wake up");
- }
-
- // take first job in map
- if (!checkSet.isEmpty()) {
- SimpleEntry<Date, SimulationJob> firstEntry = checkSet.first();
- Date date = firstEntry.getKey();
- Date now = new Date();
-
- if (date.before(now)) {
- // first key date in map is over...
- // check is needed
- SimulationJob job = firstEntry.getValue();
- SimulatorLauncher launcher = job.getLauncher();
-
- if (log.isInfoEnabled()) {
- log.info("Check simulation progression : " + job.getId());
- }
-
- // retourne true if :
- // - simulation is finished
- // - simulation end has been asked
- boolean jobIsFinished = checkProgression(job, launcher);
-
- // always remove this simulation from map
- checkSet.remove(firstEntry);
-
- // if not finished, re-add it at end
- if (jobIsFinished) {
-
- if (log.isInfoEnabled()) {
- log.info("Job " + job.getId() + " finished");
- }
-
- doPostSimulationOperation(job, launcher);
- }
-
- // Si le job est reelement fini
- // et que les post operation ont réussie
- else {
- // next check date
- long nextJobTimeMs = date.getTime()
- + launcher.getCheckProgressionInterval() * 1000;
- Date nextJobDate = new Date(nextJobTimeMs);
- checkSet.add(new SimpleEntry<Date, SimulationJob>(nextJobDate, job));
- }
-
- } else {
- //checkScheduler.schedule(this, date);
- if (log.isDebugEnabled()) {
- log.debug("Time to check not reached, skip check, "
- + date + " < " + now);
- }
- }
- }
- }
-
- /**
- * Check progression.
- *
- * @param job job to check progression
- * @param launcher SimulatorLauncher that manage simulation
- * @return <tt>true</tt> is simulation is finished, <tt>false<tt> otherwise
- */
- protected boolean checkProgression(SimulationJob job,
- SimulatorLauncher launcher) {
-
- boolean simulationEnded = false;
-
- SimulationService service = SimulationService.getService();
- SimulationControl control = job.getItem().getControl();
-
- // log
- if (log.isDebugEnabled()) {
- log.debug("Checking simulation progression : " + control.getId());
- log.debug(" with launcher = " + launcher);
- }
-
- // update
- try {
- launcher.updateControl(service, control);
-
- // by default, Progress = ProgressMax = 0
- // WARNING this condition is VERY important
- // and set by end of
- // fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher#localSimulateSameThread(SimulationControl, SimulationStorage)
-
- // FIXME check SimulationStorage.exists(control.getId()) condition
- if ((control.getProgress() > 0
- && control.getProgress() >= control.getProgressMax() && SimulationStorage.exists(control.getId()))) {
- simulationEnded = true;
- }
-
- if (control.isStopSimulationRequest()) {
- launcher.simulationStopRequest(job); // to release one resource
- simulationEnded = true;
- }
- } catch (RemoteException e) {
- if (log.isErrorEnabled()) {
- log.error("Progression thread update error", e);
- }
- }
-
- return simulationEnded;
- }
-
- /**
- * Operation to do after simulation end.
- *
- * - get simulation result
- * - do result export
- *
- * @param job job
- * @param launcher {@link SimulatorLauncher} that manage simulation
- *
- * @return true if post operation complete and job has be removed from queue
- */
- protected boolean doPostSimulationOperation(SimulationJob job,
- SimulatorLauncher launcher) {
-
- boolean result = false;
-
- SimulationService service = SimulationService.getService();
- SimulationControl control = job.getItem().getControl();
-
- // Release one available resource on launcher
- // FIXME done by launcher himself
- //launcher.simulationEnded();
-
- if (log.isInfoEnabled()) {
- log.info("Do post simulation operation for " + control.getId());
- }
-
- try {
-
- // get storage
- // meme si StopSimulationRequest
- // force le download dans le cas de ssh
- SimulationStorage simulation = launcher.getSimulationStorage(
- service, control);
-
- // on ne fait de post traitement que si
- // la simulation n'a pas été arretée
- if (!control.isStopSimulationRequest()) {
- // post manage this storage
- boolean simulationAvailble = exportResult(job, simulation);
-
- // sensitivity calculator analyze result call
- // can't do analyze second pass if simulation
- // has been deleted
- if (simulationAvailble) {
- analyzeSensitivityResult(job, simulation);
- }
- }
-
- // notify simulation ended
- // to not check later...
- // don't do in finally, getSimulationStorage may fail (md5 on ssh)
- simulationStop(job);
- service.fireStopEvent(job);
-
- result = true;
-
- } catch (RemoteException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get simulation results after simulation end",
- e);
- }
- }
-
- return result;
- }
-
- /**
- * Export result, and delete simulation if "onlyExport" has
- * been selected.
- *
- * @return <tt>true</tt> if simulation is still available (not delete by onlyExport)
- */
- protected boolean exportResult(SimulationJob job, SimulationStorage simulation) {
-
- boolean simulationAvailble = true;
-
- SimulationParameter param = job.getItem().getParameter();
- SimulationControl control = job.getItem().getControl();
- String id = control.getId();
-
- try {
- // copie les exports de simulation dans le repertoire
- // souhaiter par l'utilisateur
- if (param.getExportNames() != null
- && param.getExportNames().size() > 0) {
-
- // log
- if (log.isDebugEnabled()) {
- log.debug("Export results");
- }
-
- File exportDir = SimulationStorage
- .getResultExportDirectory(simulation.getDirectory());
- // FIXME verifier que pour les plans on a bien tous les
- // export, c-a-d que les export son fait dans un sous rep
- // portant le nom de la simu
- FileUtil.copyAndRenameRecursively(exportDir, new File(param
- .getExportDirectory()), exportDir.getName(), id);
- } else {
- // log
- if (log.isDebugEnabled()) {
- log.debug("Not Export results : unneeded");
- }
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("Can't export simulation %s", id), eee);
- }
- }
-
- try {
- // Si l'utilisateur souhaite seulement les exports
- // on supprimer la/les simulations.
- if (param.getOnlyExport()) {
- // pour les plan dependant il faut le faire apres toutes
- // les simulations donc pas ici
- if (job.getParentJob() == null || param.getUseAnalysePlan()
- && param.isIndependentPlan()) {
-
- // log
- if (log.isDebugEnabled()) {
- log.debug("Export \"onlyExport\" : deleting simulation");
- }
-
- simulation.delete(false);
- simulationAvailble = false;
- } else {
- // log
- if (log.isDebugEnabled()) {
- log.debug("OnlyExport options true, but plan dependant : not delete simulation");
- }
- }
- } else {
- // log
- if (log.isDebugEnabled()) {
- log.debug("OnlyExport options not set : not delete simulation");
- }
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("Can't delete simulation %s ", id), eee);
- }
- }
-
- for (PostAction action : job.getPostActions()) {
- try {
- action.finished(job, simulation);
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("Can't do post action %s", action), eee);
- }
- }
- }
-
- return simulationAvailble;
- }
-
- /**
- * For each finished simulation, check that all sensitivity
- * simulation are available (in case of sensitivity simulation only).
- *
- * @param job job
- * @param simulation simulation
- */
- protected void analyzeSensitivityResult(SimulationJob job,
- SimulationStorage simulation) {
-
- Properties props = simulation.getPropertiesParameter();
-
- int numberOfSimulation = Integer.parseInt(props.getProperty(SimulationParameter.NUMBER_OF_SENSITIVITY_SIMULATION)); //getNumberOfSensitivitySimulation();
-
- if (numberOfSimulation > 0) {
- // this is a sensitivity simulation
- String simulationId = job.getId();
- String simulationCommonPrefix = simulationId.substring(0, simulationId.lastIndexOf("_"));
- int numberFinished = getNumberOfFinishedSimulation(simulationCommonPrefix, numberOfSimulation);
-
- // si on a toutes les simulation est qu'elles sont finie
- // on construit la liste des simulation storage
- // et on l'envoie au script d'analyse de sensibilite
- if (numberFinished == numberOfSimulation) {
-
- // FIXME buggy because of hack in getParameter()
- // getRegion() from simulation can be locked
- SimulationParameter params = simulation.getParameter();
- SensitivityCalculator sensitivityCalculator = params.getSensitivityCalculator();
- if (sensitivityCalculator != null) {
- if (log.isDebugEnabled()) {
- log.debug("Call analyzeResult on sensitivity script " + sensitivityCalculator.getClass().getSimpleName());
- }
- try {
- // get full storage list
- List<SimulationStorage> simulationStorageForAnalyze =
- getStorageListForSecondPass(simulationCommonPrefix, numberOfSimulation);
- // build master sensitivity export directory
- File masterExportDirectory = new File(IsisFish.config.getDefaultExportDirectory(), simulationCommonPrefix);
- // directory must already exists !!!
- sensitivityCalculator.analyzeResult(simulationStorageForAnalyze, masterExportDirectory);
- }
- catch(SensitivityException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't call analyse result", e);
- }
- }
- }
- }
- }
- }
-
- /**
- * Parcourt le dossier de toutes les simulation commencant par le prefix donné,
- * et retourne le nombre de simulation terminées.
- *
- * @param asPrefixName simulation name (without number suffix)
- * @param numberOfSimulation total simulation number
- *
- * @return le nombre de simulation réellement terminée
- */
- protected int getNumberOfFinishedSimulation(String asPrefixName, int numberOfSimulation) {
-
- int numberOfFinishedSimulation = 0;
-
- // en sens inverse, il le fera carrement moins souvent
- for (int simulationIndex = numberOfSimulation - 1; simulationIndex >= 0 ; --simulationIndex) {
- String currentId = asPrefixName + "_" + simulationIndex;
- if (SimulationStorage.localyExists(currentId)) {
- SimulationControl currentSimulationControl = new SimulationControl(currentId);
- SimulationStorage.readControl(currentId, currentSimulationControl);
-
- // condition for simulation "end"
- if (currentSimulationControl.getProgress() > 0
- && currentSimulationControl.getProgress() >= currentSimulationControl.getProgressMax()) {
-
- // new finished simulation found
- numberOfFinishedSimulation++;
- }
- else {
- if (log.isDebugEnabled()) {
- log.debug("Miss simulation number = " + simulationIndex);
- }
-
- // no need to continue
- // if only miss one, break
- break;
- }
- }
- else {
- break;
- }
- }
-
- return numberOfFinishedSimulation;
- }
-
- /**
- * Parcourt les dossiers et instancie les storages une fois
- * qu'on est sur qu'on a toutes les simulations.
- *
- * @param asPrefixName simulation name (without number suffix)
- * @param numberOfSimulation total simulation number
- *
- * @return la liste des storages
- */
- protected List<SimulationStorage> getStorageListForSecondPass(String asPrefixName, int numberOfSimulation) {
-
- // simulation start at 0
- List<SimulationStorage> simulationStorageForAnalyze = new LinkedList<SimulationStorage>();
- // en sens inverse, il le fera carrement moins souvent
- for (int simulationIndex = 0; simulationIndex < numberOfSimulation; ++simulationIndex) {
- String currentId = asPrefixName + "_" + simulationIndex;
- SimulationStorage storage = SimulationStorage.getSimulation(currentId);
- // always add first (loop in reverse order)
- // result list is keeped sorted
- simulationStorageForAnalyze.add(storage);
- }
-
- return simulationStorageForAnalyze;
- }
-
- /**
- * Convertit une collection de string, en une chaine
- * séparée par des ",".
- *
- * @param collection collection to convert
- * @return string
- */
- protected static String collectionToString(Collection<String> collection) {
- String str = "";
-
- Iterator<String> it = collection.iterator();
- while(it.hasNext()) {
- str += it.next();
- if(it.hasNext()) {
- str += ",";
- }
- }
-
- return str;
- }
-}
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java (from rev 2497, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,788 @@
+/* *##%
+ * Copyright (C) 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.rmi.RemoteException;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.SortedSet;
+import java.util.Timer;
+import java.util.TreeSet;
+import java.util.AbstractMap.SimpleEntry;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.FileUtil;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.AnalysePlan;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob.PostAction;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
+
+/**
+ * Moniteur singleton pour pouvoir sauvegarder
+ * localement la liste des simulations démarrées et
+ * permettre de continuer le monitoring au relancemenent
+ * d'Isis.
+ *
+ * Cette classe n'implemente pas {@link SimulationServiceListener}
+ * car elle ne doit pas écouter toutes les simulations, mais
+ * seulement celle dit simple, c'est-à-dire "master plan" du plan
+ * d'analyse.
+ *
+ * @since 3.2.0.4
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class SimulationMonitor extends Thread {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static Log log = LogFactory.getLog(SimulationMonitor.class);
+
+ /** Instance. */
+ protected static SimulationMonitor instance = new SimulationMonitor();
+
+ /**
+ * Simulation information saving file.
+ *
+ * Saved in $HOME/.isis-simulations-3
+ */
+ protected File monitorFile;
+
+ /**
+ * Separator used in monitor file.
+ *
+ * Can't be ","
+ */
+ protected static final String MONITORFILESEPARATOR = "/";
+
+ /**
+ * Liste des simulations en cours,
+ * Le format est défini ainsi :
+ * id=launcher/datedelancement/onlyexport/exports/plandependant/plans
+ */
+ protected Properties properties = new Properties();
+
+ /**
+ * Map to remember when a simulation have to be checked.
+ *
+ * Sorted on date ASC.
+ */
+ protected SortedSet<SimpleEntry<Date, SimulationJob>> checkSet;
+
+ /**
+ * Check scheduler.
+ */
+ protected Timer checkScheduler;
+
+ /**
+ * Constructeur.
+ */
+ protected SimulationMonitor() {
+ // FIXME configure this path
+ String monitorSaveFile = System.getProperty("user.home")
+ + File.separator + ".isis-simulations-3";
+ monitorFile = new File(monitorSaveFile);
+
+ // init monitor check map
+ checkSet = new TreeSet<SimpleEntry<Date, SimulationJob>>(new Comparator<SimpleEntry<Date, SimulationJob>>(){
+ @Override
+ public int compare(SimpleEntry<Date, SimulationJob> o1,
+ SimpleEntry<Date, SimulationJob> o2) {
+ return o1.getKey().compareTo(o2.getKey());
+ }
+
+ });
+
+ // init timer
+ checkScheduler = new Timer();
+ }
+
+ /**
+ * Instance getter.
+ *
+ * @return instance
+ */
+ public static SimulationMonitor getInstance() {
+ return instance;
+ }
+
+ /**
+ * Reload config and read non simulation job
+ * into simulation service.
+ *
+ * @param service SimulationService
+ */
+ public void reloadConfig(final SimulationService service) {
+
+ if (monitorFile.canRead()) {
+ try {
+ properties.load(new FileInputStream(monitorFile));
+
+ // in a thead
+ // don't temporize UI loading
+ new Thread() {
+ public void run() {
+ restartSimulationProgression(service);
+ }
+ }.start();
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't reload monitor file", e);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Take all simulation in loaded file.
+ * And add it into simulation service.
+ */
+ protected void restartSimulationProgression(SimulationService service) {
+
+ for (Map.Entry<Object, Object> entry : properties.entrySet()) {
+ String simulationId = (String) entry.getKey();
+ String simulationInfo = (String) entry.getValue();
+
+ // 0 = launcher
+ // 1 = date
+ // 2 = export
+ // 3 = plan dependent
+ String[] simulationInfos = simulationInfo.split(MONITORFILESEPARATOR);
+ String simulationLauncher = simulationInfos[0];
+ String simulationDate = simulationInfos[1];
+ String simulationOnlyExport = simulationInfos[2];
+ String simulationExports = simulationInfos[3];
+ String simulationUseAnalysePlan = simulationInfos[4];
+ String simulationPlans = "";
+ if(simulationInfos.length >= 6) {
+ simulationPlans = simulationInfos[5];
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Restart monitoring of " + simulationId);
+ if (log.isDebugEnabled()) {
+ log.debug(" launcher= " + simulationLauncher + ", date = "
+ + simulationDate);
+ }
+ }
+
+ // FIXME date remove simulation that are older than a week ?
+
+ // re add simulation in
+ try {
+ // launcher
+ SimulatorLauncher launcher = (SimulatorLauncher) Class.forName(
+ simulationLauncher).newInstance();
+
+ SimulationParameter params = new SimulationParameter();
+ // UseAnalysePlan
+ params.setUseAnalysePlan("true".equalsIgnoreCase(simulationUseAnalysePlan));
+ // plans
+ String[] planList = simulationPlans.split(",");
+ for (String name : planList) {
+ if (name != null && !name.isEmpty()) {
+ try {
+ AnalysePlan plan = AnalysePlanStorage.getAnalysePlan(name).getNewAnalysePlanInstance();
+ params.getAnalysePlans().add(plan);
+ } catch (IsisFishException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find plan: " + name, eee);
+ }
+ }
+ }
+ }
+ // OnlyExport
+ params.setOnlyExport("true".equalsIgnoreCase(simulationOnlyExport));
+ // exports
+ String[] exportList = simulationExports.split(",");
+ for (String name : exportList) {
+ if (name != null && !name.isEmpty()) {
+ params.getExportNames().add(name);
+ }
+ }
+
+ // FIXME needed
+ params.setExportDirectory(IsisFish.config.getDefaultExportDirectory().toString());
+
+ service.submitForCheckOnly(simulationId, params, launcher, 0);
+ } catch (ClassNotFoundException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't found launcher for this simulation", e);
+ }
+ } catch (InstantiationException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get launcher for this simulation", e);
+ }
+ } catch (IllegalAccessException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get launcher for this simulation", e);
+ }
+ }
+ }
+ }
+
+ public synchronized void simulationStart(SimulationJob job) {
+
+ String monitorKey = job.getId();
+ SimulatorLauncher launcher = job.getLauncher();
+ SimulationParameter params = job.getItem().getParameter();
+
+ // 0 = launcher
+ String monitorValue = launcher.getClass().getName();
+ // 1 = date
+ monitorValue += MONITORFILESEPARATOR + System.currentTimeMillis();
+ // 2 = onlyexport
+ monitorValue += MONITORFILESEPARATOR + params.getOnlyExport();
+ // 3 = exports
+ monitorValue += MONITORFILESEPARATOR + collectionToString(params.getExportNames());
+ // 4 = plan dependent
+ monitorValue += MONITORFILESEPARATOR + params.getUseAnalysePlan();
+ // 5 = plan dependent
+ String planList = "";
+ for (AnalysePlan plan : params.getAnalysePlans()) {
+ planList += AnalysePlanStorage.getName(plan) + ",";
+ }
+ monitorValue += MONITORFILESEPARATOR + planList;
+
+ properties.put(monitorKey, monitorValue);
+ try {
+ properties.store(new FileOutputStream(monitorFile),
+ "Simulation added at " + new Date());
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't save monitor file", e);
+ }
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Saving simulation " + monitorKey + " as started");
+ }
+
+ // put interval in launcher ?
+ Date checkDate = new Date();
+ // do check at start
+ //long intervalInSeconds = launcher.getCheckProgressionInterval();
+ //checkDate.setTime(checkDate.getTime() + intervalInSeconds);
+
+ // add simulation to check queue
+ checkSet.add(new SimpleEntry<Date, SimulationJob>(checkDate, job));
+
+ // start thread if not already started
+ if (!this.isAlive()) {
+ this.start();
+ }
+ }
+
+ /**
+ * Mark a simulation as stopped.
+ * Remove it from save file.
+ *
+ * @param job job that control the simulation
+ */
+ public synchronized void simulationStop(SimulationJob job) {
+ String monitorKey = job.getId();
+
+ properties.remove(monitorKey);
+ try {
+ if (properties.isEmpty()) {
+ monitorFile.delete();
+ } else {
+ properties.store(new FileOutputStream(monitorFile),
+ "Simulation delete at " + new Date());
+ }
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't save monitor file", e);
+ }
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Saving simulation " + monitorKey + " as stopped");
+ }
+ }
+
+ /*
+ * @see java.util.TimerTask#run()
+ */
+ @Override
+ public void run() {
+
+ // main loop to monitor "all" running simulation
+
+ while (true) {
+
+ // quoi qu'il arrive, le thread ne doit jamais s'arreter
+ try {
+ waitAndCheckProgression();
+ }
+ catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("An exception occurs durring monitoring", e);
+ }
+ }
+ }
+ }
+
+ /**
+ * Wait one second, and check for first
+ * simulation progression, if first simulation time
+ * is reached.
+ */
+ protected void waitAndCheckProgression() {
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Monitor thread has been interrupted", e);
+ }
+ }
+
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("Simulation monitor wake up");
+ }
+
+ // take first job in map
+ if (!checkSet.isEmpty()) {
+ SimpleEntry<Date, SimulationJob> firstEntry = checkSet.first();
+ Date date = firstEntry.getKey();
+ Date now = new Date();
+
+ if (date.before(now)) {
+ // first key date in map is over...
+ // check is needed
+ SimulationJob job = firstEntry.getValue();
+ SimulatorLauncher launcher = job.getLauncher();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Check simulation progression : " + job.getId());
+ }
+
+ // retourne true if :
+ // - simulation is finished
+ // - simulation end has been asked
+ boolean jobIsFinished = checkProgression(job, launcher);
+
+ // always remove this simulation from map
+ checkSet.remove(firstEntry);
+
+ // if not finished, re-add it at end
+ if (jobIsFinished) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Job " + job.getId() + " finished");
+ }
+
+ doPostSimulationOperation(job, launcher);
+ }
+
+ // Si le job est reelement fini
+ // et que les post operation ont réussie
+ else {
+ // next check date
+ long nextJobTimeMs = date.getTime()
+ + launcher.getCheckProgressionInterval() * 1000;
+ Date nextJobDate = new Date(nextJobTimeMs);
+ checkSet.add(new SimpleEntry<Date, SimulationJob>(nextJobDate, job));
+ }
+
+ } else {
+ //checkScheduler.schedule(this, date);
+ if (log.isDebugEnabled()) {
+ log.debug("Time to check not reached, skip check, "
+ + date + " < " + now);
+ }
+ }
+ }
+ }
+
+ /**
+ * Check progression.
+ *
+ * @param job job to check progression
+ * @param launcher SimulatorLauncher that manage simulation
+ * @return <tt>true</tt> is simulation is finished, <tt>false<tt> otherwise
+ */
+ protected boolean checkProgression(SimulationJob job,
+ SimulatorLauncher launcher) {
+
+ boolean simulationEnded = false;
+
+ SimulationService service = SimulationService.getService();
+ SimulationControl control = job.getItem().getControl();
+
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("Checking simulation progression : " + control.getId());
+ log.debug(" with launcher = " + launcher);
+ }
+
+ // update
+ try {
+ launcher.updateControl(service, control);
+
+ // by default, Progress = ProgressMax = 0
+ // WARNING this condition is VERY important
+ // and set by end of
+ // fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher#localSimulateSameThread(SimulationControl, SimulationStorage)
+
+ // FIXME check SimulationStorage.exists(control.getId()) condition
+ if ((control.getProgress() > 0
+ && control.getProgress() >= control.getProgressMax() && SimulationStorage.exists(control.getId()))) {
+ simulationEnded = true;
+ }
+
+ if (control.isStopSimulationRequest()) {
+ launcher.simulationStopRequest(job); // to release one resource
+ simulationEnded = true;
+ }
+ } catch (RemoteException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Progression thread update error", e);
+ }
+ }
+
+ return simulationEnded;
+ }
+
+ /**
+ * Operation to do after simulation end.
+ *
+ * - get simulation result
+ * - do result export
+ *
+ * @param job job
+ * @param launcher {@link SimulatorLauncher} that manage simulation
+ *
+ * @return true if post operation complete and job has be removed from queue
+ */
+ protected boolean doPostSimulationOperation(SimulationJob job,
+ SimulatorLauncher launcher) {
+
+ boolean result = false;
+
+ SimulationService service = SimulationService.getService();
+ SimulationControl control = job.getItem().getControl();
+
+ // Release one available resource on launcher
+ // FIXME done by launcher himself
+ //launcher.simulationEnded();
+
+ if (log.isInfoEnabled()) {
+ log.info("Do post simulation operation for " + control.getId());
+ }
+
+ try {
+
+ // get storage
+ // meme si StopSimulationRequest
+ // force le download dans le cas de ssh
+ SimulationStorage simulation = launcher.getSimulationStorage(
+ service, control);
+
+ // on ne fait de post traitement que si
+ // la simulation n'a pas été arretée
+ if (!control.isStopSimulationRequest()) {
+ // post manage this storage
+ boolean simulationAvailble = exportResult(job, simulation);
+
+ // sensitivity calculator analyze result call
+ // can't do analyze second pass if simulation
+ // has been deleted
+ if (simulationAvailble) {
+ analyzeSensitivityResult(job, simulation);
+ }
+ }
+
+ // notify simulation ended
+ // to not check later...
+ // don't do in finally, getSimulationStorage may fail (md5 on ssh)
+ simulationStop(job);
+ service.fireStopEvent(job);
+
+ result = true;
+
+ } catch (RemoteException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get simulation results after simulation end",
+ e);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Export result, and delete simulation if "onlyExport" has
+ * been selected.
+ *
+ * @return <tt>true</tt> if simulation is still available (not delete by onlyExport)
+ */
+ protected boolean exportResult(SimulationJob job, SimulationStorage simulation) {
+
+ boolean simulationAvailble = true;
+
+ SimulationParameter param = job.getItem().getParameter();
+ SimulationControl control = job.getItem().getControl();
+ String id = control.getId();
+
+ try {
+ // copie les exports de simulation dans le repertoire
+ // souhaiter par l'utilisateur
+ if (param.getExportNames() != null
+ && param.getExportNames().size() > 0) {
+
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("Export results");
+ }
+
+ File exportDir = SimulationStorage
+ .getResultExportDirectory(simulation.getDirectory());
+ // FIXME verifier que pour les plans on a bien tous les
+ // export, c-a-d que les export son fait dans un sous rep
+ // portant le nom de la simu
+ FileUtil.copyAndRenameRecursively(exportDir, new File(param
+ .getExportDirectory()), exportDir.getName(), id);
+ } else {
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("Not Export results : unneeded");
+ }
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("Can't export simulation %s", id), eee);
+ }
+ }
+
+ try {
+ // Si l'utilisateur souhaite seulement les exports
+ // on supprimer la/les simulations.
+ if (param.getOnlyExport()) {
+ // pour les plan dependant il faut le faire apres toutes
+ // les simulations donc pas ici
+ if (job.getParentJob() == null || param.getUseAnalysePlan()
+ && param.isIndependentPlan()) {
+
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("Export \"onlyExport\" : deleting simulation");
+ }
+
+ simulation.delete(false);
+ simulationAvailble = false;
+ } else {
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("OnlyExport options true, but plan dependant : not delete simulation");
+ }
+ }
+ } else {
+ // log
+ if (log.isDebugEnabled()) {
+ log.debug("OnlyExport options not set : not delete simulation");
+ }
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("Can't delete simulation %s ", id), eee);
+ }
+ }
+
+ for (PostAction action : job.getPostActions()) {
+ try {
+ action.finished(job, simulation);
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("Can't do post action %s", action), eee);
+ }
+ }
+ }
+
+ return simulationAvailble;
+ }
+
+ /**
+ * For each finished simulation, check that all sensitivity
+ * simulation are available (in case of sensitivity simulation only).
+ *
+ * @param job job
+ * @param simulation simulation
+ */
+ protected void analyzeSensitivityResult(SimulationJob job,
+ SimulationStorage simulation) {
+
+ Properties props = simulation.getPropertiesParameter();
+
+ int numberOfSimulation = Integer.parseInt(props.getProperty(SimulationParameter.NUMBER_OF_SENSITIVITY_SIMULATION)); //getNumberOfSensitivitySimulation();
+
+ if (numberOfSimulation > 0) {
+ // this is a sensitivity simulation
+ String simulationId = job.getId();
+ String simulationCommonPrefix = simulationId.substring(0, simulationId.lastIndexOf("_"));
+ int numberFinished = getNumberOfFinishedSimulation(simulationCommonPrefix, numberOfSimulation);
+
+ // si on a toutes les simulation est qu'elles sont finie
+ // on construit la liste des simulation storage
+ // et on l'envoie au script d'analyse de sensibilite
+ if (numberFinished == numberOfSimulation) {
+
+ // FIXME buggy because of hack in getParameter()
+ // getRegion() from simulation can be locked
+ SimulationParameter params = simulation.getParameter();
+ SensitivityCalculator sensitivityCalculator = params.getSensitivityCalculator();
+ if (sensitivityCalculator != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Call analyzeResult on sensitivity script " + sensitivityCalculator.getClass().getSimpleName());
+ }
+ try {
+ // get full storage list
+ List<SimulationStorage> simulationStorageForAnalyze =
+ getStorageListForSecondPass(simulationCommonPrefix, numberOfSimulation);
+ // build master sensitivity export directory
+ File masterExportDirectory = new File(IsisFish.config.getDefaultExportDirectory(), simulationCommonPrefix);
+ // directory must already exists !!!
+ sensitivityCalculator.analyzeResult(simulationStorageForAnalyze, masterExportDirectory);
+ }
+ catch(SensitivityException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't call analyse result", e);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Parcourt le dossier de toutes les simulation commencant par le prefix donné,
+ * et retourne le nombre de simulation terminées.
+ *
+ * @param asPrefixName simulation name (without number suffix)
+ * @param numberOfSimulation total simulation number
+ *
+ * @return le nombre de simulation réellement terminée
+ */
+ protected int getNumberOfFinishedSimulation(String asPrefixName, int numberOfSimulation) {
+
+ int numberOfFinishedSimulation = 0;
+
+ // en sens inverse, il le fera carrement moins souvent
+ for (int simulationIndex = numberOfSimulation - 1; simulationIndex >= 0 ; --simulationIndex) {
+ String currentId = asPrefixName + "_" + simulationIndex;
+ if (SimulationStorage.localyExists(currentId)) {
+ SimulationControl currentSimulationControl = new SimulationControl(currentId);
+ SimulationStorage.readControl(currentId, currentSimulationControl);
+
+ // condition for simulation "end"
+ if (currentSimulationControl.getProgress() > 0
+ && currentSimulationControl.getProgress() >= currentSimulationControl.getProgressMax()) {
+
+ // new finished simulation found
+ numberOfFinishedSimulation++;
+ }
+ else {
+ if (log.isDebugEnabled()) {
+ log.debug("Miss simulation number = " + simulationIndex);
+ }
+
+ // no need to continue
+ // if only miss one, break
+ break;
+ }
+ }
+ else {
+ break;
+ }
+ }
+
+ return numberOfFinishedSimulation;
+ }
+
+ /**
+ * Parcourt les dossiers et instancie les storages une fois
+ * qu'on est sur qu'on a toutes les simulations.
+ *
+ * @param asPrefixName simulation name (without number suffix)
+ * @param numberOfSimulation total simulation number
+ *
+ * @return la liste des storages
+ */
+ protected List<SimulationStorage> getStorageListForSecondPass(String asPrefixName, int numberOfSimulation) {
+
+ // simulation start at 0
+ List<SimulationStorage> simulationStorageForAnalyze = new LinkedList<SimulationStorage>();
+ // en sens inverse, il le fera carrement moins souvent
+ for (int simulationIndex = 0; simulationIndex < numberOfSimulation; ++simulationIndex) {
+ String currentId = asPrefixName + "_" + simulationIndex;
+ SimulationStorage storage = SimulationStorage.getSimulation(currentId);
+ // always add first (loop in reverse order)
+ // result list is keeped sorted
+ simulationStorageForAnalyze.add(storage);
+ }
+
+ return simulationStorageForAnalyze;
+ }
+
+ /**
+ * Convertit une collection de string, en une chaine
+ * séparée par des ",".
+ *
+ * @param collection collection to convert
+ * @return string
+ */
+ protected static String collectionToString(Collection<String> collection) {
+ String str = "";
+
+ Iterator<String> it = collection.iterator();
+ while(it.hasNext()) {
+ str += it.next();
+ if(it.hasNext()) {
+ str += ",";
+ }
+ }
+
+ return str;
+ }
+}
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,1085 +0,0 @@
-/* *##%
- * Copyright (C) 2002-2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- *##%*/
-
-package fr.ifremer.isisfish.simulator.launcher;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-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;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.mutable.MutableInt;
-import org.apache.commons.lang.time.DurationFormatUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.util.FileUtil;
-import org.codelutin.util.ListenerSet;
-import org.codelutin.util.ObjectUtil;
-import org.codelutin.util.ZipUtil;
-
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
-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.SimulationStorage;
-import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.mexico.MexicoHelper;
-import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.simulator.AnalysePlan;
-import fr.ifremer.isisfish.simulator.AnalysePlanContext;
-import fr.ifremer.isisfish.simulator.SimulationControl;
-import fr.ifremer.isisfish.simulator.SimulationException;
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
-import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
-import fr.ifremer.isisfish.util.ClasspathTemplateLoader;
-import fr.ifremer.isisfish.util.CompileHelper;
-import fr.ifremer.isisfish.util.ConverterUtil;
-import freemarker.cache.TemplateLoader;
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
-/**
- * Cette classe est responsable de conservation de toutes les simulations faites
- * ou a faire. Pour ajouter une nouvelle simulation on appelle la methode
- * {@link #submit}.
- * <p>
- * Cette classe sert aussi de modele pour le moniteur de queue
- * <p>
- * Il existe une instance unique pour toute l'application
- * <p>
- * Lors de l'instanciation de la classe, l'ensemble des
- * {@link SimulatorLauncher} disponible est recherche dans la configuration
- * et un executor est cree pour chaque.
- * <p>
- * Si un {@link SimulatorLauncher} genere trop d'erreur (RemoteException)
- * Il est alors suspendu pour ne plus etre utilise pour les simulations.
- *
- * @author poussin
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 5 mars 2009 $
- * By : $Author: chatellier $
- */
-public class SimulationService {
-
- public static final String SIMULATION_LAUNCHER = "simulation.launcher";
- /** nombre maximal de simulation autoriser pour un plan */
- // FIXME a rendre configurable MAX_PLAN_SIMULATION
- public static final int MAX_PLAN_SIMULATION = 20000;
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static Log log = LogFactory.getLog(SimulationService.class);
-
- protected static SimulationService instance = new SimulationService();
-
- /** Freemarker configuration used to get prescripts content. */
- protected Configuration freemarkerConfiguration;
-
- /** Freemarker pre script template. */
- protected static final String SENSITIVITY_PRE_SCRIPT = "templates/prescript/factorprescript.ftl";
-
- /**
- * Retourne l'instance du {@link SimulationService} a utiliser
- * @return l'instance a utiliser
- */
- public static SimulationService getService() {
- return instance;
- }
-
- protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(
- this);
- protected ListenerSet<SimulationServiceListener> listeners = new ListenerSet<SimulationServiceListener>();
-
- // FIXME pouvoir configurer ceci en fichier de config
- // FIXME ainsi que la mise a false, lors de la simulation de la derniere
- // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
- protected boolean autoLaunch = true;
-
- /** L'executor utilise pour creer toutes les sous simulations des plans
- * independants */
- protected ExecutorService subSimulationComputationExecutor = Executors
- .newSingleThreadExecutor();
- /** Tous les types de {@link SimulatorLauncher} disponibles, et leur
- * executors associe */
- protected Map<SimulatorLauncher, SimulationExecutor> executors = new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
- /** Le nombre d'erreur pour les SimulatorLauncher */
- protected Map<SimulatorLauncher, MutableInt> launcherError = new HashMap<SimulatorLauncher, MutableInt>();
- /** La queue contenant toutes les simulations a faire */
- protected SimulationQueue queue = new SimulationQueue();
-
- /** Contient les identifiants des simulations presentes dans {@link #jobs}*/
- protected Set<String> idJobs = new HashSet<String>();
- /** La liste des jobs existant (queue + job demarre) */
- protected Set<SimulationJob> jobs = new TreeSet<SimulationJob>();
-
- /** La liste des jobs termines */
- protected Set<SimulationJob> jobDones = new TreeSet<SimulationJob>();
-
- /**
- * Cree une instance et initialise les executors ainsi que le launcherError
- */
- protected SimulationService() {
- // on cree un executor par type SimulatorLauncher
- Properties prop = IsisFish.config
- .getOptionStartsWith(SIMULATION_LAUNCHER);
-
- // sort simulation names by... names
- // this solve "local" "sub", "remote" order
- // default "local" is in first in UI.
- List<String> simulationKeys = new ArrayList<String>(prop
- .stringPropertyNames());
- Collections.sort(simulationKeys);
-
- for (String key : simulationKeys) {
- String value = prop.getProperty(key);
- try {
- SimulatorLauncher sl = (SimulatorLauncher) ObjectUtil
- .newInstance(value);
- addSimulationLauncher(sl);
- } catch (Exception eee) {
- log.warn(_("Can't instantiate %s", value), eee);
- }
- }
-
- // fait un appel au moniteur
- // pour reprendre le monitoring des simulation en cours
- // TODO check this, don't restart monitoring on non ui launch
- if (IsisFish.config.isLaunchUI()) {
- SimulationMonitor.getInstance().reloadConfig(this);
- }
- }
-
- /**
- * Permet d'ajouter un nouveau SimulatorLauncher. Cela cree automatiquement
- * un executor pour ce SimulatorLauncher. S'il y avait deja un
- * SimulatorLauncher de ce type un nouveau est ajoute.
- * @param sl le SimulatorLauncher a ajouter
- */
- public void addSimulationLauncher(SimulatorLauncher sl) {
- SimulationQueue executorQueue = new SimulationQueue(queue);
- SimulationExecutor se = new SimulationExecutor(this, sl, executorQueue);
- executors.put(sl, se);
- launcherError.put(sl, new MutableInt(0));
- }
-
- /**
- * @return les SimulatorLauncher et leurs noms
- */
- public List<SimulatorLauncher> getSimulationLaunchers() {
- List<SimulatorLauncher> result = new ArrayList<SimulatorLauncher>(
- executors.keySet());
- return result;
- }
-
- public Collection<SimulationExecutor> getSimulationExecutors() {
- return executors.values();
- }
-
- public Set<SimulationJob> getJobs() {
- return jobs;
- }
-
- public Set<SimulationJob> getJobDones() {
- return jobDones;
- }
-
- /**
- * Retourne la liste de tous les {@link SimulatorLauncher} disponible
- * @return
- */
- protected Set<SimulatorLauncher> getSimulatorLaunchers() {
- return executors.keySet();
- }
-
- public void addSimulationServiceListener(SimulationServiceListener l) {
- listeners.add(l);
- }
-
- public void removeSimulationServiceListener(SimulationServiceListener l) {
- listeners.remove(l);
- }
-
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertyListeners.addPropertyChangeListener(listener);
- }
-
- public void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- propertyListeners.addPropertyChangeListener(propertyName, listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertyListeners.removePropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- propertyListeners.removePropertyChangeListener(propertyName, listener);
- }
-
- /**
- * Ajoute le job au job en cours previent s'il n'etait pas deja present
- * les listener {@link SimulationServiceListener#simulationStart}.
- * @param job
- */
- protected void fireStartEvent(SimulationJob job) {
- // on ajoute au cas on il n'y serait pas
- if (jobs.add(job)) {
- idJobs.add(job.getItem().getControl().getId());
- for (SimulationServiceListener l : listeners) {
- l.simulationStart(this, job);
- }
- }
- }
-
- /**
- * Supprime le job de la liste des jobs en cours et l'ajoute le job si
- * besoin a la liste des jobs faits (s'il y a une erreur ou qu'il ne sagit
- * pas d'une simulation lancer par un plan d'analyse).
- * Les listener sont prevenu par la methode
- * {@link SimulationServiceListener#simulationStop}.
- * @param job
- */
- protected void fireStopEvent(SimulationJob job) {
- jobs.remove(job);
- idJobs.remove(job.getItem().getControl().getId());
-
- // on ajout au jobDones que les simulations avec erreur ou les
- // simulation reellement demande par l'utilisateur (pas de simulation
- // de plan
- jobDones.add(job);
- for (SimulationServiceListener l : listeners) {
- l.simulationStop(this, job);
- }
- }
-
- /**
- * Nettoie la liste des jobs faits
- */
- public void clearJobDone() {
- jobDones.clear();
- for (SimulationServiceListener l : listeners) {
- l.clearJobDone(this);
- }
- }
-
- /**
- * @return Returns the autoLaunch.
- */
- public boolean isAutoLaunch() {
- return this.autoLaunch;
- }
-
- /**
- * @param autoLaunch The autoLaunch to set.
- */
- public void setAutoLaunch(boolean autoLaunch) {
- synchronized (this) {
- boolean oldValue = this.autoLaunch;
- this.autoLaunch = autoLaunch;
- if (this.autoLaunch) {
- this.notifyAll();
- }
- propertyListeners.firePropertyChange("autoLaunch", oldValue,
- autoLaunch);
- }
- }
-
- /**
- * Permet de mettre en attente les threads de simulation si l'utilisateur
- * a suspendu la queue
- */
- protected void waitAutoLaunch() {
- synchronized (this) {
- while (!isAutoLaunch()) {
- try {
- log.info("autoLaunch is false waiting queue start");
- this.wait();
- } catch (InterruptedException eee) {
- log.warn("Error during wait autoLaunch flag", eee);
- }
- }
- }
- }
-
- /**
- * Permet d'ajouter une nouvelle simulation a la queue. Si la simulation est
- * simple ou avec un plan d'experience dependant, un nouveau job est cree
- * et directement ajout a la queue de jobs. S'il la simulation est un plan
- * ou les simulations sont independantes, toutes les simulations sont
- * genere et toute ajoute a la queue de simulation. Mais dans ce cas seul
- * la simulation de depart est ajoute au jobs en cours, les simulations
- * generees seront ajoutees lors de leur reel execution
- *
- * @param id l'identifiant de la simulation
- * @param param les parametres de la simulation
- * @param launcher le launcher a utiliser pour lancer la simulation
- * @param priority la priorite de la simulation
- */
- public void submit(String id, SimulationParameter param,
- SimulatorLauncher launcher, int priority) {
- // on l'ajoute tout de suite a la liste des simulations demandee
- SimulationControl control = new SimulationControl(id);
- SimulationItem item = new SimulationItem(control, param);
- SimulationJob job = new SimulationJob(this, item, priority);
- job.setLauncher(launcher);
- fireStartEvent(job);
-
- // on construit le zip de la simulation
- File zip = prepareSimulationZipFile(control, param, null, true);
- item.setSimulationZip(zip);
-
- if (param.getUseAnalysePlan() && param.isIndependentPlan()) {
- // c un plan d'analyse independant, on construit toute les sous simu
- Runnable task = new PrepareSimulationJob(this, job);
- subSimulationComputationExecutor.execute(task);
- } else {
- // l'item est fini d'etre initialise, on peut l'ajouter a la queue
- // sauf si c'etait un plan independant ou se seront les sous simu
- // qui seront dans la queue
- submit(job);
- }
-
- }
-
- /**
- * Permet d'ajouter une simulation avec des factors a prendre en compte.
- *
- * @param id l'identifiant de la simulation
- * @param param les parametres de la simulation
- * @param launcher le launcher a utiliser pour lancer la simulation
- * @param priority la priorite de la simulation
- * @param sensitivitycalculator l'implementation du calculateur de sensibilite
- * @param designPlan le design plan qui contient les facteurs
- */
- public void submit(String id, SimulationParameter param,
- SimulatorLauncher launcher, int priority,
- SensitivityCalculator sensitivitycalculator, DesignPlan designPlan) {
-
- try {
- // build master sensitivity export directory
- File masterExportDirectory = new File(IsisFish.config.getDefaultExportDirectory(), id);
- if (!masterExportDirectory.isDirectory()) {
- masterExportDirectory.mkdirs();
- }
-
- // export designplan as XML
- // get as XML (before compute)
- // compute do bad modification on design plan
- String xmlDesignPlan = MexicoHelper.getDesignPlanAsXML(designPlan);
-
- SensitivityScenarios sensitivityScenarios = sensitivitycalculator
- .compute(designPlan, masterExportDirectory);
-
- // ajout des parametres de simulation
- param.setSensitivityCalculator(sensitivitycalculator);
- param.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size());
-
- // on l'ajoute tout de suite a la liste des simulations demandee
- // init with default "id" must been changed for designPlan
- // simulation
- SimulationControl controlJustForZip = new SimulationControl(id);
-
- // on construit le zip de la simulation
- // in zip, there will be param "without" prescript
- File zip = prepareSimulationZipFile(controlJustForZip, param, xmlDesignPlan, true);
-
- // for each simulation, we neeed to launch a specific simulation
- // new simulation ids will be id + "_" + x
- // where x is a int starting at 0
- int simulationIndex = 0;
- for (Scenario scenario : sensitivityScenarios.getScenarios()) {
-
- // modify modification parameter
- // subParam only convenient for add pre script
- // for launcher
- SimulationParameter subParam = param.copy();
- String preScriptContent = generatePreScript(scenario);
- subParam.setUsePreScript(true);
- subParam.setPreScript(preScriptContent);
-
- // build new simulation id
- String subsimulationId = id + "_" + simulationIndex;
- SimulationControl realSimulationControl = new SimulationControl(
- subsimulationId);
-
- // new item, with zip
- SimulationItem item = new SimulationItem(realSimulationControl,
- subParam);
- item.setSimulationZip(zip);
-
- SimulationJob job = new SimulationJob(this, item, priority);
- job.setLauncher(launcher);
- fireStartEvent(job);
-
- if (subParam.getUseAnalysePlan()
- && subParam.isIndependentPlan()) {
- // c un plan d'analyse independant, on construit toute les sous simu
- Runnable task = new PrepareSimulationJob(this, job);
- subSimulationComputationExecutor.execute(task);
- } else {
- // l'item est fini d'etre initialise, on peut l'ajouter a la queue
- // sauf si c'etait un plan independant ou se seront les sous simu
- // qui seront dans la queue
- submit(job);
- }
-
- simulationIndex++;
- }
-
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get scenarios from calculator", e);
- }
- }
- }
-
- /**
- * Get freemarker configuration.
- */
- protected Configuration getFreemarkerConfiguration() {
- Configuration configuration = new Configuration();
-
- // needed to overwrite "Defaults to default system encoding."
- // fix encoding issue on some systems
- configuration.setDefaultEncoding("utf-8");
-
- // specific template loader to get template from jars (classpath)
- TemplateLoader templateLoader = new ClasspathTemplateLoader();
- configuration.setTemplateLoader(templateLoader);
-
- configuration.setObjectWrapper(new BeansWrapper());
-
- return configuration;
- }
-
- /**
- * Generate prescript to set factor values before simulation start.
- *
- * @param scenario
- * @return simulation pre script with correct values
- * @throws IOException if pre script can't be made
- * @throws TemplateException if pre script can't be made
- */
- protected String generatePreScript(Scenario scenario) throws IOException,
- TemplateException {
-
- // init one at first call
- if (freemarkerConfiguration == null) {
- freemarkerConfiguration = getFreemarkerConfiguration();
- }
-
- Writer out = new StringWriter();
- Template template = freemarkerConfiguration
- .getTemplate(SENSITIVITY_PRE_SCRIPT);
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("scenario", scenario);
- root.put("beanUtils", ConverterUtil.getConverter(null));
-
- template.process(root, out);
- out.flush();
- String scriptContent = out.toString();
-
- if (log.isTraceEnabled()) {
- log.trace("Simulation prescript content = " + scriptContent);
- }
-
- return scriptContent;
- }
-
- /**
- * Resoumet une simulation qui a deja été démarrée, mais
- * on ne faisant que du control de monitoring.
- *
- * @param id
- * @param param
- * @param launcher
- * @param priority
- */
- public void submitForCheckOnly(String id, SimulationParameter param,
- SimulatorLauncher launcher, int priority) {
- // on l'ajoute tout de suite a la liste des simulations demandee
- SimulationControl control = new SimulationControl(id);
- SimulationItem item = new SimulationItem(control, param);
- SimulationJob job = new SimulationJob(this, item, priority);
- job.setLauncher(launcher);
- fireStartEvent(job);
-
- job.setOnlyCheckControl(true);
-
- //if (param.getUseAnalysePlan() && param.isIndependentPlan()) {
- // // c un plan d'analyse independant, on construit toute les sous simu
- // Runnable task = new PrepareSimulationJob(this, job);
- // subSimulationComputationExecutor.execute(task);
- //} else {
- // l'item est fini d'etre initialise, on peut l'ajouter a la queue
- // sauf si c'etait un plan independant ou se seront les sous simu
- // qui seront dans la queue
- submit(job);
- //}
-
- }
-
- protected void submit(SimulationJob job) {
- SimulatorLauncher launcher = job.getLauncher();
- // on ajoute a la queue qui utilise le launcher defini dans le job
- if (launcher != null) {
- for (SimulatorLauncher l : executors.keySet()) {
- if (launcher == l) {
- log.info(_("Add to %s queue", l));
- SimulationExecutor executor = executors.get(l);
- executor.execute(job);
- return;
- }
- }
- }
- // dernier recours on ajoute a la queue sans launcher
- log.info(_("Add to default queue"));
- queue.add(job);
- }
-
- /**
- * Permet de resoumettre un job qui a ete pris par un thread mais qu'il
- * ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou
- * que le launcher de l'executor ne fonctionne plus (il se met en pause
- * tout seul)
- *
- * @param job l'item a resoumettre
- */
- protected void resubmit(SimulationJob job) {
- submit(job);
- }
-
- /**
- * Permet de soumettre a la queue un job provenant d'un plan.
- * Ce plan ne doit pas apparaitre dans la console de queue.
- *
- * @param job
- */
- protected void submitSubJob(SimulationJob job) {
- submit(job);
- }
-
- /**
- * Restart a job.
- *
- * This method fire "start" event.
- *
- * @param job job to retstart
- */
- public void restart(SimulationJob job) {
- job.getItem().getControl().reset();
- fireStartEvent(job);
- submit(job);
- }
-
- /**
- * Supprime un job de la queue (annulation d'une simulation). Appele
- * depuis {@link SimulationJob#stop}
- *
- * @param job le job a annuler
- * @return vrai si la simulation a pu etre annulee avant sont lancement
- * (encore presente dans la queue), faux si la simulation a deja ete
- * prise par un thread de simulation ou quelle est terminee
- */
- protected boolean cancel(SimulationJob job) {
- boolean result = queue.remove(job);
- return result;
- }
-
- public boolean exists(String id) {
- boolean result = idJobs.contains(id);
- return result;
- }
-
- /**
- * Report une erreur pour un launcher, on resoumet le job en supprimant
- * le launcher utilise
- *
- * @param launcher le launcher posant probleme
- * @param job le job qui n'a pas reussi a se faire
- */
- protected void reportError(SimulatorLauncher launcher, SimulationJob job) {
- MutableInt i = launcherError.get(launcher);
- 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)",
- launcher, i.intValue()));
- SimulationExecutor e = executors.get(launcher);
- e.pause();
- }
- // il faut bien penser a supprimer le launcher pour qu'un autre executor
- // puisse y mettre le sien.
- // FIXME: est ce le bon choix si l'utilisateur avait force un launcher particulier, ne faudrait t'il pas prevenir l'utilisateur ?
- // FIXME: disabled since caparmor is not our friend. Retry on caparmor in the limit of 50 errors
- //job.setLauncher(null);
- resubmit(job);
- }
-
- /**
- * Permet de genere les sous simulations d'un plan d'analyse. 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 AnalysePlanContext planContext;
- protected SimulationJob job;
- protected SimulationJob nextJob;
- protected boolean doNext = true;
- protected String id;
- protected SimulationControl control;
- protected SimulationParameter param;
- protected int done = 0;
-
- 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();
- this.planContext = new AnalysePlanContext(control.getId(), param);
-
- try {
- // appel de init sur chaque plan
- for (AnalysePlan plan : param.getAnalysePlans()) {
- plan.init(planContext);
- }
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.preplan.script"), eee);
- }
- }
-
- /**
- * genere toutes les sous simulations et les places dans la queue
- */
- public void run() {
- while (hasNext()) {
- try {
- SimulationJob subJob = next();
- log.info("Simulation generee: " + subJob.getId());
- simulationService.submitSubJob(subJob);
- } catch (Exception eee) {
- log.error(_("Can't add simulation: ", 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 refet 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.setAnalysePlanNumber(planNumber);
-
- File tmpDirectory = FileUtil.createTempDirectory(
- "isisfish-simulation-", "-preparation");
- SimulationStorage sim = SimulationStorage
- .importAndRenameZip(tmpDirectory, job
- .getItem().getSimulationZip(),
- simId);
- sim.getParameter().setAnalysePlanNumber(planNumber);
-
- // appel de tous les plans pour modifier la simulation
- for (AnalysePlan plan : param.getAnalysePlans()) {
- 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());
- nextJob.addPostAction(this); // pour l'appel des after des plans
- }
- // 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 = 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
- for (AnalysePlan plan : sim.getParameter().getAnalysePlans()) {
- 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> analyseplan
- * <p>
- * Le tout est zippé et le zip est retourné, il peut-être directement
- * importé dans le {@link SimulationStorage} (en le renommant comme
- * il faut {@link SimulationStorage#importAndRenameZip(File, String)}.
- * <p>
- * Ce zip est automatiquement supprimé à la fin de l'application.
- *
- * @param control le controleur
- * @param param les parametre de la simulation
- * @param xmlDesignPlan contenu xml des design plan
- * @param compile si vrai la version compile des fichiers Java est aussi
- * mise dans le fichier zip. Cela peut servir pour les simulations locales
- * pour ne pas recompiler pour chaque simulation avec plan d'analyse
- * @return un zip de simulation pour une simulation pret a être faite
- * @throws SimulationException pour tout problème rencontré (IO,Topia...)
- */
- protected File prepareSimulationZipFile(SimulationControl control,
- SimulationParameter param, String xmlDesignPlan, boolean compile)
- throws SimulationException {
- try {
- File tmpDirectory = FileUtil.createTempDirectory(
- "isisfish-simulation-", "-preparation");
- //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
- File regionXML = new File(tmpDirectory,
- SimulationStorage.DATA_BACKUP_FILENAME);
-
- // sauvegarde des parametres
- Properties prop = param.toProperties();
- //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
- File f = new File(tmpDirectory,
- SimulationStorage.PARAMETERS_FILENAME);
- FileOutputStream out = new FileOutputStream(f);
- //FileOutputStream out = new FileOutputStream(new File(tmpDirectory, IsisConfig.SIMULATION_PARAMETERS));
- prop.store(out, "Parameters");
- out.close();
-
- // backup pour toutes les simulations, pour eviter que l'utilisateur
- // ne puisse le modifier en meme temps
- control.setText(_("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"));
-
- // copie de toutes regles a utiliser
- List<Rule> rules = param.getRules();
- for (Rule rule : rules) {
- String name = RuleStorage.getName(rule);
- FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name
- + ".java"),
- new File(tmpDirectory, RuleStorage.RULE_PATH
- + File.separator + name + ".java"));
- }
- // copie des regles reclamées par les plans d'analyse
- for (String name : param.getExtraRules()) {
- FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name
- + ".java"),
- new File(tmpDirectory, RuleStorage.RULE_PATH
- + File.separator + name + ".java"));
- }
-
- // copie de toutes regles a utiliser
- List<AnalysePlan> plans = param.getAnalysePlans();
- for (AnalysePlan plan : plans) {
- String name = AnalysePlanStorage.getName(plan);
- FileUtil.copy(new File(AnalysePlanStorage
- .getAnalysePlanDirectory(), name + ".java"), new File(
- tmpDirectory, AnalysePlanStorage.ANALYSE_PLAN_PATH
- + File.separator + name + ".java"));
- }
-
- // copie de tous les exports a utiliser
- for (String name : param.getExportNames()) {
- name = name.endsWith(".java") ? name : name + ".java";
- FileUtil.copy(
- new File(ExportStorage.getExportDirectory(), name),
- new File(tmpDirectory, ExportStorage.EXPORT_PATH
- + File.separator + name));
- }
-
- // copie de tous les scripts a utiliser
- FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(),
- tmpDirectory, ".*\\.java$");
-
- // copie de tous les simulateurs a utiliser
- FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(),
- param.getSimulatorName()), new File(tmpDirectory,
- SimulatorStorage.SIMULATOR_PATH + File.separator
- + param.getSimulatorName()));
-
- // convert all file to UTF-8
- convertAllFile(control, tmpDirectory);
-
- if (compile) {
- compileAllFile(control, tmpDirectory);
- }
-
- // Sauvegarde du design plan en XML
- if (!StringUtils.isEmpty(xmlDesignPlan)) {
- File simulationDesignPlanFile = SimulationStorage.getMexicoDesignPlan(tmpDirectory);
- FileUtil.writeString(simulationDesignPlanFile, xmlDesignPlan, "utf-8");
- }
-
- FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(),
- param.getSimulatorName()), new File(tmpDirectory,
- SimulatorStorage.SIMULATOR_PATH + File.separator
- + param.getSimulatorName()));
-
- // creation du zip
- File result = new File(tmpDirectory.getPath() + ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, tmpDirectory, null);
-
- // poussin 20071015: remove temp directory
- if (!FileUtil.deleteRecursively(tmpDirectory)) {
- log.warn(_("isisfish.error.remove.directory", tmpDirectory));
- }
-
- return result;
- } catch (IOException eee) {
- throw new SimulationException(
- _("isisfish.error.prepare.information.simulation"), eee);
- } catch (TopiaException eee) {
- throw new SimulationException(
- _("isisfish.error.prepare.information.simulation"), eee);
- }
-
- }
-
- /**
- * Convertit tous les fichiers du répertoire directory en UTF-8,
- * pour eviter les erreurs d'encodage du la compilation
- * sur un autre systeme ne supportant pas l'encodage courant.
- *
- * @param control le controleur
- * @param directory le répertoire a convertir
- */
- protected void convertAllFile(SimulationControl control, File directory) {
-
- control.setText("Converting file to unicode");
-
- List<File> fileToConvert = new ArrayList<File>();
-
- List<File> tmp = FileUtil.find(new File(directory,
- ExportStorage.EXPORT_PATH), ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH),
- ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory,
- AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(
- new File(directory, SimulatorStorage.SIMULATOR_PATH),
- ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- //
- // Convertion
- //
- CompileHelper.convertToUnicode(fileToConvert);
-
- }
-
- /**
- * Compile les fichiers présent dans le répertoire passé en
- * parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
- * et scripts. Seuls les fichiers des 3 premiers répertoires sont compilés
- * les fichiers du dernier sont compilé par les dépendances qu'on les autres
- * <p>
- * Il permet donc de compiler facilement tous les fichiers pour une
- * simulation
- *
- * @param control le controleur
- * @param directory le répertoire où compiler
- */
- protected void compileAllFile(SimulationControl control, File directory) {
-
- control.setText("Scripts and rules Compilation");
- long currentTime = System.nanoTime();
-
- //
- // Recherche des fichiers a compiler
- // On ne prend pas les scripts, car ils sont tous copiés mais pas
- // forcément util. Lors de la compilation des autres fichiers, les
- // script servant réellement seront automatiquement compilé
-
- List<File> fileToCompile = new ArrayList<File>();
-
- List<File> tmp = FileUtil.find(new File(directory,
- ExportStorage.EXPORT_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH),
- ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory,
- AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(
- new File(directory, SimulatorStorage.SIMULATOR_PATH),
- ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- //
- // Compilation
- //
-
- CompileHelper.compile(directory, fileToCompile, directory, null);
- long time = System.nanoTime() - currentTime;
- control.setText(_("isisfish.message.compilation.time",
- DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
-
- }
-
-}
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java (from rev 2490, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,1087 @@
+/* *##%
+ * Copyright (C) 2002-2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ *##%*/
+
+package fr.ifremer.isisfish.simulator.launcher;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collection;
+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;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.mutable.MutableInt;
+import org.apache.commons.lang.time.DurationFormatUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.topia.TopiaException;
+import org.codelutin.util.FileUtil;
+import org.codelutin.util.ListenerSet;
+import org.codelutin.util.ObjectUtil;
+import org.codelutin.util.ZipUtil;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+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.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.mexico.MexicoHelper;
+import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.AnalysePlan;
+import fr.ifremer.isisfish.simulator.AnalysePlanContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationException;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
+import fr.ifremer.isisfish.util.ClasspathTemplateLoader;
+import fr.ifremer.isisfish.util.CompileHelper;
+import fr.ifremer.isisfish.util.ConverterUtil;
+import freemarker.cache.TemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+
+/**
+ * Cette classe est responsable de conservation de toutes les simulations faites
+ * ou a faire. Pour ajouter une nouvelle simulation on appelle la methode
+ * {@link #submit}.
+ * <p>
+ * Cette classe sert aussi de modele pour le moniteur de queue
+ * <p>
+ * Il existe une instance unique pour toute l'application
+ * <p>
+ * Lors de l'instanciation de la classe, l'ensemble des
+ * {@link SimulatorLauncher} disponible est recherche dans la configuration
+ * et un executor est cree pour chaque.
+ * <p>
+ * Si un {@link SimulatorLauncher} genere trop d'erreur (RemoteException)
+ * Il est alors suspendu pour ne plus etre utilise pour les simulations.
+ *
+ * @author poussin
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 5 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public class SimulationService {
+
+ public static final String SIMULATION_LAUNCHER = "simulation.launcher";
+ /** nombre maximal de simulation autoriser pour un plan */
+ // FIXME a rendre configurable MAX_PLAN_SIMULATION
+ public static final int MAX_PLAN_SIMULATION = 20000;
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static Log log = LogFactory.getLog(SimulationService.class);
+
+ protected static SimulationService instance = new SimulationService();
+
+ /** Freemarker configuration used to get prescripts content. */
+ protected Configuration freemarkerConfiguration;
+
+ /** Freemarker pre script template. */
+ protected static final String SENSITIVITY_PRE_SCRIPT = "templates/prescript/factorprescript.ftl";
+
+ /**
+ * Retourne l'instance du {@link SimulationService} a utiliser
+ * @return l'instance a utiliser
+ */
+ public static SimulationService getService() {
+ return instance;
+ }
+
+ protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(
+ this);
+ protected ListenerSet<SimulationServiceListener> listeners = new ListenerSet<SimulationServiceListener>();
+
+ // FIXME pouvoir configurer ceci en fichier de config
+ // FIXME ainsi que la mise a false, lors de la simulation de la derniere
+ // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
+ protected boolean autoLaunch = true;
+
+ /** L'executor utilise pour creer toutes les sous simulations des plans
+ * independants */
+ protected ExecutorService subSimulationComputationExecutor = Executors
+ .newSingleThreadExecutor();
+ /** Tous les types de {@link SimulatorLauncher} disponibles, et leur
+ * executors associe */
+ protected Map<SimulatorLauncher, SimulationExecutor> executors = new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
+ /** Le nombre d'erreur pour les SimulatorLauncher */
+ protected Map<SimulatorLauncher, MutableInt> launcherError = new HashMap<SimulatorLauncher, MutableInt>();
+ /** La queue contenant toutes les simulations a faire */
+ protected SimulationQueue queue = new SimulationQueue();
+
+ /** Contient les identifiants des simulations presentes dans {@link #jobs}*/
+ protected Set<String> idJobs = new HashSet<String>();
+ /** La liste des jobs existant (queue + job demarre) */
+ protected Set<SimulationJob> jobs = new TreeSet<SimulationJob>();
+
+ /** La liste des jobs termines */
+ protected Set<SimulationJob> jobDones = new TreeSet<SimulationJob>();
+
+ /**
+ * Cree une instance et initialise les executors ainsi que le launcherError
+ */
+ protected SimulationService() {
+ // on cree un executor par type SimulatorLauncher
+ Properties prop = IsisFish.config
+ .getOptionStartsWith(SIMULATION_LAUNCHER);
+
+ // sort simulation names by... names
+ // this solve "local" "sub", "remote" order
+ // default "local" is in first in UI.
+ List<String> simulationKeys = new ArrayList<String>(prop
+ .stringPropertyNames());
+ Collections.sort(simulationKeys);
+
+ for (String key : simulationKeys) {
+ String value = prop.getProperty(key);
+ try {
+ SimulatorLauncher sl = (SimulatorLauncher) ObjectUtil
+ .newInstance(value);
+ addSimulationLauncher(sl);
+ } catch (Exception eee) {
+ log.warn(_("Can't instantiate %s", value), eee);
+ }
+ }
+
+ // fait un appel au moniteur
+ // pour reprendre le monitoring des simulation en cours
+ // TODO check this, don't restart monitoring on non ui launch
+ if (IsisFish.config.isLaunchUI()) {
+ SimulationMonitor.getInstance().reloadConfig(this);
+ }
+ }
+
+ /**
+ * Permet d'ajouter un nouveau SimulatorLauncher. Cela cree automatiquement
+ * un executor pour ce SimulatorLauncher. S'il y avait deja un
+ * SimulatorLauncher de ce type un nouveau est ajoute.
+ * @param sl le SimulatorLauncher a ajouter
+ */
+ public void addSimulationLauncher(SimulatorLauncher sl) {
+ SimulationQueue executorQueue = new SimulationQueue(queue);
+ SimulationExecutor se = new SimulationExecutor(this, sl, executorQueue);
+ executors.put(sl, se);
+ launcherError.put(sl, new MutableInt(0));
+ }
+
+ /**
+ * @return les SimulatorLauncher et leurs noms
+ */
+ public List<SimulatorLauncher> getSimulationLaunchers() {
+ List<SimulatorLauncher> result = new ArrayList<SimulatorLauncher>(
+ executors.keySet());
+ return result;
+ }
+
+ public Collection<SimulationExecutor> getSimulationExecutors() {
+ return executors.values();
+ }
+
+ public Set<SimulationJob> getJobs() {
+ return jobs;
+ }
+
+ public Set<SimulationJob> getJobDones() {
+ return jobDones;
+ }
+
+ /**
+ * Retourne la liste de tous les {@link SimulatorLauncher} disponible
+ * @return
+ */
+ protected Set<SimulatorLauncher> getSimulatorLaunchers() {
+ return executors.keySet();
+ }
+
+ public void addSimulationServiceListener(SimulationServiceListener l) {
+ listeners.add(l);
+ }
+
+ public void removeSimulationServiceListener(SimulationServiceListener l) {
+ listeners.remove(l);
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName,
+ PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName,
+ PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(propertyName, listener);
+ }
+
+ /**
+ * Ajoute le job au job en cours previent s'il n'etait pas deja present
+ * les listener {@link SimulationServiceListener#simulationStart}.
+ * @param job
+ */
+ protected void fireStartEvent(SimulationJob job) {
+ // on ajoute au cas on il n'y serait pas
+ if (jobs.add(job)) {
+ idJobs.add(job.getItem().getControl().getId());
+ for (SimulationServiceListener l : listeners) {
+ l.simulationStart(this, job);
+ }
+ }
+ }
+
+ /**
+ * Supprime le job de la liste des jobs en cours et l'ajoute le job si
+ * besoin a la liste des jobs faits (s'il y a une erreur ou qu'il ne sagit
+ * pas d'une simulation lancer par un plan d'analyse).
+ * Les listener sont prevenu par la methode
+ * {@link SimulationServiceListener#simulationStop}.
+ * @param job
+ */
+ protected void fireStopEvent(SimulationJob job) {
+ jobs.remove(job);
+ idJobs.remove(job.getItem().getControl().getId());
+
+ // on ajout au jobDones que les simulations avec erreur ou les
+ // simulation reellement demande par l'utilisateur (pas de simulation
+ // de plan
+ jobDones.add(job);
+ for (SimulationServiceListener l : listeners) {
+ l.simulationStop(this, job);
+ }
+ }
+
+ /**
+ * Nettoie la liste des jobs faits
+ */
+ public void clearJobDone() {
+ jobDones.clear();
+ for (SimulationServiceListener l : listeners) {
+ l.clearJobDone(this);
+ }
+ }
+
+ /**
+ * @return Returns the autoLaunch.
+ */
+ public boolean isAutoLaunch() {
+ return this.autoLaunch;
+ }
+
+ /**
+ * @param autoLaunch The autoLaunch to set.
+ */
+ public void setAutoLaunch(boolean autoLaunch) {
+ synchronized (this) {
+ boolean oldValue = this.autoLaunch;
+ this.autoLaunch = autoLaunch;
+ if (this.autoLaunch) {
+ this.notifyAll();
+ }
+ propertyListeners.firePropertyChange("autoLaunch", oldValue,
+ autoLaunch);
+ }
+ }
+
+ /**
+ * Permet de mettre en attente les threads de simulation si l'utilisateur
+ * a suspendu la queue
+ */
+ protected void waitAutoLaunch() {
+ synchronized (this) {
+ while (!isAutoLaunch()) {
+ try {
+ log.info("autoLaunch is false waiting queue start");
+ this.wait();
+ } catch (InterruptedException eee) {
+ log.warn("Error during wait autoLaunch flag", eee);
+ }
+ }
+ }
+ }
+
+ /**
+ * Permet d'ajouter une nouvelle simulation a la queue. Si la simulation est
+ * simple ou avec un plan d'experience dependant, un nouveau job est cree
+ * et directement ajout a la queue de jobs. S'il la simulation est un plan
+ * ou les simulations sont independantes, toutes les simulations sont
+ * genere et toute ajoute a la queue de simulation. Mais dans ce cas seul
+ * la simulation de depart est ajoute au jobs en cours, les simulations
+ * generees seront ajoutees lors de leur reel execution
+ *
+ * @param id l'identifiant de la simulation
+ * @param param les parametres de la simulation
+ * @param launcher le launcher a utiliser pour lancer la simulation
+ * @param priority la priorite de la simulation
+ */
+ public void submit(String id, SimulationParameter param,
+ SimulatorLauncher launcher, int priority) {
+ // on l'ajoute tout de suite a la liste des simulations demandee
+ SimulationControl control = new SimulationControl(id);
+ SimulationItem item = new SimulationItem(control, param);
+ SimulationJob job = new SimulationJob(this, item, priority);
+ job.setLauncher(launcher);
+ fireStartEvent(job);
+
+ // on construit le zip de la simulation
+ File zip = prepareSimulationZipFile(control, param, null, true);
+ item.setSimulationZip(zip);
+
+ if (param.getUseAnalysePlan() && param.isIndependentPlan()) {
+ // c un plan d'analyse independant, on construit toute les sous simu
+ Runnable task = new PrepareSimulationJob(this, job);
+ subSimulationComputationExecutor.execute(task);
+ } else {
+ // l'item est fini d'etre initialise, on peut l'ajouter a la queue
+ // sauf si c'etait un plan independant ou se seront les sous simu
+ // qui seront dans la queue
+ submit(job);
+ }
+
+ }
+
+ /**
+ * Permet d'ajouter une simulation avec des factors a prendre en compte.
+ *
+ * @param id l'identifiant de la simulation
+ * @param param les parametres de la simulation
+ * @param launcher le launcher a utiliser pour lancer la simulation
+ * @param priority la priorite de la simulation
+ * @param sensitivitycalculator l'implementation du calculateur de sensibilite
+ * @param designPlan le design plan qui contient les facteurs
+ */
+ public void submit(String id, SimulationParameter param,
+ SimulatorLauncher launcher, int priority,
+ SensitivityCalculator sensitivitycalculator, DesignPlan designPlan) {
+
+ try {
+ // build master sensitivity export directory
+ File masterExportDirectory = new File(IsisFish.config.getDefaultExportDirectory(), id);
+ if (!masterExportDirectory.isDirectory()) {
+ masterExportDirectory.mkdirs();
+ }
+
+ // export designplan as XML
+ // get as XML (before compute)
+ // compute do bad modification on design plan
+ String xmlDesignPlan = MexicoHelper.getDesignPlanAsXML(designPlan);
+
+ SensitivityScenarios sensitivityScenarios = sensitivitycalculator
+ .compute(designPlan, masterExportDirectory);
+
+ // ajout des parametres de simulation
+ param.setSensitivityCalculator(sensitivitycalculator);
+ param.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size());
+
+ // on l'ajoute tout de suite a la liste des simulations demandee
+ // init with default "id" must been changed for designPlan
+ // simulation
+ SimulationControl controlJustForZip = new SimulationControl(id);
+
+ // on construit le zip de la simulation
+ // in zip, there will be param "without" prescript
+ File zip = prepareSimulationZipFile(controlJustForZip, param, xmlDesignPlan, true);
+
+ // for each simulation, we neeed to launch a specific simulation
+ // new simulation ids will be id + "_" + x
+ // where x is a int starting at 0
+ int simulationIndex = 0;
+ for (Scenario scenario : sensitivityScenarios.getScenarios()) {
+
+ // modify modification parameter
+ // subParam only convenient for add pre script
+ // for launcher
+ SimulationParameter subParam = param.copy();
+ String preScriptContent = generatePreScript(scenario);
+ subParam.setUsePreScript(true);
+ subParam.setPreScript(preScriptContent);
+
+ // build new simulation id
+ String subsimulationId = id + "_" + simulationIndex;
+ SimulationControl realSimulationControl = new SimulationControl(
+ subsimulationId);
+
+ // new item, with zip
+ SimulationItem item = new SimulationItem(realSimulationControl,
+ subParam);
+ item.setSimulationZip(zip);
+
+ SimulationJob job = new SimulationJob(this, item, priority);
+ job.setLauncher(launcher);
+ fireStartEvent(job);
+
+ if (subParam.getUseAnalysePlan()
+ && subParam.isIndependentPlan()) {
+ // c un plan d'analyse independant, on construit toute les sous simu
+ Runnable task = new PrepareSimulationJob(this, job);
+ subSimulationComputationExecutor.execute(task);
+ } else {
+ // l'item est fini d'etre initialise, on peut l'ajouter a la queue
+ // sauf si c'etait un plan independant ou se seront les sous simu
+ // qui seront dans la queue
+ submit(job);
+ }
+
+ simulationIndex++;
+ }
+
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get scenarios from calculator", e);
+ }
+ }
+ }
+
+ /**
+ * Get freemarker configuration.
+ */
+ protected Configuration getFreemarkerConfiguration() {
+ Configuration configuration = new Configuration();
+
+ // needed to overwrite "Defaults to default system encoding."
+ // fix encoding issue on some systems
+ configuration.setDefaultEncoding("utf-8");
+
+ // specific template loader to get template from jars (classpath)
+ TemplateLoader templateLoader = new ClasspathTemplateLoader();
+ configuration.setTemplateLoader(templateLoader);
+
+ configuration.setObjectWrapper(new BeansWrapper());
+
+ return configuration;
+ }
+
+ /**
+ * Generate prescript to set factor values before simulation start.
+ *
+ * @param scenario
+ * @return simulation pre script with correct values
+ * @throws IOException if pre script can't be made
+ * @throws TemplateException if pre script can't be made
+ */
+ protected String generatePreScript(Scenario scenario) throws IOException,
+ TemplateException {
+
+ // init one at first call
+ if (freemarkerConfiguration == null) {
+ freemarkerConfiguration = getFreemarkerConfiguration();
+ }
+
+ Writer out = new StringWriter();
+ Template template = freemarkerConfiguration
+ .getTemplate(SENSITIVITY_PRE_SCRIPT);
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("scenario", scenario);
+ root.put("beanUtils", ConverterUtil.getConverter(null));
+
+ template.process(root, out);
+ out.flush();
+ String scriptContent = out.toString();
+
+ if (log.isTraceEnabled()) {
+ log.trace("Simulation prescript content = " + scriptContent);
+ }
+
+ return scriptContent;
+ }
+
+ /**
+ * Resoumet une simulation qui a deja été démarrée, mais
+ * on ne faisant que du control de monitoring.
+ *
+ * @param id
+ * @param param
+ * @param launcher
+ * @param priority
+ */
+ public void submitForCheckOnly(String id, SimulationParameter param,
+ SimulatorLauncher launcher, int priority) {
+ // on l'ajoute tout de suite a la liste des simulations demandee
+ SimulationControl control = new SimulationControl(id);
+ SimulationItem item = new SimulationItem(control, param);
+ SimulationJob job = new SimulationJob(this, item, priority);
+ job.setLauncher(launcher);
+ fireStartEvent(job);
+
+ job.setOnlyCheckControl(true);
+
+ //if (param.getUseAnalysePlan() && param.isIndependentPlan()) {
+ // // c un plan d'analyse independant, on construit toute les sous simu
+ // Runnable task = new PrepareSimulationJob(this, job);
+ // subSimulationComputationExecutor.execute(task);
+ //} else {
+ // l'item est fini d'etre initialise, on peut l'ajouter a la queue
+ // sauf si c'etait un plan independant ou se seront les sous simu
+ // qui seront dans la queue
+ submit(job);
+ //}
+
+ }
+
+ protected void submit(SimulationJob job) {
+ SimulatorLauncher launcher = job.getLauncher();
+ // on ajoute a la queue qui utilise le launcher defini dans le job
+ if (launcher != null) {
+ for (SimulatorLauncher l : executors.keySet()) {
+ if (launcher == l) {
+ log.info(_("Add to %s queue", l));
+ SimulationExecutor executor = executors.get(l);
+ executor.execute(job);
+ return;
+ }
+ }
+ }
+ // dernier recours on ajoute a la queue sans launcher
+ log.info(_("Add to default queue"));
+ queue.add(job);
+ }
+
+ /**
+ * Permet de resoumettre un job qui a ete pris par un thread mais qu'il
+ * ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou
+ * que le launcher de l'executor ne fonctionne plus (il se met en pause
+ * tout seul)
+ *
+ * @param job l'item a resoumettre
+ */
+ protected void resubmit(SimulationJob job) {
+ submit(job);
+ }
+
+ /**
+ * Permet de soumettre a la queue un job provenant d'un plan.
+ * Ce plan ne doit pas apparaitre dans la console de queue.
+ *
+ * @param job
+ */
+ protected void submitSubJob(SimulationJob job) {
+ submit(job);
+ }
+
+ /**
+ * Restart a job.
+ *
+ * This method fire "start" event.
+ *
+ * @param job job to retstart
+ */
+ public void restart(SimulationJob job) {
+ job.getItem().getControl().reset();
+ fireStartEvent(job);
+ submit(job);
+ }
+
+ /**
+ * Supprime un job de la queue (annulation d'une simulation). Appele
+ * depuis {@link SimulationJob#stop}
+ *
+ * @param job le job a annuler
+ * @return vrai si la simulation a pu etre annulee avant sont lancement
+ * (encore presente dans la queue), faux si la simulation a deja ete
+ * prise par un thread de simulation ou quelle est terminee
+ */
+ protected boolean cancel(SimulationJob job) {
+ boolean result = queue.remove(job);
+ return result;
+ }
+
+ public boolean exists(String id) {
+ boolean result = idJobs.contains(id);
+ return result;
+ }
+
+ /**
+ * Report une erreur pour un launcher, on resoumet le job en supprimant
+ * le launcher utilise
+ *
+ * @param launcher le launcher posant probleme
+ * @param job le job qui n'a pas reussi a se faire
+ */
+ protected void reportError(SimulatorLauncher launcher, SimulationJob job) {
+ MutableInt i = launcherError.get(launcher);
+ 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)",
+ launcher, i.intValue()));
+ SimulationExecutor e = executors.get(launcher);
+ e.pause();
+ }
+ // il faut bien penser a supprimer le launcher pour qu'un autre executor
+ // puisse y mettre le sien.
+ // FIXME: est ce le bon choix si l'utilisateur avait force un launcher particulier, ne faudrait t'il pas prevenir l'utilisateur ?
+ // FIXME: disabled since caparmor is not our friend. Retry on caparmor in the limit of 50 errors
+ //job.setLauncher(null);
+ resubmit(job);
+ }
+
+ /**
+ * Permet de genere les sous simulations d'un plan d'analyse. 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 AnalysePlanContext planContext;
+ protected SimulationJob job;
+ protected SimulationJob nextJob;
+ protected boolean doNext = true;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected int done = 0;
+
+ 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();
+ this.planContext = new AnalysePlanContext(control.getId(), param);
+
+ try {
+ // appel de init sur chaque plan
+ for (AnalysePlan plan : param.getAnalysePlans()) {
+ plan.init(planContext);
+ }
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException(_("isisfish.error.evaluate.preplan.script"), eee);
+ }
+ }
+
+ /**
+ * genere toutes les sous simulations et les places dans la queue
+ */
+ public void run() {
+ while (hasNext()) {
+ try {
+ SimulationJob subJob = next();
+ log.info("Simulation generee: " + subJob.getId());
+ simulationService.submitSubJob(subJob);
+ } catch (Exception eee) {
+ log.error(_("Can't add simulation: ", 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 refet 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.setAnalysePlanNumber(planNumber);
+
+ File tmpDirectory = FileUtil.createTempDirectory(
+ "isisfish-simulation-", "-preparation");
+ SimulationStorage sim = SimulationStorage
+ .importAndRenameZip(tmpDirectory, job
+ .getItem().getSimulationZip(),
+ simId);
+ sim.getParameter().setAnalysePlanNumber(planNumber);
+
+ // appel de tous les plans pour modifier la simulation
+ for (AnalysePlan plan : param.getAnalysePlans()) {
+ 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());
+ nextJob.addPostAction(this); // pour l'appel des after des plans
+ }
+ // 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 = 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.getAnalysePlans() instances,
+ // not sim.getParameters().getAnalysePlans() not sames !!!
+ for (AnalysePlan plan : param.getAnalysePlans()) {
+ 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> analyseplan
+ * <p>
+ * Le tout est zippé et le zip est retourné, il peut-être directement
+ * importé dans le {@link SimulationStorage} (en le renommant comme
+ * il faut {@link SimulationStorage#importAndRenameZip(File, String)}.
+ * <p>
+ * Ce zip est automatiquement supprimé à la fin de l'application.
+ *
+ * @param control le controleur
+ * @param param les parametre de la simulation
+ * @param xmlDesignPlan contenu xml des design plan
+ * @param compile si vrai la version compile des fichiers Java est aussi
+ * mise dans le fichier zip. Cela peut servir pour les simulations locales
+ * pour ne pas recompiler pour chaque simulation avec plan d'analyse
+ * @return un zip de simulation pour une simulation pret a être faite
+ * @throws SimulationException pour tout problème rencontré (IO,Topia...)
+ */
+ protected File prepareSimulationZipFile(SimulationControl control,
+ SimulationParameter param, String xmlDesignPlan, boolean compile)
+ throws SimulationException {
+ try {
+ File tmpDirectory = FileUtil.createTempDirectory(
+ "isisfish-simulation-", "-preparation");
+ //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
+ File regionXML = new File(tmpDirectory,
+ SimulationStorage.DATA_BACKUP_FILENAME);
+
+ // sauvegarde des parametres
+ Properties prop = param.toProperties();
+ //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
+ File f = new File(tmpDirectory,
+ SimulationStorage.PARAMETERS_FILENAME);
+ FileOutputStream out = new FileOutputStream(f);
+ //FileOutputStream out = new FileOutputStream(new File(tmpDirectory, IsisConfig.SIMULATION_PARAMETERS));
+ prop.store(out, "Parameters");
+ out.close();
+
+ // backup pour toutes les simulations, pour eviter que l'utilisateur
+ // ne puisse le modifier en meme temps
+ control.setText(_("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"));
+
+ // copie de toutes regles a utiliser
+ List<Rule> rules = param.getRules();
+ for (Rule rule : rules) {
+ String name = RuleStorage.getName(rule);
+ FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name
+ + ".java"),
+ new File(tmpDirectory, RuleStorage.RULE_PATH
+ + File.separator + name + ".java"));
+ }
+ // copie des regles reclamées par les plans d'analyse
+ for (String name : param.getExtraRules()) {
+ FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name
+ + ".java"),
+ new File(tmpDirectory, RuleStorage.RULE_PATH
+ + File.separator + name + ".java"));
+ }
+
+ // copie de toutes regles a utiliser
+ List<AnalysePlan> plans = param.getAnalysePlans();
+ for (AnalysePlan plan : plans) {
+ String name = AnalysePlanStorage.getName(plan);
+ FileUtil.copy(new File(AnalysePlanStorage
+ .getAnalysePlanDirectory(), name + ".java"), new File(
+ tmpDirectory, AnalysePlanStorage.ANALYSE_PLAN_PATH
+ + File.separator + name + ".java"));
+ }
+
+ // copie de tous les exports a utiliser
+ for (String name : param.getExportNames()) {
+ name = name.endsWith(".java") ? name : name + ".java";
+ FileUtil.copy(
+ new File(ExportStorage.getExportDirectory(), name),
+ new File(tmpDirectory, ExportStorage.EXPORT_PATH
+ + File.separator + name));
+ }
+
+ // copie de tous les scripts a utiliser
+ FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(),
+ tmpDirectory, ".*\\.java$");
+
+ // copie de tous les simulateurs a utiliser
+ FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(),
+ param.getSimulatorName()), new File(tmpDirectory,
+ SimulatorStorage.SIMULATOR_PATH + File.separator
+ + param.getSimulatorName()));
+
+ // convert all file to UTF-8
+ convertAllFile(control, tmpDirectory);
+
+ if (compile) {
+ compileAllFile(control, tmpDirectory);
+ }
+
+ // Sauvegarde du design plan en XML
+ if (!StringUtils.isEmpty(xmlDesignPlan)) {
+ File simulationDesignPlanFile = SimulationStorage.getMexicoDesignPlan(tmpDirectory);
+ FileUtil.writeString(simulationDesignPlanFile, xmlDesignPlan, "utf-8");
+ }
+
+ FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(),
+ param.getSimulatorName()), new File(tmpDirectory,
+ SimulatorStorage.SIMULATOR_PATH + File.separator
+ + param.getSimulatorName()));
+
+ // creation du zip
+ File result = new File(tmpDirectory.getPath() + ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, tmpDirectory, null);
+
+ // poussin 20071015: remove temp directory
+ if (!FileUtil.deleteRecursively(tmpDirectory)) {
+ log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ }
+
+ return result;
+ } catch (IOException eee) {
+ throw new SimulationException(
+ _("isisfish.error.prepare.information.simulation"), eee);
+ } catch (TopiaException eee) {
+ throw new SimulationException(
+ _("isisfish.error.prepare.information.simulation"), eee);
+ }
+
+ }
+
+ /**
+ * Convertit tous les fichiers du répertoire directory en UTF-8,
+ * pour eviter les erreurs d'encodage du la compilation
+ * sur un autre systeme ne supportant pas l'encodage courant.
+ *
+ * @param control le controleur
+ * @param directory le répertoire a convertir
+ */
+ protected void convertAllFile(SimulationControl control, File directory) {
+
+ control.setText("Converting file to unicode");
+
+ List<File> fileToConvert = new ArrayList<File>();
+
+ List<File> tmp = FileUtil.find(new File(directory,
+ ExportStorage.EXPORT_PATH), ".*\\.java$", true);
+ fileToConvert.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH),
+ ".*\\.java$", true);
+ fileToConvert.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory,
+ AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
+ fileToConvert.addAll(tmp);
+
+ tmp = FileUtil.find(
+ new File(directory, SimulatorStorage.SIMULATOR_PATH),
+ ".*\\.java$", true);
+ fileToConvert.addAll(tmp);
+
+ //
+ // Convertion
+ //
+ CompileHelper.convertToUnicode(fileToConvert);
+
+ }
+
+ /**
+ * Compile les fichiers présent dans le répertoire passé en
+ * parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
+ * et scripts. Seuls les fichiers des 3 premiers répertoires sont compilés
+ * les fichiers du dernier sont compilé par les dépendances qu'on les autres
+ * <p>
+ * Il permet donc de compiler facilement tous les fichiers pour une
+ * simulation
+ *
+ * @param control le controleur
+ * @param directory le répertoire où compiler
+ */
+ protected void compileAllFile(SimulationControl control, File directory) {
+
+ control.setText("Scripts and rules Compilation");
+ long currentTime = System.nanoTime();
+
+ //
+ // Recherche des fichiers a compiler
+ // On ne prend pas les scripts, car ils sont tous copiés mais pas
+ // forcément util. Lors de la compilation des autres fichiers, les
+ // script servant réellement seront automatiquement compilé
+
+ List<File> fileToCompile = new ArrayList<File>();
+
+ List<File> tmp = FileUtil.find(new File(directory,
+ ExportStorage.EXPORT_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH),
+ ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory,
+ AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(
+ new File(directory, SimulatorStorage.SIMULATOR_PATH),
+ ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ //
+ // Compilation
+ //
+
+ CompileHelper.compile(directory, fileToCompile, directory, null);
+ long time = System.nanoTime() - currentTime;
+ control.setText(_("isisfish.message.compilation.time",
+ DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
+
+ }
+
+}
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,283 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005 - 2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
- -->
-<fr.ifremer.isisfish.ui.input.InputContentUI>
-
- <!-- bean property -->
- <fr.ifremer.isisfish.entities.SetOfVesselsImpl id='bean' javaBean='null'/>
- <fr.ifremer.isisfish.entities.EffortDescriptionImpl id='effortDescription' javaBean='null'/>
-
- <script><![CDATA[
-import java.util.ArrayList;
-import fr.ifremer.isisfish.entities.EffortDescription;
-import fr.ifremer.isisfish.entities.EffortDescriptionImpl;
-import fr.ifremer.isisfish.entities.SetOfVesselsImpl;
-import fr.ifremer.isisfish.entities.SetOfVessels;
-import fr.ifremer.isisfish.types.TimeUnit;
-import fr.ifremer.isisfish.ui.input.setofvessels.EffortDescriptionListModel;
-import fr.ifremer.isisfish.ui.input.setofvessels.EffortDescriptionListRenderer;
-
-addPropertyChangeListener("effortDescription", new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getOldValue() != null || evt.getNewValue() == null) {
- fieldEffortDescriptionFishingOperation.setText("");
- fieldEffortDescriptionFishingOperationDuration.setText("");
- fieldEffortDescriptionGearsNumberPerOperation.setText("");
- fieldEffortDescriptionCrewSize.setText("");
- fieldEffortDescriptionUnitCostOfFishing.setText("");
- fieldEffortDescriptionFixedCrewSalary.setText("");
- fieldEffortDescriptionCrewFoodCost.setText("");
- fieldEffortDescriptionCrewShareRate.setText("");
- fieldEffortDescriptionRepairAndMaintenanceGearCost.setText("");
- fieldEffortDescriptionLandingCosts.setText("");
- fieldEffortDescriptionOtherRunningCost.setText("");
- }
- if (evt.getNewValue() != null) {
-
- }
- }
-});
-
- at Override
-public void refresh() {
- SetOfVessels setOfVessels = getVerifier().getEntity(SetOfVessels.class);
-
- // twice event for jaxx bindings detection
- setBean(null);
- setBean((SetOfVesselsImpl) setOfVessels);
-
- EffortDescriptionListModel model = new EffortDescriptionListModel();
- // getBean().getPossibleMetiers() can be null at region creation
- if (getBean() != null && getBean().getPossibleMetiers() != null) {
- java.util.List<EffortDescription> effortDescriptions = new ArrayList<EffortDescription>(getBean().getPossibleMetiers());
- model.setEffortDescriptions(effortDescriptions);
- }
- fieldEffortDescriptionEffortDescriptionList.setModel(model);
-}
-
- at Override
-public void setActionButtons() {
- getVerifier().setSaveButton(save);
- getVerifier().setCancelButton(cancel);
-}
-
-protected void effortDescriptionSelectionChanged() {
- EffortDescriptionImpl selectedEffort = (EffortDescriptionImpl)fieldEffortDescriptionEffortDescriptionList.getSelectedValue();
- setEffortDescription(selectedEffort);
-
- if (getEffortDescription() != null) {
- getVerifier().addCurrentEntity(getEffortDescription());
-
- /* NumberEditor is not working
- fieldEffortDescriptionFishingOperation.init();
- fieldEffortDescriptionGearsNumberPerOperation.init();
- fieldEffortDescriptionCrewSize.init();
- fieldEffortDescriptionUnitCostOfFishing.init();
- fieldEffortDescriptionFixedCrewSalary.init();
- fieldEffortDescriptionCrewFoodCost.init();
- fieldEffortDescriptionCrewShareRate.init();
- fieldEffortDescriptionRepairAndMaintenanceGearCost.init();
- fieldEffortDescriptionLandingCosts.init();
- fieldEffortDescriptionOtherRunningCost.init();*/
- }
-}
- ]]>
- </script>
- <Table>
- <row>
- <cell rows='3' fill='both' weightx='0.4' weighty='1.0'>
- <JScrollPane>
- <JList id="fieldEffortDescriptionEffortDescriptionList" selectionMode="{javax.swing.ListSelectionModel.SINGLE_SELECTION}"
- onValueChanged='effortDescriptionSelectionChanged()'
- cellRenderer='{new EffortDescriptionListRenderer()}'
- enabled='{isActif()}' decorator='boxed' />
- </JScrollPane>
- </cell>
- <cell columns='2' fill='both' weightx='1.0'>
- <Table border='{BorderFactory.createTitledBorder(_("isisfish.effortDescription.effortTitle"))}'>
- <row>
- <cell anchor='east'>
- <JLabel text="isisfish.effortDescription.fishingOperation" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <!--NumberEditor id='fieldEffortDescriptionFishingOperation' constructorParams='this'
- bean='{getEffortDescription()}' property='fishingOperation'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"FishingOperation"'/-->
- <JFormattedTextField id="fieldEffortDescriptionFishingOperation" text='{getEffortDescription().getFishingOperation()}'
- onKeyReleased='getEffortDescription().setFishingOperation(Integer.parseInt(fieldEffortDescriptionFishingOperation.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"FishingOperation"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east'>
- <JLabel text="isisfish.effortDescription.fishingOperationDuration" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <JTextField id="fieldEffortDescriptionFishingOperationDuration"
- text='{getEffortDescription().getFishingOperationDuration() == null ? "" : getEffortDescription().getFishingOperationDuration().getHour()}'
- toolTipText="isisfish.effortDescription.fishingOperationDuration.tooltip" onKeyReleased='getEffortDescription().setFishingOperationDuration(new TimeUnit(3600 * Double.parseDouble(fieldEffortDescriptionFishingOperationDuration.getText())))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"FishingOperationDuration"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east'>
- <JLabel text="isisfish.effortDescription.gearsNumberPerOperation" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <!--NumberEditor id='fieldEffortDescriptionGearsNumberPerOperation' constructorParams='this'
- bean='{getEffortDescription()}' property='gearsNumberPerOperation'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"GearsNumberPerOperation"'/-->
- <JTextField id="fieldEffortDescriptionGearsNumberPerOperation" text='{getEffortDescription().getGearsNumberPerOperation()}'
- onKeyReleased='getEffortDescription().setGearsNumberPerOperation(Integer.parseInt(fieldEffortDescriptionGearsNumberPerOperation.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"GearsNumberPerOperation"'/>
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- <row>
- <cell columns='2' fill='both' weighty='1.0'>
- <Table anchor='north' fill='both' weighty='1.0' border='{BorderFactory.createTitledBorder(_("isisfish.effortDescription.economicTitle"))}'>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.crewSize" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionCrewSize' constructorParams='this'
- bean='{getEffortDescription()}' property='crewSize'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"CrewSize"'/-->
- <JTextField id="fieldEffortDescriptionCrewSize" text='{getEffortDescription().getCrewSize()}'
- onKeyReleased='getEffortDescription().setCrewSize(Integer.parseInt(fieldEffortDescriptionCrewSize.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"CrewSize"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.unitCostOfFishing" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionUnitCostOfFishing' constructorParams='this'
- bean='{getEffortDescription()}' property='unitCostOfFishing'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"UnitCostOfFishing"'/-->
- <JTextField id="fieldEffortDescriptionUnitCostOfFishing" text='{getEffortDescription().getUnitCostOfFishing()}'
- onKeyReleased='getEffortDescription().setUnitCostOfFishing(Double.parseDouble(fieldEffortDescriptionUnitCostOfFishing.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"UnitCostOfFishing"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.fixedCrewSalary" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionFixedCrewSalary' constructorParams='this'
- bean='{getEffortDescription()}' property='fixedCrewSalary'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"FixedCrewSalary"'/-->
- <JTextField id="fieldEffortDescriptionFixedCrewSalary" text='{getEffortDescription().getFixedCrewSalary()}'
- onKeyReleased='getEffortDescription().setFixedCrewSalary(Double.parseDouble(fieldEffortDescriptionFixedCrewSalary.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"FixedCrewSalary"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.crewFoodCost" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionCrewFoodCost' constructorParams='this'
- bean='{getEffortDescription()}' property='crewFoodCost'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"CrewFoodCost"'/-->
- <JTextField id="fieldEffortDescriptionCrewFoodCost" text='{getEffortDescription().getCrewFoodCost()}'
- onKeyReleased='getEffortDescription().setCrewFoodCost(Double.parseDouble(fieldEffortDescriptionCrewFoodCost.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"CrewFoodCost"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.crewShareRate" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionCrewShareRate' constructorParams='this'
- bean='{getEffortDescription()}' property='crewShareRate'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"CrewShareRate"'/-->
- <JTextField id="fieldEffortDescriptionCrewShareRate" text='{getEffortDescription().getCrewShareRate()}'
- onKeyReleased='getEffortDescription().setCrewShareRate(Double.parseDouble(fieldEffortDescriptionCrewShareRate.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"CrewShareRate"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.repairAndMaintenanceGearCost" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionRepairAndMaintenanceGearCost' constructorParams='this'
- bean='{getEffortDescription()}' property='repairAndMaintenanceGearCost'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}'
- _method='"RepairAndMaintenanceGearCost"' useSign='true'/-->
- <JTextField id="fieldEffortDescriptionRepairAndMaintenanceGearCost" text='{getEffortDescription().getRepairAndMaintenanceGearCost()}'
- onKeyReleased='getEffortDescription().setRepairAndMaintenanceGearCost(Double.parseDouble(fieldEffortDescriptionRepairAndMaintenanceGearCost.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"RepairAndMaintenanceGearCost"'/>
- </cell>
- </row>
- <row>
- <cell anchor='east' fill='none' weighty='0.0'>
- <JLabel text="isisfish.effortDescription.landingCosts" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0' weighty='0.0'>
- <!--NumberEditor id='fieldEffortDescriptionLandingCosts' constructorParams='this'
- bean='{getEffortDescription()}' property='landingCosts'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"LandingCosts"'/-->
- <JTextField id="fieldEffortDescriptionLandingCosts" text='{getEffortDescription().getLandingCosts()}'
- onKeyReleased='getEffortDescription().setLandingCosts(Double.parseDouble(fieldEffortDescriptionLandingCosts.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"LandingCosts"'/>
- </cell>
- </row>
- <row>
- <cell anchor='northeast' fill='none' weighty='1.0'>
- <JLabel text="isisfish.effortDescription.otherRunningCost" enabled='{isActif()}'/>
- </cell>
- <cell anchor='north' fill='horizontal' weightx='1.0' weighty='1.0'>
- <!--NumberEditor id='fieldEffortDescriptionOtherRunningCost' constructorParams='this'
- bean='{getEffortDescription()}' property='otherRunningCost'
- enabled='{isActif()}' decorator='boxed' useSign='true'
- _bean='{EffortDescriptionImpl.class}' _method='"OtherRunningCost"'/-->
- <JTextField id="fieldEffortDescriptionOtherRunningCost" text='{getEffortDescription().getOtherRunningCost()}'
- onKeyReleased='getEffortDescription().setOtherRunningCost(Double.parseDouble(fieldEffortDescriptionOtherRunningCost.getText()))'
- enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"OtherRunningCost"'/>
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- <row>
- <cell fill='horizontal' weightx='0.3'>
- <JButton id='save' decorator='boxed'/>
- </cell>
- <cell fill='horizontal' weightx='0.3'>
- <JButton id='cancel' decorator='boxed'/>
- </cell>
- </row>
- </Table>
-</fr.ifremer.isisfish.ui.input.InputContentUI>
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx (from rev 2491, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,283 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+ -->
+<fr.ifremer.isisfish.ui.input.InputContentUI>
+
+ <!-- bean property -->
+ <fr.ifremer.isisfish.entities.SetOfVesselsImpl id='bean' javaBean='null'/>
+ <fr.ifremer.isisfish.entities.EffortDescriptionImpl id='effortDescription' javaBean='null'/>
+
+ <script><![CDATA[
+import java.util.ArrayList;
+import fr.ifremer.isisfish.entities.EffortDescription;
+import fr.ifremer.isisfish.entities.EffortDescriptionImpl;
+import fr.ifremer.isisfish.entities.SetOfVesselsImpl;
+import fr.ifremer.isisfish.entities.SetOfVessels;
+import fr.ifremer.isisfish.types.TimeUnit;
+import fr.ifremer.isisfish.ui.input.setofvessels.EffortDescriptionListModel;
+import fr.ifremer.isisfish.ui.input.setofvessels.EffortDescriptionListRenderer;
+
+addPropertyChangeListener("effortDescription", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getOldValue() != null || evt.getNewValue() == null) {
+ fieldEffortDescriptionFishingOperation.setText("");
+ fieldEffortDescriptionFishingOperationDuration.setText("");
+ fieldEffortDescriptionGearsNumberPerOperation.setText("");
+ fieldEffortDescriptionCrewSize.setText("");
+ fieldEffortDescriptionUnitCostOfFishing.setText("");
+ fieldEffortDescriptionFixedCrewSalary.setText("");
+ fieldEffortDescriptionCrewFoodCost.setText("");
+ fieldEffortDescriptionCrewShareRate.setText("");
+ fieldEffortDescriptionRepairAndMaintenanceGearCost.setText("");
+ fieldEffortDescriptionLandingCosts.setText("");
+ fieldEffortDescriptionOtherRunningCost.setText("");
+ }
+ if (evt.getNewValue() != null) {
+
+ }
+ }
+});
+
+ at Override
+public void refresh() {
+ SetOfVessels setOfVessels = getVerifier().getEntity(SetOfVessels.class);
+
+ // twice event for jaxx bindings detection
+ setBean(null);
+ setBean((SetOfVesselsImpl) setOfVessels);
+
+ EffortDescriptionListModel model = new EffortDescriptionListModel();
+ // getBean().getPossibleMetiers() can be null at region creation
+ if (getBean() != null && getBean().getPossibleMetiers() != null) {
+ java.util.List<EffortDescription> effortDescriptions = new ArrayList<EffortDescription>(getBean().getPossibleMetiers());
+ model.setEffortDescriptions(effortDescriptions);
+ }
+ fieldEffortDescriptionEffortDescriptionList.setModel(model);
+}
+
+ at Override
+public void setActionButtons() {
+ getVerifier().setSaveButton(save);
+ getVerifier().setCancelButton(cancel);
+}
+
+protected void effortDescriptionSelectionChanged() {
+ EffortDescriptionImpl selectedEffort = (EffortDescriptionImpl)fieldEffortDescriptionEffortDescriptionList.getSelectedValue();
+ setEffortDescription(selectedEffort);
+
+ if (getEffortDescription() != null) {
+ getVerifier().addCurrentEntity(getEffortDescription());
+
+ /* NumberEditor is not working
+ fieldEffortDescriptionFishingOperation.init();
+ fieldEffortDescriptionGearsNumberPerOperation.init();
+ fieldEffortDescriptionCrewSize.init();
+ fieldEffortDescriptionUnitCostOfFishing.init();
+ fieldEffortDescriptionFixedCrewSalary.init();
+ fieldEffortDescriptionCrewFoodCost.init();
+ fieldEffortDescriptionCrewShareRate.init();
+ fieldEffortDescriptionRepairAndMaintenanceGearCost.init();
+ fieldEffortDescriptionLandingCosts.init();
+ fieldEffortDescriptionOtherRunningCost.init();*/
+ }
+}
+ ]]>
+ </script>
+ <Table>
+ <row>
+ <cell rows='3' fill='both' weightx='0.4' weighty='1.0'>
+ <JScrollPane>
+ <JList id="fieldEffortDescriptionEffortDescriptionList" selectionMode="{javax.swing.ListSelectionModel.SINGLE_SELECTION}"
+ onValueChanged='effortDescriptionSelectionChanged()'
+ cellRenderer='{new EffortDescriptionListRenderer()}'
+ enabled='{isActif()}' />
+ </JScrollPane>
+ </cell>
+ <cell columns='2' fill='both' weightx='1.0'>
+ <Table border='{BorderFactory.createTitledBorder(_("isisfish.effortDescription.effortTitle"))}'>
+ <row>
+ <cell anchor='east'>
+ <JLabel text="isisfish.effortDescription.fishingOperation" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <!--NumberEditor id='fieldEffortDescriptionFishingOperation' constructorParams='this'
+ bean='{getEffortDescription()}' property='fishingOperation'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"FishingOperation"'/-->
+ <JFormattedTextField id="fieldEffortDescriptionFishingOperation" text='{getEffortDescription().getFishingOperation()}'
+ onKeyReleased='getEffortDescription().setFishingOperation(Integer.parseInt(fieldEffortDescriptionFishingOperation.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"FishingOperation"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east'>
+ <JLabel text="isisfish.effortDescription.fishingOperationDuration" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JTextField id="fieldEffortDescriptionFishingOperationDuration"
+ text='{getEffortDescription().getFishingOperationDuration() == null ? "" : getEffortDescription().getFishingOperationDuration().getHour()}'
+ toolTipText="isisfish.effortDescription.fishingOperationDuration.tooltip" onKeyReleased='getEffortDescription().setFishingOperationDuration(new TimeUnit(3600 * Double.parseDouble(fieldEffortDescriptionFishingOperationDuration.getText())))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"FishingOperationDuration"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east'>
+ <JLabel text="isisfish.effortDescription.gearsNumberPerOperation" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <!--NumberEditor id='fieldEffortDescriptionGearsNumberPerOperation' constructorParams='this'
+ bean='{getEffortDescription()}' property='gearsNumberPerOperation'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"GearsNumberPerOperation"'/-->
+ <JTextField id="fieldEffortDescriptionGearsNumberPerOperation" text='{getEffortDescription().getGearsNumberPerOperation()}'
+ onKeyReleased='getEffortDescription().setGearsNumberPerOperation(Integer.parseInt(fieldEffortDescriptionGearsNumberPerOperation.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"GearsNumberPerOperation"'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weighty='1.0'>
+ <Table anchor='north' fill='both' weighty='1.0' border='{BorderFactory.createTitledBorder(_("isisfish.effortDescription.economicTitle"))}'>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.crewSize" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionCrewSize' constructorParams='this'
+ bean='{getEffortDescription()}' property='crewSize'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"CrewSize"'/-->
+ <JTextField id="fieldEffortDescriptionCrewSize" text='{getEffortDescription().getCrewSize()}'
+ onKeyReleased='getEffortDescription().setCrewSize(Integer.parseInt(fieldEffortDescriptionCrewSize.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"CrewSize"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.unitCostOfFishing" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionUnitCostOfFishing' constructorParams='this'
+ bean='{getEffortDescription()}' property='unitCostOfFishing'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"UnitCostOfFishing"'/-->
+ <JTextField id="fieldEffortDescriptionUnitCostOfFishing" text='{getEffortDescription().getUnitCostOfFishing()}'
+ onKeyReleased='getEffortDescription().setUnitCostOfFishing(Double.parseDouble(fieldEffortDescriptionUnitCostOfFishing.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"UnitCostOfFishing"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.fixedCrewSalary" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionFixedCrewSalary' constructorParams='this'
+ bean='{getEffortDescription()}' property='fixedCrewSalary'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"FixedCrewSalary"'/-->
+ <JTextField id="fieldEffortDescriptionFixedCrewSalary" text='{getEffortDescription().getFixedCrewSalary()}'
+ onKeyReleased='getEffortDescription().setFixedCrewSalary(Double.parseDouble(fieldEffortDescriptionFixedCrewSalary.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"FixedCrewSalary"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.crewFoodCost" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionCrewFoodCost' constructorParams='this'
+ bean='{getEffortDescription()}' property='crewFoodCost'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"CrewFoodCost"'/-->
+ <JTextField id="fieldEffortDescriptionCrewFoodCost" text='{getEffortDescription().getCrewFoodCost()}'
+ onKeyReleased='getEffortDescription().setCrewFoodCost(Double.parseDouble(fieldEffortDescriptionCrewFoodCost.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"CrewFoodCost"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.crewShareRate" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionCrewShareRate' constructorParams='this'
+ bean='{getEffortDescription()}' property='crewShareRate'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"CrewShareRate"'/-->
+ <JTextField id="fieldEffortDescriptionCrewShareRate" text='{getEffortDescription().getCrewShareRate()}'
+ onKeyReleased='getEffortDescription().setCrewShareRate(Double.parseDouble(fieldEffortDescriptionCrewShareRate.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"CrewShareRate"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.repairAndMaintenanceGearCost" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionRepairAndMaintenanceGearCost' constructorParams='this'
+ bean='{getEffortDescription()}' property='repairAndMaintenanceGearCost'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}'
+ _method='"RepairAndMaintenanceGearCost"' useSign='true'/-->
+ <JTextField id="fieldEffortDescriptionRepairAndMaintenanceGearCost" text='{getEffortDescription().getRepairAndMaintenanceGearCost()}'
+ onKeyReleased='getEffortDescription().setRepairAndMaintenanceGearCost(Double.parseDouble(fieldEffortDescriptionRepairAndMaintenanceGearCost.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"RepairAndMaintenanceGearCost"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east' fill='none' weighty='0.0'>
+ <JLabel text="isisfish.effortDescription.landingCosts" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' weighty='0.0'>
+ <!--NumberEditor id='fieldEffortDescriptionLandingCosts' constructorParams='this'
+ bean='{getEffortDescription()}' property='landingCosts'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"LandingCosts"'/-->
+ <JTextField id="fieldEffortDescriptionLandingCosts" text='{getEffortDescription().getLandingCosts()}'
+ onKeyReleased='getEffortDescription().setLandingCosts(Double.parseDouble(fieldEffortDescriptionLandingCosts.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"LandingCosts"'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='northeast' fill='none' weighty='1.0'>
+ <JLabel text="isisfish.effortDescription.otherRunningCost" enabled='{isActif()}'/>
+ </cell>
+ <cell anchor='north' fill='horizontal' weightx='1.0' weighty='1.0'>
+ <!--NumberEditor id='fieldEffortDescriptionOtherRunningCost' constructorParams='this'
+ bean='{getEffortDescription()}' property='otherRunningCost'
+ enabled='{isActif()}' decorator='boxed' useSign='true'
+ _bean='{EffortDescriptionImpl.class}' _method='"OtherRunningCost"'/-->
+ <JTextField id="fieldEffortDescriptionOtherRunningCost" text='{getEffortDescription().getOtherRunningCost()}'
+ onKeyReleased='getEffortDescription().setOtherRunningCost(Double.parseDouble(fieldEffortDescriptionOtherRunningCost.getText()))'
+ enabled='{isActif()}' decorator='boxed' _bean='{EffortDescriptionImpl.class}' _method='"OtherRunningCost"'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='0.3'>
+ <JButton id='save' decorator='boxed'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.3'>
+ <JButton id='cancel' decorator='boxed'/>
+ </cell>
+ </row>
+ </Table>
+</fr.ifremer.isisfish.ui.input.InputContentUI>
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,1254 +0,0 @@
-/* *##%
- * Copyright (C) 2005 - 2009
- * Ifremer, Code Lutin, Cedric 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-package fr.ifremer.isisfish.ui.input;
-
-import static fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil.selectSimulation;
-import static javax.swing.JOptionPane.showInputDialog;
-import static org.codelutin.i18n.I18n._;
-
-import java.awt.geom.Point2D;
-import java.io.File;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.JOptionPane;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-
-import jaxx.runtime.swing.ErrorDialogUI;
-
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixFactory;
-import org.codelutin.math.matrix.MatrixND;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.topia.persistence.TopiaDAO;
-import org.codelutin.topia.persistence.TopiaEntity;
-import org.codelutin.util.FileUtil;
-import org.codelutin.widget.editor.Editor;
-
-import com.bbn.openmap.layer.shape.SpatialIndex;
-
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.datastore.FormuleStorage;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.StorageException;
-import fr.ifremer.isisfish.datastore.update.ImportFromV2;
-import fr.ifremer.isisfish.entities.Cell;
-import fr.ifremer.isisfish.entities.CellDAO;
-import fr.ifremer.isisfish.entities.EffortDescription;
-import fr.ifremer.isisfish.entities.EffortDescriptionDAO;
-import fr.ifremer.isisfish.entities.Equation;
-import fr.ifremer.isisfish.entities.FisheryRegion;
-import fr.ifremer.isisfish.entities.Formule;
-import fr.ifremer.isisfish.entities.Gear;
-import fr.ifremer.isisfish.entities.Metier;
-import fr.ifremer.isisfish.entities.MetierSeasonInfo;
-import fr.ifremer.isisfish.entities.MetierSeasonInfoDAO;
-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;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.ui.input.check.CheckRegion;
-import fr.ifremer.isisfish.ui.input.check.CheckResult;
-import fr.ifremer.isisfish.ui.input.check.CheckResultFrame;
-import fr.ifremer.isisfish.util.CellPointcomparator;
-
-/**
- * All code used in input UI.
- *
- * Created: 1 aout 2005 18:37:25 CEST
- *
- * @author Benjamin POUSSIN <poussin at codelutin.com>
- * @version $Revision: 1312 $
- *
- * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
- * by : $Author: sletellier $
- */
-public class InputAction {
-
- /** Class logger. */
- private static Log log = LogFactory.getLog(InputAction.class);
-
- public InputAction() {
- if (log.isDebugEnabled()) {
- log.debug("new instance");
- }
- }
-
- protected void showMsgBox(Exception eee) {
- ErrorDialogUI.showError(eee);
- }
-
- /**
- * Exporter la region dans un zip
- *
- * @return TODO
- */
- public File importRegion() {
- File file = null;
- try {
- file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.region.zipped"));
- if (file != null) {
- RegionStorage.importZip(file);
- }
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("Can't import region", e);
- }
- showMsgBox(e);
- }
- return file;
- }
-
- /**
- * Exporter la region dans un zip
- *
- * @return TODO
- */
- public File importRegionAndRename() {
- File file = null;
- try {
- file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.region.zipped"));
- if (file != null) {
-
- String newName = showInputDialog(_("isisfish.message.name.imported.region"));
- RegionStorage.importAndRenameZip(file, newName);
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't import region", eee);
- }
- showMsgBox(eee);
- }
- return file;
- }
-
- /**
- * Importer la region depuis un fichier XML de la version 2
- *
- * @return TODO
- */
- public File importV2Region() {
- File file = null;
- try {
- file = FileUtil.getFile(".*.xml$",
- _("isisfish.message.import.region.xml"));
- if (file != null) {
-
- new ImportFromV2(true).importXML(file);
-
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't import region", eee);
- }
- showMsgBox(eee);
- }
- return file;
- }
-
- /**
- * Extract from a simulation the region, and rename it with name given
- * by user.
- *
- * @return msg
- */
- public String importRegionFromSimulation() {
-
- // first step select a simulation and new region name
- String simulationName;
- try {
- //TODO Should use a shared model ?
- simulationName = selectSimulation(SimulationStorage
- .getSimulationNames());
- if (simulationName == null) {
- return null;
- }
-
- } catch (Exception e) {
- String msg = _("isisfish.error.no.select.simulation");
- if (log.isWarnEnabled()) {
- log.warn(msg);
- }
- e.printStackTrace();
- showMsgBox(e);
- return null;
- }
-
- if (log.isInfoEnabled()) {
- log.info("simulation used " + simulationName);
- }
-
- // ask new region name
- String regionName = showInputDialog(
- _("isisfish.message.import.region.name"), "region from "
- + simulationName);
- if (regionName == null || "".equals(regionName)) {
- return null;
- }
- if (RegionStorage.getRegionNames().contains(regionName)) {
- return null;
- }
-
- if (log.isInfoEnabled()) {
- log.info("new region name " + regionName);
- }
-
- try {
- SimulationStorage.getSimulation(simulationName).extractRegion(
- regionName);
- } catch (StorageException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't extract region", e);
- }
- showMsgBox(e);
- }
- return regionName;
- }
-
- /**
- * Exporter la region dans un zip
- *
- * @return TODO
- */
- public File exportRegion(RegionStorage regionStorage) {
- File file = null;
- try {
- file = FileUtil.getFile(".*.zip$",
- _("isisfish.message.import.region.zipped"));
- if (file != null) {
- int resp = JOptionPane.YES_OPTION;
- if (file.exists()) {
- resp = JOptionPane.showConfirmDialog(null,
- _("isisfish.message.file.overwrite"));
- }
- if (resp == JOptionPane.YES_OPTION) {
- regionStorage.createZip(file);
- }
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't export region", eee);
- }
- showMsgBox(eee);
- }
- return file;
- }
-
- /**
- * Copy la region avec un autre nom
- *
- * @return TODO
- */
- public String copyRegion(RegionStorage regionStorage) {
- String newName = null;
- try {
- newName = showInputDialog(_("isisfish.message.new.region.name"));
-
- File zip = regionStorage.createZip();
- RegionStorage.importAndRenameZip(zip, newName);
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't copy region", eee);
- }
- showMsgBox(eee);
- }
- return newName;
- }
-
- /**
- * Remove region
- *
- * @param cvsDelete if true delete region in CVS too
- * @return TODO
- */
- public String removeRegion(RegionStorage regionStorage, boolean cvsDelete) {
- String result = null;
- try {
- int resp = JOptionPane.showConfirmDialog(null, _(
- "isisfish.message.confirm.remove.region", regionStorage
- .getName()));
- if (resp == JOptionPane.YES_OPTION) {
- regionStorage.delete(cvsDelete);
- result = _("isisfish.message.region.removed");
-
- } else {
- result = _("isisfish.message.region.remove.canceled");
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove region", eee);
- }
- showMsgBox(eee);
- }
- return result;
- }
-
- /**
- * Remove region
- *
- * @return TODO
- */
- public String commitRegionInCVS(RegionStorage regionStorage) {
- String result = null;
- try {
- String msg = regionStorage.getCommentForNextCommit();
- JTextArea text = new JTextArea(msg);
- int resp = JOptionPane.showOptionDialog(null,
- new JScrollPane(text), _("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();
- result = _("isisfish.message.region.commited");
- } else {
- result = _("isisfish.message.commit.region.canceled");
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't export region", eee);
- }
- showMsgBox(eee);
- }
- return result;
- }
-
- /**
- * load region.
- * <p/>
- * RegionStorage, TopiaContext, FisheryRegion are put in uiContext data.
- * <p/>
- * tree ans
- *
- * @param ui TODO
- * @param name name of region
- * @return loaded region
- */
- public FisheryRegion loadRegion(jaxx.runtime.JAXXObject ui, String name) {
- if (log.isDebugEnabled()) {
- log.debug("loadRegion : " + name);
- }
- try {
- RegionStorage regionStorage = null;
- FisheryRegion fisheryRegion = null;
- TopiaContext isisContext = null;
- if (name != null && !" ".equals(name)) {
- regionStorage = RegionStorage.getRegion(name);
- isisContext = regionStorage.getStorage().beginTransaction();
- fisheryRegion = RegionStorage.getFisheryRegion(isisContext);
- ui.setContextValue(regionStorage);
- ui.setContextValue(isisContext);
- return fisheryRegion;
- // FIXME session shoul be closed
- // but make lazy init later
- //isisContext.rollbackTransaction();
- //isisContext.closeContext();
- }
- return null;
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't load region", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- /**
- * Create new region, and select it in combo, and show input pane region in
- * input area.
- *
- * @param name name of the new region
- */
- public void newRegion(String name) {
- if (log.isTraceEnabled()) {
- log.trace("newRegion called");
- }
- try {
- if ("".equals(name)) {
- // showMsgBox("error " + _("isisfish.error.region.name.empty"));
- }
- if (RegionStorage.getRegionNames().contains(name)) {
- // showMsgBox("Error " + _("isisfish.error.region.already.exists"));
- }
- RegionStorage.create(name);
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create region", eee);
- }
- showMsgBox(eee);
- }
- }
-
- /**
- * Permet de creer simplement un nouvelle objet portant un nom par defaut.
- * Le nouvel element est automatiquement selectionné dans l'arbre
- *
- * @param type le type de l'entite a creer, le type est compose seulement du
- * nom de l'entite et pas du package.
- * @return null ou un fenetre d'erreur
- */
- public TopiaEntity create(TopiaContext isisContext, String type) {
- if (log.isTraceEnabled()) {
- log.trace("create called for " + type);
- }
- try {
- //TODO use the IsisFishEntityEnum for this purpose :
- //TopiaDAO<TopiaEntity> dao = IsisFishEntityEnum.getEntry(type).getDAO(isisContext);
- String name = type + "_new";
-
- Method method = MethodUtils.getAccessibleMethod(
- IsisFishDAOHelper.class, "get" + type + "DAO",
- TopiaContext.class);
- TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) method.invoke(
- null, isisContext);
-
- TopiaEntity entity = dao.create("name", name);
- entity.update();
- isisContext.commitTransaction();
- return entity;
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create entity", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- /**
- * Save entity passed in argument, and commit
- *
- * @return the saved entity
- */
- public TopiaEntity save(TopiaEntity selected) {
- if (log.isTraceEnabled()) {
- log.trace("save called");
- }
- try {
- if (selected == null) {
- if (log.isWarnEnabled()) {
- log.warn("Try to save null entity");
- }
- return null;
- }
- // on est pas en autoUpdate donc il faut faire le update avant le
- // commit
- selected.update();
-
- selected.getTopiaContext().commitTransaction();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't save region", eee);
- }
- showMsgBox(eee);
- }
- return selected;
- }
-
- /**
- * Cancel all modification on entity (rollback), and force reload it and
- * refresh all ui component that name match 'type'Tab
- *
- * @return the roolbacked entity
- */
- public TopiaEntity cancel(TopiaEntity selected) {
- if (log.isTraceEnabled()) {
- log.trace("cancel called");
- }
- try {
- TopiaContext isisContext = selected.getTopiaContext();
- isisContext.rollbackTransaction();
-
- // reload the object
- // can't be null here, or allready null before !!!
- //if (selected != null) {
- // FIXME don't modify parameters
- selected = isisContext.findByTopiaId(selected.getTopiaId());
- //}
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't cancel modification in region", eee);
- }
- showMsgBox(eee);
- }
- return selected;
- }
-
- /**
- * Delete one entity and commit the change, try to selected intelligently
- * other node in tree.
- * <p/>
- * Refresh all ui component where name match "input<entity type without
- * package >.*"
- *
- * @return if ok return null else OutView error
- */
- public String remove(TopiaEntity selected) {
- if (log.isTraceEnabled()) {
- log.trace("remove called");
- }
- String msg = "";
- try {
- boolean doDelete;
- List<TopiaEntity> allWillBeRemoved = selected.getComposite();
- if (allWillBeRemoved.size() > 0) {
- String text = _("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"),
- JOptionPane.YES_NO_OPTION);
- doDelete = resp == JOptionPane.YES_OPTION;
- } else {
- String text = _("isisfish.message.confirm.delete.object",
- selected.toString());
- int resp = JOptionPane.showConfirmDialog(null, text,
- _("isisfish.message.delete.entity"),
- JOptionPane.YES_NO_OPTION);
- doDelete = resp == JOptionPane.YES_OPTION;
- }
-
- if (doDelete) {
- selected.delete();
- selected.getTopiaContext().commitTransaction();
- msg = _("isisfish.message.remove.finished");
- } else {
- msg = _("isisfish.message.remove.canceled");
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove entity: " + selected, eee);
- }
- showMsgBox(eee);
- }
- return msg;
- }
-
- /**
- * Save an Equation as model, to reuse it for other equation
- *
- * @param eq equation to put in models
- * @return if ok return null else OutputView error message
- */
- public Object saveEquationAsModel(Equation eq) {
- try {
- if (eq != null) {
- String name = showInputDialog("");
- /*if ("".equals(name)) {
- showMsgBox("Error " +_("isisfish.error.invalid.equation.name"));
- }*/
- if (name != null) {
- FormuleStorage storage = FormuleStorage.createFormule(eq
- .getCategory(), name, eq.getLanguage());
- storage.setContent(eq.getContent());
- }
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't save equation as model", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- /**
- * Save an Equation as model, to reuse it for other equation
- *
- * @param category category for this equation
- * @param language equation to put in models
- * @param content content ?
- * @return if ok return null else OutputView error message
- */
- public Object saveAsModel(String category, String language, String content) {
- try {
- String name = showInputDialog("isisfish.message.saveModel.dialog");
- /*if ("".equals(name)) {
- showMsgBox("Error " +_("isisfish.error.invalid.equation.name"));
- }*/
- if (name != null) {
- FormuleStorage storage = FormuleStorage.createFormule(category,
- name, language);
- storage.setContent(content);
- }
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't save equation as model", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object openEditor(String category, String name, Class javaInterface,
- String content, Editor editor) {
- if (log.isTraceEnabled()) {
- log.trace("openEditor");
- }
- try {
- EquationEditorPaneUI pane = new EquationEditorPaneUI();
- pane.setEquation(category, name, javaInterface, content);
- pane.setVisible(true);
- if (pane.isOk() && editor != null) {
- editor.setText(pane.getEditor().getText());
- }
- pane.dispose();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't open editor", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- protected List<Formule> getFormules(TopiaContext isisContext, String name) {
- return FormuleStorage.getFormules(isisContext, name);
- }
-
- // InputGear
-
- public Object addSelectivity(Population pop, String equation, Gear gear) {
- try {
-
- SelectivityDAO dao = IsisFishDAOHelper.getSelectivityDAO(pop
- .getTopiaContext());
- Selectivity selectivity = dao.create();
-
- selectivity.setGear(gear);
- selectivity.setPopulation(pop);
- selectivity.getEquation().setContent(equation);
- selectivity.update();
-
- gear.addPopulationSelectivity(selectivity);
- gear.update();
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't add selectivity", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object removeSelectivity(Gear gear, Selectivity selectivity) {
- if (log.isTraceEnabled()) {
- log.trace("removeTargetSpecies called: " + selectivity);
- }
- try {
- if (gear != null && selectivity != null) {
- gear.removePopulationSelectivity(selectivity);
- }
- } catch (Exception eee) {
- log.error("Can't remove TargetSpecies", eee);
- showMsgBox(eee);
- }
- return null;
- }
-
- // InputMetier
-
- public Object createSeasonInfo(Metier metier) {
- if (log.isTraceEnabled()) {
- log.trace("createSeasonInfo called");
- }
- try {
- MetierSeasonInfoDAO metierSeasonInfoPS = IsisFishDAOHelper
- .getMetierSeasonInfoDAO(metier.getTopiaContext());
- MetierSeasonInfo metierSeasonInfo = metierSeasonInfoPS.create();
- metierSeasonInfo.setFirstMonth(Month.MONTH[0]);
- metierSeasonInfo.setLastMonth(Month.MONTH[3]);
- metier.addMetierSeasonInfo(metierSeasonInfo);
- metierSeasonInfo.update();
- metier.update();
- // isisContext.commitTransaction();
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create MetierSeasonInfo", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object removeSeasonInfo(Metier metier, MetierSeasonInfo info) {
- if (log.isTraceEnabled()) {
- log.trace("createSeasonInfo called");
- }
- try {
- metier.removeMetierSeasonInfo(info);
- metier.update();
- metier.getTopiaContext().commitTransaction();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create MetierSeasonInfo", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object addTargetSpecies(Metier metier, MetierSeasonInfo m,
- Species species, String targetFactorEquationContent, boolean primaryCatch) {
- if (log.isDebugEnabled()) {
- log.debug("addTargetSpecies called: " + metier + " " + species
- + " " + primaryCatch + " " + targetFactorEquationContent);
- }
- try {
- // build targetFactorEquation name
- String targetFactorEquationName = metier.getName() + "-" + species.getName()
- + "(" + m.getFirstMonth() + "-" + m.getLastMonth() + ")";
-
-
- TargetSpeciesDAO dao = IsisFishDAOHelper.getTargetSpeciesDAO(metier
- .getTopiaContext());
- TargetSpecies targetSpecies = dao.create();
-
- targetSpecies.setSpecies(species);
- targetSpecies.getTargetFactorEquation().setName(
- targetFactorEquationName);
- targetSpecies.getTargetFactorEquation().setContent(
- targetFactorEquationContent);
- targetSpecies.setPrimaryCatch(primaryCatch);
- m.addSpeciesTargetSpecies(targetSpecies);
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't add TargetSpecies", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object removeTargetSpecies(MetierSeasonInfo m,
- TargetSpecies targetSpecies) {
- if (log.isDebugEnabled()) {
- log.debug("removeTargetSpecies called: " + targetSpecies);
- }
- try {
- if (targetSpecies != null) {
- m.removeSpeciesTargetSpecies(targetSpecies);
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove TargetSpecies", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- // SetOfVessels
-
- public void addEffortDescription(SetOfVessels setOfVessels, Metier metier) {
- if (log.isDebugEnabled()) {
- log.debug("addEffortDescription called: " + setOfVessels
- + " metier: " + metier);
- }
- try {
- EffortDescriptionDAO effortDescriptionPS = IsisFishDAOHelper
- .getEffortDescriptionDAO(metier.getTopiaContext());
- EffortDescription effortDescription = effortDescriptionPS.create();
- effortDescription.setPossibleMetiers(metier);
- effortDescription.update();
- setOfVessels.addPossibleMetiers(effortDescription);
- setOfVessels.update();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create EffortDescription", eee);
- }
- showMsgBox(eee);
- }
- }
-
- public Object removeEffortDescription(SetOfVessels sov,
- EffortDescription effort) {
- if (log.isTraceEnabled()) {
- log.trace("remove called");
- }
- try {
- sov.removePossibleMetiers(effort);
- sov.getTopiaContext().commitTransaction();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove entity: " + effort, eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- // Population
- public Species getSpeciesByTopiaId(TopiaContext context, String topiaId) {
- Species result = null;
- try {
- SpeciesDAO dao = IsisFishDAOHelper.getSpeciesDAO(context);
- result = dao.findByTopiaId(topiaId);
- } catch (TopiaException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get species", e);
- }
- }
- return result;
- }
-
- public Population createPopulation(TopiaContext context, Species species) {
- if (log.isTraceEnabled()) {
- log.trace("create called");
- }
- try {
- String name = "Population_new";
-
- PopulationDAO dao = IsisFishDAOHelper.getPopulationDAO(context);
- Population pop = dao.create();
- pop.setName(name);
-
- species.addPopulation(pop);
- pop.setSpecies(species);
- species.update();
- pop.update();
- context.commitTransaction();
- return pop;
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create Population", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public PopulationSeasonInfo createPopulationSeasonInfo(Population pop) {
- if (log.isDebugEnabled()) {
- log.debug("createSeasonInfo called");
- }
- PopulationSeasonInfo seasonInfo = null;
- try {
- PopulationSeasonInfoDAO dao = IsisFishDAOHelper
- .getPopulationSeasonInfoDAO(pop.getTopiaContext());
- seasonInfo = dao.create();
- seasonInfo.setFirstMonth(Month.MONTH[0]);
- seasonInfo.setLastMonth(Month.MONTH[3]);
- pop.addPopulationSeasonInfo(seasonInfo);
- seasonInfo.setPopulation(pop);
-
- // EC-20090710 ajout du code d'initailisation
- // d'un populationseasoninfo
- // il a du se perdre au changement d'interface
- // swiat>jaxx
- seasonInfo.setSimpleLengthChangeMatrix(true);
- MatrixND matrix = ((PopulationSeasonInfoImpl)seasonInfo).createNoSpacializedChangeGroupMatrix();
- seasonInfo.setLengthChangeMatrix(matrix);
-
- seasonInfo.update();
- pop.update();
- // isisContext.commitTransaction();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create PopulationSeasonInfo", eee);
- }
- showMsgBox(eee);
- }
- return seasonInfo;
- }
-
- public void removePopulationSeasonInfo(Population pop,
- PopulationSeasonInfo populationSeasonInfo) {
- if (log.isDebugEnabled()) {
- log.debug("removeSeasonInfo called");
- }
- try {
- pop.removePopulationSeasonInfo(populationSeasonInfo);
- pop.update();
- pop.getTopiaContext().commitTransaction();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove PopulationSeasonInfo", eee);
- }
- showMsgBox(eee);
- }
- }
-
- public void createMetierSeasonInfo(Metier metier) {
- if (log.isDebugEnabled()) {
- log.debug("createSeasonInfo called");
- }
- try {
- MetierSeasonInfoDAO metierSeasonInfoPS = IsisFishDAOHelper
- .getMetierSeasonInfoDAO(metier.getTopiaContext());
- MetierSeasonInfo metierSeasonInfo = metierSeasonInfoPS.create();
- metierSeasonInfo.setFirstMonth(Month.MONTH[0]);
- metierSeasonInfo.setLastMonth(Month.MONTH[3]);
- metier.addMetierSeasonInfo(metierSeasonInfo);
- metierSeasonInfo.update();
- metier.update();
- // isisContext.commitTransaction();
- } catch (Exception eee) {
- log.error("Can't create MetierSeasonInfo", eee);
- showMsgBox(eee);
- }
- }
-
- public void removeMetierSeasonInfo(Metier metier, MetierSeasonInfo info) {
- if (log.isDebugEnabled()) {
- log.debug("createSeasonInfo called");
- }
- try {
- metier.removeMetierSeasonInfo(info);
- metier.update();
- metier.getTopiaContext().commitTransaction();
-
- } catch (Exception eee) {
- log.error("Can't create MetierSeasonInfo", eee);
- showMsgBox(eee);
- }
- }
-
- public Object createRecruitmentDistribution(Population pop) {
- if (log.isTraceEnabled()) {
- log.trace("createRecruitmentDistributionontext called: " + pop);
- }
- try {
- String val = JOptionPane
- .showInputDialog(_("isisfish.message.recruitment.number.month"));
- int num = -1;
- if (val != null && !"".equals(val)) {
- try {
- num = Integer.parseInt(val);
- } catch (RuntimeException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Can't parse val: " + val, eee);
- }
- }
- }
-
- if (num > 0) {
- List<String> sem = new ArrayList<String>(num);
- for (int i = 0; i < num; i++) {
- sem.add(_("isisfish.common.month", i));
- }
- MatrixND newMat = MatrixFactory.getInstance().create(
- new List[] { sem });
-
- MatrixND mat = pop.getRecruitmentDistribution();
- if (mat != null) {
- newMat.paste(mat);
- }
- pop.setRecruitmentDistribution(newMat);
- pop.update();
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove PopulationSeasonInfo", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- // Migration
-
- public Object addMigration(PopulationSeasonInfo info,
- PopulationGroup group, Zone departure, Zone arrival, double coeff) {
- if (log.isTraceEnabled()) {
- log.trace("addMigration called");
- }
- try {
- MatrixND mat = info.getMigrationMatrix().copy();
- mat.setValue(group, departure, arrival, coeff);
- info.setMigrationMatrix(mat);
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't add migration", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object addEmigration(PopulationSeasonInfo info,
- PopulationGroup group, Zone departure, double coeff) {
- if (log.isTraceEnabled()) {
- log.trace("addEmigration called");
- }
- try {
- MatrixND mat = info.getEmigrationMatrix().copy();
- mat.setValue(group, departure, coeff);
- info.setEmigrationMatrix(mat);
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't add emigration", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- public Object addImmigration(PopulationSeasonInfo info,
- PopulationGroup group, Zone arrival, double coeff) {
- if (log.isTraceEnabled()) {
- log.trace("addImmigration called");
- }
- try {
- MatrixND mat = info.getImmigrationMatrix().copy();
- mat.setValue(group, arrival, coeff);
- info.setImmigrationMatrix(mat);
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't add immigration", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- // FisheryRegion
- /** @return TODO */
- public Object addMap(FisheryRegion fisheryRegion) {
- if (log.isTraceEnabled()) {
- log.trace("AddMap called");
- }
-
- File shp = FileUtil.getFile(".*\\.shp", "shp file");
- try {
- if (shp != null) {
- // copy shp and ssx to region map directory
- String basename = FileUtil.basename(shp, ".shp");
-
- String srcMap = shp.getPath();
- srcMap = srcMap.substring(0, srcMap.length() - ".shp".length());
- File ssx = new File(srcMap + ".ssx");
-
- RegionStorage regionStorage = RegionStorage
- .getRegion(fisheryRegion.getName());
- File destDir = regionStorage.getMapRepository();
-
- // copy shp file
- File destShp = new File(destDir, basename + ".shp");
- FileUtil.copy(shp, destShp);
-
- // copy ssx file
- File destSsx = new File(destDir, basename + ".ssx");
- if (ssx.exists()) {
- FileUtil.copy(ssx, destSsx);
- } else {
- if (log.isInfoEnabled()) {
- log.info("Ssx file don't exist, try to generate it");
- }
- SpatialIndex.createIndex(destShp.getPath(), destSsx.getPath());
- }
-
- List<String> maps = fisheryRegion.getMapFileList();
- maps.add(basename);
- fisheryRegion.setMapFileList(maps);
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't copy .shp or .ssx file for: " + shp, eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- /**
- * @param selectedMaps la list dans lequel il faut retirer la carte
- * @return TODO
- */
- public Object removeMap(FisheryRegion fisheryRegion, Object[] selectedMaps) {
- if (log.isTraceEnabled()) {
- log.trace("removeMap called");
- }
- try {
-
- List<String> maps = fisheryRegion.getMapFileList();
-
- RegionStorage regionStorage = RegionStorage.getRegion(fisheryRegion
- .getName());
- File mapDir = regionStorage.getMapRepository();
-
- for (Object map : selectedMaps) {
- maps.remove(map);
- // remove on disk too, if possible
- File shp = new File(mapDir, map + ".shp");
- shp.delete();
- File ssx = new File(mapDir, map + ".ssx");
- ssx.delete();
- }
-
- fisheryRegion.setMapFileList(maps);
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove map", eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-
- /**
- * Affiche une boite de dialogue demandant a l'utilisateur de rentrer
- * un nom de fichier, et met ce nom dans la textField.
- * Passe le saveButton en enabled pour marque que la region a ete modifié
- *
- * @param cellFile file of cells
- */
- public void loadCellFile(String cellFile) {
- if (log.isTraceEnabled()) {
- log.trace("loadCell called");
- }
- // FIXME todo loadCellFile
- }
-
- public void saveFisheryRegion(FisheryRegion fisheryRegion) {
- if (log.isTraceEnabled()) {
- log.trace("save called");
- }
- try {
- TopiaContext isisContext = fisheryRegion.getTopiaContext();
-
- // frame.setInfoText(_("isisfish.message.checking.cell"));
- int latNumber = (int) Math
- .round((fisheryRegion.getMaxLatitude() - fisheryRegion
- .getMinLatitude())
- / fisheryRegion.getCellLengthLatitude());
- int lonNumber = (int) Math
- .round((fisheryRegion.getMaxLongitude() - fisheryRegion
- .getMinLongitude())
- / fisheryRegion.getCellLengthLongitude());
-
- // frame.setProgressMin(0);
- // frame.setProgressMax(latNumber * lonNumber);
- int progresscpt = 0;
-
- // il faut peut-etre creer ou supprimer des mailles
- CellPointcomparator cellPointcomparator = new CellPointcomparator();
- CellDAO cellPS = IsisFishDAOHelper.getCellDAO(isisContext);
- List<Cell> cells = cellPS.findAll();
- Collections.sort(cells, cellPointcomparator);
- Point2D.Float point = new Point2D.Float();
-
- for (float lati = fisheryRegion.getMinLatitude(); lati < fisheryRegion
- .getMaxLatitude(); lati += fisheryRegion
- .getCellLengthLatitude()) {
- lati = Math.round(lati * 1000f);
- lati = lati / 1000.0f;
- for (float longi = fisheryRegion.getMinLongitude(); longi < fisheryRegion
- .getMaxLongitude(); longi += fisheryRegion
- .getCellLengthLongitude()) {
- longi = Math.round(longi * 1000f) / 1000.0f;
- point.setLocation(lati, longi);
- int position = Collections.binarySearch(cells, point,
- cellPointcomparator);
- if (position >= 0) {
- // deja existant on l'enleve de la liste, et on ne cree rien
- cells.remove(position);
- } else {
- // n'existe pas on la cree
- Cell cell = cellPS.create();
- cell.setName("La" + lati + "Lo" + longi);
- cell.setLatitude(lati);
- cell.setLongitude(longi);
- cell.setLand(false);
- cell.update();
- }
- // frame.setProgressValue(++progresscpt);
- }
- }
-
- // on est pas en autoUpdate donc il faut faire le update avant le commit
- fisheryRegion.update();
-
- // toutes les mailles restantes dans la liste sont des mailles en trop
- // on les supprimes
-
- progresscpt = 0;
- for (Cell cell : cells) {
- // FIXME il faudrait aussi rechercher les objets dependants
- // des mailles que l'on va supprimer et demander confirmation
- // a l'utilisateur qu'il souhaite reellement supprimer tous
- // ces objets. Si ce n'est pas le cas, on sort tout de suite
- // avant le commit
- cellPS.delete(cell);
- }
- isisContext.commitTransaction();
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.save.region"), eee);
- }
- showMsgBox(eee);
- }
- }
-
- public Object checkFisheryRegion(FisheryRegion fisheryRegion) {
- try {
- if (log.isTraceEnabled()) {
- log.trace("check called: ");
- }
- // frame.setInfoText(_("isisfish.message.check.region"));
- CheckResult result = new CheckResult();
- CheckRegion.check(fisheryRegion, result);
- CheckResultFrame dialog = new CheckResultFrame();
- dialog.setCheckResult(result);
- dialog.setVisible(true);
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(_("isisfish.error.check.region"), eee);
- }
- showMsgBox(eee);
- }
- return null;
- }
-}
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java (from rev 2480, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,1258 @@
+/* *##%
+ * Copyright (C) 2005 - 2009
+ * Ifremer, Code Lutin, Cedric 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.input;
+
+import static fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil.selectSimulation;
+import static javax.swing.JOptionPane.showInputDialog;
+import static org.codelutin.i18n.I18n._;
+
+import java.awt.geom.Point2D;
+import java.io.File;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import jaxx.runtime.swing.ErrorDialogUI;
+
+import org.apache.commons.beanutils.MethodUtils;
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixFactory;
+import org.codelutin.math.matrix.MatrixND;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.topia.TopiaException;
+import org.codelutin.topia.persistence.TopiaDAO;
+import org.codelutin.topia.persistence.TopiaEntity;
+import org.codelutin.util.FileUtil;
+import org.codelutin.widget.editor.Editor;
+
+import com.bbn.openmap.layer.shape.SpatialIndex;
+
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.datastore.FormuleStorage;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.StorageException;
+import fr.ifremer.isisfish.datastore.update.ImportFromV2;
+import fr.ifremer.isisfish.entities.Cell;
+import fr.ifremer.isisfish.entities.CellDAO;
+import fr.ifremer.isisfish.entities.EffortDescription;
+import fr.ifremer.isisfish.entities.EffortDescriptionDAO;
+import fr.ifremer.isisfish.entities.Equation;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Formule;
+import fr.ifremer.isisfish.entities.Gear;
+import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.MetierSeasonInfo;
+import fr.ifremer.isisfish.entities.MetierSeasonInfoDAO;
+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;
+import fr.ifremer.isisfish.types.Month;
+import fr.ifremer.isisfish.ui.input.check.CheckRegion;
+import fr.ifremer.isisfish.ui.input.check.CheckResult;
+import fr.ifremer.isisfish.ui.input.check.CheckResultFrame;
+import fr.ifremer.isisfish.util.CellPointcomparator;
+
+/**
+ * All code used in input UI.
+ *
+ * Created: 1 aout 2005 18:37:25 CEST
+ *
+ * @author Benjamin POUSSIN <poussin at codelutin.com>
+ * @version $Revision: 1312 $
+ *
+ * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
+ * by : $Author: sletellier $
+ */
+public class InputAction {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(InputAction.class);
+
+ public InputAction() {
+ if (log.isDebugEnabled()) {
+ log.debug("new instance");
+ }
+ }
+
+ protected void showMsgBox(Exception eee) {
+ ErrorDialogUI.showError(eee);
+ }
+
+ /**
+ * Exporter la region dans un zip
+ *
+ * @return TODO
+ */
+ public File importRegion() {
+ File file = null;
+ try {
+ file = FileUtil.getFile(".*.zip$",
+ _("isisfish.message.import.region.zipped"));
+ if (file != null) {
+ RegionStorage.importZip(file);
+ }
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't import region", e);
+ }
+ showMsgBox(e);
+ }
+ return file;
+ }
+
+ /**
+ * Exporter la region dans un zip
+ *
+ * @return TODO
+ */
+ public File importRegionAndRename() {
+ File file = null;
+ try {
+ file = FileUtil.getFile(".*.zip$",
+ _("isisfish.message.import.region.zipped"));
+ if (file != null) {
+
+ String newName = showInputDialog(_("isisfish.message.name.imported.region"));
+ RegionStorage.importAndRenameZip(file, newName);
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't import region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return file;
+ }
+
+ /**
+ * Importer la region depuis un fichier XML de la version 2
+ *
+ * @return TODO
+ */
+ public File importV2Region() {
+ File file = null;
+ try {
+ file = FileUtil.getFile(".*.xml$",
+ _("isisfish.message.import.region.xml"));
+ if (file != null) {
+
+ new ImportFromV2(true).importXML(file);
+
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't import region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return file;
+ }
+
+ /**
+ * Extract from a simulation the region, and rename it with name given
+ * by user.
+ *
+ * @return msg
+ */
+ public String importRegionFromSimulation() {
+
+ // first step select a simulation and new region name
+ String simulationName;
+ try {
+ //TODO Should use a shared model ?
+ simulationName = selectSimulation(SimulationStorage
+ .getSimulationNames());
+ if (simulationName == null) {
+ return null;
+ }
+
+ } catch (Exception e) {
+ String msg = _("isisfish.error.no.select.simulation");
+ if (log.isWarnEnabled()) {
+ log.warn(msg);
+ }
+ e.printStackTrace();
+ showMsgBox(e);
+ return null;
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("simulation used " + simulationName);
+ }
+
+ // ask new region name
+ String regionName = showInputDialog(
+ _("isisfish.message.import.region.name"), "region from "
+ + simulationName);
+ if (regionName == null || "".equals(regionName)) {
+ return null;
+ }
+ if (RegionStorage.getRegionNames().contains(regionName)) {
+ return null;
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("new region name " + regionName);
+ }
+
+ try {
+ SimulationStorage.getSimulation(simulationName).extractRegion(
+ regionName);
+ } catch (StorageException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't extract region", e);
+ }
+ showMsgBox(e);
+ }
+ return regionName;
+ }
+
+ /**
+ * Exporter la region dans un zip
+ *
+ * @return TODO
+ */
+ public File exportRegion(RegionStorage regionStorage) {
+ File file = null;
+ try {
+ file = FileUtil.getFile(".*.zip$",
+ _("isisfish.message.import.region.zipped"));
+ if (file != null) {
+ int resp = JOptionPane.YES_OPTION;
+ if (file.exists()) {
+ resp = JOptionPane.showConfirmDialog(null,
+ _("isisfish.message.file.overwrite"));
+ }
+ if (resp == JOptionPane.YES_OPTION) {
+ regionStorage.createZip(file);
+ }
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't export region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return file;
+ }
+
+ /**
+ * Copy la region avec un autre nom
+ *
+ * @return TODO
+ */
+ public String copyRegion(RegionStorage regionStorage) {
+ String newName = null;
+ try {
+ newName = showInputDialog(_("isisfish.message.new.region.name"));
+
+ File zip = regionStorage.createZip();
+ RegionStorage.importAndRenameZip(zip, newName);
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't copy region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return newName;
+ }
+
+ /**
+ * Remove region
+ *
+ * @param cvsDelete if true delete region in CVS too
+ * @return TODO
+ */
+ public String removeRegion(RegionStorage regionStorage, boolean cvsDelete) {
+ String result = null;
+ try {
+ int resp = JOptionPane.showConfirmDialog(null, _(
+ "isisfish.message.confirm.remove.region", regionStorage
+ .getName()));
+ if (resp == JOptionPane.YES_OPTION) {
+ regionStorage.delete(cvsDelete);
+ result = _("isisfish.message.region.removed");
+
+ } else {
+ result = _("isisfish.message.region.remove.canceled");
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return result;
+ }
+
+ /**
+ * Remove region
+ *
+ * @return TODO
+ */
+ public String commitRegionInCVS(RegionStorage regionStorage) {
+ String result = null;
+ try {
+ String msg = regionStorage.getCommentForNextCommit();
+ JTextArea text = new JTextArea(msg);
+ int resp = JOptionPane.showOptionDialog(null,
+ new JScrollPane(text), _("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();
+ result = _("isisfish.message.region.commited");
+ } else {
+ result = _("isisfish.message.commit.region.canceled");
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't export region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return result;
+ }
+
+ /**
+ * load region.
+ * <p/>
+ * RegionStorage, TopiaContext, FisheryRegion are put in uiContext data.
+ * <p/>
+ * tree ans
+ *
+ * @param ui TODO
+ * @param name name of region
+ * @return loaded region
+ */
+ public FisheryRegion loadRegion(jaxx.runtime.JAXXObject ui, String name) {
+ if (log.isDebugEnabled()) {
+ log.debug("loadRegion : " + name);
+ }
+ try {
+ RegionStorage regionStorage = null;
+ FisheryRegion fisheryRegion = null;
+ TopiaContext isisContext = null;
+ if (name != null && !" ".equals(name)) {
+ regionStorage = RegionStorage.getRegion(name);
+ isisContext = regionStorage.getStorage().beginTransaction();
+ fisheryRegion = RegionStorage.getFisheryRegion(isisContext);
+ ui.setContextValue(regionStorage);
+ ui.setContextValue(isisContext);
+ return fisheryRegion;
+ // FIXME session shoul be closed
+ // but make lazy init later
+ //isisContext.rollbackTransaction();
+ //isisContext.closeContext();
+ }
+ return null;
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't load region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ /**
+ * Create new region, and select it in combo, and show input pane region in
+ * input area.
+ *
+ * @param name name of the new region
+ */
+ public void newRegion(String name) {
+ if (log.isTraceEnabled()) {
+ log.trace("newRegion called");
+ }
+ try {
+ if ("".equals(name)) {
+ // showMsgBox("error " + _("isisfish.error.region.name.empty"));
+ }
+ if (RegionStorage.getRegionNames().contains(name)) {
+ // showMsgBox("Error " + _("isisfish.error.region.already.exists"));
+ }
+ RegionStorage.create(name);
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create region", eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ /**
+ * Permet de creer simplement un nouvelle objet portant un nom par defaut.
+ * Le nouvel element est automatiquement selectionné dans l'arbre
+ *
+ * @param type le type de l'entite a creer, le type est compose seulement du
+ * nom de l'entite et pas du package.
+ * @return null ou un fenetre d'erreur
+ */
+ public TopiaEntity create(TopiaContext isisContext, String type) {
+ if (log.isTraceEnabled()) {
+ log.trace("create called for " + type);
+ }
+ try {
+ //TODO use the IsisFishEntityEnum for this purpose :
+ //TopiaDAO<TopiaEntity> dao = IsisFishEntityEnum.getEntry(type).getDAO(isisContext);
+ String name = type + "_new";
+
+ Method method = MethodUtils.getAccessibleMethod(
+ IsisFishDAOHelper.class, "get" + type + "DAO",
+ TopiaContext.class);
+ TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) method.invoke(
+ null, isisContext);
+
+ TopiaEntity entity = dao.create("name", name);
+ entity.update();
+ isisContext.commitTransaction();
+ return entity;
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create entity", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ /**
+ * Save entity passed in argument, and commit
+ *
+ * @return the saved entity
+ */
+ public TopiaEntity save(TopiaEntity selected) {
+ if (log.isTraceEnabled()) {
+ log.trace("save called");
+ }
+ try {
+ if (selected == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Try to save null entity");
+ }
+ return null;
+ }
+ // on est pas en autoUpdate donc il faut faire le update avant le
+ // commit
+ selected.update();
+
+ selected.getTopiaContext().commitTransaction();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't save region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return selected;
+ }
+
+ /**
+ * Cancel all modification on entity (rollback), and force reload it and
+ * refresh all ui component that name match 'type'Tab
+ *
+ * @return the roolbacked entity
+ */
+ public TopiaEntity cancel(TopiaEntity selected) {
+ if (log.isTraceEnabled()) {
+ log.trace("cancel called");
+ }
+ try {
+ TopiaContext isisContext = selected.getTopiaContext();
+ isisContext.rollbackTransaction();
+
+ // reload the object
+ // can't be null here, or allready null before !!!
+ //if (selected != null) {
+ // FIXME don't modify parameters
+ selected = isisContext.findByTopiaId(selected.getTopiaId());
+ //}
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't cancel modification in region", eee);
+ }
+ showMsgBox(eee);
+ }
+ return selected;
+ }
+
+ /**
+ * Delete one entity and commit the change, try to selected intelligently
+ * other node in tree.
+ * <p/>
+ * Refresh all ui component where name match "input<entity type without
+ * package >.*"
+ *
+ * @return if ok return null else OutView error
+ */
+ public String remove(TopiaEntity selected) {
+ if (log.isTraceEnabled()) {
+ log.trace("remove called");
+ }
+ String msg = "";
+ try {
+ boolean doDelete;
+ List<TopiaEntity> allWillBeRemoved = selected.getComposite();
+ if (allWillBeRemoved.size() > 0) {
+ String text = _("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"),
+ JOptionPane.YES_NO_OPTION);
+ doDelete = resp == JOptionPane.YES_OPTION;
+ } else {
+ String text = _("isisfish.message.confirm.delete.object",
+ selected.toString());
+ int resp = JOptionPane.showConfirmDialog(null, text,
+ _("isisfish.message.delete.entity"),
+ JOptionPane.YES_NO_OPTION);
+ doDelete = resp == JOptionPane.YES_OPTION;
+ }
+
+ if (doDelete) {
+ selected.delete();
+ selected.getTopiaContext().commitTransaction();
+ msg = _("isisfish.message.remove.finished");
+ } else {
+ msg = _("isisfish.message.remove.canceled");
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove entity: " + selected, eee);
+ }
+ showMsgBox(eee);
+ }
+ return msg;
+ }
+
+ /**
+ * Save an Equation as model, to reuse it for other equation
+ *
+ * @param eq equation to put in models
+ * @return if ok return null else OutputView error message
+ */
+ public Object saveEquationAsModel(Equation eq) {
+ try {
+ if (eq != null) {
+ String name = showInputDialog("");
+ /*if ("".equals(name)) {
+ showMsgBox("Error " +_("isisfish.error.invalid.equation.name"));
+ }*/
+ if (name != null) {
+ FormuleStorage storage = FormuleStorage.createFormule(eq
+ .getCategory(), name, eq.getLanguage());
+ storage.setContent(eq.getContent());
+ }
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't save equation as model", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ /**
+ * Save an Equation as model, to reuse it for other equation
+ *
+ * @param category category for this equation
+ * @param language equation to put in models
+ * @param content content ?
+ * @return if ok return null else OutputView error message
+ */
+ public Object saveAsModel(String category, String language, String content) {
+ try {
+ String name = showInputDialog("isisfish.message.saveModel.dialog");
+ /*if ("".equals(name)) {
+ showMsgBox("Error " +_("isisfish.error.invalid.equation.name"));
+ }*/
+ if (name != null) {
+ FormuleStorage storage = FormuleStorage.createFormule(category,
+ name, language);
+ storage.setContent(content);
+ }
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't save equation as model", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object openEditor(String category, String name, Class javaInterface,
+ String content, Editor editor) {
+ if (log.isTraceEnabled()) {
+ log.trace("openEditor");
+ }
+ try {
+ EquationEditorPaneUI pane = new EquationEditorPaneUI();
+ pane.setEquation(category, name, javaInterface, content);
+ pane.setVisible(true);
+ if (pane.isOk() && editor != null) {
+ editor.setText(pane.getEditor().getText());
+ }
+ pane.dispose();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't open editor", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ protected List<Formule> getFormules(TopiaContext isisContext, String name) {
+ return FormuleStorage.getFormules(isisContext, name);
+ }
+
+ // InputGear
+
+ public Object addSelectivity(Population pop, String equation, Gear gear) {
+ try {
+
+ SelectivityDAO dao = IsisFishDAOHelper.getSelectivityDAO(pop
+ .getTopiaContext());
+ Selectivity selectivity = dao.create();
+
+ selectivity.setGear(gear);
+ selectivity.setPopulation(pop);
+ selectivity.getEquation().setContent(equation);
+ selectivity.update();
+
+ gear.addPopulationSelectivity(selectivity);
+ gear.update();
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't add selectivity", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object removeSelectivity(Gear gear, Selectivity selectivity) {
+ if (log.isTraceEnabled()) {
+ log.trace("removeTargetSpecies called: " + selectivity);
+ }
+ try {
+ if (gear != null && selectivity != null) {
+ gear.removePopulationSelectivity(selectivity);
+ }
+ } catch (Exception eee) {
+ log.error("Can't remove TargetSpecies", eee);
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ // InputMetier
+
+ public Object createSeasonInfo(Metier metier) {
+ if (log.isTraceEnabled()) {
+ log.trace("createSeasonInfo called");
+ }
+ try {
+ MetierSeasonInfoDAO metierSeasonInfoPS = IsisFishDAOHelper
+ .getMetierSeasonInfoDAO(metier.getTopiaContext());
+ MetierSeasonInfo metierSeasonInfo = metierSeasonInfoPS.create();
+ metierSeasonInfo.setFirstMonth(Month.MONTH[0]);
+ metierSeasonInfo.setLastMonth(Month.MONTH[3]);
+ metier.addMetierSeasonInfo(metierSeasonInfo);
+ metierSeasonInfo.update();
+ metier.update();
+ // isisContext.commitTransaction();
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create MetierSeasonInfo", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object removeSeasonInfo(Metier metier, MetierSeasonInfo info) {
+ if (log.isTraceEnabled()) {
+ log.trace("createSeasonInfo called");
+ }
+ try {
+ metier.removeMetierSeasonInfo(info);
+ metier.update();
+ metier.getTopiaContext().commitTransaction();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create MetierSeasonInfo", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object addTargetSpecies(Metier metier, MetierSeasonInfo m,
+ Species species, String targetFactorEquationContent, boolean primaryCatch) {
+ if (log.isDebugEnabled()) {
+ log.debug("addTargetSpecies called: " + metier + " " + species
+ + " " + primaryCatch + " " + targetFactorEquationContent);
+ }
+ try {
+ // build targetFactorEquation name
+ String targetFactorEquationName = metier.getName() + "-" + species.getName()
+ + "(" + m.getFirstMonth() + "-" + m.getLastMonth() + ")";
+
+
+ TargetSpeciesDAO dao = IsisFishDAOHelper.getTargetSpeciesDAO(metier
+ .getTopiaContext());
+ TargetSpecies targetSpecies = dao.create();
+
+ targetSpecies.setSpecies(species);
+ targetSpecies.getTargetFactorEquation().setName(
+ targetFactorEquationName);
+ targetSpecies.getTargetFactorEquation().setContent(
+ targetFactorEquationContent);
+ targetSpecies.setPrimaryCatch(primaryCatch);
+ m.addSpeciesTargetSpecies(targetSpecies);
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't add TargetSpecies", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object removeTargetSpecies(MetierSeasonInfo m,
+ TargetSpecies targetSpecies) {
+ if (log.isDebugEnabled()) {
+ log.debug("removeTargetSpecies called: " + targetSpecies);
+ }
+ try {
+ if (targetSpecies != null) {
+ m.removeSpeciesTargetSpecies(targetSpecies);
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove TargetSpecies", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ // SetOfVessels
+
+ public void addEffortDescription(SetOfVessels setOfVessels, Metier metier) {
+ if (log.isDebugEnabled()) {
+ log.debug("addEffortDescription called: " + setOfVessels
+ + " metier: " + metier);
+ }
+ try {
+ EffortDescriptionDAO effortDescriptionPS = IsisFishDAOHelper
+ .getEffortDescriptionDAO(metier.getTopiaContext());
+ EffortDescription effortDescription = effortDescriptionPS.create();
+ // EC20090715 : c'est la classe d'association
+ // qui en étant sauvee, sauve les relations en base
+ // il faut bien faire les set des deux cotes
+ effortDescription.setSetOfVessels(setOfVessels);
+ effortDescription.setPossibleMetiers(metier);
+ effortDescription.update();
+ setOfVessels.addPossibleMetiers(effortDescription);
+ setOfVessels.update();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create EffortDescription", eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ public Object removeEffortDescription(SetOfVessels sov,
+ EffortDescription effort) {
+ if (log.isTraceEnabled()) {
+ log.trace("remove called");
+ }
+ try {
+ sov.removePossibleMetiers(effort);
+ sov.getTopiaContext().commitTransaction();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove entity: " + effort, eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ // Population
+ public Species getSpeciesByTopiaId(TopiaContext context, String topiaId) {
+ Species result = null;
+ try {
+ SpeciesDAO dao = IsisFishDAOHelper.getSpeciesDAO(context);
+ result = dao.findByTopiaId(topiaId);
+ } catch (TopiaException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get species", e);
+ }
+ }
+ return result;
+ }
+
+ public Population createPopulation(TopiaContext context, Species species) {
+ if (log.isTraceEnabled()) {
+ log.trace("create called");
+ }
+ try {
+ String name = "Population_new";
+
+ PopulationDAO dao = IsisFishDAOHelper.getPopulationDAO(context);
+ Population pop = dao.create();
+ pop.setName(name);
+
+ species.addPopulation(pop);
+ pop.setSpecies(species);
+ species.update();
+ pop.update();
+ context.commitTransaction();
+ return pop;
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create Population", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public PopulationSeasonInfo createPopulationSeasonInfo(Population pop) {
+ if (log.isDebugEnabled()) {
+ log.debug("createSeasonInfo called");
+ }
+ PopulationSeasonInfo seasonInfo = null;
+ try {
+ PopulationSeasonInfoDAO dao = IsisFishDAOHelper
+ .getPopulationSeasonInfoDAO(pop.getTopiaContext());
+ seasonInfo = dao.create();
+ seasonInfo.setFirstMonth(Month.MONTH[0]);
+ seasonInfo.setLastMonth(Month.MONTH[3]);
+ pop.addPopulationSeasonInfo(seasonInfo);
+ seasonInfo.setPopulation(pop);
+
+ // EC-20090710 ajout du code d'initailisation
+ // d'un populationseasoninfo
+ // il a du se perdre au changement d'interface
+ // swiat>jaxx
+ seasonInfo.setSimpleLengthChangeMatrix(true);
+ MatrixND matrix = ((PopulationSeasonInfoImpl)seasonInfo).createNoSpacializedChangeGroupMatrix();
+ seasonInfo.setLengthChangeMatrix(matrix);
+
+ seasonInfo.update();
+ pop.update();
+ // isisContext.commitTransaction();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create PopulationSeasonInfo", eee);
+ }
+ showMsgBox(eee);
+ }
+ return seasonInfo;
+ }
+
+ public void removePopulationSeasonInfo(Population pop,
+ PopulationSeasonInfo populationSeasonInfo) {
+ if (log.isDebugEnabled()) {
+ log.debug("removeSeasonInfo called");
+ }
+ try {
+ pop.removePopulationSeasonInfo(populationSeasonInfo);
+ pop.update();
+ pop.getTopiaContext().commitTransaction();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove PopulationSeasonInfo", eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ public void createMetierSeasonInfo(Metier metier) {
+ if (log.isDebugEnabled()) {
+ log.debug("createSeasonInfo called");
+ }
+ try {
+ MetierSeasonInfoDAO metierSeasonInfoPS = IsisFishDAOHelper
+ .getMetierSeasonInfoDAO(metier.getTopiaContext());
+ MetierSeasonInfo metierSeasonInfo = metierSeasonInfoPS.create();
+ metierSeasonInfo.setFirstMonth(Month.MONTH[0]);
+ metierSeasonInfo.setLastMonth(Month.MONTH[3]);
+ metier.addMetierSeasonInfo(metierSeasonInfo);
+ metierSeasonInfo.update();
+ metier.update();
+ // isisContext.commitTransaction();
+ } catch (Exception eee) {
+ log.error("Can't create MetierSeasonInfo", eee);
+ showMsgBox(eee);
+ }
+ }
+
+ public void removeMetierSeasonInfo(Metier metier, MetierSeasonInfo info) {
+ if (log.isDebugEnabled()) {
+ log.debug("createSeasonInfo called");
+ }
+ try {
+ metier.removeMetierSeasonInfo(info);
+ metier.update();
+ metier.getTopiaContext().commitTransaction();
+
+ } catch (Exception eee) {
+ log.error("Can't create MetierSeasonInfo", eee);
+ showMsgBox(eee);
+ }
+ }
+
+ public Object createRecruitmentDistribution(Population pop) {
+ if (log.isTraceEnabled()) {
+ log.trace("createRecruitmentDistributionontext called: " + pop);
+ }
+ try {
+ String val = JOptionPane
+ .showInputDialog(_("isisfish.message.recruitment.number.month"));
+ int num = -1;
+ if (val != null && !"".equals(val)) {
+ try {
+ num = Integer.parseInt(val);
+ } catch (RuntimeException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't parse val: " + val, eee);
+ }
+ }
+ }
+
+ if (num > 0) {
+ List<String> sem = new ArrayList<String>(num);
+ for (int i = 0; i < num; i++) {
+ sem.add(_("isisfish.common.month", i));
+ }
+ MatrixND newMat = MatrixFactory.getInstance().create(
+ new List[] { sem });
+
+ MatrixND mat = pop.getRecruitmentDistribution();
+ if (mat != null) {
+ newMat.paste(mat);
+ }
+ pop.setRecruitmentDistribution(newMat);
+ pop.update();
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove PopulationSeasonInfo", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ // Migration
+
+ public Object addMigration(PopulationSeasonInfo info,
+ PopulationGroup group, Zone departure, Zone arrival, double coeff) {
+ if (log.isTraceEnabled()) {
+ log.trace("addMigration called");
+ }
+ try {
+ MatrixND mat = info.getMigrationMatrix().copy();
+ mat.setValue(group, departure, arrival, coeff);
+ info.setMigrationMatrix(mat);
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't add migration", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object addEmigration(PopulationSeasonInfo info,
+ PopulationGroup group, Zone departure, double coeff) {
+ if (log.isTraceEnabled()) {
+ log.trace("addEmigration called");
+ }
+ try {
+ MatrixND mat = info.getEmigrationMatrix().copy();
+ mat.setValue(group, departure, coeff);
+ info.setEmigrationMatrix(mat);
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't add emigration", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ public Object addImmigration(PopulationSeasonInfo info,
+ PopulationGroup group, Zone arrival, double coeff) {
+ if (log.isTraceEnabled()) {
+ log.trace("addImmigration called");
+ }
+ try {
+ MatrixND mat = info.getImmigrationMatrix().copy();
+ mat.setValue(group, arrival, coeff);
+ info.setImmigrationMatrix(mat);
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't add immigration", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ // FisheryRegion
+ /** @return TODO */
+ public Object addMap(FisheryRegion fisheryRegion) {
+ if (log.isTraceEnabled()) {
+ log.trace("AddMap called");
+ }
+
+ File shp = FileUtil.getFile(".*\\.shp", "shp file");
+ try {
+ if (shp != null) {
+ // copy shp and ssx to region map directory
+ String basename = FileUtil.basename(shp, ".shp");
+
+ String srcMap = shp.getPath();
+ srcMap = srcMap.substring(0, srcMap.length() - ".shp".length());
+ File ssx = new File(srcMap + ".ssx");
+
+ RegionStorage regionStorage = RegionStorage
+ .getRegion(fisheryRegion.getName());
+ File destDir = regionStorage.getMapRepository();
+
+ // copy shp file
+ File destShp = new File(destDir, basename + ".shp");
+ FileUtil.copy(shp, destShp);
+
+ // copy ssx file
+ File destSsx = new File(destDir, basename + ".ssx");
+ if (ssx.exists()) {
+ FileUtil.copy(ssx, destSsx);
+ } else {
+ if (log.isInfoEnabled()) {
+ log.info("Ssx file don't exist, try to generate it");
+ }
+ SpatialIndex.createIndex(destShp.getPath(), destSsx.getPath());
+ }
+
+ List<String> maps = fisheryRegion.getMapFileList();
+ maps.add(basename);
+ fisheryRegion.setMapFileList(maps);
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't copy .shp or .ssx file for: " + shp, eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ /**
+ * @param selectedMaps la list dans lequel il faut retirer la carte
+ * @return TODO
+ */
+ public Object removeMap(FisheryRegion fisheryRegion, Object[] selectedMaps) {
+ if (log.isTraceEnabled()) {
+ log.trace("removeMap called");
+ }
+ try {
+
+ List<String> maps = fisheryRegion.getMapFileList();
+
+ RegionStorage regionStorage = RegionStorage.getRegion(fisheryRegion
+ .getName());
+ File mapDir = regionStorage.getMapRepository();
+
+ for (Object map : selectedMaps) {
+ maps.remove(map);
+ // remove on disk too, if possible
+ File shp = new File(mapDir, map + ".shp");
+ shp.delete();
+ File ssx = new File(mapDir, map + ".ssx");
+ ssx.delete();
+ }
+
+ fisheryRegion.setMapFileList(maps);
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove map", eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+
+ /**
+ * Affiche une boite de dialogue demandant a l'utilisateur de rentrer
+ * un nom de fichier, et met ce nom dans la textField.
+ * Passe le saveButton en enabled pour marque que la region a ete modifié
+ *
+ * @param cellFile file of cells
+ */
+ public void loadCellFile(String cellFile) {
+ if (log.isTraceEnabled()) {
+ log.trace("loadCell called");
+ }
+ // FIXME todo loadCellFile
+ }
+
+ public void saveFisheryRegion(FisheryRegion fisheryRegion) {
+ if (log.isTraceEnabled()) {
+ log.trace("save called");
+ }
+ try {
+ TopiaContext isisContext = fisheryRegion.getTopiaContext();
+
+ // frame.setInfoText(_("isisfish.message.checking.cell"));
+ int latNumber = (int) Math
+ .round((fisheryRegion.getMaxLatitude() - fisheryRegion
+ .getMinLatitude())
+ / fisheryRegion.getCellLengthLatitude());
+ int lonNumber = (int) Math
+ .round((fisheryRegion.getMaxLongitude() - fisheryRegion
+ .getMinLongitude())
+ / fisheryRegion.getCellLengthLongitude());
+
+ // frame.setProgressMin(0);
+ // frame.setProgressMax(latNumber * lonNumber);
+ int progresscpt = 0;
+
+ // il faut peut-etre creer ou supprimer des mailles
+ CellPointcomparator cellPointcomparator = new CellPointcomparator();
+ CellDAO cellPS = IsisFishDAOHelper.getCellDAO(isisContext);
+ List<Cell> cells = cellPS.findAll();
+ Collections.sort(cells, cellPointcomparator);
+ Point2D.Float point = new Point2D.Float();
+
+ for (float lati = fisheryRegion.getMinLatitude(); lati < fisheryRegion
+ .getMaxLatitude(); lati += fisheryRegion
+ .getCellLengthLatitude()) {
+ lati = Math.round(lati * 1000f);
+ lati = lati / 1000.0f;
+ for (float longi = fisheryRegion.getMinLongitude(); longi < fisheryRegion
+ .getMaxLongitude(); longi += fisheryRegion
+ .getCellLengthLongitude()) {
+ longi = Math.round(longi * 1000f) / 1000.0f;
+ point.setLocation(lati, longi);
+ int position = Collections.binarySearch(cells, point,
+ cellPointcomparator);
+ if (position >= 0) {
+ // deja existant on l'enleve de la liste, et on ne cree rien
+ cells.remove(position);
+ } else {
+ // n'existe pas on la cree
+ Cell cell = cellPS.create();
+ cell.setName("La" + lati + "Lo" + longi);
+ cell.setLatitude(lati);
+ cell.setLongitude(longi);
+ cell.setLand(false);
+ cell.update();
+ }
+ // frame.setProgressValue(++progresscpt);
+ }
+ }
+
+ // on est pas en autoUpdate donc il faut faire le update avant le commit
+ fisheryRegion.update();
+
+ // toutes les mailles restantes dans la liste sont des mailles en trop
+ // on les supprimes
+
+ progresscpt = 0;
+ for (Cell cell : cells) {
+ // FIXME il faudrait aussi rechercher les objets dependants
+ // des mailles que l'on va supprimer et demander confirmation
+ // a l'utilisateur qu'il souhaite reellement supprimer tous
+ // ces objets. Si ce n'est pas le cas, on sort tout de suite
+ // avant le commit
+ cellPS.delete(cell);
+ }
+ isisContext.commitTransaction();
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("isisfish.error.save.region"), eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ public Object checkFisheryRegion(FisheryRegion fisheryRegion) {
+ try {
+ if (log.isTraceEnabled()) {
+ log.trace("check called: ");
+ }
+ // frame.setInfoText(_("isisfish.message.check.region"));
+ CheckResult result = new CheckResult();
+ CheckRegion.check(fisheryRegion, result);
+ CheckResultFrame dialog = new CheckResultFrame();
+ dialog.setCheckResult(result);
+ dialog.setVisible(true);
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("isisfish.error.check.region"), eee);
+ }
+ showMsgBox(eee);
+ }
+ return null;
+ }
+}
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,206 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005 - 2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
--->
-<JPanel layout='{new BorderLayout()}' abstract="true">
-
- <!-- UI state when editing. If no entity selected, actif = false -->
- <Boolean id='actif' javaBean='false'/>
-
- <!-- True only for sensitivity simulation -->
- <Boolean id='sensitivity' javaBean='false'/>
-
- <!-- Next button title -->
- <java.lang.String id='buttonTitle' javaBean='""'/>
-
- <!-- Next path -->
- <java.lang.String id='nextPath' javaBean='null'/>
-
- <jaxx.runtime.swing.BlockingLayerUI id='layerUI'
- blockIcon='{SwingUtil.createImageIcon("building.png")}'
- acceptIcon='{SwingUtil.createImageIcon("building_add.png")}'
- useIcon='true'
- blockingColor='{new Color(50,50,50)}'
- acceptAction='{new AbstractAction() {
- private static final long serialVersionUID = 1L;
- @Override
- public void actionPerformed(ActionEvent e) {
- accept(e);
- }
- }}' />
- <!-- Sensitivity UI bloking layer -->
- <jaxx.runtime.swing.BlockingLayerUI2 id='layerUI2'
- blockIcon='{SwingUtil.createImageIcon("building.png")}'
- acceptIcon='{SwingUtil.createImageIcon("building_add.png")}'
- acceptAction='{new AbstractAction() {
- private static final long serialVersionUID = 1L;
- @Override
- public void actionPerformed(ActionEvent e) {
- accept(e);
- }
- }}' />
-
- <script><![CDATA[
-import fr.ifremer.isisfish.ui.WelcomePanelUI;
-import fr.ifremer.isisfish.entities.FisheryRegion;
-import org.codelutin.topia.persistence.TopiaEntity;
-import javax.swing.JComponent;
-import fr.ifremer.isisfish.ui.util.UtilsUI;
-import fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI;
-import fr.ifremer.isisfish.ui.sensitivity.EditorHelper;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener;
-
-protected ChangeListener tabbedPaneChangeListener;
-
-/**
- * This method is UI entry point.
- *
- * It's called :
- * - by input tree to first display UI
- * - by input verifier on cancel action
- *
- * 20090602 chatellier : make abstract, must be implemented !
- */
-public abstract void refresh();
-
-/**
- * This is a hack for tabbed UI.
- *
- * In this case of UI, they have multiples save/cancel
- * buttons, they have to be manually activated
- * on tab siwtching.
- */
-public abstract void setActionButtons();
-
-public InputAction getAction() {
- return getContextValue(InputAction.class);
-}
-public InputSaveVerifier getVerifier() {
- return getContextValue(InputSaveVerifier.class);
-}
-public FisheryRegion getRegion() {
- return getContextValue(FisheryRegion.class);
-}
-public void setInfoText(String msg) {
- WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
- if (root != null){
- root.setInfoText(msg);
- }
-}
-protected void goTo() {
- getParentContainer(InputUI.class).setTreeSelection(getNextPath());
-}
-
-/**
- * Mettre a jour la region dans une map si necessaire.
- *
- * @param map la map a mettre a jour si necessaire
- */
-protected void refreshRegionInMap(fr.ifremer.isisfish.map.IsisMapBean map) {
- FisheryRegion fisheryRegion = map.getFisheryRegion();
- FisheryRegion regionFromContext = getRegion();
- if (fisheryRegion == null || !fisheryRegion.equals(regionFromContext)) {
- log.info("use now " + regionFromContext + " in map " + map);
- map.setFisheryRegion(regionFromContext);
- }
-}
-
-
-// TODO this method cause a lot of probleme
-// must cast TopiaEntity to impl in inherited UIs...
-// 20090602 chatellier : useless method ? cause a lot of cast problem
-//public void setBean(TopiaEntity t) {}
-
-public void setLayer(boolean active) {
- if (this.get$objectMap() != null && active) {
- for (JComponent boxed : SwingUtil.getLayeredComponents(this)) {
- // Verifie si dans l'entré existe dans le fichier sensitivity.properties
- Class classBean = (Class)boxed.getClientProperty("bean");
- String method = (String)boxed.getClientProperty("method");
- boolean isSensitivityFactorEnabled = false;
- if (classBean != null) {
- isSensitivityFactorEnabled = UtilsUI.isSensitivityFactorEnabled(classBean.getSimpleName().replace("Impl", "") + "." + method);
- }
- if (isSensitivityFactorEnabled) {
- jaxx.runtime.swing.BlockingLayerUI2 ui = layerUI2.clone();
- SwingUtil.getLayer(boxed).setUI(ui);
- } else {
- jaxx.runtime.swing.BlockingLayerUI ui = layerUI.clone();
- ui.setBlock(true);
- ui.setUseIcon(isActif());
- SwingUtil.getLayer(boxed).setUI(ui);
- }
- }
- }
-}
-
-protected void accept(ActionEvent e) {
- JComponent source = (JComponent) e.getSource();
- Class classBean = (Class)source.getClientProperty("bean");
- String beanID = (String)source.getClientProperty("beanID");
- TopiaEntity bean = null;
- if (beanID == null){
- bean = getVerifier().getEntity(classBean);
- }
- else{
- bean = getVerifier().getEntity(classBean, beanID);
- }
- if (bean != null) {
- FactorWizardUI wizard = new FactorWizardUI(this);
- wizard.initNew(source, bean, EditorHelper.canBeContinue(source, bean));
- wizard.pack();
- wizard.setVisible(true);
- }
-}
-
-/**
- * Install tabbed pane change listener depending on sensitivity.
- * (init at first call)
- *
- * @param tabbedPane tabbed pane to install change listener
- */
-protected void installChangeListener(JTabbedPane tabbedPane) {
-
- // remove already registred listeners
- for (ChangeListener changeListener : tabbedPane.getChangeListeners()) {
- tabbedPane.removeChangeListener(changeListener);
- }
-
- if (tabbedPaneChangeListener == null) {
- if (isSensitivity()) {
- tabbedPaneChangeListener = new SensitivityTabbedPaneListener();
- } else {
- tabbedPaneChangeListener = new InputTabbedPaneListener();
- }
- }
-
- tabbedPane.addChangeListener(tabbedPaneChangeListener);
-}
-
-/**
- * Active les boutons sur l'onglet actuellement affiché.
- */
-protected void setCurrentTabActionButtons(JTabbedPane tabbedPane) {
- InputContentUI selectedUI = (InputContentUI) tabbedPane.getSelectedComponent();
- selectedUI.setActionButtons();
-}
-
-]]></script>
- <JPanel id='body' constraints='BorderLayout.CENTER'/>
- <JButton id='next' text='{getButtonTitle()}' constraints='BorderLayout.SOUTH' visible='{getNextPath() != null}' onActionPerformed='goTo()'/>
-</JPanel>
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx (from rev 2492, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,210 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+-->
+<JPanel layout='{new BorderLayout()}' abstract="true">
+
+ <!-- UI state when editing. If no entity selected, actif = false -->
+ <Boolean id='actif' javaBean='false'/>
+
+ <!-- True only for sensitivity simulation -->
+ <Boolean id='sensitivity' javaBean='false'/>
+
+ <!-- Next button title -->
+ <java.lang.String id='buttonTitle' javaBean='""'/>
+
+ <!-- Next path -->
+ <java.lang.String id='nextPath' javaBean='null'/>
+
+ <!-- Layer bloquant completement la saisie -->
+ <jaxx.runtime.swing.BlockingLayerUI id='layerUI'
+ blockingColor='{new Color(50,50,50)}' />
+ <!-- acceptAction='{new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ accept(e);
+ }
+ }}' -->
+
+ <!-- Layer avec les icones permettant d'ajouter des facteurs -->
+ <jaxx.runtime.swing.BlockingLayerUI2 id='layerUI2'
+ blockIcon='{SwingUtil.createImageIcon("building.png")}'
+ acceptIcon='{SwingUtil.createImageIcon("building_add.png")}'
+ acceptAction='{new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ accept(e);
+ }
+ }}' />
+
+ <script><![CDATA[
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import org.codelutin.topia.persistence.TopiaEntity;
+import javax.swing.JComponent;
+import fr.ifremer.isisfish.ui.util.UtilsUI;
+import fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI;
+import fr.ifremer.isisfish.ui.sensitivity.EditorHelper;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener;
+
+protected ChangeListener tabbedPaneChangeListener;
+
+/**
+ * This method is UI entry point.
+ *
+ * It's called :
+ * - by input tree to first display UI
+ * - by input verifier on cancel action
+ *
+ * 20090602 chatellier : make abstract, must be implemented !
+ */
+public abstract void refresh();
+
+/**
+ * This is a hack for tabbed UI.
+ *
+ * In this case of UI, they have multiples save/cancel
+ * buttons, they have to be manually activated
+ * on tab siwtching.
+ */
+public abstract void setActionButtons();
+
+public InputAction getAction() {
+ return getContextValue(InputAction.class);
+}
+public InputSaveVerifier getVerifier() {
+ return getContextValue(InputSaveVerifier.class);
+}
+public FisheryRegion getRegion() {
+ return getContextValue(FisheryRegion.class);
+}
+public void setInfoText(String msg) {
+ WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
+ if (root != null){
+ root.setInfoText(msg);
+ }
+}
+protected void goTo() {
+ getParentContainer(InputUI.class).setTreeSelection(getNextPath());
+}
+
+/**
+ * Mettre a jour la region dans une map si necessaire.
+ *
+ * @param map la map a mettre a jour si necessaire
+ */
+protected void refreshRegionInMap(fr.ifremer.isisfish.map.IsisMapBean map) {
+ FisheryRegion fisheryRegion = map.getFisheryRegion();
+ FisheryRegion regionFromContext = getRegion();
+ if (fisheryRegion == null || !fisheryRegion.equals(regionFromContext)) {
+ log.info("use now " + regionFromContext + " in map " + map);
+ map.setFisheryRegion(regionFromContext);
+ }
+}
+
+
+// TODO this method cause a lot of probleme
+// must cast TopiaEntity to impl in inherited UIs...
+// 20090602 chatellier : useless method ? cause a lot of cast problem
+//public void setBean(TopiaEntity t) {}
+
+public void setLayer(boolean active) {
+ if (this.get$objectMap() != null && active) {
+ for (JComponent boxed : SwingUtil.getLayeredComponents(this)) {
+ // Verifie si dans l'entré existe dans le fichier sensitivity.properties
+ Class classBean = (Class)boxed.getClientProperty("bean");
+ String method = (String)boxed.getClientProperty("method");
+ boolean isSensitivityFactorEnabled = false;
+ if (classBean != null) {
+ isSensitivityFactorEnabled = UtilsUI.isSensitivityFactorEnabled(classBean.getSimpleName().replace("Impl", "") + "." + method);
+ }
+ if (isSensitivityFactorEnabled) {
+ jaxx.runtime.swing.BlockingLayerUI2 ui = layerUI2.clone();
+ SwingUtil.getLayer(boxed).setUI(ui);
+ } else {
+ jaxx.runtime.swing.BlockingLayerUI ui = layerUI.clone();
+ ui.setBlock(true);
+ ui.setUseIcon(isActif());
+ SwingUtil.getLayer(boxed).setUI(ui);
+ }
+ }
+ }
+}
+
+/**
+ * Action appelée lors du clic sur un layer.
+ *
+ * @param e l'event initial intersepté par le layer
+ */
+protected void accept(ActionEvent e) {
+ JComponent source = (JComponent) e.getSource();
+ Class classBean = (Class)source.getClientProperty("bean");
+ String beanID = (String)source.getClientProperty("beanID");
+ TopiaEntity bean = null;
+ if (beanID == null) {
+ bean = getVerifier().getEntity(classBean);
+ }
+ else {
+ bean = getVerifier().getEntity(classBean, beanID);
+ }
+ if (bean != null) {
+ FactorWizardUI wizard = new FactorWizardUI(this);
+ wizard.initNew(source, bean, EditorHelper.canBeContinue(source, bean));
+ wizard.pack();
+ wizard.setVisible(true);
+ }
+}
+
+/**
+ * Install tabbed pane change listener depending on sensitivity.
+ * (init at first call)
+ *
+ * @param tabbedPane tabbed pane to install change listener
+ */
+protected void installChangeListener(JTabbedPane tabbedPane) {
+
+ // remove already registred listeners
+ for (ChangeListener changeListener : tabbedPane.getChangeListeners()) {
+ tabbedPane.removeChangeListener(changeListener);
+ }
+
+ if (tabbedPaneChangeListener == null) {
+ if (isSensitivity()) {
+ tabbedPaneChangeListener = new SensitivityTabbedPaneListener();
+ } else {
+ tabbedPaneChangeListener = new InputTabbedPaneListener();
+ }
+ }
+
+ tabbedPane.addChangeListener(tabbedPaneChangeListener);
+}
+
+/**
+ * Active les boutons sur l'onglet actuellement affiché.
+ */
+protected void setCurrentTabActionButtons(JTabbedPane tabbedPane) {
+ InputContentUI selectedUI = (InputContentUI) tabbedPane.getSelectedComponent();
+ selectedUI.setActionButtons();
+}
+
+]]></script>
+ <JPanel id='body' constraints='BorderLayout.CENTER'/>
+ <JButton id='next' text='{getButtonTitle()}' constraints='BorderLayout.SOUTH' visible='{getNextPath() != null}' onActionPerformed='goTo()'/>
+</JPanel>
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,623 +0,0 @@
-/* *##%
- * Copyright (C) 2005 - 2009
- * Ifremer, Code Lutin, Cedric 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-package fr.ifremer.isisfish.ui.input;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-
-import jaxx.runtime.swing.ErrorDialogUI;
-import jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode;
-
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.lang.ClassUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.topia.persistence.TopiaDAO;
-import org.codelutin.topia.persistence.TopiaEntity;
-
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.ui.SaveVerifier;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
-
-/**
- * InputSaveVerifier.
- *
- * @author letellier
- * @version $Revision: 1312 $
- *
- * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
- * by : $Author: sletellier $
- */
-public class InputSaveVerifier implements SaveVerifier {
-
- /** Class logger. */
- private static Log log = LogFactory.getLog(InputSaveVerifier.class);
-
- /** New button. Used to create new {@link #type} component. */
- protected JButton currentNewButton = null;
- /** Delete button. */
- protected JButton currentDeleteButton = null;
- /** Save button. */
- protected JButton currentSaveButton = null;
- /** Cancel button. */
- protected JButton currentCancelButton = null;
-
- protected ActionListener saveListener = new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- topiaSave();
- }
- };
-
- protected ActionListener cancelListener = new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- topiaCancel();
- }
- };
-
- protected ActionListener newListener = new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- topiaCreate();
- }
- };
-
- protected ActionListener deleteListener = new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- topiaRemove();
- }
- };
-
- /** Entity type for new creation. */
- protected String type = null;
-
- protected boolean editable = false;
- protected boolean changed = false;
-
- protected NavigationTreeNode currentNode = null;
- protected String currentOnglet = null;
-
- protected TopiaContext isisContext = null;
-
- /**
- * Map entity key to {@link TopiaEntity}.
- */
- protected HashMap<String, TopiaEntity> currentEntities = new HashMap<String, TopiaEntity>();
- protected HashSet<InputContentUI> currentPanels = new HashSet<InputContentUI>();
-
- protected InputUI rootUI;
- protected SensitivityTabUI sensUI;
-
- @Override
- public int checkEdit() {
- int response = JOptionPane.NO_OPTION;
- if (editable) {
- if (changed) {
- // ask user to close edition
- // still in edit mode, must warn user
- response = askUser(_("isisfish.message.page.modified"));
- if (response == JOptionPane.NO_OPTION) {
- topiaCancel();
- } else if (response == JOptionPane.YES_OPTION) {
- topiaSave();
- }
- }
- }
- return response;
- }
-
- /**
- * Ask user option to save non saved datas.
- *
- * @param message message to display
- * @return user option
- */
- protected int askUser(String message) {
- int response = JOptionPane.showConfirmDialog(rootUI, message,
- _("isisfish.input.menu.commit"),
- JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
- return response;
- }
-
- protected void topiaChanged() {
- changed = true;
- setPanelsActifs();
- setEnabled(currentSaveButton, true);
- setEnabled(currentCancelButton, true);
- setEnabled(currentNewButton, false);
- setEnabled(currentDeleteButton, false);
- }
-
- protected void noModif() {
- changed = false;
- setPanelsActifs();
- setEnabled(currentSaveButton, false);
- setEnabled(currentCancelButton, false);
- setEnabled(currentNewButton, true);
- setEnabled(currentDeleteButton, editable);
- }
-
- /**
- * Set component enabled state.
- *
- * @param c component
- * @param enabled enabled state
- */
- protected void setEnabled(Component c, boolean enabled) {
- if (c != null) {
- c.setEnabled(enabled);
- }
- }
-
- /**
- * Delete one entity and commit the change, try to selected intelligently
- * other node in tree.
- * <p/>
- * Refresh all ui component where name match "input<entity type without
- * package >.*"
- */
- protected void topiaRemove() {
- if (log.isTraceEnabled()) {
- log.trace("remove called");
- }
- String msg = "";
- try {
- boolean doDelete;
- TopiaEntity topiaEntity = (TopiaEntity) currentNode
- .getJAXXContextValue(rootUI);
- List<TopiaEntity> allWillBeRemoved = topiaEntity.getComposite();
- if (allWillBeRemoved.size() > 0) {
- String label = _("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"),
- JOptionPane.YES_NO_OPTION);
- doDelete = resp == JOptionPane.YES_OPTION;
- } else {
- String text = _("isisfish.message.confirm.delete.object",
- topiaEntity.toString());
- int resp = JOptionPane.showConfirmDialog(null, text,
- _("isisfish.message.delete.entity"),
- JOptionPane.YES_NO_OPTION);
- doDelete = resp == JOptionPane.YES_OPTION;
- }
-
- if (doDelete) {
- topiaEntity.delete();
- isisContext.commitTransaction();
- msg = _("isisfish.message.remove.finished");
- } else {
- msg = _("isisfish.message.remove.canceled");
- }
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't remove entity: "
- + currentEntities.get(0), eee);
- }
- ErrorDialogUI.showError(eee);
- }
- rootUI.setInfoText(msg);
- String path = currentNode.getParent().getContextPath();
- rootUI.setTreeModel();
- rootUI.setTreeSelection(path);
- noModif();
- }
-
- /**
- * Display a JOptionPane with a JTextArea as main component.
- *
- * @param parent parent
- * @param labelMessage label message
- * @param textMessage text message into area
- * @param title
- * @param option
- * @return user response
- */
- protected int showTextAreaConfirmationMessage(Component parent,
- String labelMessage, String textMessage, String title, int option) {
- JLabel labelForMessage = new JLabel(labelMessage);
- JTextArea areaForMessage = new JTextArea(textMessage);
- areaForMessage.setEditable(false);
- areaForMessage.setAutoscrolls(true);
- JScrollPane spMessage = new JScrollPane(areaForMessage);
- spMessage.setPreferredSize(new Dimension(500, 100)); // don't remove popup is huge
-
- int response = JOptionPane.showConfirmDialog(parent, new Object[] {
- labelForMessage, spMessage }, title, option);
- return response;
- }
-
- protected void topiaCreate() {
-
- if (log.isDebugEnabled()) {
- log.debug("Create called for " + type);
- }
-
- try {
- String name = type + "_new";
-
- Method method = MethodUtils.getAccessibleMethod(
- IsisFishDAOHelper.class, "get" + type + "DAO",
- TopiaContext.class);
- TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) method.invoke(
- null, isisContext);
-
- TopiaEntity entity = dao.create("name", name);
- entity.update();
- isisContext.commitTransaction();
-
- String path = currentNode.getParent().getContextPath() + "/"
- + entity.getTopiaId();
- if (!editable) {
- path = currentNode.getContextPath() + "/" + entity.getTopiaId();
- }
-
- rootUI.setTreeModel();
- rootUI.setTreeSelection(path);
-
- rootUI.setInfoText(_("isisfish.message.creation.finished"));
-
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't create entity", eee);
- }
- showMsgBox(eee);
- }
- }
-
- /**
- * Save all non saved entities.
- *
- * Change registred button states.
- * Commit opened topia context.
- */
- protected void topiaSave() {
- try {
- noModif();
- for (TopiaEntity t : currentEntities.values()) {
- t.update();
- if (log.isDebugEnabled()) {
- log.debug("updating : " + t);
- }
- }
- isisContext.commitTransaction();
- rootUI.repaintNode(currentNode.getContextPath());
- rootUI.setInfoText(_("isisfish.message.save.finished"));
- } catch (TopiaException eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't save region", eee);
- }
- showMsgBox(eee);
- }
- }
-
- /**
- * Cancel all modification on entity (rollback), and force reload it.
- */
- protected void topiaCancel() {
- try {
- noModif();
- isisContext.rollbackTransaction();
- Map<String, TopiaEntity> canceledEntity = (Map<String, TopiaEntity>)currentEntities.clone();
-
- currentEntities.clear();
- for (Entry<String, TopiaEntity> currentEntity : canceledEntity.entrySet()) {
- TopiaEntity t = isisContext.findByTopiaId(currentEntity.getValue().getTopiaId());
-
- // TODO a quoi ca sert de recharger les entités ?
- // desynchronise la précédente
- // fix : org.hibernate.NonUniqueObjectException: a different object with the
- // same identifier value was already associated with the session
- //((TopiaContextImpl)isisContext).getHibernate().evict(t2);
- //t.setTopiaId(null);
-
- rootUI.repaintNode(currentNode.getContextPath());
- rootUI.setTreeSelection(currentNode.getContextPath());
-
- String key = currentEntity.getKey();
- addCurrentEntity(t, key);
- }
-
- // refresh all registred panel
- // to discard modification in UI
- refreshAll();
- rootUI.setInfoText(_("isisfish.message.cancel.finished"));
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error("Can't cancel modification in region", eee);
- }
- showMsgBox(eee);
- }
- }
-
- /**
- * Display exception into jaxx error dialog component.
- *
- * @param e exception to display
- */
- protected void showMsgBox(Exception e) {
- ErrorDialogUI.showError(e);
- }
-
- protected void setPanelsActifs() {
- for (InputContentUI panel : currentPanels) {
- panel.setActif(editable);
- }
- }
-
- /**
- * Refresh all registered {@link InputContentUI} component.
- *
- * Call {@link InputContentUI#refresh()} method on each component.
- */
- public void refreshAll() {
-
- // chatellier 20090602 refresh() call addCurrentPanel
- // and cause ConcurentModificationException.
- Set<InputContentUI> panelsToRefresh = (HashSet<InputContentUI>)currentPanels.clone();
- for (InputContentUI panel : panelsToRefresh) {
- if (log.isDebugEnabled()) {
- log.debug("Verifier refresh ui : " + panel);
- }
- panel.refresh();
- // do not call refresh action buttons here
- panel.setActif(editable);
- }
- }
-
- /**
- * Add entity to check for modification.
- *
- * The verifier register to entity using {@link TopiaEntity#addPropertyChangeListener(PropertyChangeListener)}.
- * So modification have to be done on current entity.
- *
- * To check for embedded entity, add it too.
- *
- * Remove all entity with key
- *
- * @param currentEntity entity to check
- * @param key specific key (defaut to topiaId)
- */
- public void addCurrentEntity(TopiaEntity currentEntity, String key) {
- if (currentEntity != null) {
- editable = true;
- isisContext = currentEntity.getTopiaContext();
- currentEntity
- .addPropertyChangeListener(new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (log.isDebugEnabled()) {
- log.debug("PropertyChanged : "
- + evt.getPropertyName()
- + " New Value : " + evt.getNewValue());
- }
- topiaChanged();
- }
- });
- // chatellier 20090602 , pas sur du code suivant
- // plutot ne rien faire, si une autre entite de la meme
- // clé est ajoutée, elle sera ecrasée
- //TopiaEntity entity = getEntity(currentEntity.getClass());
- //if (entity != null) {
- // currentEntities.remove(entity);
- //}
-
- this.currentEntities.put(key, currentEntity);
- setPanelsActifs();
- }
- }
-
- /**
- * Add entity to check for modification.
- *
- * The verifier register to entity using {@link TopiaEntity#addPropertyChangeListener(PropertyChangeListener)}.
- * So modification have to be done on current entity.
- *
- * To check for embedded entity, add it too.
- *
- * Remove all entity with key
- *
- * @param currentEntity entity to check
- */
- public void addCurrentEntity(TopiaEntity currentEntity) {
- if (currentEntity != null) {
- addCurrentEntity(currentEntity, currentEntity.getTopiaId());
- }
- }
-
- public void reset() {
- removeAllEntity();
- removeAllPanels();
- this.currentCancelButton = null;
- this.currentDeleteButton = null;
- this.currentNewButton = null;
- this.currentSaveButton = null;
- this.currentOnglet = null;
- this.currentNode = null;
- }
-
- public void removeAllEntity() {
- currentEntities.clear();
- editable = false;
- noModif();
- setPanelsActifs();
- }
-
- public void addCurrentPanel(InputContentUI... panels) {
- for (InputContentUI ui : panels) {
- editable = !currentEntities.isEmpty();
- this.currentPanels.add(ui);
- if (rootUI == null) {
- ui.setSensitivity(true);
- ui.setLayer(true);
- }
- ui.refresh();
- // do not call refresh action buttons here
- ui.setActif(editable);
- }
- }
-
- public void removeAllPanels() {
- currentPanels.clear();
- }
-
- public boolean isEditable() {
- return editable;
- }
-
- public void setSaveButton(JButton saveButton) {
- setSaveButton(saveButton, true);
- }
-
- public void setSaveButton(JButton saveButton, Boolean listener) {
- if (listener) {
- // TODO what is it for (remove/readd) ?
- saveButton.removeActionListener(saveListener);
- saveButton.addActionListener(saveListener);
- }
- saveButton.setEnabled(changed);
- saveButton.setText(_("isisfish.common.save"));
- this.currentSaveButton = saveButton;
- }
-
- public void setNewButton(JButton saveButton, String name) {
- setNewButton(saveButton, name, true);
- }
-
- public void setNewButton(JButton newButton, String t, Boolean listener) {
- if (listener) {
- // TODO what is it for (remove/readd) ?
- newButton.removeActionListener(newListener);
- newButton.addActionListener(newListener);
- }
- newButton.setText(_("isisfish.common.new"));
- newButton.setEnabled(!changed);
- this.type = t;
- this.currentNewButton = newButton;
- }
-
- public void setCancelButton(JButton cancelButton) {
- cancelButton.removeActionListener(cancelListener);
- cancelButton.addActionListener(cancelListener);
- cancelButton.setText(_("isisfish.common.cancel"));
- cancelButton.setEnabled(changed);
- this.currentCancelButton = cancelButton;
- }
-
- public void setDeleteButton(JButton deleteButton) {
- setDeleteButton(deleteButton, true);
- }
-
- public void setDeleteButton(JButton deleteButton, boolean listener) {
- if (listener) {
- deleteButton.removeActionListener(deleteListener);
- deleteButton.addActionListener(deleteListener);
- }
- deleteButton.setEnabled(editable);
- deleteButton.setText(_("isisfish.common.remove"));
- this.currentDeleteButton = deleteButton;
- }
-
- public TopiaContext getIsisContext() {
- return isisContext;
- }
-
- public Collection<TopiaEntity> getCurrentEntities() {
- return currentEntities.values();
- }
-
- public <E extends TopiaEntity> E getEntity(Class<E> clazz, String key) {
- return (E) currentEntities.get(key);
- }
-
- public <E extends TopiaEntity> E getEntity(Class<E> clazz) {
- for (TopiaEntity te : currentEntities.values()) {
- if (clazz.isInstance(te)) {
- return (E) te;
- }
- }
- return null;
- }
-
- public String getCurrentOnglet() {
- return currentOnglet;
- }
-
- public NavigationTreeNode getCurrentNode() {
- return currentNode;
- }
-
- public void setIsisContext(TopiaContext isisContext) {
- this.isisContext = isisContext;
- }
-
- public void setEditable(boolean editable) {
- this.editable = editable;
- }
-
- public void setCurrentOnglet(String currentOnglet) {
- this.currentOnglet = currentOnglet;
- }
-
- public void setCurrentNode(NavigationTreeNode currentNode) {
- this.currentNode = currentNode;
- }
-
- protected void setRootPanel(InputUI inputUI) {
- this.rootUI = inputUI;
- }
-
- public SensitivityTabUI getSensPanel() {
- return sensUI;
- }
-
- public void setSensPanel(SensitivityTabUI sensUI) {
- this.sensUI = sensUI;
- }
-}
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java (from rev 2483, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,624 @@
+/* *##%
+ * Copyright (C) 2005 - 2009
+ * Ifremer, Code Lutin, Cedric 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.input;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import jaxx.runtime.swing.ErrorDialogUI;
+import jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode;
+
+import org.apache.commons.beanutils.MethodUtils;
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.topia.TopiaException;
+import org.codelutin.topia.persistence.TopiaDAO;
+import org.codelutin.topia.persistence.TopiaEntity;
+
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.ui.SaveVerifier;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
+
+/**
+ * InputSaveVerifier.
+ *
+ * @author letellier
+ * @version $Revision: 1312 $
+ *
+ * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
+ * by : $Author: sletellier $
+ */
+public class InputSaveVerifier implements SaveVerifier {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(InputSaveVerifier.class);
+
+ /** New button. Used to create new {@link #type} component. */
+ protected JButton currentNewButton = null;
+ /** Delete button. */
+ protected JButton currentDeleteButton = null;
+ /** Save button. */
+ protected JButton currentSaveButton = null;
+ /** Cancel button. */
+ protected JButton currentCancelButton = null;
+
+ protected ActionListener saveListener = new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ topiaSave();
+ }
+ };
+
+ protected ActionListener cancelListener = new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ topiaCancel();
+ }
+ };
+
+ protected ActionListener newListener = new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ topiaCreate();
+ }
+ };
+
+ protected ActionListener deleteListener = new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ topiaRemove();
+ }
+ };
+
+ /** Entity type for new creation. */
+ protected String type = null;
+
+ protected boolean editable = false;
+ protected boolean changed = false;
+
+ protected NavigationTreeNode currentNode = null;
+ protected String currentOnglet = null;
+
+ protected TopiaContext isisContext = null;
+
+ /**
+ * Map entity key to {@link TopiaEntity}.
+ */
+ protected HashMap<String, TopiaEntity> currentEntities = new HashMap<String, TopiaEntity>();
+ protected HashSet<InputContentUI> currentPanels = new HashSet<InputContentUI>();
+
+ protected InputUI rootUI;
+ protected SensitivityTabUI sensUI;
+
+ @Override
+ public int checkEdit() {
+ int response = JOptionPane.NO_OPTION;
+ if (editable) {
+ if (changed) {
+ // ask user to close edition
+ // still in edit mode, must warn user
+ response = askUser(_("isisfish.message.page.modified"));
+ if (response == JOptionPane.NO_OPTION) {
+ topiaCancel();
+ } else if (response == JOptionPane.YES_OPTION) {
+ topiaSave();
+ }
+ }
+ }
+ return response;
+ }
+
+ /**
+ * Ask user option to save non saved datas.
+ *
+ * @param message message to display
+ * @return user option
+ */
+ protected int askUser(String message) {
+ int response = JOptionPane.showConfirmDialog(rootUI, message,
+ _("isisfish.input.menu.commit"),
+ JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
+ return response;
+ }
+
+ protected void topiaChanged() {
+ changed = true;
+ setPanelsActifs();
+ setEnabled(currentSaveButton, true);
+ setEnabled(currentCancelButton, true);
+ setEnabled(currentNewButton, false);
+ setEnabled(currentDeleteButton, false);
+ }
+
+ protected void noModif() {
+ changed = false;
+ setPanelsActifs();
+ setEnabled(currentSaveButton, false);
+ setEnabled(currentCancelButton, false);
+ setEnabled(currentNewButton, true);
+ setEnabled(currentDeleteButton, editable);
+ }
+
+ /**
+ * Set component enabled state.
+ *
+ * @param c component
+ * @param enabled enabled state
+ */
+ protected void setEnabled(Component c, boolean enabled) {
+ if (c != null) {
+ c.setEnabled(enabled);
+ }
+ }
+
+ /**
+ * Delete one entity and commit the change, try to selected intelligently
+ * other node in tree.
+ * <p/>
+ * Refresh all ui component where name match "input<entity type without
+ * package >.*"
+ */
+ protected void topiaRemove() {
+ if (log.isTraceEnabled()) {
+ log.trace("remove called");
+ }
+ String msg = "";
+ try {
+ boolean doDelete;
+ TopiaEntity topiaEntity = (TopiaEntity) currentNode
+ .getJAXXContextValue(rootUI);
+ List<TopiaEntity> allWillBeRemoved = topiaEntity.getComposite();
+ if (allWillBeRemoved.size() > 0) {
+ String label = _("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"),
+ JOptionPane.YES_NO_OPTION);
+ doDelete = resp == JOptionPane.YES_OPTION;
+ } else {
+ String text = _("isisfish.message.confirm.delete.object",
+ topiaEntity.toString());
+ int resp = JOptionPane.showConfirmDialog(null, text,
+ _("isisfish.message.delete.entity"),
+ JOptionPane.YES_NO_OPTION);
+ doDelete = resp == JOptionPane.YES_OPTION;
+ }
+
+ if (doDelete) {
+ topiaEntity.delete();
+ isisContext.commitTransaction();
+ msg = _("isisfish.message.remove.finished");
+ } else {
+ msg = _("isisfish.message.remove.canceled");
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove entity: "
+ + currentEntities.get(0), eee);
+ }
+ ErrorDialogUI.showError(eee);
+ }
+ rootUI.setInfoText(msg);
+ // set noModif BEFORE path changed
+ noModif();
+ String path = currentNode.getParent().getContextPath();
+ rootUI.setTreeModel();
+ rootUI.setTreeSelection(path);
+ }
+
+ /**
+ * Display a JOptionPane with a JTextArea as main component.
+ *
+ * @param parent parent
+ * @param labelMessage label message
+ * @param textMessage text message into area
+ * @param title
+ * @param option
+ * @return user response
+ */
+ protected int showTextAreaConfirmationMessage(Component parent,
+ String labelMessage, String textMessage, String title, int option) {
+ JLabel labelForMessage = new JLabel(labelMessage);
+ JTextArea areaForMessage = new JTextArea(textMessage);
+ areaForMessage.setEditable(false);
+ areaForMessage.setAutoscrolls(true);
+ JScrollPane spMessage = new JScrollPane(areaForMessage);
+ spMessage.setPreferredSize(new Dimension(500, 100)); // don't remove popup is huge
+
+ int response = JOptionPane.showConfirmDialog(parent, new Object[] {
+ labelForMessage, spMessage }, title, option);
+ return response;
+ }
+
+ protected void topiaCreate() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Create called for " + type);
+ }
+
+ try {
+ String name = type + "_new";
+
+ Method method = MethodUtils.getAccessibleMethod(
+ IsisFishDAOHelper.class, "get" + type + "DAO",
+ TopiaContext.class);
+ TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) method.invoke(
+ null, isisContext);
+
+ TopiaEntity entity = dao.create("name", name);
+ entity.update();
+ isisContext.commitTransaction();
+
+ String path = currentNode.getParent().getContextPath() + "/"
+ + entity.getTopiaId();
+ if (!editable) {
+ path = currentNode.getContextPath() + "/" + entity.getTopiaId();
+ }
+
+ rootUI.setTreeModel();
+ rootUI.setTreeSelection(path);
+
+ rootUI.setInfoText(_("isisfish.message.creation.finished"));
+
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't create entity", eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ /**
+ * Save all non saved entities.
+ *
+ * Change registred button states.
+ * Commit opened topia context.
+ */
+ protected void topiaSave() {
+ try {
+ noModif();
+ for (TopiaEntity t : currentEntities.values()) {
+ t.update();
+ if (log.isDebugEnabled()) {
+ log.debug("updating : " + t);
+ }
+ }
+ isisContext.commitTransaction();
+ rootUI.repaintNode(currentNode.getContextPath());
+ rootUI.setInfoText(_("isisfish.message.save.finished"));
+ } catch (TopiaException eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't save region", eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ /**
+ * Cancel all modification on entity (rollback), and force reload it.
+ */
+ protected void topiaCancel() {
+ try {
+ noModif();
+ isisContext.rollbackTransaction();
+ Map<String, TopiaEntity> canceledEntity = (Map<String, TopiaEntity>)currentEntities.clone();
+
+ currentEntities.clear();
+ for (Entry<String, TopiaEntity> currentEntity : canceledEntity.entrySet()) {
+ TopiaEntity t = isisContext.findByTopiaId(currentEntity.getValue().getTopiaId());
+
+ // TODO a quoi ca sert de recharger les entités ?
+ // desynchronise la précédente
+ // fix : org.hibernate.NonUniqueObjectException: a different object with the
+ // same identifier value was already associated with the session
+ //((TopiaContextImpl)isisContext).getHibernate().evict(t2);
+ //t.setTopiaId(null);
+
+ rootUI.repaintNode(currentNode.getContextPath());
+ rootUI.setTreeSelection(currentNode.getContextPath());
+
+ String key = currentEntity.getKey();
+ addCurrentEntity(t, key);
+ }
+
+ // refresh all registred panel
+ // to discard modification in UI
+ refreshAll();
+ rootUI.setInfoText(_("isisfish.message.cancel.finished"));
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't cancel modification in region", eee);
+ }
+ showMsgBox(eee);
+ }
+ }
+
+ /**
+ * Display exception into jaxx error dialog component.
+ *
+ * @param e exception to display
+ */
+ protected void showMsgBox(Exception e) {
+ ErrorDialogUI.showError(e);
+ }
+
+ protected void setPanelsActifs() {
+ for (InputContentUI panel : currentPanels) {
+ panel.setActif(editable);
+ }
+ }
+
+ /**
+ * Refresh all registered {@link InputContentUI} component.
+ *
+ * Call {@link InputContentUI#refresh()} method on each component.
+ */
+ public void refreshAll() {
+
+ // chatellier 20090602 refresh() call addCurrentPanel
+ // and cause ConcurentModificationException.
+ Set<InputContentUI> panelsToRefresh = (HashSet<InputContentUI>)currentPanels.clone();
+ for (InputContentUI panel : panelsToRefresh) {
+ if (log.isDebugEnabled()) {
+ log.debug("Verifier refresh ui : " + panel);
+ }
+ panel.refresh();
+ // do not call refresh action buttons here
+ panel.setActif(editable);
+ }
+ }
+
+ /**
+ * Add entity to check for modification.
+ *
+ * The verifier register to entity using {@link TopiaEntity#addPropertyChangeListener(PropertyChangeListener)}.
+ * So modification have to be done on current entity.
+ *
+ * To check for embedded entity, add it too.
+ *
+ * Remove all entity with key
+ *
+ * @param currentEntity entity to check
+ * @param key specific key (defaut to topiaId)
+ */
+ public void addCurrentEntity(TopiaEntity currentEntity, String key) {
+ if (currentEntity != null) {
+ editable = true;
+ isisContext = currentEntity.getTopiaContext();
+ currentEntity
+ .addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (log.isDebugEnabled()) {
+ log.debug("PropertyChanged : "
+ + evt.getPropertyName()
+ + " New Value : " + evt.getNewValue());
+ }
+ topiaChanged();
+ }
+ });
+ // chatellier 20090602 , pas sur du code suivant
+ // plutot ne rien faire, si une autre entite de la meme
+ // clé est ajoutée, elle sera ecrasée
+ //TopiaEntity entity = getEntity(currentEntity.getClass());
+ //if (entity != null) {
+ // currentEntities.remove(entity);
+ //}
+
+ this.currentEntities.put(key, currentEntity);
+ setPanelsActifs();
+ }
+ }
+
+ /**
+ * Add entity to check for modification.
+ *
+ * The verifier register to entity using {@link TopiaEntity#addPropertyChangeListener(PropertyChangeListener)}.
+ * So modification have to be done on current entity.
+ *
+ * To check for embedded entity, add it too.
+ *
+ * Remove all entity with key
+ *
+ * @param currentEntity entity to check
+ */
+ public void addCurrentEntity(TopiaEntity currentEntity) {
+ if (currentEntity != null) {
+ addCurrentEntity(currentEntity, currentEntity.getTopiaId());
+ }
+ }
+
+ public void reset() {
+ removeAllEntity();
+ removeAllPanels();
+ this.currentCancelButton = null;
+ this.currentDeleteButton = null;
+ this.currentNewButton = null;
+ this.currentSaveButton = null;
+ this.currentOnglet = null;
+ this.currentNode = null;
+ }
+
+ public void removeAllEntity() {
+ currentEntities.clear();
+ editable = false;
+ noModif();
+ setPanelsActifs();
+ }
+
+ public void addCurrentPanel(InputContentUI... panels) {
+ for (InputContentUI ui : panels) {
+ editable = !currentEntities.isEmpty();
+ this.currentPanels.add(ui);
+ if (rootUI == null) {
+ ui.setSensitivity(true);
+ ui.setLayer(true);
+ }
+ ui.refresh();
+ // do not call refresh action buttons here
+ ui.setActif(editable);
+ }
+ }
+
+ public void removeAllPanels() {
+ currentPanels.clear();
+ }
+
+ public boolean isEditable() {
+ return editable;
+ }
+
+ public void setSaveButton(JButton saveButton) {
+ setSaveButton(saveButton, true);
+ }
+
+ public void setSaveButton(JButton saveButton, Boolean listener) {
+ if (listener) {
+ // TODO what is it for (remove/readd) ?
+ saveButton.removeActionListener(saveListener);
+ saveButton.addActionListener(saveListener);
+ }
+ saveButton.setEnabled(changed);
+ saveButton.setText(_("isisfish.common.save"));
+ this.currentSaveButton = saveButton;
+ }
+
+ public void setNewButton(JButton saveButton, String name) {
+ setNewButton(saveButton, name, true);
+ }
+
+ public void setNewButton(JButton newButton, String t, Boolean listener) {
+ if (listener) {
+ // TODO what is it for (remove/readd) ?
+ newButton.removeActionListener(newListener);
+ newButton.addActionListener(newListener);
+ }
+ newButton.setText(_("isisfish.common.new"));
+ newButton.setEnabled(!changed);
+ this.type = t;
+ this.currentNewButton = newButton;
+ }
+
+ public void setCancelButton(JButton cancelButton) {
+ cancelButton.removeActionListener(cancelListener);
+ cancelButton.addActionListener(cancelListener);
+ cancelButton.setText(_("isisfish.common.cancel"));
+ cancelButton.setEnabled(changed);
+ this.currentCancelButton = cancelButton;
+ }
+
+ public void setDeleteButton(JButton deleteButton) {
+ setDeleteButton(deleteButton, true);
+ }
+
+ public void setDeleteButton(JButton deleteButton, boolean listener) {
+ if (listener) {
+ deleteButton.removeActionListener(deleteListener);
+ deleteButton.addActionListener(deleteListener);
+ }
+ deleteButton.setEnabled(editable);
+ deleteButton.setText(_("isisfish.common.remove"));
+ this.currentDeleteButton = deleteButton;
+ }
+
+ public TopiaContext getIsisContext() {
+ return isisContext;
+ }
+
+ public Collection<TopiaEntity> getCurrentEntities() {
+ return currentEntities.values();
+ }
+
+ public <E extends TopiaEntity> E getEntity(Class<E> clazz, String key) {
+ return (E) currentEntities.get(key);
+ }
+
+ public <E extends TopiaEntity> E getEntity(Class<E> clazz) {
+ for (TopiaEntity te : currentEntities.values()) {
+ if (clazz.isInstance(te)) {
+ return (E) te;
+ }
+ }
+ return null;
+ }
+
+ public String getCurrentOnglet() {
+ return currentOnglet;
+ }
+
+ public NavigationTreeNode getCurrentNode() {
+ return currentNode;
+ }
+
+ public void setIsisContext(TopiaContext isisContext) {
+ this.isisContext = isisContext;
+ }
+
+ public void setEditable(boolean editable) {
+ this.editable = editable;
+ }
+
+ public void setCurrentOnglet(String currentOnglet) {
+ this.currentOnglet = currentOnglet;
+ }
+
+ public void setCurrentNode(NavigationTreeNode currentNode) {
+ this.currentNode = currentNode;
+ }
+
+ protected void setRootPanel(InputUI inputUI) {
+ this.rootUI = inputUI;
+ }
+
+ public SensitivityTabUI getSensPanel() {
+ return sensUI;
+ }
+
+ public void setSensPanel(SensitivityTabUI sensUI) {
+ this.sensUI = sensUI;
+ }
+}
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,198 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005 - 2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
--->
-<fr.ifremer.isisfish.ui.input.InputContentUI>
-
- <!-- bean property -->
- <fr.ifremer.isisfish.entities.PopulationImpl id='bean' javaBean='null'/>
- <fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl id='popInfo' javaBean='null'/>
-
- <Boolean id="selectedPopulationSeasonInfo" javaBean='false' />
-
- <script><![CDATA[
-
-import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
-import fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl;
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.entities.PopulationImpl;
-import fr.ifremer.isisfish.ui.input.population.PopulationSeasonInfoComboModel;
-import fr.ifremer.isisfish.ui.input.population.PopulationSeasonInfoComboRenderer;
-
-addPropertyChangeListener("bean", new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getOldValue() != null || evt.getNewValue() == null) {
- fieldPopulationMigrationComment.setText("");
- fieldUseEquationMigration.setSelected(false);
- }
- /*if (evt.getNewValue() != null) {
-
- }*/
- }
-});
-
- at Override
-public void refresh() {
- Population population = getVerifier().getEntity(Population.class);
-
- // add null before, for second to be considered as a changed event
- // otherwize, setBean has no effect
- setBean(null);
- setBean((PopulationImpl) population);
-
- // refresh psi list in combo box
- PopulationSeasonInfoComboModel model = (PopulationSeasonInfoComboModel)fieldPopulationMigrationSeasonChooser.getModel();
- if (getBean() != null) {
- PopulationSeasonInfo previousSelected = (PopulationSeasonInfo)model.getSelectedItem();
- model.setPopulationSeasonInfos(getBean().getPopulationSeasonInfo());
-
- // do this to keep selected after cancel/refresh
- if (previousSelected != null) {
- for (PopulationSeasonInfo psi : getBean().getPopulationSeasonInfo()) {
- if (psi.getTopiaId().equals(previousSelected.getTopiaId())) {
- model.setSelectedItem(psi);
- }
- }
- }
-
- seasonChanged();
- }
- else {
- model.setPopulationSeasonInfos(null);
- }
-
- getVerifier().addCurrentPanel(populationMigrationEquationUI, populationMigrationMigrationUI, populationMigrationImmigrationUI, populationMigrationEmigrationUI);
- // addCurrentPanel set all to isActif()
- // force it to isSelectedPopulationSeasonInfo()
- // twice for real change event :(
- setSelectedPopulationSeasonInfo(fieldPopulationMigrationSeasonChooser.getModel().getSelectedItem() == null);
- setSelectedPopulationSeasonInfo(fieldPopulationMigrationSeasonChooser.getModel().getSelectedItem() != null);
-}
-
- at Override
-public void setActionButtons() {
- getVerifier().setSaveButton(save);
- getVerifier().setCancelButton(cancel);
-}
-
-protected void seasonChanged() {
- PopulationSeasonInfoComboModel model = (PopulationSeasonInfoComboModel)fieldPopulationMigrationSeasonChooser.getModel();
- PopulationSeasonInfo selectedPSI = (PopulationSeasonInfo)model.getSelectedItem();
- setPopInfo((PopulationSeasonInfoImpl)selectedPSI);
- if (getPopInfo() != null) {
- getVerifier().addCurrentEntity(getPopInfo());
- populationMigrationEquationUI.init(getPopInfo());
- populationMigrationMigrationUI.init(getPopInfo());
- populationMigrationImmigrationUI.init(getPopInfo());
- populationMigrationEmigrationUI.init(getPopInfo());
-
- setSelectedPopulationSeasonInfo(isActif());
- }
- else {
- setSelectedPopulationSeasonInfo(false);
- }
- refreshHidablePanel();
-}
-protected void useEquationChanged() {
- getPopInfo().setUseEquationMigration(fieldUseEquationMigration.isSelected());
- refreshHidablePanel();
-}
-protected void refreshHidablePanel() {
- if (getPopInfo() != null) {
- if (getPopInfo().getUseEquationMigration()) {
- fieldUseEquationMigration.setSelected(true);
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseEquation");
- }
- else {
- fieldUseEquationMigration.setSelected(false);
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseMatrix");
- }
- }
-}
- ]]>
- </script>
- <Table id='body'>
- <row>
- <cell anchor='east'>
- <JLabel text="isisfish.populationMigration.selectSeason" enabled='{isActif()}'/>
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <JComboBox id="fieldPopulationMigrationSeasonChooser"
- model='{new PopulationSeasonInfoComboModel()}'
- renderer="{new PopulationSeasonInfoComboRenderer()}"
- onActionPerformed='seasonChanged()'
- enabled='{isActif()}'/>
- </cell>
- </row>
- <row>
- <cell columns='2' anchor='west'>
- <JCheckBox id="fieldUseEquationMigration" selected='{getPopInfo().getUseEquationMigration()}'
- text="isisfish.populationMigration.useEquation" onActionPerformed='useEquationChanged()' enabled='{isSelectedPopulationSeasonInfo()}' decorator='boxed'/>
- </cell>
- </row>
- <row>
- <cell columns='2' fill='both' weightx='1.0' weighty='0.7'>
- <JPanel id="hidablePanel" layout='{new CardLayout()}'>
- <JTabbedPane id="fieldUseMatrix" constraints='"fieldUseMatrix"' enabled='{isSelectedPopulationSeasonInfo()}'>
- <tab title='{_("isisfish.populationMigrationMigration.title")}'>
- <PopulationMigrationMigrationUI id="populationMigrationMigrationUI" constructorParams='this' decorator='boxed'
- _bean='{PopulationSeasonInfoImpl.class}' _method='"MigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' />
- </tab>
- <tab title='{_("isisfish.populationMigrationImmigration.title")}'>
- <PopulationMigrationImmigrationUI id="populationMigrationImmigrationUI" constructorParams='this' decorator='boxed'
- _bean='{PopulationSeasonInfoImpl.class}' _method='"ImmigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' />
- </tab>
- <tab title='{_("isisfish.populationMigrationEmigration.title")}'>
- <PopulationMigrationEmigrationUI id="populationMigrationEmigrationUI" constructorParams='this' decorator='boxed'
- _bean='{PopulationSeasonInfoImpl.class}' _method='"EmigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' />
- </tab>
- </JTabbedPane>
- <PopulationMigrationEquationUI id='populationMigrationEquationUI' constraints='"fieldUseEquation"' constructorParams='this'
- actif='{isSelectedPopulationSeasonInfo()}' />
- </JPanel>
- </cell>
- </row>
- <row>
- <cell anchor='east'>
- <JLabel text="isisfish.populationMigration.comments" enabled='{isSelectedPopulationSeasonInfo()}'/>
- </cell>
- <cell fill='both' weightx='1.0' weighty='0.3'>
- <JScrollPane>
- <!-- comment can be null jaxx.runtime.SwingUtil.getStringValue() -->
- <JTextArea id="fieldPopulationMigrationComment" text='{jaxx.runtime.SwingUtil.getStringValue(getBean().getMigrationComment())}'
- onKeyReleased='getBean().setMigrationComment(fieldPopulationMigrationComment.getText())'
- enabled='{isSelectedPopulationSeasonInfo()}' decorator='boxed'/>
- </JScrollPane>
- </cell>
- </row>
- <row>
- <cell columns='2' fill='horizontal' weightx='1.0'>
- <Table>
- <row>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='save' decorator='boxed'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='cancel' decorator='boxed'/>
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- </Table>
-</fr.ifremer.isisfish.ui.input.InputContentUI>
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx (from rev 2481, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,198 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+-->
+<fr.ifremer.isisfish.ui.input.InputContentUI>
+
+ <!-- bean property -->
+ <fr.ifremer.isisfish.entities.PopulationImpl id='bean' javaBean='null'/>
+ <fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl id='popInfo' javaBean='null'/>
+
+ <Boolean id="selectedPopulationSeasonInfo" javaBean='false' />
+
+ <script><![CDATA[
+
+import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
+import fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.PopulationImpl;
+import fr.ifremer.isisfish.ui.input.population.PopulationSeasonInfoComboModel;
+import fr.ifremer.isisfish.ui.input.population.PopulationSeasonInfoComboRenderer;
+
+addPropertyChangeListener("bean", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getOldValue() != null || evt.getNewValue() == null) {
+ fieldPopulationMigrationComment.setText("");
+ fieldUseEquationMigration.setSelected(false);
+ }
+ /*if (evt.getNewValue() != null) {
+
+ }*/
+ }
+});
+
+ at Override
+public void refresh() {
+ Population population = getVerifier().getEntity(Population.class);
+
+ // add null before, for second to be considered as a changed event
+ // otherwize, setBean has no effect
+ setBean(null);
+ setBean((PopulationImpl) population);
+
+ // refresh psi list in combo box
+ PopulationSeasonInfoComboModel model = (PopulationSeasonInfoComboModel)fieldPopulationMigrationSeasonChooser.getModel();
+ if (getBean() != null) {
+ PopulationSeasonInfo previousSelected = (PopulationSeasonInfo)model.getSelectedItem();
+ model.setPopulationSeasonInfos(getBean().getPopulationSeasonInfo());
+
+ // do this to keep selected after cancel/refresh
+ if (previousSelected != null) {
+ for (PopulationSeasonInfo psi : getBean().getPopulationSeasonInfo()) {
+ if (psi.getTopiaId().equals(previousSelected.getTopiaId())) {
+ model.setSelectedItem(psi);
+ }
+ }
+ }
+
+ seasonChanged();
+ }
+ else {
+ model.setPopulationSeasonInfos(null);
+ }
+
+ getVerifier().addCurrentPanel(populationMigrationEquationUI, populationMigrationMigrationUI, populationMigrationImmigrationUI, populationMigrationEmigrationUI);
+ // addCurrentPanel set all to isActif()
+ // force it to isSelectedPopulationSeasonInfo()
+ // twice for real change event :(
+ setSelectedPopulationSeasonInfo(fieldPopulationMigrationSeasonChooser.getModel().getSelectedItem() == null);
+ setSelectedPopulationSeasonInfo(fieldPopulationMigrationSeasonChooser.getModel().getSelectedItem() != null);
+}
+
+ at Override
+public void setActionButtons() {
+ getVerifier().setSaveButton(save);
+ getVerifier().setCancelButton(cancel);
+}
+
+protected void seasonChanged() {
+ PopulationSeasonInfoComboModel model = (PopulationSeasonInfoComboModel)fieldPopulationMigrationSeasonChooser.getModel();
+ PopulationSeasonInfo selectedPSI = (PopulationSeasonInfo)model.getSelectedItem();
+ setPopInfo((PopulationSeasonInfoImpl)selectedPSI);
+ if (getPopInfo() != null) {
+ getVerifier().addCurrentEntity(getPopInfo());
+ populationMigrationEquationUI.init(getPopInfo());
+ populationMigrationMigrationUI.init(getPopInfo());
+ populationMigrationImmigrationUI.init(getPopInfo());
+ populationMigrationEmigrationUI.init(getPopInfo());
+
+ setSelectedPopulationSeasonInfo(isActif());
+ }
+ else {
+ setSelectedPopulationSeasonInfo(false);
+ }
+ refreshHidablePanel();
+}
+protected void useEquationChanged() {
+ getPopInfo().setUseEquationMigration(fieldUseEquationMigration.isSelected());
+ refreshHidablePanel();
+}
+protected void refreshHidablePanel() {
+ if (getPopInfo() != null) {
+ if (getPopInfo().getUseEquationMigration()) {
+ fieldUseEquationMigration.setSelected(true);
+ ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseEquation");
+ }
+ else {
+ fieldUseEquationMigration.setSelected(false);
+ ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseMatrix");
+ }
+ }
+}
+ ]]>
+ </script>
+ <Table id='body'>
+ <row>
+ <cell anchor='east'>
+ <JLabel text="isisfish.populationMigration.selectSeason" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JComboBox id="fieldPopulationMigrationSeasonChooser"
+ model='{new PopulationSeasonInfoComboModel()}'
+ renderer="{new PopulationSeasonInfoComboRenderer()}"
+ onActionPerformed='seasonChanged()'
+ enabled='{isActif()}'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' anchor='west'>
+ <JCheckBox id="fieldUseEquationMigration" selected='{getPopInfo().getUseEquationMigration()}'
+ text="isisfish.populationMigration.useEquation" onActionPerformed='useEquationChanged()' enabled='{isSelectedPopulationSeasonInfo()}' decorator='boxed'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weightx='1.0' weighty='0.7'>
+ <JPanel id="hidablePanel" layout='{new CardLayout()}'>
+ <JTabbedPane id="fieldUseMatrix" constraints='"fieldUseMatrix"' enabled='{isSelectedPopulationSeasonInfo()}'>
+ <tab title='{_("isisfish.populationMigrationMigration.title")}'>
+ <PopulationMigrationMigrationUI id="populationMigrationMigrationUI" constructorParams='this' decorator='boxed'
+ _bean='{PopulationSeasonInfoImpl.class}' _method='"MigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' />
+ </tab>
+ <tab title='{_("isisfish.populationMigrationImmigration.title")}'>
+ <PopulationMigrationImmigrationUI id="populationMigrationImmigrationUI" constructorParams='this' decorator='boxed'
+ _bean='{PopulationSeasonInfoImpl.class}' _method='"ImmigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' />
+ </tab>
+ <tab title='{_("isisfish.populationMigrationEmigration.title")}'>
+ <PopulationMigrationEmigrationUI id="populationMigrationEmigrationUI" constructorParams='this' decorator='boxed'
+ _bean='{PopulationSeasonInfoImpl.class}' _method='"EmigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' />
+ </tab>
+ </JTabbedPane>
+ <PopulationMigrationEquationUI id='populationMigrationEquationUI' constraints='"fieldUseEquation"' constructorParams='this'
+ actif='{isSelectedPopulationSeasonInfo()}' />
+ </JPanel>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='east'>
+ <JLabel text="isisfish.populationMigration.comments" enabled='{isActif()}'/>
+ </cell>
+ <cell fill='both' weightx='1.0' weighty='0.3'>
+ <JScrollPane>
+ <!-- comment can be null jaxx.runtime.SwingUtil.getStringValue() -->
+ <JTextArea id="fieldPopulationMigrationComment" text='{jaxx.runtime.SwingUtil.getStringValue(getBean().getMigrationComment())}'
+ onKeyReleased='getBean().setMigrationComment(fieldPopulationMigrationComment.getText())'
+ enabled='{isActif()}' decorator='boxed'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <Table>
+ <row>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='save' decorator='boxed'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='cancel' decorator='boxed'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ </Table>
+</fr.ifremer.isisfish.ui.input.InputContentUI>
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,1111 +0,0 @@
-Add\ to\ %s\ queue=
-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
-Can't\ add\ simulation\:\ =
-Can't\ create\ simulation\ logger=Can't create simulation logger
-Can't\ delete\ simulation\ %s\ =
-Can't\ do\ post\ action\ %s=
-Can't\ do\ simulation\ %s=
-Can't\ download\ archive\ \:\ %s=
-Can't\ download\ file=
-Can't\ evaluate\ simulation\ prescript=
-Can't\ export\ simulation\ %s=
-Can't\ get\ changlog=
-Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
-Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
-Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
-Can't\ instantiate\ %s=
-Can't\ open\ log\ for\ %s=
-Can't\ read\ ssh\ key\ \:\ %s=
-Can't\ simulate\ %s=
-Check\ state\ of\ local\ repository\:\ %s=
-Check\ syntax\ of\ the\ current\ script=
-Checkout\ pom.xml\ to\ %s=
-Command\ '%s'\ fail\ to\ execute=
-Commit\ script\ to\ CVS\ server=
-Copy\ current\ selection\ (Ctrl-c)=
-Could\ not\ found\ formule\ type\ %s\ autorised\ type\ are\ %s=
-Create\ a\ new\ script=
-Cut\ current\ selection\ (Ctrl-x)=
-Error\ during\ vcs\ initialisation=
-Error\ while\ uploading\ public\ key\ to\ remote\ serveur\ authorized_keys=
-Export\ selected\ script(s)\ to\ zip\ archive=
-Generate\ next\ simulation=
-Import\ one\ java\ file\ script\ source=
-Import\ simulation\ file\ %s\ in\ directory\ %s\ and\ rename\ from\ %s\ to\ %s=
-Import\ zipped\ file\ containing\ all\ scripts\ directory\ structure=
-Info=Info
-Jobs\ submited\ is\ not\ ItemSimulation\ but\ was\ %s=
-Last\ entry\ was\ %s\ extract\ name\ %s=
-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=
-Normal\ stop\ thread,\ this\ is\ not\ an\ error=
-Not\ start\ simulation\ %s\ because\ user\ ask\ stop=
-Paste\ current\ selection\ (Ctrl-v)=
-Process\ template\ error=
-Region\ %s\ allready\ exist\ in\ repository.\ Can't\ import=
-Region\ %s\ already\ inited=
-Remote\ IsisFish\ server=
-Remote\ control\ file\ doesn't\ exists\ %s=
-Remote\ information\ file\ doesn't\ exists\ %s=
-Rename\ data\ directory\ to\ %s=
-Save\ current\ script=
-Show\ help=
-SimulationExecutor\ started\ with\ %s\ thread\ for\ %s=
-Ssh\ key\ found\ '%s'\ will\ be\ used\ to\ connect\ to=
-Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
-Stop\ the\ process=
-SubProcess\ start\:\ %s\ %s=
-Switch\ repository\ type\ to\ none=
-Try\ to\ eval\ current\ script\ (must\ be\ have\ main\ method)=
-Try\ to\ log\ on\ %s@%s\:%d=
-Use\ branches,\ switch\ not\ needed=
-User\ restart\ simulation\ %s=
-User\ stop\ simulation\ %s=
-could\ not\ close\ reader\ %1$s=could not close reader %1$s
-could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
-could\ not\ filter\ on\ simulations=could not filter on simulations
-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
-destination\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
-destination\ already\ exists\ %s\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
-directory\ %s\ must\ be\ a\ directory=
-filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
-in\ hour=
-isisfish.about.abouthtmltext=<html><b>Isis-Fish (%s)</b><br /><br />Copyright IFREMER-MAERHA 2000-2009.<br /><br /><a href\="http\://isis-fish.labs.libre-entreprise.org">http\://isis-fish.labs.libre-entreprise.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.
-isisfish.about.title=About Isis-Fish...
-isisfish.advancedParameters.title=Advanced parameters
-isisfish.advancedParams.freeParameters=Free parameters
-isisfish.advancedParams.libLevelLogger=Library log level
-isisfish.advancedParams.scriptLevelLogger=Script log level
-isisfish.advancedParams.simulLevelLogger=Simulator log level
-isisfish.advancedParams.simulationCache=Simulation cache
-isisfish.advancedParams.simulationStatistique=Simulation statistics
-isisfish.advancedParams.simulatorUse=Simulator to Use
-isisfish.cell.comments=Comments
-isisfish.cell.land=Land
-isisfish.cell.latitude=Latitude
-isisfish.cell.longitude=Longitude
-isisfish.cell.name=Name
-isisfish.change.equation=Can't change equation
-isisfish.commit.message=Enter commit message
-isisfish.common.add=Add
-isisfish.common.add.short=add
-isisfish.common.alert=alert
-isisfish.common.apply=Apply
-isisfish.common.blank=\
-isisfish.common.cancel=Cancel
-isisfish.common.check=Check
-isisfish.common.clear=Clear
-isisfish.common.date=Date
-isisfish.common.debug=debug
-isisfish.common.delete=Delete
-isisfish.common.ellipsis=...
-isisfish.common.emigration=Emigration
-isisfish.common.equation=Equation
-isisfish.common.error=error
-isisfish.common.finish=Finish
-isisfish.common.gear=Gear
-isisfish.common.immigration=immigration
-isisfish.common.info=info
-isisfish.common.migration=migration
-isisfish.common.month=month %1$s
-isisfish.common.name=Name
-isisfish.common.new=new
-isisfish.common.newMatrix=New matrix
-isisfish.common.next=Next
-isisfish.common.ok=Ok
-isisfish.common.openEditor=Open editor
-isisfish.common.population=Population
-isisfish.common.populationGroup=Population group
-isisfish.common.populations=Populations
-isisfish.common.port=port
-isisfish.common.prev=Previous
-isisfish.common.region=Region
-isisfish.common.remove=Remove
-isisfish.common.reset=Reset
-isisfish.common.rules=Rules
-isisfish.common.save=Save
-isisfish.common.saveModel=Save as model
-isisfish.common.saveNextSimulation=Save for next simulation
-isisfish.common.season=Season
-isisfish.common.setOfVessels=Set of vessels
-isisfish.common.simulate=Simulate
-isisfish.common.stop=Stop
-isisfish.common.strategies=Strategies
-isisfish.common.sum=Sum
-isisfish.common.tag=Tag
-isisfish.common.tripType=Trip type
-isisfish.common.valid=Valid
-isisfish.common.value=Value
-isisfish.common.warn=warn
-isisfish.common.year=year
-isisfish.common.zone=Zone
-isisfish.config.database.lockmode.description=
-isisfish.config.main.compileDirectory.description=
-isisfish.config.main.configFileName.description=
-isisfish.config.main.defaultBackupDirectory.description=
-isisfish.config.main.defaultExportDirectory.description=
-isisfish.config.main.defaultExportNames.description=
-isisfish.config.main.defaultMapFile.description=
-isisfish.config.main.defaultResultNames.description=
-isisfish.config.main.defaultSimulator.description=
-isisfish.config.main.defaultTagValue.description=
-isisfish.config.main.encoding.description=encoding used on system
-isisfish.config.main.javadocDirectory.description=
-isisfish.config.main.javadocURL.description=
-isisfish.config.main.launchUI.description=
-isisfish.config.main.localSimulator.description=
-isisfish.config.main.locale.description=user locale
-isisfish.config.main.login.description=
-isisfish.config.main.password.description=
-isisfish.config.main.projectName.description=name of project
-isisfish.config.main.regionMap.description=
-isisfish.config.main.remoteCaparmor.description=
-isisfish.config.main.resultExport.description=
-isisfish.config.main.simulation.max.simultaneous.simulation=Simultaneous simulation
-isisfish.config.main.simulation.max.simultaneous.simulation.description=Simultaneous simulation to do on Caparmor
-isisfish.config.main.simulation.ssh.control.check.interval=Control check interval (seconds)
-isisfish.config.main.simulation.ssh.control.check.interval.description=Control check interval (seconds)
-isisfish.config.main.simulation.ssh.datapath=Isis-Fish database
-isisfish.config.main.simulation.ssh.datapath.description=Isis-Fish database path
-isisfish.config.main.simulation.ssh.isis.home=Isis-Fish home
-isisfish.config.main.simulation.ssh.isis.home.description=Isis-Fish installation directory
-isisfish.config.main.simulation.ssh.pbsbinpath=PBS executables directory
-isisfish.config.main.simulation.ssh.pbsbinpath.description=PBS executables (qsub, qdel...) directory
-isisfish.config.main.simulation.ssh.server=Server address
-isisfish.config.main.simulation.ssh.server.description=Server adress
-isisfish.config.main.simulation.ssh.tmppath=Server temp directory
-isisfish.config.main.simulation.ssh.tmppath.description=Server temp directory
-isisfish.config.main.simulation.ssh.userhome=User home directory
-isisfish.config.main.simulation.ssh.userhome.description=User home directory
-isisfish.config.main.simulation.ssh.username=SSH identifier
-isisfish.config.main.simulation.ssh.username.description=SSH identifier
-isisfish.config.main.simulationServer.description=
-isisfish.config.main.simulationShowOnlyError.description=
-isisfish.config.main.simulationShowOnlyQueue.description=
-isisfish.config.main.smtpServer.description=
-isisfish.config.main.subSimulator.description=
-isisfish.config.main.userMail.description=
-isisfish.config.main.userName.description=
-isisfish.config.ssh.key.file=SSH key
-isisfish.config.ssh.key.file.description=Private SSH key path
-isisfish.config.vcs.hostName.description=
-isisfish.config.vcs.keyFile.description=
-isisfish.config.vcs.localDatabasePath.description=
-isisfish.config.vcs.noPassPhrase.description=
-isisfish.config.vcs.passphrase.description=
-isisfish.config.vcs.remoteDatabase.description=
-isisfish.config.vcs.remotePath.description=
-isisfish.config.vcs.type.description=
-isisfish.config.vcs.typeRepo.description=
-isisfish.config.vcs.useSshConnexion.description=
-isisfish.config.vcs.userName.description=
-isisfish.config.vcs.userPassword.description=
-isisfish.dataResult.descriptionLabel=defaultToolTip-fr.ifremer.resultat.DataResult.descriptionLabel
-isisfish.dataResult.export.csv=Export to CSV
-isisfish.dataResult.exportButton=defaultToolTip-fr.ifremer.resultat.DataResult.exportButton
-isisfish.dataResult.label=label9
-isisfish.dataResult.matriceTable=defaultToolTip-fr.ifremer.resultat.DataResult.matriceTable
-isisfish.dataResult.scrolledwindow2=defaultToolTip-fr.ifremer.resultat.DataResult.scrolledwindow2
-isisfish.dataResult.table2=defaultToolTip-fr.ifremer.resultat.DataResult.table2
-isisfish.date.toString=%1$s %2$s
-isisfish.effortDescription.crewFoodCost=Crew food cost
-isisfish.effortDescription.crewShareRate=Crew share rate
-isisfish.effortDescription.crewSize=Crew size
-isisfish.effortDescription.economicTitle=\u00C9conomiques parameters
-isisfish.effortDescription.effortTitle=Fishing effort parameters
-isisfish.effortDescription.fishingOperation=Fishing operation
-isisfish.effortDescription.fishingOperationDuration=Fishing operation duration
-isisfish.effortDescription.fishingOperationDuration.tooltip=In hours
-isisfish.effortDescription.fixedCrewSalary=Fixed crew salary
-isisfish.effortDescription.gearsNumberPerOperation=Gears number per operation
-isisfish.effortDescription.landingCosts=Landing costs
-isisfish.effortDescription.otherRunningCost=Other running cost
-isisfish.effortDescription.parametersTitle=M\u00E9tiers parameters
-isisfish.effortDescription.repairAndMaintenanceGearCost=Repair and maintenance gear cost
-isisfish.effortDescription.title=Practiced metier
-isisfish.effortDescription.toString=EffortDescription for %1$s with %2$s
-isisfish.effortDescription.unitCostOfFishing=Fishing unit cost
-isisfish.equation.editor.title=Equation Editor
-isisfish.error.acceptable.population=New value isn't acceptable value for this population
-isisfish.error.add.card=Error while adding of result to the map.
-isisfish.error.add.logger.simulation=isisfish.error.add.logger.simulation
-isisfish.error.add.result.data=Error while adding result ot data.
-isisfish.error.add.result.graph=Error while adding result to graph
-isisfish.error.add.tray=Can't add system tray icon
-isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s
-isisfish.error.change.equation=Can't change equation
-isisfish.error.check.region=
-isisfish.error.compile.fileerror=File %s can't be compiled \!
-isisfish.error.compile.script=Can't compile script\: %1$s
-isisfish.error.compiled.parameter=Can't get rule parameter from compiled class
-isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es
-isisfish.error.create.equation=Can't create equation
-isisfish.error.delete.database=Can't delete database
-isisfish.error.delete.file=could not delete file %1$s
-isisfish.error.delete.vcs.files=Can't delete vcs files
-isisfish.error.during.simulation=Error during simulation
-isisfish.error.emigration.negative=emigration negative
-isisfish.error.empty.code.rubbin=rubbin's code is empty
-isisfish.error.empty.emigration=emigration empty
-isisfish.error.empty.id.geographic=goegraphic identifier is empty
-isisfish.error.empty.immigration=immigration empty
-isisfish.error.empty.migration=Migration empty
-isisfish.error.empty.name=The name is empty
-isisfish.error.empty.params.name=Parameter name is empty
-isisfish.error.empty.population=Population is empty
-isisfish.error.empty.scientific.name=scentific name is empty
-isisfish.error.empty.season=info season empty
-isisfish.error.empty.selectivity=selectivity is empty
-isisfish.error.empty.species=specie capturable empty
-isisfish.error.empty.species.name=specie's name is empty
-isisfish.error.empty.unit=measure unit is empty
-isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
-isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
-isisfish.error.evaluate.preplan.script=
-isisfish.error.evalute.plan.script=Can't evaluate plan script
-isisfish.error.factor.invalid=Factor is not valid
-isisfish.error.file.already.exists=The file %1$s already exist
-isisfish.error.get.fisheryRegion=Can't get FisheryRegion
-isisfish.error.growth.equation.before.create.group.population=Error, You must input growth equation before create the group population
-isisfish.error.immigration.negative=immigration negative
-isisfish.error.import.convertible=Erreur lors de l'import, la version du fichier que vous souhaitez importer n'est pas transformable en une version importable.
-isisfish.error.import.file=Can't import file %1$s
-isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
-isisfish.error.init.map=Can't init map.
-isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
-isisfish.error.instanciate=Can't instanciate %1$s
-isisfish.error.instanciate.export=Can't instanciate export %1$s
-isisfish.error.invalid.costs.fix=les co\u00FBts fixes sont invalides
-isisfish.error.invalid.distribution.recruitment=distribution de recrutement invalide
-isisfish.error.invalid.equation=Equation invalid
-isisfish.error.invalid.equation.name=Invalid equation name
-isisfish.error.invalid.file.name=The script name %1$s is not valid.
-isisfish.error.invalid.interval.reproduction.recruitment=interval entre la reproduction et le recrutement invalide
-isisfish.error.invalid.mean.weight=poids moyen invalide
-isisfish.error.invalid.natural.death=natural mortality on classes naissantes invalide
-isisfish.error.invalid.number=the number is invalid
-isisfish.error.invalid.range=La gamme possible n'a pas de valeur acceptable
-isisfish.error.invalid.values.params=Parametre controlable hors valeurs possibles
-isisfish.error.invalidate.natural.death=natural mortality invalid
-isisfish.error.invoke.method=Can't invoke method '%1$s' for class %2$s
-isisfish.error.linkageerror.message=Isis-Fish has detected a script use error.\nCompilation directory has been deleted to force recompilation.\n\nPlease, restart Isis-Fish.
-isisfish.error.linkageerror.title=Init error
-isisfish.error.load.class=Can't load class\: %1$s
-isisfish.error.load.classloader=Can't create ClassLoader for script, bad directory\: %1$s for reason %2$s
-isisfish.error.load.file=could not load file %1$s
-isisfish.error.load.map=Can't load map file\: %1$s
-isisfish.error.log.closeAppender=could not close appender %1$s for category %2$s
-isisfish.error.log.console.dispose=Une erreur est survenue pendant la fermeture de la console %1$s de log, raison %2$s
-isisfish.error.log.createAppender=could not create appender [%1$s] \: %2$s for reason %3$s
-isisfish.error.log.foundAppender=\=could not found log appender %1$s for category %2$s
-isisfish.error.matrix.more.2d=Matrice de plus de 2 dimensions\!\!\nS\u00E9lectionnez moins d'\u00E9l\u00E9ments ou utilisez l'op\u00E9rateur somme.
-isisfish.error.migration.negative=Migration negative
-isisfish.error.no.matrix=No matrix for\:
-isisfish.error.no.null.time.step=Error, the time step should not be null
-isisfish.error.no.sector=No sector defined
-isisfish.error.no.select.simulation=could not select simulation
-isisfish.error.no.target.species=no target species in %1$s for %2$s
-isisfish.error.not.found.code=could not found codeclass for %1$s
-isisfish.error.not.found.description=could not found description for %1$s
-isisfish.error.not.found.field=could not found field %1$s doc for %2$s
-isisfish.error.not.found.field.class=could not found field %1$s for class %2$s
-isisfish.error.not.null.class.grown=classe mature vaut nul
-isisfish.error.not.null.mean.weight=poids moyen nul
-isisfish.error.not.null.natiral.death=natural mortality null
-isisfish.error.not.possible.metier=Pas de m\u00E9tier possible
-isisfish.error.not.support.class=this class does not support
-isisfish.error.number.classes.upper.zero=Error, the number of classes must be upper than 0
-isisfish.error.obtain.analyseplan=Can't obtain description of AnalysePlan
-isisfish.error.obtain.doc.export=Can't obtain @Doc on class export
-isisfish.error.obtain.doc.resultName=Can't obtain @Doc on ResultName
-isisfish.error.obtain.doc.rule=Can't obtain description for a Rule class
-isisfish.error.obtain.field=Can't obtain field @Doc for Rule %1$s
-isisfish.error.obtain.field.analyseplan=Can't obtain field @Doc for AnalysePlan %1$s
-isisfish.error.obtain.field.export=Can't obtain field @Doc for Export %1$s
-isisfish.error.obtain.field.sensitivitycalculator=Can't obtain field @Doc for Calculator %1$s
-isisfish.error.out.memory=Out of memory try with more memory (option -mx)
-isisfish.error.overlap.season=Cette saison chevauche une autre saison
-isisfish.error.parse.date=Can't parse date %1$s
-isisfish.error.parse.long=Can't parse long %1$s
-isisfish.error.plan.parameter=Can't get plan parameter from compiled class
-isisfish.error.prepare.data=Can't prepare data
-isisfish.error.prepare.information.simulation=Can't prepare information for simulation
-isisfish.error.read.simulation=Can't read simulation information %1$s
-isisfish.error.read.simulation.parameters=Can't read simulation parameters from file %1$s
-isisfish.error.region.already.exists=This region already exists
-isisfish.error.region.name.empty=Region name is empty
-isisfish.error.remove.directory=Can't remove directory %1$s
-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.region=
-isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
-isisfish.error.save.simulation.parameters=Can't save simulation parameters in file %1$s
-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
-isisfish.error.script.load=Can't load file %1$s for reason %2$s
-isisfish.error.script.save=Can't save file %1$s for reason %2$s
-isisfish.error.sensitivity.parameter=
-isisfish.error.simulation.log.openAppender=could not open appender of simulation %1$s for reason %2$s
-isisfish.error.simulation.remote.global=Can't launch a simulation on remote server
-isisfish.error.simulation.remote.wrongportvalue=Connection port value is incorrect \: %s
-isisfish.error.simulation.resultXml.close=Can't close simulation result XML for reason %1$s
-isisfish.error.simulation.resultXml.open=Can't open simulation result XML for reason %1$s
-isisfish.error.simulation.resultXml.write=Can't write simulation result XML for reason %1$s
-isisfish.error.source.parameter=Can't get parameter from source
-isisfish.error.strategy.order=Strategy %1$s don't have 12 StrategyMonthInfo but %2$s. Recreate them
-isisfish.error.undefined.classes=No classes defined
-isisfish.error.undefined.correspondence.zones.reproduction.recruitment=pas de correspondance entre les zones de reproduction et les zones de recrutement
-isisfish.error.undefined.gear=The engin is not defined
-isisfish.error.undefined.mesh=No mesh defined
-isisfish.error.undefined.mesh.sector=No maille defined in sector
-isisfish.error.undefined.meta.population=No population defined
-isisfish.error.undefined.natural.death=No natural mortality on classes naissantes
-isisfish.error.undefined.sector=No sector defined
-isisfish.error.undefined.stategy=No strategy defined
-isisfish.error.undefined.stategy.months=The strategy is not defined for some mounths
-isisfish.error.undefined.zone.population=No population's zone defined
-isisfish.error.undefined.zone.recruitment=No recrutment's zone defined
-isisfish.error.undefined.zone.reproduction=No reprodution's zone defined
-isisfish.error.unsupported.equation.langage=unsupported langage '%1$s' for equation\: %2$s
-isisfish.error.wait.simThread=Can't wait SimThread
-isisfish.error.warning.title=Warning
-isisfish.error.write.simulation=Can't write information %1$s
-isisfish.export.directory=Export directory
-isisfish.export.saved=Export saved
-isisfish.export.title=Results export
-isisfish.factor.coefficient=Coefficient (in %)
-isisfish.factor.comment=Comment
-isisfish.factor.continue=Continuous factor
-isisfish.factor.discret=Discret factor
-isisfish.factor.equation.variable.action=Action
-isisfish.factor.equation.variable.coefficient=Coef. (in %)
-isisfish.factor.equation.variable.name=Name
-isisfish.factor.equation.variable.operator=Operator
-isisfish.factor.equation.variable.value=Value
-isisfish.factor.factor=Factor
-isisfish.factor.factors=Factors
-isisfish.factor.firstValue=First value
-isisfish.factor.increment=Cardinality
-isisfish.factor.lastValue=Last value
-isisfish.factor.name=Factor name
-isisfish.factor.operateur=Operator
-isisfish.factor.selectDiscretNumber=Number of factors
-isisfish.factor.title=Factor input
-isisfish.factor.validDiscretNumber=Ok
-isisfish.factor.value=Value
-isisfish.filter=Filter
-isisfish.filter.apply=Apply filter
-isisfish.filter.cancel=Cancel
-isisfish.filter.log.levelDebug=Debug
-isisfish.filter.log.levelError=Error
-isisfish.filter.log.levelFatal=Fatal
-isisfish.filter.log.levelInfo=Info
-isisfish.filter.log.levelTrace=Trace
-isisfish.filter.log.levelWarn=Warn
-isisfish.filter.log.tooltip.levelDebug=Debug
-isisfish.filter.log.tooltip.levelError=Error
-isisfish.filter.log.tooltip.levelFatal=Fatal
-isisfish.filter.log.tooltip.levelInfo=Info
-isisfish.filter.log.tooltip.levelTrace=Trace
-isisfish.filter.log.tooltip.levelWarn=Warn
-isisfish.filter.log.tooltip.message=Enter a term to search and press Enter
-isisfish.filter.reset=Reset
-isisfish.filter.result=Results
-isisfish.filter.result.found=Results (%d/%d)
-isisfish.filter.select=filter.select
-isisfish.filter.select.simulation=select.simulation
-isisfish.filter.simulation=filter.simulation
-isisfish.filter.simulation.analysePlanNumber=analysePlanNumber
-isisfish.filter.simulation.description=description
-isisfish.filter.simulation.local=local
-isisfish.filter.simulation.numberOfYear=numberOfYear
-isisfish.filter.simulation.regionName=regionName
-isisfish.filter.simulation.simulationEnd=simulationEnd
-isisfish.filter.simulation.simulationName=simulationName
-isisfish.filter.simulation.simulationStart=simulationStart
-isisfish.filter.simulation.simulatorName=simulatorName
-isisfish.filter.simulation.tooltip.analysePlanNumber=filter.simulation.tooltip.analysePlanNumber
-isisfish.filter.simulation.tooltip.description=filter.simulation.tooltip.description
-isisfish.filter.simulation.tooltip.local=filter.simulation.tooltip.local
-isisfish.filter.simulation.tooltip.numberOfYear=filter.simulation.tooltip.numberOfYear
-isisfish.filter.simulation.tooltip.regionName=filter.simulation.tooltip.regionName
-isisfish.filter.simulation.tooltip.simulationEnd=filter.simulation.tooltip.simulationEnd
-isisfish.filter.simulation.tooltip.simulationName=filter.simulation.tooltip.simulationName
-isisfish.filter.simulation.tooltip.simulationStart=filter.simulation.tooltip.simulationStart
-isisfish.filter.simulation.tooltip.simulatorName=filter.simulation.tooltip.simulatorName
-isisfish.filter.simulation.tooltip.useAnalysePlan=filter.simulation.tooltip.useAnalysePlan
-isisfish.filter.simulation.tooltip.useOptimization=filter.simulation.tooltip.useOptimization
-isisfish.filter.simulation.tooltip.usePreScript=filter.simulation.tooltip.usePreScript
-isisfish.filter.simulation.tooltip.useStatistic=filter.simulation.tooltip.useStatistic
-isisfish.filter.simulation.useAnalysePlan=filter.simulation.useAnalysePlan
-isisfish.filter.simulation.useOptimization=filter.simulation.useOptimization
-isisfish.filter.simulation.usePreScript=filter.simulation.usePreScript
-isisfish.filter.simulation.useStatistic=filter.simulation.useStatistic
-isisfish.fisheryRegion.addMap=Add map
-isisfish.fisheryRegion.area=Fishery area boundaries
-isisfish.fisheryRegion.comments=Comments
-isisfish.fisheryRegion.delMap=Delete map
-isisfish.fisheryRegion.latitude=Lat.
-isisfish.fisheryRegion.latitude.max=Lat. max.
-isisfish.fisheryRegion.latitude.min=Lat. min.
-isisfish.fisheryRegion.longitude=Long.
-isisfish.fisheryRegion.longitude.max=Long. max.
-isisfish.fisheryRegion.longitude.min=Long. min.
-isisfish.fisheryRegion.name=Region name
-isisfish.fisheryRegion.ofCells=of cells (option)
-isisfish.fisheryRegion.selectFile=Select a file
-isisfish.fisheryRegion.spatial=Spatial resolution
-isisfish.gear.comments=Comments
-isisfish.gear.effortUnit=Effort Unit
-isisfish.gear.name=Name
-isisfish.gear.rangeValues=Range of values
-isisfish.gear.standardisationFactor=Standardisation factor
-isisfish.gear.technicalParameter=Technical parameter
-isisfish.gear.title=Gear
-isisfish.graphBean.graph.render=Choose a graph render
-isisfish.graphBean.graphPanel=defaultToolTip-fr.ifremer.graph.GraphBean.graphPanel
-isisfish.graphBean.graphRendererCombo=defaultToolTip-fr.ifremer.graph.GraphBean.graphRendererCombo
-isisfish.graphBean.graphSplitPane=defaultToolTip-fr.ifremer.graph.GraphBean.graphSplitPane
-isisfish.graphBean.label=defaultToolTip-fr.ifremer.graph.GraphBean.label1
-isisfish.graphBean.palettePanel=defaultToolTip-fr.ifremer.graph.GraphBean.palettePanel
-isisfish.graphBean.scrolledwindow=defaultToolTip-fr.ifremer.graph.GraphBean.scrolledwindow1
-isisfish.graphBean.table=defaultToolTip-fr.ifremer.graph.GraphBean.table2
-isisfish.graphBean.table3=defaultToolTip-fr.ifremer.graph.GraphBean.table3
-isisfish.graphCombo.render.bar.horizontal=Rendu en barre horizontale
-isisfish.graphCombo.render.bar.horizontal.stacked=Rendu en barre horizontale empilee
-isisfish.graphCombo.render.bar.vertical=Rendu en barre verticale
-isisfish.graphCombo.render.bar.vertical.3d=Rendu en barre verticale 3D
-isisfish.graphCombo.render.bar.vertical.stacked=Rendu en barre verticale empilee
-isisfish.graphCombo.render.line=Rendu en ligne
-isisfish.graphCombo.render.min.max=Rendu en MinMax
-isisfish.graphCombo.render.surface=Rendu en Aire
-isisfish.infoItem..table=defaultToolTip-fr.ifremer.resultat.InfoItem.table29
-isisfish.infoItem.label=defaultToolTip-fr.ifremer.resultat.InfoItem.label
-isisfish.infoItem.list=defaultToolTip-fr.ifremer.resultat.InfoItem.list
-isisfish.infoItem.scrolledwindow=defaultToolTip-fr.ifremer.resultat.InfoItem.scrolledwindow1
-isisfish.infoItem.sum=defaultToolTip-fr.ifremer.resultat.InfoItemDate.sumButton
-isisfish.infoItem.sum.year=Sum elements per year
-isisfish.infoItem.table=defaultToolTip-fr.ifremer.resultat.InfoItem.table30
-isisfish.input.continueCells=Continue to cells
-isisfish.input.continueGears=Continue to gears
-isisfish.input.continueMetiers=Continue to metiers
-isisfish.input.continuePopulations=Continue to populations
-isisfish.input.continuePorts=Continue to ports
-isisfish.input.continueSetOfVessels=Continue to set of vessels
-isisfish.input.continueSpecies=
-isisfish.input.continueStrategies=Continue to strategies
-isisfish.input.continueTripTypes=Continue to trip type
-isisfish.input.continueVesselTypes=Continue to vessel types
-isisfish.input.continueZones=Continue to zones
-isisfish.input.menu.addRegion=Add region
-isisfish.input.menu.commit=Commit change
-isisfish.input.menu.copyRegion=Copy Region
-isisfish.input.menu.exportRegion=Export Region
-isisfish.input.menu.importRegion=Import Region
-isisfish.input.menu.importRegionSimulation=Import Region from simulation
-isisfish.input.menu.importRegionV2=Import Region from v2
-isisfish.input.menu.importRenameRegion=Import Region and rename
-isisfish.input.menu.removeLocaly=Remove localy
-isisfish.input.menu.removeLocalyRemotely=Remove localy and remotely
-isisfish.input.menu.server=Server
-isisfish.input.newRegion=New region
-isisfish.input.selectRegion=Select region
-isisfish.input.title=Fishery input
-isisfish.input.tree.cells=Cells
-isisfish.input.tree.gears=Gears
-isisfish.input.tree.metiers=Metiers
-isisfish.input.tree.populations=Populations
-isisfish.input.tree.ports=Ports
-isisfish.input.tree.setofvessels=Set of vessels
-isisfish.input.tree.species=Species
-isisfish.input.tree.strategies=Strategies
-isisfish.input.tree.triptypes=Trip types
-isisfish.input.tree.vesseltypes=Vessel types
-isisfish.input.tree.zones=Zones
-isisfish.launch.anonymous=read only
-isisfish.launch.email=email
-isisfish.launch.firstname=firstname
-isisfish.launch.init.done=init done in %1$s.
-isisfish.launch.lasstname=lasstname
-isisfish.launch.server.authenticationMethod=server access
-isisfish.launch.server.login=server login
-isisfish.launch.server.ssh.confirm.passphrase=confirm passphrase
-isisfish.launch.server.ssh.key.change=Change your ssh key
-isisfish.launch.server.ssh.key.generate=Generate ssh key
-isisfish.launch.server.ssh.no.passphrase=no passphrase
-isisfish.launch.server.ssh.passphrase=passphrase
-isisfish.launch.server.ssh.privateKeyFile=private ssh key
-isisfish.launch.server.ssh.publicKeyFile=public ssh key
-isisfish.launch.ssh=read-write (ssh)
-isisfish.launch.stop=Stopping simulation...
-isisfish.launching=after init done in %1$s.
-isisfish.log.addAppender=add appender [%1$s]
-isisfish.log.body=Message to add
-isisfish.log.closeAppender=closing appender %1$s for category %2$s
-isisfish.log.mail.failed=Can't send report by mail. Is your mail server up ? (I'm trying to contact the < %1$s > smtp server)
-isisfish.log.mail.send=A report has been sent to %1$s
-isisfish.log.mail.send.title=Send simulation %1$s by email
-isisfish.log.mailTo=Destination adress
-isisfish.log.removeAppender=remove appender [%1$s]
-isisfish.log.restoreLogLevel=swap back level for logger %1$s from level %2$s to level %3$s
-isisfish.log.sendAll=Send the complete simulation archive
-isisfish.log.sendMail=Send by email
-isisfish.log.simulation.name=IsisFish simulation %1$s
-isisfish.log.swapLogLevel=swap level for logger %1$s from level %2$s to level%3$s
-isisfish.log.tooltip.body=The message will be join to email
-isisfish.log.tooltip.mailTo=Enter destination adress
-isisfish.log.tooltip.sendAll=Send the complete simulation archive, or just the log file
-isisfish.log.tooltip.sendMail=Click here to send the email with files
-isisfish.message.add.objets.simulation=Add new objets simulation
-isisfish.message.backup.database.finished=backup database finished
-isisfish.message.backup.database.progress=backup database in progress
-isisfish.message.cancel.finished=Cancel finished
-isisfish.message.check.finished=check finished
-isisfish.message.check.region=
-isisfish.message.checking.cell=
-isisfish.message.choose.archive=choose archive file or directory
-isisfish.message.commit.cancelled=commit cancelled
-isisfish.message.commit.finished=commit finished
-isisfish.message.commit.region.canceled=Commit region canceled
-isisfish.message.commiting.region=Commiting region %1$s ...
-isisfish.message.compilation.time=Compilation time %1$ss
-isisfish.message.confirm.delete.object=Do you really want delete object %1$s
-isisfish.message.confirm.remove.region=Do you really want to remove the region %1$s ?
-isisfish.message.confirm.remove.script=Do you want to remove script '%1$s' ?
-isisfish.message.copy.finished=Copy finished
-isisfish.message.copy.region=Copy region to %1$s
-isisfish.message.creating.region=Creating region %1$s
-isisfish.message.creation.done=creation done %1$s
-isisfish.message.creation.finished=Creation finished
-isisfish.message.delete.canceled=delete canceled
-isisfish.message.delete.entities=Delete entities
-isisfish.message.delete.entity=Delete entity
-isisfish.message.delete.finished=delete finished
-isisfish.message.delete.object=To delete object %1$s, all next object will be deleted\n\n
-isisfish.message.evaluation.finished=evaluation finished
-isisfish.message.export.done=export done
-isisfish.message.export.zip=Export to zip file %1$s
-isisfish.message.file.overwrite=File exists, do you want overwrite it ?
-isisfish.message.import=Import %1$s
-isisfish.message.import.equation.convert=Manual equation convertion
-isisfish.message.import.finished=Import finished
-isisfish.message.import.region.name=Enter name for imported region
-isisfish.message.import.region.xml=XMLed Region
-isisfish.message.import.region.zipped=Zipped Region
-isisfish.message.import.scripts.file.cancelled=Import scripts cancelled
-isisfish.message.import.xml.v2.file=Import xml v2 file
-isisfish.message.import.zip=Import zip file
-isisfish.message.launchui.notlaunch=
-isisfish.message.load.finished=load finished
-isisfish.message.load.map=Try to load map file\: %1$s (%2$s, %3$s)
-isisfish.message.loading.old.simulation=Loading old simulation ...
-isisfish.message.loading.region=Loading region ...
-isisfish.message.name.imported.region=Enter name for imported region
-isisfish.message.new.filename=Enter the name of the new file. (use only chars and _ and start with uppercase)
-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.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
-isisfish.message.recruitment.number.month=Input the number of month of recruitment
-isisfish.message.region.commited=Region commited
-isisfish.message.region.loaded=Region loaded
-isisfish.message.region.remove.canceled=Region remove canceled
-isisfish.message.region.removed=Region removed
-isisfish.message.remove.canceled=Remove canceled
-isisfish.message.remove.finished=Remove finished
-isisfish.message.removing.region=Removing region %1$s ...
-isisfish.message.result.verif.region=R\u00E9sultat de la v\u00E9rification de la r\u00E9gion
-isisfish.message.save.finished=Save finished
-isisfish.message.saveModel.finished=Save model finished
-isisfish.message.script.commit=Enter commit message
-isisfish.message.setting.cache.aspects=Setting Cache aspects
-isisfish.message.setting.trace.aspects=Setting Trace aspects
-isisfish.message.simulation.after=Result exports
-isisfish.message.simulation.ended=Simulation ended
-isisfish.message.simulation.execution=Simulation execution
-isisfish.message.simulation.prepare=Preparing simulation
-isisfish.message.tray.disabled=SystemTray disabled
-isisfish.message.update.finished=update finished
-isisfish.metier.comments=Comments
-isisfish.metier.name=Name
-isisfish.metier.rangeValues=Range of values
-isisfish.metier.title=Metier
-isisfish.metierMonitor.metiers=Metiers
-isisfish.metierMonitor.strategies=Strategies
-isisfish.metierSeasonInfo.toString=%1$s season %2$s-%3$s
-isisfish.metierSeasonInfoSpecies.mainSpecies=Main species for the metier
-isisfish.metierSeasonInfoSpecies.selectSeason=Select a season
-isisfish.metierSeasonInfoSpecies.selectSpecies=Select a species
-isisfish.metierSeasonInfoSpecies.species=Species
-isisfish.metierSeasonInfoSpecies.targetFactor=Target factor
-isisfish.metierSeasonInfoSpecies.title=Catchable species
-isisfish.metierSeasonInfoZone.comments=Comments
-isisfish.metierSeasonInfoZone.season=Season
-isisfish.metierSeasonInfoZone.selectSeason=Select a season
-isisfish.metierSeasonInfoZone.title=Seasons / Zones
-isisfish.monitor.title=Application Monitor
-isisfish.month.april=april
-isisfish.month.august=august
-isisfish.month.december=december
-isisfish.month.february=february
-isisfish.month.january=january
-isisfish.month.july=july
-isisfish.month.june=june
-isisfish.month.march=march
-isisfish.month.may=may
-isisfish.month.november=november
-isisfish.month.october=october
-isisfish.month.september=september
-isisfish.params.changeLogLev=Change from level '%1$s' to level '%2$s'
-isisfish.params.clearFilter=Clear filter
-isisfish.params.description=Description
-isisfish.params.filter=Filter
-isisfish.params.lblLauncher=Simulation launcher
-isisfish.params.loadOldSimulation=Load old simulation
-isisfish.params.numberYear=Number of year
-isisfish.params.onlyExportSimulation=Only export simulation
-isisfish.params.populationNumbers=Population numbers input
-isisfish.params.ruleParameters=Rule's parameters
-isisfish.params.sensitivityName=Sensitivity name
-isisfish.params.simulationName=Simulation name
-isisfish.params.title=Parameters
-isisfish.params.toString.fishery=P\u00EAcherie\: %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.plan=Plan\: %1$s
-isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\n\n
-isisfish.params.toString.populations=Populations\:
-isisfish.params.toString.rule=Rule\: %1$s
-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=Strat\u00E9gies d'exploitation\:
-isisfish.params.useAnalysePlan=Use simulation plan
-isisfish.params.usePreSimulationScript=Use pre simulation script
-isisfish.population.capturability=Capturability
-isisfish.population.comments=Comments
-isisfish.population.group=Group
-isisfish.population.groups=Groups
-isisfish.population.mappingZoneReproZoneRecru=MappingZoneReproZoneRecru
-isisfish.population.matrixAbundance=Abundance matrix
-isisfish.population.matrixAbundance1D=matrixAbundance1D
-isisfish.population.recruitment=Recruitment
-isisfish.population.reproduction=Reproduction
-isisfish.population.season=Season
-isisfish.population.zones=Zones
-isisfish.populationBasics.geographicID=Geographic identifier
-isisfish.populationBasics.growth=Growth
-isisfish.populationBasics.growthReverse=Reverse growth
-isisfish.populationBasics.maturityGroup=Maturity group
-isisfish.populationBasics.name=Name
-isisfish.populationBasics.numberGroup=Number of group
-isisfish.populationBasics.plusGroup=Plus group
-isisfish.populationBasics.recreateClasses=Recreate classes
-isisfish.populationBasics.title=Population input
-isisfish.populationCapturability.comments=Comments
-isisfish.populationCapturability.selectCoefficient=Select a coefficient per season and per class
-isisfish.populationCapturability.title=Capturability input
-isisfish.populationEquation.meanWeight=Mean weight
-isisfish.populationEquation.naturalDeathRate=Natural death rate
-isisfish.populationEquation.price=Price
-isisfish.populationEquation.title=Equations input
-isisfish.populationGroup.age=Age
-isisfish.populationGroup.comments=Comments
-isisfish.populationGroup.length=Length
-isisfish.populationGroup.maximumLength=Maximum length
-isisfish.populationGroup.meanWeigth=Mean Weigth
-isisfish.populationGroup.minimumLength=Minimum length
-isisfish.populationGroup.naturalDeathRate=Natural death rate
-isisfish.populationGroup.price=Price
-isisfish.populationGroup.reproductionRate=Reproduction rate
-isisfish.populationGroup.title=Population group input
-isisfish.populationGroup.toString=%1$s Group %2$s
-isisfish.populationMigration.comments=Comments
-isisfish.populationMigration.selectSeason=Select a season
-isisfish.populationMigration.title=Migration
-isisfish.populationMigration.useEquation=Use equation
-isisfish.populationMigrationEmigration.coefficient=Coefficient
-isisfish.populationMigrationEmigration.departureZone=Departure Zone
-isisfish.populationMigrationEmigration.title=Population emigration
-isisfish.populationMigrationImmigration.arrivalZone=Arrival Zone
-isisfish.populationMigrationImmigration.coefficient=Coefficient
-isisfish.populationMigrationImmigration.title=Population immigration
-isisfish.populationMigrationMigration.arrivalZone=Arrival zone
-isisfish.populationMigrationMigration.coefficient=Coefficient
-isisfish.populationMigrationMigration.departureZone=Departure zone
-isisfish.populationMigrationMigration.title=Population migration
-isisfish.populationRecruitment.comments=Comments
-isisfish.populationRecruitment.monthgapgetweenreprorecruitment=Month gap between repro and recruitment
-isisfish.populationRecruitment.recruitmentDistribution=Recruitment distribution
-isisfish.populationRecruitment.reproductionEquation=Reproduction equation
-isisfish.populationRecruitment.title=Recruitment input
-isisfish.populationSeasonInfo.arrival=Arrival
-isisfish.populationSeasonInfo.departure=Departure
-isisfish.populationSeasonInfo.distributionSpawing=Distribution of spawing
-isisfish.populationSeasonInfo.emigration=Emigration
-isisfish.populationSeasonInfo.group=Group
-isisfish.populationSeasonInfo.immigration=Immigration
-isisfish.populationSeasonInfo.migration=Migration
-isisfish.populationSeasonInfo.months=Months
-isisfish.populationSeasonInfo.toString=%1$s season %2$s-%3$s
-isisfish.populationSeasons.Reproduction=Reproduction
-isisfish.populationSeasons.changeGroup=Change of group
-isisfish.populationSeasons.comments=Comments
-isisfish.populationSeasons.computeCoefficient=Calculate coefficient
-isisfish.populationSeasons.distributionSpawning=Distribution of spawning
-isisfish.populationSeasons.noSpacialized=Not spacialized
-isisfish.populationSeasons.selectSeason=Select a season
-isisfish.populationSeasons.showSpacialized=Show the spacialized
-isisfish.populationSeasons.spacialized=Spacialized
-isisfish.populationSeasons.spacialized.visualisation=Spacialized
-isisfish.populationSeasons.title=Saisons
-isisfish.populationZones.betweenSpawningRecruitmentAreas=Match between spawning and recruitment areas
-isisfish.populationZones.selectPopulationAreas=Select the population areas
-isisfish.populationZones.selectRecruitmentAreas=Select the recruitment areas
-isisfish.populationZones.selectSpawningAreas=Select the spawning areas
-isisfish.populationZones.title=Zones
-isisfish.port.cell=Port cell
-isisfish.port.comments=Comments
-isisfish.port.name=Name
-isisfish.preScript.backParameter=Back to parameter tab
-isisfish.preScript.title=Pre simulation script
-isisfish.queue.clearDone=Clear done jobs
-isisfish.queue.id=Id
-isisfish.queue.launcher=Simulation launcher
-isisfish.queue.masterplan=Master plan
-isisfish.queue.notstarted=Not started
-isisfish.queue.plan=Plan
-isisfish.queue.progression=Progress
-isisfish.queue.restartSimulation=Restart
-isisfish.queue.showLog=Show simulation log
-isisfish.queue.simulationLaunch=Simulation queue launch
-isisfish.queue.status=Status
-isisfish.queue.stopSimulation=Stop simulation
-isisfish.queue.title=Queue
-isisfish.result.abundance=Abondance
-isisfish.result.add=Add a result
-isisfish.result.begin.simulation=En debut de Simulation\:
-isisfish.result.capture=Capture
-isisfish.result.capture.metier=Capture par metier
-isisfish.result.choose.simulation=Choose a Simulation
-isisfish.result.datas=Datas
-isisfish.result.datasRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.donneeRadioButton
-isisfish.result.desktopPane=defaultToolTip-fr.ifremer.resultat.ResultatView.desktopPane
-isisfish.result.dimension=Dimension
-isisfish.result.end.simulation=Simuation end \:
-isisfish.result.export=Export
-isisfish.result.export.file=Export text file
-isisfish.result.file=File
-isisfish.result.graph=Graph
-isisfish.result.graphRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.graphRadioButton
-isisfish.result.hpaned=defaultToolTip-fr.ifremer.resultat.ResultatEdit.hpaned2
-isisfish.result.infoPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.infoPanel
-isisfish.result.label=defaultToolTip-fr.ifremer.resultat.ResultatView.label9
-isisfish.result.map=Map
-isisfish.result.mapRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.mapRadioButton
-isisfish.result.menuExport=defaultToolTip-fr.ifremer.resultat.ResultatEdit.menuExport
-isisfish.result.menubar=defaultToolTip-fr.ifremer.resultat.ResultatView.menubar1
-isisfish.result.menuitem=defaultToolTip-fr.ifremer.resultat.ResultatView.menuitem2
-isisfish.result.new.window=Open a new window
-isisfish.result.openWindowButton=defaultToolTip-fr.ifremer.resultat.ResultatView.openWindowButton
-isisfish.result.quit=Quitter
-isisfish.result.reject.metier=Rejet par metier
-isisfish.result.remove.simulation=Supprimer Simulation
-isisfish.result.removeSimulationButton=defaultToolTip-fr.ifremer.resultat.ResultatView.supprimerSimulationButton
-isisfish.result.resultat=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resultat
-isisfish.result.scroll=defaultToolTip-fr.ifremer.resultat.ResultatEdit.scroll
-isisfish.result.show.simulation.log=Show logs
-isisfish.result.simulation=defaultToolTip-fr.ifremer.resultat.ResultatView.simulation
-isisfish.result.statusBar=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusbar1
-isisfish.result.statusImage=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusImage
-isisfish.result.stress.metier=Effort par metier
-isisfish.result.summary=R\u00E9sum\u00E9
-isisfish.result.summaryRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resumeRadioButton
-isisfish.result.table=defaultToolTip-fr.ifremer.resultat.ResultatView.table33
-isisfish.result.title=Resultat
-isisfish.result.tooltip.show.simulation.log=Click to display the log console of the simulation
-isisfish.result.unload.metier=Debarquement par metier
-isisfish.result.vbox=defaultToolTip-fr.ifremer.resultat.ResultatView.vbox1
-isisfish.result.viewPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.viewPanel
-isisfish.resultChoice.save=Results to save
-isisfish.resultChoice.saved=Results saved
-isisfish.resultChoice.title=Result choice
-isisfish.resume.matrixInfoGrid=defaultToolTip-fr.ifremer.resultat.ResumePanel.matriceInfoGrid
-isisfish.resume.resumeTextArea=defaultToolTip-fr.ifremer.resultat.ResumePanel.resumeTextArea
-isisfish.resume.scrolledwindow=defaultToolTip-fr.ifremer.resultat.ResumePanel.scrolledwindow2
-isisfish.resume.table=defaultToolTip-fr.ifremer.resultat.ResumePanel.table1
-isisfish.script.check=Check
-isisfish.script.commit=Commit
-isisfish.script.compilation.failed=%s
-isisfish.script.compilation.ok=Compilation complete.\n---------------------\n\n%s
-isisfish.script.copy=Copy
-isisfish.script.cut=Cut
-isisfish.script.evaluate=Evaluate
-isisfish.script.export=export
-isisfish.script.export.cancel=cancel
-isisfish.script.export.checkAll=checkAll
-isisfish.script.export.chooseDir=chooseDir
-isisfish.script.export.ok=ok
-isisfish.script.export.tooltip.checkAll=
-isisfish.script.export.tooltip.chooseDir=
-isisfish.script.import=import
-isisfish.script.import.cancel=cancel
-isisfish.script.import.checkAll=checkAll
-isisfish.script.import.labelAdd=labelAdd
-isisfish.script.import.labelOverwrite=labelOverwrite
-isisfish.script.import.ok=ok
-isisfish.script.import.tooltip.checkAll=
-isisfish.script.menu.checkSyntax=CheckSyntax
-isisfish.script.menu.code=Code
-isisfish.script.menu.commit=Commit script to server
-isisfish.script.menu.copy=Copy
-isisfish.script.menu.cut=Cut
-isisfish.script.menu.deleteLocaly=Delete localy
-isisfish.script.menu.deleteLocalyServer=Delete localy and on server
-isisfish.script.menu.diff=Display diff with server version
-isisfish.script.menu.edit=Edit
-isisfish.script.menu.evaluate=Evaluate
-isisfish.script.menu.file=File
-isisfish.script.menu.new=New
-isisfish.script.menu.paste=Paste
-isisfish.script.menu.save=Save
-isisfish.script.menu.txtExport=Export
-isisfish.script.menu.txtImport=Import
-isisfish.script.menu.txtNewAnalysePlan=New analyse plan
-isisfish.script.menu.txtNewEquationModel=New equation model
-isisfish.script.menu.txtNewExport=New export
-isisfish.script.menu.txtNewRule=New rule
-isisfish.script.menu.txtNewScript=New script
-isisfish.script.menu.txtNewSensitivity=New sensitivity calculator
-isisfish.script.menu.txtNewSimulator=New simulator
-isisfish.script.menu.txtVCS=Server
-isisfish.script.menu.update=Update from server
-isisfish.script.new=New
-isisfish.script.paste=Paste
-isisfish.script.save=Save
-isisfish.script.title=Script Editor
-isisfish.script.txtExport=Export
-isisfish.season.toString=season %1$s-%2$s
-isisfish.selectivity.equation=Equation
-isisfish.selectivity.selectPopulation=Select a population
-isisfish.selectivity.title=Selectivity
-isisfish.sens.backParameter=Back to parameter tab
-isisfish.sens.title=Simulation plan
-isisfish.sensitivity.displaysecondpass=Display results
-isisfish.sensitivity.export=Export
-isisfish.sensitivity.secondpass=Analyze results
-isisfish.sensitivity.secondpass.title=Analyze results
-isisfish.sensitivity.select=Method
-isisfish.sensitivity.title=Sensitivity analysis
-isisfish.sensitivityChooser.title=Sensitivities input
-isisfish.server.ssh.generateKey.title=Generate Ssh key
-isisfish.setOfVessels.comments=Comments
-isisfish.setOfVessels.fixedCosts=Fixed costs
-isisfish.setOfVessels.name=Name
-isisfish.setOfVessels.numberOfVessels=Number of vessels
-isisfish.setOfVessels.technicalEfficiency=Technical efficiency
-isisfish.setOfVessels.title=Caracteristics
-isisfish.setOfVessels.vesselType=Vessel type
-isisfish.simpleResult.legendPanel=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.legendPanel
-isisfish.simpleResult.more.information=Clic a cell for more information...
-isisfish.simpleResult.resultatMap=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMap
-isisfish.simpleResult.resultatMapToolBar=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMapToolBar
-isisfish.simpleResult.table=defaultToolTip-fr.ifremer.isisfish.map.SimpleResultatMapBean.table12
-isisfish.simulation.log.console.title=Log console for simulation '%1$s'
-isisfish.simulation.log.showConsole=display log console for simulation %1$s
-isisfish.simulation.menu.import=Restor simulation parameter
-isisfish.simulation.menu.save=Save simulation parameter
-isisfish.simulation.menu.simulation=Simulation
-isisfish.simulation.name=Simulation name
-isisfish.simulation.remote.message.connection=Connecting to Caparmor
-isisfish.simulation.remote.message.downloadresults=Downloading results
-isisfish.simulation.remote.message.upload=Uploading simulation
-isisfish.simulation.remote.message.waitingavailable=Waiting for available resource.
-isisfish.simulation.remote.message.waitingstart=Waiting for simulation start
-isisfish.simulation.restarting=Restarting...
-isisfish.simulation.title=Simulation launcher
-isisfish.simulator.launcher.inprocess=in current process
-isisfish.simulator.launcher.remote=on Caparmor server
-isisfish.simulator.launcher.subprocess=in subprocess
-isisfish.simulator.simulaction.badid=Can't start simulation, bad id\: %s
-isisfish.simulator.ssh.configuration.connecting=Connection...
-isisfish.simulator.ssh.configuration.connectingpk=Connection with public key...
-isisfish.simulator.ssh.configuration.connection=Connection information
-isisfish.simulator.ssh.configuration.connectionerror=Can't connect
-isisfish.simulator.ssh.configuration.connectionok=Connection successfull
-isisfish.simulator.ssh.configuration.environment=Caparmor configuration
-isisfish.simulator.ssh.configuration.invalidpassphrase=Invalid passphrase
-isisfish.simulator.ssh.configuration.keygenerate=Generate
-isisfish.simulator.ssh.configuration.test=Test configuration
-isisfish.simulator.ssh.configuration.title=Caparmor launcher configuration
-isisfish.simulator.subprocess.readoutput.error=
-isisfish.species.age=Age
-isisfish.species.cee=CEE
-isisfish.species.comments=Comments
-isisfish.species.length=Length
-isisfish.species.name=Species name
-isisfish.species.rubbinCode=Rubbin code
-isisfish.species.scientificName=Scientific name
-isisfish.species.structured=Structured
-isisfish.ssh.askpassphrase.message=Enter passphrase for key '%s' \:
-isisfish.ssh.askpassphrase.title=SSH key unlocking
-isisfish.ssh.askpassphrase.wrongpassphrase=Wrong passphrase, enter a new one for key '%s' \:
-isisfish.strategy.comments=Comments
-isisfish.strategy.inactivity=Inactivity equation
-isisfish.strategy.inactivityEquationUsed=Use inactivity equation
-isisfish.strategy.name=Name
-isisfish.strategy.proportionSetOfVessels=Set of vessels proportion
-isisfish.strategy.title=Caracteristics
-isisfish.strategyMonthInfo.metier=Metier
-isisfish.strategyMonthInfo.minInactivityDays=Min inactivity days
-isisfish.strategyMonthInfo.numberOfTrips=Number of trips
-isisfish.strategyMonthInfo.proportion=Proportion
-isisfish.strategyMonthInfo.title=StrategyMonthInfo
-isisfish.strategyMonthInfo.toString=%1$s %2$s
-isisfish.timeUnit.day=Day
-isisfish.timeUnit.hours=Hours
-isisfish.tray.simulation=Isis-fish - %1$s \: %2$s/%3$s
-isisfish.tray.simulation.no=Isis-fish - No simulation
-isisfish.tripType.comments=Comments
-isisfish.tripType.duration=Duration
-isisfish.tripType.minTime=Minimum time between trips
-isisfish.tripType.name=Name
-isisfish.vcs.ask.passphrase=Enter your pass phrase (if your private key have one).
-isisfish.vcs.ask.passphrase.title=Ask your pass phrase
-isisfish.vcs.commit=vcs.commit
-isisfish.vcs.commit.cancel=vcs.commit.cancel
-isisfish.vcs.commit.label=vcs.commit.label
-isisfish.vcs.commit.ok=vcs.commit.ok
-isisfish.vcs.init.notfoundcantdownload=No database version %s found and can't get it.\nYou must go to ISIS-Fish web site and download database manually.
-isisfish.vcs.init.wrongprotocol=Your database repository\: %s\n don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?
-isisfish.vcs.switchprotocol.confirm=Protocol to access repository script has changed.\nDo you want to switch your repository ?
-isisfish.vcs.switchtag.warningconflict=Your repository is now up-to-date, but following files are conflicted, you may check them \:\n
-isisfish.vcs.switchversion.confirm=You don't use correct repository script for your application version %s.\nDo you want to switch your repository ?
-isisfish.vcs.update=vcs.update
-isisfish.vcs.update.cancel=cancel
-isisfish.vcs.update.checkAll=checkAll
-isisfish.vcs.update.local=local
-isisfish.vcs.update.local.modified=modified
-isisfish.vcs.update.local.outofdateAndModified=outofdateAndModified
-isisfish.vcs.update.local.tooltip.modified=
-isisfish.vcs.update.local.tooltip.outofdateAndModified=
-isisfish.vcs.update.local.tooltip.unversionned=
-isisfish.vcs.update.local.unversionned=unversionned
-isisfish.vcs.update.ok=ok
-isisfish.vcs.update.remote=remote
-isisfish.vcs.update.remote.missing=missing
-isisfish.vcs.update.remote.outofdate=outofdate
-isisfish.vcs.update.remote.tooltip.missing=
-isisfish.vcs.update.remote.tooltip.outofdate=
-isisfish.vcs.update.tooltip.checkAll=checkAll
-isisfish.vcs.update.tooltip.local=
-isisfish.vcs.update.tooltip.remote=
-isisfish.vcs.update.warningconflict=Your repository is now up-to-date, but following files are conflicted, you may check them \:\n
-isisfish.vcs.updateconfirm=updateconfirm
-isisfish.vcs.updateconfirm.cancel=cancel
-isisfish.vcs.updateconfirm.checkAll=checkAll
-isisfish.vcs.updateconfirm.label=
-isisfish.vcs.updateconfirm.label2=
-isisfish.vcs.updateconfirm.ok=ok
-isisfish.vcs.updateconfirm.tooltip.checkAll=
-isisfish.vcs.updaterepository.confirm=Your repository is not up to date.\nDo you want to update following files ?
-isisfish.vcs.vcssvn.add.error=Can't add file
-isisfish.vcs.vcssvn.add.errorreadonly=You can't add file, this repository is readonly
-isisfish.vcs.vcssvn.checkProtocol.error=Can't get address on serveur of local repository
-isisfish.vcs.vcssvn.checkProtocol.relocate=Relocate repository %s from %s to %s
-isisfish.vcs.vcssvn.checkout.error=Can't checkout
-isisfish.vcs.vcssvn.cleanup.error=Can't cleanup working copy
-isisfish.vcs.vcssvn.commit.error=Can't commit files
-isisfish.vcs.vcssvn.commit.errorreadonly=You can't commit file, this repository is readonly
-isisfish.vcs.vcssvn.delete.error=Can't delete file
-isisfish.vcs.vcssvn.delete.errorreadonly=You can't delete file, this repository is readonly
-isisfish.vcs.vcssvn.diff.error=Can't get diff
-isisfish.vcs.vcssvn.gettag.error=Can't get address on serveur of local repository
-isisfish.vcs.vcssvn.getupdate.error=Can't status file
-isisfish.vcs.vcssvn.global.filelocalandremotestatus=file %s status is (l\:%s/r\:%s)
-isisfish.vcs.vcssvn.global.filestatus=status for %s is %s
-isisfish.vcs.vcssvn.global.foundUpdatedFile=add %s as updated file
-isisfish.vcs.vcssvn.global.torevision=At revision \: %d
-isisfish.vcs.vcssvn.isconnected.switchoff=Can't connect to serveur, switch to off line\: %s
-isisfish.vcs.vcssvn.isconnected.switchto=Connection to serveur available, switch on line\: %s
-isisfish.vcs.vcssvn.isonremote.error=file %s is not on server
-isisfish.vcs.vcssvn.istag.notexist=Tag %s don't exist
-isisfish.vcs.vcssvn.isuptodate.error=Can't get file status
-isisfish.vcs.vcssvn.list.error=Can't list files
-isisfish.vcs.vcssvn.localstatus.error=Can't status file
-isisfish.vcs.vcssvn.remotestatus.error=Can't status file
-isisfish.vcs.vcssvn.setTag.error=Can't get address on server of local repository
-isisfish.vcs.vcssvn.settag.switchfromto=Switch repository tag from %s to %s
-isisfish.vcs.vcssvn.update.error=Can't update files
-isisfish.vcs.vcssvn.update.notinlocal=Can't update file that not in local repository
-isisfish.versionStorage.removed=Removed
-isisfish.vesselType.activityRange=Activity range
-isisfish.vesselType.comments=Comments
-isisfish.vesselType.fuelCost=Fuel cost of travel
-isisfish.vesselType.length=Length
-isisfish.vesselType.maxDuration=Maximum trip duration
-isisfish.vesselType.miniCrew=Minimum crew size
-isisfish.vesselType.name=Name
-isisfish.vesselType.speed=Speed
-isisfish.welcome.menu.about=About
-isisfish.welcome.menu.api=API
-isisfish.welcome.menu.close=Close
-isisfish.welcome.menu.configuration=Configuration
-isisfish.welcome.menu.configuration.sshlauncher=Caparmor configuration
-isisfish.welcome.menu.configuration.vcs=VCS Configuration
-isisfish.welcome.menu.file=File
-isisfish.welcome.menu.frame=Frame
-isisfish.welcome.menu.help=Help
-isisfish.welcome.menu.help.isisfish=Isis-Fish Website
-isisfish.welcome.menu.help.isisfishapi=Isis-Fish API
-isisfish.welcome.menu.help.javaapi=Java API
-isisfish.welcome.menu.help.lutinmatrixapi=LutinMatrix API
-isisfish.welcome.menu.help.topiaapi=ToPIA API
-isisfish.welcome.menu.input=Input
-isisfish.welcome.menu.monitor=Logs frame
-isisfish.welcome.menu.queue=Simulation queue
-isisfish.welcome.menu.result=Result
-isisfish.welcome.menu.script=Script
-isisfish.welcome.menu.simulation=Simulation Launcher
-isisfish.welcome.menu.synchro=Server Synchronisation
-isisfish.welcome.title=Ifremer Simulation
-isisfish.wizardGroupCreation.allGroupsSameSize=All groups have the same size
-isisfish.wizardGroupCreation.allValues=Input all the values
-isisfish.wizardGroupCreation.computedGrowthCurve=Computed by a growth curve
-isisfish.wizardGroupCreation.firstAge=First age
-isisfish.wizardGroupCreation.firstAgeHelp=First age \= minimal age
-isisfish.wizardGroupCreation.firstGroup=First group
-isisfish.wizardGroupCreation.firstLength=First length
-isisfish.wizardGroupCreation.firstLengthHelp=First length \= minimal length of first group
-isisfish.wizardGroupCreation.gapBetweenGroupsHelp=gap between to group is 1 year.
-isisfish.wizardGroupCreation.groupWidth=Group width
-isisfish.wizardGroupCreation.groupWidthHelp=Group width \= width of group
-isisfish.wizardGroupCreation.lastAge=Last age
-isisfish.wizardGroupCreation.lastAgeHelp=Last age \= maximal age
-isisfish.wizardGroupCreation.maxGroupsLength=Maximal groups length
-isisfish.wizardGroupCreation.maxGroupsLengthHelp=A semicolon ';' must separe maximal length of each group
-isisfish.wizardGroupCreation.numberGroup=Number of group
-isisfish.wizardGroupCreation.numberGroupHelp=number of Group \= number of group wanted
-isisfish.wizardGroupCreation.numberGroups=Number of groups
-isisfish.wizardGroupCreation.populationCharacteristics=Input the population characteristics
-isisfish.wizardGroupCreation.selectGroupLengthType=Select group length type
-isisfish.wizardGroupCreation.timeStep=Time step (in month)
-isisfish.wizardGroupCreation.title=Group creation
-isisfish.wizardGroupCreation.undefinedGrowthEquation=The equation used is the population's growth curve, it needs to be defined first.
-isisfish.zone.cells=Zone cells
-isisfish.zone.comments=Comments
-isisfish.zone.name=Name
-region\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
-simulate\ %s\ with\ file\ %s=
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties (from rev 2489, isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-en_GB.properties 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,1103 @@
+Add\ to\ %s\ queue=
+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
+Can't\ add\ simulation\:\ =
+Can't\ create\ simulation\ logger=Can't create simulation logger
+Can't\ delete\ simulation\ %s\ =
+Can't\ do\ post\ action\ %s=
+Can't\ do\ simulation\ %s=
+Can't\ download\ archive\ \:\ %s=
+Can't\ download\ file=
+Can't\ evaluate\ simulation\ prescript=
+Can't\ export\ simulation\ %s=
+Can't\ get\ changlog=
+Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
+Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
+Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
+Can't\ instantiate\ %s=
+Can't\ open\ log\ for\ %s=
+Can't\ read\ ssh\ key\ \:\ %s=
+Can't\ simulate\ %s=
+Check\ state\ of\ local\ repository\:\ %s=
+Check\ syntax\ of\ the\ current\ script=
+Checkout\ pom.xml\ to\ %s=
+Command\ '%s'\ fail\ to\ execute=
+Commit\ script\ to\ CVS\ server=
+Copy\ current\ selection\ (Ctrl-c)=
+Could\ not\ found\ formule\ type\ %s\ autorised\ type\ are\ %s=
+Create\ a\ new\ script=
+Cut\ current\ selection\ (Ctrl-x)=
+Error\ during\ vcs\ initialisation=
+Error\ while\ uploading\ public\ key\ to\ remote\ serveur\ authorized_keys=
+Export\ selected\ script(s)\ to\ zip\ archive=
+Generate\ next\ simulation=
+Import\ one\ java\ file\ script\ source=
+Import\ simulation\ file\ %s\ in\ directory\ %s\ and\ rename\ from\ %s\ to\ %s=
+Import\ zipped\ file\ containing\ all\ scripts\ directory\ structure=
+Info=Info
+Jobs\ submited\ is\ not\ ItemSimulation\ but\ was\ %s=
+Last\ entry\ was\ %s\ extract\ name\ %s=
+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=
+Normal\ stop\ thread,\ this\ is\ not\ an\ error=
+Not\ start\ simulation\ %s\ because\ user\ ask\ stop=
+Paste\ current\ selection\ (Ctrl-v)=
+Process\ template\ error=
+Region\ %s\ allready\ exist\ in\ repository.\ Can't\ import=
+Region\ %s\ already\ inited=
+Remote\ IsisFish\ server=
+Remote\ control\ file\ doesn't\ exists\ %s=
+Remote\ information\ file\ doesn't\ exists\ %s=
+Rename\ data\ directory\ to\ %s=
+Save\ current\ script=
+Show\ help=
+SimulationExecutor\ started\ with\ %s\ thread\ for\ %s=
+Ssh\ key\ found\ '%s'\ will\ be\ used\ to\ connect\ to=
+Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
+Stop\ the\ process=
+SubProcess\ start\:\ %s\ %s=
+Switch\ repository\ type\ to\ none=
+Try\ to\ eval\ current\ script\ (must\ be\ have\ main\ method)=
+Try\ to\ log\ on\ %s@%s\:%d=
+Use\ branches,\ switch\ not\ needed=
+User\ restart\ simulation\ %s=
+User\ stop\ simulation\ %s=
+could\ not\ close\ reader\ %1$s=could not close reader %1$s
+could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
+could\ not\ filter\ on\ simulations=could not filter on simulations
+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
+destination\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
+destination\ already\ exists\ %s\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
+directory\ %s\ must\ be\ a\ directory=
+filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
+in\ hour=
+isisfish.about.abouthtmltext=<html><b>Isis-Fish (%s)</b><br /><br />Copyright IFREMER-MAERHA 2000-2009.<br /><br /><a href\="http\://isis-fish.labs.libre-entreprise.org">http\://isis-fish.labs.libre-entreprise.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.
+isisfish.about.title=About Isis-Fish...
+isisfish.advancedParameters.title=Advanced parameters
+isisfish.advancedParams.freeParameters=Free parameters
+isisfish.advancedParams.libLevelLogger=Library log level
+isisfish.advancedParams.scriptLevelLogger=Script log level
+isisfish.advancedParams.simulLevelLogger=Simulator log level
+isisfish.advancedParams.simulationCache=Simulation cache
+isisfish.advancedParams.simulationStatistique=Simulation statistics
+isisfish.advancedParams.simulatorUse=Simulator to Use
+isisfish.cell.comments=Comments
+isisfish.cell.land=Land
+isisfish.cell.latitude=Latitude
+isisfish.cell.longitude=Longitude
+isisfish.cell.name=Name
+isisfish.change.equation=Can't change equation
+isisfish.commit.message=Enter commit message
+isisfish.common.add=Add
+isisfish.common.add.short=add
+isisfish.common.alert=alert
+isisfish.common.apply=Apply
+isisfish.common.blank=\
+isisfish.common.cancel=Cancel
+isisfish.common.check=Check
+isisfish.common.clear=Clear
+isisfish.common.date=Date
+isisfish.common.debug=debug
+isisfish.common.delete=Delete
+isisfish.common.ellipsis=...
+isisfish.common.emigration=Emigration
+isisfish.common.equation=Equation
+isisfish.common.error=error
+isisfish.common.finish=Finish
+isisfish.common.gear=Gear
+isisfish.common.immigration=immigration
+isisfish.common.info=info
+isisfish.common.migration=migration
+isisfish.common.month=month %1$s
+isisfish.common.name=Name
+isisfish.common.new=New
+isisfish.common.newMatrix=New matrix
+isisfish.common.next=Next
+isisfish.common.ok=Ok
+isisfish.common.openEditor=Open editor
+isisfish.common.population=Population
+isisfish.common.populationGroup=Population group
+isisfish.common.populations=Populations
+isisfish.common.port=port
+isisfish.common.prev=Previous
+isisfish.common.region=Region
+isisfish.common.remove=Remove
+isisfish.common.reset=Reset
+isisfish.common.rules=Rules
+isisfish.common.save=Save
+isisfish.common.saveModel=Save as model
+isisfish.common.saveNextSimulation=Save for next simulation
+isisfish.common.season=Season
+isisfish.common.setOfVessels=Set of vessels
+isisfish.common.simulate=Simulate
+isisfish.common.stop=Stop
+isisfish.common.strategies=Strategies
+isisfish.common.sum=Sum
+isisfish.common.tag=Tag
+isisfish.common.tripType=Trip type
+isisfish.common.valid=Valid
+isisfish.common.value=Value
+isisfish.common.warn=warn
+isisfish.common.year=year
+isisfish.common.zone=Zone
+isisfish.config.database.lockmode.description=
+isisfish.config.main.compileDirectory.description=
+isisfish.config.main.configFileName.description=
+isisfish.config.main.defaultBackupDirectory.description=
+isisfish.config.main.defaultExportDirectory.description=
+isisfish.config.main.defaultExportNames.description=
+isisfish.config.main.defaultMapFile.description=
+isisfish.config.main.defaultResultNames.description=
+isisfish.config.main.defaultSimulator.description=
+isisfish.config.main.defaultTagValue.description=
+isisfish.config.main.encoding.description=encoding used on system
+isisfish.config.main.javadocDirectory.description=
+isisfish.config.main.javadocURL.description=
+isisfish.config.main.launchUI.description=
+isisfish.config.main.localSimulator.description=
+isisfish.config.main.locale.description=user locale
+isisfish.config.main.login.description=
+isisfish.config.main.password.description=
+isisfish.config.main.projectName.description=name of project
+isisfish.config.main.regionMap.description=
+isisfish.config.main.remoteCaparmor.description=
+isisfish.config.main.resultExport.description=
+isisfish.config.main.simulation.max.simultaneous.simulation=Simultaneous simulation
+isisfish.config.main.simulation.max.simultaneous.simulation.description=Simultaneous simulation to do on Caparmor
+isisfish.config.main.simulation.ssh.control.check.interval=Control check interval (seconds)
+isisfish.config.main.simulation.ssh.control.check.interval.description=Control check interval (seconds)
+isisfish.config.main.simulation.ssh.datapath=Isis-Fish database
+isisfish.config.main.simulation.ssh.datapath.description=Isis-Fish database path
+isisfish.config.main.simulation.ssh.isis.home=Isis-Fish home
+isisfish.config.main.simulation.ssh.isis.home.description=Isis-Fish installation directory
+isisfish.config.main.simulation.ssh.pbsbinpath=PBS executables directory
+isisfish.config.main.simulation.ssh.pbsbinpath.description=PBS executables (qsub, qdel...) directory
+isisfish.config.main.simulation.ssh.server=Server address
+isisfish.config.main.simulation.ssh.server.description=Server adress
+isisfish.config.main.simulation.ssh.tmppath=Server temp directory
+isisfish.config.main.simulation.ssh.tmppath.description=Server temp directory
+isisfish.config.main.simulation.ssh.userhome=User home directory
+isisfish.config.main.simulation.ssh.userhome.description=User home directory
+isisfish.config.main.simulation.ssh.username=SSH identifier
+isisfish.config.main.simulation.ssh.username.description=SSH identifier
+isisfish.config.main.simulationServer.description=
+isisfish.config.main.simulationShowOnlyError.description=
+isisfish.config.main.simulationShowOnlyQueue.description=
+isisfish.config.main.smtpServer.description=
+isisfish.config.main.subSimulator.description=
+isisfish.config.main.userMail.description=
+isisfish.config.main.userName.description=
+isisfish.config.ssh.key.file=SSH key
+isisfish.config.ssh.key.file.description=Private SSH key path
+isisfish.config.vcs.hostName.description=
+isisfish.config.vcs.keyFile.description=
+isisfish.config.vcs.localDatabasePath.description=
+isisfish.config.vcs.noPassPhrase.description=
+isisfish.config.vcs.passphrase.description=
+isisfish.config.vcs.remoteDatabase.description=
+isisfish.config.vcs.remotePath.description=
+isisfish.config.vcs.type.description=
+isisfish.config.vcs.typeRepo.description=
+isisfish.config.vcs.useSshConnexion.description=
+isisfish.config.vcs.userName.description=
+isisfish.config.vcs.userPassword.description=
+isisfish.dataResult.descriptionLabel=defaultToolTip-fr.ifremer.resultat.DataResult.descriptionLabel
+isisfish.dataResult.export.csv=Export to CSV
+isisfish.dataResult.exportButton=defaultToolTip-fr.ifremer.resultat.DataResult.exportButton
+isisfish.dataResult.label=label9
+isisfish.dataResult.matriceTable=defaultToolTip-fr.ifremer.resultat.DataResult.matriceTable
+isisfish.dataResult.scrolledwindow2=defaultToolTip-fr.ifremer.resultat.DataResult.scrolledwindow2
+isisfish.dataResult.table2=defaultToolTip-fr.ifremer.resultat.DataResult.table2
+isisfish.date.toString=%1$s %2$s
+isisfish.effortDescription.crewFoodCost=Crew food cost
+isisfish.effortDescription.crewShareRate=Crew share rate
+isisfish.effortDescription.crewSize=Crew size
+isisfish.effortDescription.economicTitle=\u00C9conomiques parameters
+isisfish.effortDescription.effortTitle=Fishing effort parameters
+isisfish.effortDescription.fishingOperation=Fishing operation
+isisfish.effortDescription.fishingOperationDuration=Fishing operation duration
+isisfish.effortDescription.fishingOperationDuration.tooltip=In hours
+isisfish.effortDescription.fixedCrewSalary=Fixed crew salary
+isisfish.effortDescription.gearsNumberPerOperation=Gears number per operation
+isisfish.effortDescription.landingCosts=Landing costs
+isisfish.effortDescription.otherRunningCost=Other running cost
+isisfish.effortDescription.parametersTitle=M\u00E9tiers parameters
+isisfish.effortDescription.repairAndMaintenanceGearCost=Repair and maintenance gear cost
+isisfish.effortDescription.title=Practiced metier
+isisfish.effortDescription.toString=EffortDescription for %1$s with %2$s
+isisfish.effortDescription.unitCostOfFishing=Fishing unit cost
+isisfish.equation.editor.title=Equation Editor
+isisfish.error.acceptable.population=New value isn't acceptable value for this population
+isisfish.error.add.card=Error while adding of result to the map.
+isisfish.error.add.logger.simulation=isisfish.error.add.logger.simulation
+isisfish.error.add.result.data=Error while adding result ot data.
+isisfish.error.add.result.graph=Error while adding result to graph
+isisfish.error.add.tray=Can't add system tray icon
+isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s
+isisfish.error.change.equation=Can't change equation
+isisfish.error.check.region=
+isisfish.error.compile.fileerror=File %s can't be compiled \!
+isisfish.error.compile.script=Can't compile script\: %1$s
+isisfish.error.compiled.parameter=Can't get rule parameter from compiled class
+isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es
+isisfish.error.create.equation=Can't create equation
+isisfish.error.delete.database=Can't delete database
+isisfish.error.delete.file=could not delete file %1$s
+isisfish.error.delete.vcs.files=Can't delete vcs files
+isisfish.error.during.simulation=Error during simulation
+isisfish.error.emigration.negative=emigration negative
+isisfish.error.empty.code.rubbin=rubbin's code is empty
+isisfish.error.empty.emigration=emigration empty
+isisfish.error.empty.id.geographic=goegraphic identifier is empty
+isisfish.error.empty.immigration=immigration empty
+isisfish.error.empty.migration=Migration empty
+isisfish.error.empty.name=The name is empty
+isisfish.error.empty.params.name=Parameter name is empty
+isisfish.error.empty.population=Population is empty
+isisfish.error.empty.scientific.name=scentific name is empty
+isisfish.error.empty.season=info season empty
+isisfish.error.empty.selectivity=selectivity is empty
+isisfish.error.empty.species=specie capturable empty
+isisfish.error.empty.species.name=specie's name is empty
+isisfish.error.empty.unit=measure unit is empty
+isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
+isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
+isisfish.error.evaluate.preplan.script=
+isisfish.error.evalute.plan.script=Can't evaluate plan script
+isisfish.error.factor.invalid=Factor is not valid
+isisfish.error.file.already.exists=The file %1$s already exist
+isisfish.error.get.fisheryRegion=Can't get FisheryRegion
+isisfish.error.growth.equation.before.create.group.population=Error, You must input growth equation before create the group population
+isisfish.error.immigration.negative=immigration negative
+isisfish.error.import.convertible=Erreur lors de l'import, la version du fichier que vous souhaitez importer n'est pas transformable en une version importable.
+isisfish.error.import.file=Can't import file %1$s
+isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
+isisfish.error.init.map=Can't init map.
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
+isisfish.error.instanciate=Can't instanciate %1$s
+isisfish.error.instanciate.export=Can't instanciate export %1$s
+isisfish.error.invalid.costs.fix=les co\u00FBts fixes sont invalides
+isisfish.error.invalid.distribution.recruitment=distribution de recrutement invalide
+isisfish.error.invalid.equation=Equation invalid
+isisfish.error.invalid.equation.name=Invalid equation name
+isisfish.error.invalid.file.name=The script name %1$s is not valid.
+isisfish.error.invalid.interval.reproduction.recruitment=interval entre la reproduction et le recrutement invalide
+isisfish.error.invalid.mean.weight=poids moyen invalide
+isisfish.error.invalid.natural.death=natural mortality on classes naissantes invalide
+isisfish.error.invalid.number=the number is invalid
+isisfish.error.invalid.range=La gamme possible n'a pas de valeur acceptable
+isisfish.error.invalid.values.params=Parametre controlable hors valeurs possibles
+isisfish.error.invalidate.natural.death=natural mortality invalid
+isisfish.error.invoke.method=Can't invoke method '%1$s' for class %2$s
+isisfish.error.linkageerror.message=Isis-Fish has detected a script use error.\nCompilation directory has been deleted to force recompilation.\n\nPlease, restart Isis-Fish.
+isisfish.error.linkageerror.title=Init error
+isisfish.error.load.class=Can't load class\: %1$s
+isisfish.error.load.classloader=Can't create ClassLoader for script, bad directory\: %1$s for reason %2$s
+isisfish.error.load.file=could not load file %1$s
+isisfish.error.load.map=Can't load map file\: %1$s
+isisfish.error.log.closeAppender=could not close appender %1$s for category %2$s
+isisfish.error.log.console.dispose=Une erreur est survenue pendant la fermeture de la console %1$s de log, raison %2$s
+isisfish.error.log.createAppender=could not create appender [%1$s] \: %2$s for reason %3$s
+isisfish.error.log.foundAppender=\=could not found log appender %1$s for category %2$s
+isisfish.error.matrix.more.2d=Matrice de plus de 2 dimensions\!\!\nS\u00E9lectionnez moins d'\u00E9l\u00E9ments ou utilisez l'op\u00E9rateur somme.
+isisfish.error.migration.negative=Migration negative
+isisfish.error.no.matrix=No matrix for\:
+isisfish.error.no.null.time.step=Error, the time step should not be null
+isisfish.error.no.sector=No sector defined
+isisfish.error.no.select.simulation=could not select simulation
+isisfish.error.no.target.species=no target species in %1$s for %2$s
+isisfish.error.not.found.code=could not found codeclass for %1$s
+isisfish.error.not.found.description=could not found description for %1$s
+isisfish.error.not.found.field=could not found field %1$s doc for %2$s
+isisfish.error.not.found.field.class=could not found field %1$s for class %2$s
+isisfish.error.not.null.class.grown=classe mature vaut nul
+isisfish.error.not.null.mean.weight=poids moyen nul
+isisfish.error.not.null.natiral.death=natural mortality null
+isisfish.error.not.possible.metier=Pas de m\u00E9tier possible
+isisfish.error.not.support.class=this class does not support
+isisfish.error.number.classes.upper.zero=Error, the number of classes must be upper than 0
+isisfish.error.out.memory=Out of memory try with more memory (option -mx)
+isisfish.error.overlap.season=Cette saison chevauche une autre saison
+isisfish.error.parse.date=Can't parse date %1$s
+isisfish.error.parse.long=Can't parse long %1$s
+isisfish.error.plan.parameter=Can't get plan parameter from compiled class
+isisfish.error.prepare.data=Can't prepare data
+isisfish.error.prepare.information.simulation=Can't prepare information for simulation
+isisfish.error.read.simulation=Can't read simulation information %1$s
+isisfish.error.read.simulation.parameters=Can't read simulation parameters from file %1$s
+isisfish.error.region.already.exists=This region already exists
+isisfish.error.region.name.empty=Region name is empty
+isisfish.error.remove.directory=Can't remove directory %1$s
+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.region=
+isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
+isisfish.error.save.simulation.parameters=Can't save simulation parameters in file %1$s
+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
+isisfish.error.script.load=Can't load file %1$s for reason %2$s
+isisfish.error.script.save=Can't save file %1$s for reason %2$s
+isisfish.error.sensitivity.parameter=
+isisfish.error.simulation.log.openAppender=could not open appender of simulation %1$s for reason %2$s
+isisfish.error.simulation.remote.global=Can't launch a simulation on remote server
+isisfish.error.simulation.remote.wrongportvalue=Connection port value is incorrect \: %s
+isisfish.error.simulation.resultXml.close=Can't close simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.open=Can't open simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.write=Can't write simulation result XML for reason %1$s
+isisfish.error.source.parameter=Can't get parameter from source
+isisfish.error.strategy.order=Strategy %1$s don't have 12 StrategyMonthInfo but %2$s. Recreate them
+isisfish.error.undefined.classes=No classes defined
+isisfish.error.undefined.correspondence.zones.reproduction.recruitment=pas de correspondance entre les zones de reproduction et les zones de recrutement
+isisfish.error.undefined.gear=The engin is not defined
+isisfish.error.undefined.mesh=No mesh defined
+isisfish.error.undefined.mesh.sector=No maille defined in sector
+isisfish.error.undefined.meta.population=No population defined
+isisfish.error.undefined.natural.death=No natural mortality on classes naissantes
+isisfish.error.undefined.sector=No sector defined
+isisfish.error.undefined.stategy=No strategy defined
+isisfish.error.undefined.stategy.months=The strategy is not defined for some mounths
+isisfish.error.undefined.zone.population=No population's zone defined
+isisfish.error.undefined.zone.recruitment=No recrutment's zone defined
+isisfish.error.undefined.zone.reproduction=No reprodution's zone defined
+isisfish.error.unsupported.equation.langage=unsupported langage '%1$s' for equation\: %2$s
+isisfish.error.wait.simThread=Can't wait SimThread
+isisfish.error.warning.title=Warning
+isisfish.error.write.simulation=Can't write information %1$s
+isisfish.export.directory=Export directory
+isisfish.export.saved=Export saved
+isisfish.export.title=Results export
+isisfish.factor.coefficient=Coefficient (in %)
+isisfish.factor.comment=Comment
+isisfish.factor.continue=Continuous factor
+isisfish.factor.discret=Discret factor
+isisfish.factor.equation.variable.action=Action
+isisfish.factor.equation.variable.coefficient=Coef. (in %)
+isisfish.factor.equation.variable.name=Name
+isisfish.factor.equation.variable.operator=Operator
+isisfish.factor.equation.variable.value=Value
+isisfish.factor.factor=Factor
+isisfish.factor.factors=Factors
+isisfish.factor.firstValue=First value
+isisfish.factor.increment=Cardinality
+isisfish.factor.lastValue=Last value
+isisfish.factor.name=Factor name
+isisfish.factor.operateur=Operator
+isisfish.factor.selectDiscretNumber=Number of factors
+isisfish.factor.title=Factor input
+isisfish.factor.validDiscretNumber=Ok
+isisfish.factor.value=Value
+isisfish.filter=Filter
+isisfish.filter.apply=Apply filter
+isisfish.filter.cancel=Cancel
+isisfish.filter.log.levelDebug=Debug
+isisfish.filter.log.levelError=Error
+isisfish.filter.log.levelFatal=Fatal
+isisfish.filter.log.levelInfo=Info
+isisfish.filter.log.levelTrace=Trace
+isisfish.filter.log.levelWarn=Warn
+isisfish.filter.log.tooltip.levelDebug=Debug
+isisfish.filter.log.tooltip.levelError=Error
+isisfish.filter.log.tooltip.levelFatal=Fatal
+isisfish.filter.log.tooltip.levelInfo=Info
+isisfish.filter.log.tooltip.levelTrace=Trace
+isisfish.filter.log.tooltip.levelWarn=Warn
+isisfish.filter.log.tooltip.message=Enter a term to search and press Enter
+isisfish.filter.reset=Reset
+isisfish.filter.result=Results
+isisfish.filter.result.found=Results (%d/%d)
+isisfish.filter.select=filter.select
+isisfish.filter.select.simulation=select.simulation
+isisfish.filter.simulation=filter.simulation
+isisfish.filter.simulation.analysePlanNumber=analysePlanNumber
+isisfish.filter.simulation.description=description
+isisfish.filter.simulation.local=local
+isisfish.filter.simulation.numberOfYear=numberOfYear
+isisfish.filter.simulation.regionName=regionName
+isisfish.filter.simulation.simulationEnd=simulationEnd
+isisfish.filter.simulation.simulationName=simulationName
+isisfish.filter.simulation.simulationStart=simulationStart
+isisfish.filter.simulation.simulatorName=simulatorName
+isisfish.filter.simulation.tooltip.analysePlanNumber=filter.simulation.tooltip.analysePlanNumber
+isisfish.filter.simulation.tooltip.description=filter.simulation.tooltip.description
+isisfish.filter.simulation.tooltip.local=filter.simulation.tooltip.local
+isisfish.filter.simulation.tooltip.numberOfYear=filter.simulation.tooltip.numberOfYear
+isisfish.filter.simulation.tooltip.regionName=filter.simulation.tooltip.regionName
+isisfish.filter.simulation.tooltip.simulationEnd=filter.simulation.tooltip.simulationEnd
+isisfish.filter.simulation.tooltip.simulationName=filter.simulation.tooltip.simulationName
+isisfish.filter.simulation.tooltip.simulationStart=filter.simulation.tooltip.simulationStart
+isisfish.filter.simulation.tooltip.simulatorName=filter.simulation.tooltip.simulatorName
+isisfish.filter.simulation.tooltip.useAnalysePlan=filter.simulation.tooltip.useAnalysePlan
+isisfish.filter.simulation.tooltip.useOptimization=filter.simulation.tooltip.useOptimization
+isisfish.filter.simulation.tooltip.usePreScript=filter.simulation.tooltip.usePreScript
+isisfish.filter.simulation.tooltip.useStatistic=filter.simulation.tooltip.useStatistic
+isisfish.filter.simulation.useAnalysePlan=filter.simulation.useAnalysePlan
+isisfish.filter.simulation.useOptimization=filter.simulation.useOptimization
+isisfish.filter.simulation.usePreScript=filter.simulation.usePreScript
+isisfish.filter.simulation.useStatistic=filter.simulation.useStatistic
+isisfish.fisheryRegion.addMap=Add map
+isisfish.fisheryRegion.area=Fishery area boundaries
+isisfish.fisheryRegion.comments=Comments
+isisfish.fisheryRegion.delMap=Delete map
+isisfish.fisheryRegion.latitude=Lat.
+isisfish.fisheryRegion.latitude.max=Lat. max.
+isisfish.fisheryRegion.latitude.min=Lat. min.
+isisfish.fisheryRegion.longitude=Long.
+isisfish.fisheryRegion.longitude.max=Long. max.
+isisfish.fisheryRegion.longitude.min=Long. min.
+isisfish.fisheryRegion.name=Region name
+isisfish.fisheryRegion.ofCells=of cells (option)
+isisfish.fisheryRegion.selectFile=Select a file
+isisfish.fisheryRegion.spatial=Spatial resolution
+isisfish.gear.comments=Comments
+isisfish.gear.effortUnit=Effort Unit
+isisfish.gear.name=Name
+isisfish.gear.rangeValues=Range of values
+isisfish.gear.standardisationFactor=Standardisation factor
+isisfish.gear.technicalParameter=Technical parameter
+isisfish.gear.title=Gear
+isisfish.graphBean.graph.render=Choose a graph render
+isisfish.graphBean.graphPanel=defaultToolTip-fr.ifremer.graph.GraphBean.graphPanel
+isisfish.graphBean.graphRendererCombo=defaultToolTip-fr.ifremer.graph.GraphBean.graphRendererCombo
+isisfish.graphBean.graphSplitPane=defaultToolTip-fr.ifremer.graph.GraphBean.graphSplitPane
+isisfish.graphBean.label=defaultToolTip-fr.ifremer.graph.GraphBean.label1
+isisfish.graphBean.palettePanel=defaultToolTip-fr.ifremer.graph.GraphBean.palettePanel
+isisfish.graphBean.scrolledwindow=defaultToolTip-fr.ifremer.graph.GraphBean.scrolledwindow1
+isisfish.graphBean.table=defaultToolTip-fr.ifremer.graph.GraphBean.table2
+isisfish.graphBean.table3=defaultToolTip-fr.ifremer.graph.GraphBean.table3
+isisfish.graphCombo.render.bar.horizontal=Rendu en barre horizontale
+isisfish.graphCombo.render.bar.horizontal.stacked=Rendu en barre horizontale empilee
+isisfish.graphCombo.render.bar.vertical=Rendu en barre verticale
+isisfish.graphCombo.render.bar.vertical.3d=Rendu en barre verticale 3D
+isisfish.graphCombo.render.bar.vertical.stacked=Rendu en barre verticale empilee
+isisfish.graphCombo.render.line=Rendu en ligne
+isisfish.graphCombo.render.min.max=Rendu en MinMax
+isisfish.graphCombo.render.surface=Rendu en Aire
+isisfish.infoItem..table=defaultToolTip-fr.ifremer.resultat.InfoItem.table29
+isisfish.infoItem.label=defaultToolTip-fr.ifremer.resultat.InfoItem.label
+isisfish.infoItem.list=defaultToolTip-fr.ifremer.resultat.InfoItem.list
+isisfish.infoItem.scrolledwindow=defaultToolTip-fr.ifremer.resultat.InfoItem.scrolledwindow1
+isisfish.infoItem.sum=defaultToolTip-fr.ifremer.resultat.InfoItemDate.sumButton
+isisfish.infoItem.sum.year=Sum elements per year
+isisfish.infoItem.table=defaultToolTip-fr.ifremer.resultat.InfoItem.table30
+isisfish.input.continueCells=Continue to cells
+isisfish.input.continueGears=Continue to gears
+isisfish.input.continueMetiers=Continue to metiers
+isisfish.input.continuePopulations=Continue to populations
+isisfish.input.continuePorts=Continue to ports
+isisfish.input.continueSetOfVessels=Continue to set of vessels
+isisfish.input.continueSpecies=
+isisfish.input.continueStrategies=Continue to strategies
+isisfish.input.continueTripTypes=Continue to trip type
+isisfish.input.continueVesselTypes=Continue to vessel types
+isisfish.input.continueZones=Continue to zones
+isisfish.input.menu.addRegion=Add region
+isisfish.input.menu.commit=Commit change
+isisfish.input.menu.copyRegion=Copy Region
+isisfish.input.menu.exportRegion=Export Region
+isisfish.input.menu.importRegion=Import Region
+isisfish.input.menu.importRegionSimulation=Import Region from simulation
+isisfish.input.menu.importRegionV2=Import Region from v2
+isisfish.input.menu.importRenameRegion=Import Region and rename
+isisfish.input.menu.removeLocaly=Remove localy
+isisfish.input.menu.removeLocalyRemotely=Remove localy and remotely
+isisfish.input.menu.server=Server
+isisfish.input.newRegion=New region
+isisfish.input.selectRegion=Select region
+isisfish.input.title=Fishery input
+isisfish.input.tree.cells=Cells
+isisfish.input.tree.gears=Gears
+isisfish.input.tree.metiers=Metiers
+isisfish.input.tree.populations=Populations
+isisfish.input.tree.ports=Ports
+isisfish.input.tree.setofvessels=Set of vessels
+isisfish.input.tree.species=Species
+isisfish.input.tree.strategies=Strategies
+isisfish.input.tree.triptypes=Trip types
+isisfish.input.tree.vesseltypes=Vessel types
+isisfish.input.tree.zones=Zones
+isisfish.launch.anonymous=read only
+isisfish.launch.email=email
+isisfish.launch.firstname=firstname
+isisfish.launch.init.done=init done in %1$s.
+isisfish.launch.lasstname=lasstname
+isisfish.launch.server.authenticationMethod=server access
+isisfish.launch.server.login=server login
+isisfish.launch.server.ssh.confirm.passphrase=confirm passphrase
+isisfish.launch.server.ssh.key.change=Change your ssh key
+isisfish.launch.server.ssh.key.generate=Generate ssh key
+isisfish.launch.server.ssh.no.passphrase=no passphrase
+isisfish.launch.server.ssh.passphrase=passphrase
+isisfish.launch.server.ssh.privateKeyFile=private ssh key
+isisfish.launch.server.ssh.publicKeyFile=public ssh key
+isisfish.launch.ssh=read-write (ssh)
+isisfish.launch.stop=Stopping simulation...
+isisfish.launching=after init done in %1$s.
+isisfish.log.addAppender=add appender [%1$s]
+isisfish.log.body=Message to add
+isisfish.log.closeAppender=closing appender %1$s for category %2$s
+isisfish.log.mail.failed=Can't send report by mail. Is your mail server up ? (I'm trying to contact the < %1$s > smtp server)
+isisfish.log.mail.send=A report has been sent to %1$s
+isisfish.log.mail.send.title=Send simulation %1$s by email
+isisfish.log.mailTo=Destination adress
+isisfish.log.removeAppender=remove appender [%1$s]
+isisfish.log.restoreLogLevel=swap back level for logger %1$s from level %2$s to level %3$s
+isisfish.log.sendAll=Send the complete simulation archive
+isisfish.log.sendMail=Send by email
+isisfish.log.simulation.name=IsisFish simulation %1$s
+isisfish.log.swapLogLevel=swap level for logger %1$s from level %2$s to level%3$s
+isisfish.log.tooltip.body=The message will be join to email
+isisfish.log.tooltip.mailTo=Enter destination adress
+isisfish.log.tooltip.sendAll=Send the complete simulation archive, or just the log file
+isisfish.log.tooltip.sendMail=Click here to send the email with files
+isisfish.message.add.objets.simulation=Add new objets simulation
+isisfish.message.backup.database.finished=backup database finished
+isisfish.message.backup.database.progress=backup database in progress
+isisfish.message.cancel.finished=Cancel finished
+isisfish.message.check.finished=check finished
+isisfish.message.check.region=
+isisfish.message.checking.cell=
+isisfish.message.choose.archive=choose archive file or directory
+isisfish.message.commit.cancelled=commit cancelled
+isisfish.message.commit.finished=commit finished
+isisfish.message.commit.region.canceled=Commit region canceled
+isisfish.message.commiting.region=Commiting region %1$s ...
+isisfish.message.compilation.time=Compilation time %1$ss
+isisfish.message.confirm.delete.object=Do you really want delete object %1$s
+isisfish.message.confirm.remove.region=Do you really want to remove the region %1$s ?
+isisfish.message.confirm.remove.script=Do you want to remove script '%1$s' ?
+isisfish.message.copy.finished=Copy finished
+isisfish.message.copy.region=Copy region to %1$s
+isisfish.message.creating.region=Creating region %1$s
+isisfish.message.creation.done=creation done %1$s
+isisfish.message.creation.finished=Creation finished
+isisfish.message.delete.canceled=delete canceled
+isisfish.message.delete.entities=Delete entities
+isisfish.message.delete.entity=Delete entity
+isisfish.message.delete.finished=delete finished
+isisfish.message.delete.object=To delete object %1$s, all next object will be deleted\n\n
+isisfish.message.evaluation.finished=evaluation finished
+isisfish.message.export.done=export done
+isisfish.message.export.zip=Export to zip file %1$s
+isisfish.message.file.overwrite=File exists, do you want overwrite it ?
+isisfish.message.import=Import %1$s
+isisfish.message.import.equation.convert=Manual equation convertion
+isisfish.message.import.finished=Import finished
+isisfish.message.import.region.name=Enter name for imported region
+isisfish.message.import.region.xml=XMLed Region
+isisfish.message.import.region.zipped=Zipped Region
+isisfish.message.import.scripts.file.cancelled=Import scripts cancelled
+isisfish.message.import.xml.v2.file=Import xml v2 file
+isisfish.message.import.zip=Import zip file
+isisfish.message.launchui.notlaunch=
+isisfish.message.load.finished=load finished
+isisfish.message.load.map=Try to load map file\: %1$s (%2$s, %3$s)
+isisfish.message.loading.old.simulation=Loading old simulation ...
+isisfish.message.loading.region=Loading region ...
+isisfish.message.name.imported.region=Enter name for imported region
+isisfish.message.new.filename=Enter the name of the new file. (use only chars and _ and start with uppercase)
+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.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
+isisfish.message.recruitment.number.month=Input the number of month of recruitment
+isisfish.message.region.commited=Region commited
+isisfish.message.region.loaded=Region loaded
+isisfish.message.region.remove.canceled=Region remove canceled
+isisfish.message.region.removed=Region removed
+isisfish.message.remove.canceled=Remove canceled
+isisfish.message.remove.finished=Remove finished
+isisfish.message.removing.region=Removing region %1$s ...
+isisfish.message.result.verif.region=R\u00E9sultat de la v\u00E9rification de la r\u00E9gion
+isisfish.message.save.finished=Save finished
+isisfish.message.saveModel.finished=Save model finished
+isisfish.message.script.commit=Enter commit message
+isisfish.message.setting.cache.aspects=Setting Cache aspects
+isisfish.message.setting.trace.aspects=Setting Trace aspects
+isisfish.message.simulation.after=Result exports
+isisfish.message.simulation.ended=Simulation ended
+isisfish.message.simulation.execution=Simulation execution
+isisfish.message.simulation.prepare=Preparing simulation
+isisfish.message.tray.disabled=SystemTray disabled
+isisfish.message.update.finished=update finished
+isisfish.metier.comments=Comments
+isisfish.metier.name=Name
+isisfish.metier.rangeValues=Range of values
+isisfish.metier.title=Metier
+isisfish.metierMonitor.metiers=Metiers
+isisfish.metierMonitor.strategies=Strategies
+isisfish.metierSeasonInfo.toString=%1$s season %2$s-%3$s
+isisfish.metierSeasonInfoSpecies.mainSpecies=Main species for the metier
+isisfish.metierSeasonInfoSpecies.selectSeason=Select a season
+isisfish.metierSeasonInfoSpecies.selectSpecies=Select a species
+isisfish.metierSeasonInfoSpecies.species=Species
+isisfish.metierSeasonInfoSpecies.targetFactor=Target factor
+isisfish.metierSeasonInfoSpecies.title=Catchable species
+isisfish.metierSeasonInfoZone.comments=Comments
+isisfish.metierSeasonInfoZone.season=Season
+isisfish.metierSeasonInfoZone.selectSeason=Select a season
+isisfish.metierSeasonInfoZone.title=Seasons / Zones
+isisfish.monitor.title=Application Monitor
+isisfish.month.april=april
+isisfish.month.august=august
+isisfish.month.december=december
+isisfish.month.february=february
+isisfish.month.january=january
+isisfish.month.july=july
+isisfish.month.june=june
+isisfish.month.march=march
+isisfish.month.may=may
+isisfish.month.november=november
+isisfish.month.october=october
+isisfish.month.september=september
+isisfish.params.changeLogLev=Change from level '%1$s' to level '%2$s'
+isisfish.params.clearFilter=Clear filter
+isisfish.params.description=Description
+isisfish.params.filter=Filter
+isisfish.params.lblLauncher=Simulation launcher
+isisfish.params.loadOldSimulation=Load old simulation
+isisfish.params.numberYear=Number of year
+isisfish.params.onlyExportSimulation=Only export simulation
+isisfish.params.populationNumbers=Population numbers input
+isisfish.params.ruleParameters=Rule's parameters
+isisfish.params.sensitivityName=Sensitivity name
+isisfish.params.simulationName=Simulation name
+isisfish.params.title=Parameters
+isisfish.params.toString.fishery=P\u00EAcherie\: %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.plan=Plan\: %1$s
+isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\n\n
+isisfish.params.toString.populations=Populations\:
+isisfish.params.toString.rule=Rule\: %1$s
+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=Strat\u00E9gies d'exploitation\:
+isisfish.params.useAnalysePlan=Use simulation plan
+isisfish.params.usePreSimulationScript=Use pre simulation script
+isisfish.population.capturability=Capturability
+isisfish.population.comments=Comments
+isisfish.population.group=Group
+isisfish.population.groups=Groups
+isisfish.population.mappingZoneReproZoneRecru=MappingZoneReproZoneRecru
+isisfish.population.matrixAbundance=Abundance matrix
+isisfish.population.matrixAbundance1D=matrixAbundance1D
+isisfish.population.recruitment=Recruitment
+isisfish.population.reproduction=Reproduction
+isisfish.population.season=Season
+isisfish.population.zones=Zones
+isisfish.populationBasics.geographicID=Geographic identifier
+isisfish.populationBasics.growth=Growth
+isisfish.populationBasics.growthReverse=Reverse growth
+isisfish.populationBasics.maturityGroup=Maturity group
+isisfish.populationBasics.name=Name
+isisfish.populationBasics.numberGroup=Number of group
+isisfish.populationBasics.plusGroup=Plus group
+isisfish.populationBasics.recreateClasses=Recreate classes
+isisfish.populationBasics.title=Population input
+isisfish.populationCapturability.comments=Comments
+isisfish.populationCapturability.selectCoefficient=Select a coefficient per season and per class
+isisfish.populationCapturability.title=Capturability input
+isisfish.populationEquation.meanWeight=Mean weight
+isisfish.populationEquation.naturalDeathRate=Natural death rate
+isisfish.populationEquation.price=Price
+isisfish.populationEquation.title=Equations input
+isisfish.populationGroup.age=Age
+isisfish.populationGroup.comments=Comments
+isisfish.populationGroup.length=Length
+isisfish.populationGroup.maximumLength=Maximum length
+isisfish.populationGroup.meanWeigth=Mean Weigth
+isisfish.populationGroup.minimumLength=Minimum length
+isisfish.populationGroup.naturalDeathRate=Natural death rate
+isisfish.populationGroup.price=Price
+isisfish.populationGroup.reproductionRate=Reproduction rate
+isisfish.populationGroup.title=Population group input
+isisfish.populationGroup.toString=%1$s Group %2$s
+isisfish.populationMigration.comments=Comments
+isisfish.populationMigration.selectSeason=Select a season
+isisfish.populationMigration.title=Migration
+isisfish.populationMigration.useEquation=Use equation
+isisfish.populationMigrationEmigration.coefficient=Coefficient
+isisfish.populationMigrationEmigration.departureZone=Departure Zone
+isisfish.populationMigrationEmigration.title=Population emigration
+isisfish.populationMigrationImmigration.arrivalZone=Arrival Zone
+isisfish.populationMigrationImmigration.coefficient=Coefficient
+isisfish.populationMigrationImmigration.title=Population immigration
+isisfish.populationMigrationMigration.arrivalZone=Arrival zone
+isisfish.populationMigrationMigration.coefficient=Coefficient
+isisfish.populationMigrationMigration.departureZone=Departure zone
+isisfish.populationMigrationMigration.title=Population migration
+isisfish.populationRecruitment.comments=Comments
+isisfish.populationRecruitment.monthgapgetweenreprorecruitment=Month gap between repro and recruitment
+isisfish.populationRecruitment.recruitmentDistribution=Recruitment distribution
+isisfish.populationRecruitment.reproductionEquation=Reproduction equation
+isisfish.populationRecruitment.title=Recruitment input
+isisfish.populationSeasonInfo.arrival=Arrival
+isisfish.populationSeasonInfo.departure=Departure
+isisfish.populationSeasonInfo.distributionSpawing=Distribution of spawing
+isisfish.populationSeasonInfo.emigration=Emigration
+isisfish.populationSeasonInfo.group=Group
+isisfish.populationSeasonInfo.immigration=Immigration
+isisfish.populationSeasonInfo.migration=Migration
+isisfish.populationSeasonInfo.months=Months
+isisfish.populationSeasonInfo.toString=%1$s season %2$s-%3$s
+isisfish.populationSeasons.Reproduction=Reproduction
+isisfish.populationSeasons.changeGroup=Change of group
+isisfish.populationSeasons.comments=Comments
+isisfish.populationSeasons.computeCoefficient=Calculate coefficient
+isisfish.populationSeasons.distributionSpawning=Distribution of spawning
+isisfish.populationSeasons.noSpacialized=Not spacialized
+isisfish.populationSeasons.selectSeason=Select a season
+isisfish.populationSeasons.showSpacialized=Show the spacialized
+isisfish.populationSeasons.spacialized=Spacialized
+isisfish.populationSeasons.spacialized.visualisation=Spacialized
+isisfish.populationSeasons.title=Saisons
+isisfish.populationZones.betweenSpawningRecruitmentAreas=Match between spawning and recruitment areas
+isisfish.populationZones.selectPopulationAreas=Select the population areas
+isisfish.populationZones.selectRecruitmentAreas=Select the recruitment areas
+isisfish.populationZones.selectSpawningAreas=Select the spawning areas
+isisfish.populationZones.title=Zones
+isisfish.port.cell=Port cell
+isisfish.port.comments=Comments
+isisfish.port.name=Name
+isisfish.preScript.backParameter=Back to parameter tab
+isisfish.preScript.title=Pre simulation script
+isisfish.queue.clearDone=Clear done jobs
+isisfish.queue.id=Id
+isisfish.queue.launcher=Simulation launcher
+isisfish.queue.masterplan=Master plan
+isisfish.queue.notstarted=Not started
+isisfish.queue.plan=Plan
+isisfish.queue.progression=Progress
+isisfish.queue.restartSimulation=Restart
+isisfish.queue.showLog=Show simulation log
+isisfish.queue.simulationLaunch=Simulation queue launch
+isisfish.queue.status=Status
+isisfish.queue.stopSimulation=Stop simulation
+isisfish.queue.title=Queue
+isisfish.result.abundance=Abondance
+isisfish.result.add=Add a result
+isisfish.result.begin.simulation=En debut de Simulation\:
+isisfish.result.capture=Capture
+isisfish.result.capture.metier=Capture par metier
+isisfish.result.choose.simulation=Choose a Simulation
+isisfish.result.datas=Datas
+isisfish.result.datasRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.donneeRadioButton
+isisfish.result.desktopPane=defaultToolTip-fr.ifremer.resultat.ResultatView.desktopPane
+isisfish.result.dimension=Dimension
+isisfish.result.end.simulation=Simuation end \:
+isisfish.result.export=Export
+isisfish.result.export.file=Export text file
+isisfish.result.file=File
+isisfish.result.graph=Graph
+isisfish.result.graphRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.graphRadioButton
+isisfish.result.hpaned=defaultToolTip-fr.ifremer.resultat.ResultatEdit.hpaned2
+isisfish.result.infoPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.infoPanel
+isisfish.result.label=defaultToolTip-fr.ifremer.resultat.ResultatView.label9
+isisfish.result.map=Map
+isisfish.result.mapRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.mapRadioButton
+isisfish.result.menuExport=defaultToolTip-fr.ifremer.resultat.ResultatEdit.menuExport
+isisfish.result.menubar=defaultToolTip-fr.ifremer.resultat.ResultatView.menubar1
+isisfish.result.menuitem=defaultToolTip-fr.ifremer.resultat.ResultatView.menuitem2
+isisfish.result.new.window=Open a new window
+isisfish.result.openWindowButton=defaultToolTip-fr.ifremer.resultat.ResultatView.openWindowButton
+isisfish.result.quit=Quitter
+isisfish.result.reject.metier=Rejet par metier
+isisfish.result.remove.simulation=Remove simulation
+isisfish.result.removeSimulationButton=defaultToolTip-fr.ifremer.resultat.ResultatView.supprimerSimulationButton
+isisfish.result.resultat=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resultat
+isisfish.result.scroll=defaultToolTip-fr.ifremer.resultat.ResultatEdit.scroll
+isisfish.result.show.simulation.log=Show logs
+isisfish.result.simulation=defaultToolTip-fr.ifremer.resultat.ResultatView.simulation
+isisfish.result.statusBar=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusbar1
+isisfish.result.statusImage=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusImage
+isisfish.result.stress.metier=Effort par metier
+isisfish.result.summary=Summary
+isisfish.result.summaryRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resumeRadioButton
+isisfish.result.table=defaultToolTip-fr.ifremer.resultat.ResultatView.table33
+isisfish.result.title=Results
+isisfish.result.tooltip.show.simulation.log=Click to display the log console of the simulation
+isisfish.result.unload.metier=Debarquement par metier
+isisfish.result.vbox=defaultToolTip-fr.ifremer.resultat.ResultatView.vbox1
+isisfish.result.viewPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.viewPanel
+isisfish.resultChoice.save=Results to save
+isisfish.resultChoice.saved=Results saved
+isisfish.resultChoice.title=Result choice
+isisfish.resume.matrixInfoGrid=defaultToolTip-fr.ifremer.resultat.ResumePanel.matriceInfoGrid
+isisfish.resume.resumeTextArea=defaultToolTip-fr.ifremer.resultat.ResumePanel.resumeTextArea
+isisfish.resume.scrolledwindow=defaultToolTip-fr.ifremer.resultat.ResumePanel.scrolledwindow2
+isisfish.resume.table=defaultToolTip-fr.ifremer.resultat.ResumePanel.table1
+isisfish.script.check=Check
+isisfish.script.commit=Commit
+isisfish.script.compilation.failed=%s
+isisfish.script.compilation.ok=Compilation complete.\n---------------------\n\n%s
+isisfish.script.copy=Copy
+isisfish.script.cut=Cut
+isisfish.script.evaluate=Evaluate
+isisfish.script.export=export
+isisfish.script.export.cancel=cancel
+isisfish.script.export.checkAll=checkAll
+isisfish.script.export.chooseDir=chooseDir
+isisfish.script.export.ok=ok
+isisfish.script.export.tooltip.checkAll=
+isisfish.script.export.tooltip.chooseDir=
+isisfish.script.import=import
+isisfish.script.import.cancel=cancel
+isisfish.script.import.checkAll=checkAll
+isisfish.script.import.labelAdd=labelAdd
+isisfish.script.import.labelOverwrite=labelOverwrite
+isisfish.script.import.ok=ok
+isisfish.script.import.tooltip.checkAll=
+isisfish.script.menu.checkSyntax=CheckSyntax
+isisfish.script.menu.code=Code
+isisfish.script.menu.commit=Commit script to server
+isisfish.script.menu.copy=Copy
+isisfish.script.menu.cut=Cut
+isisfish.script.menu.deleteLocaly=Delete localy
+isisfish.script.menu.deleteLocalyServer=Delete localy and on server
+isisfish.script.menu.diff=Display diff with server version
+isisfish.script.menu.edit=Edit
+isisfish.script.menu.evaluate=Evaluate
+isisfish.script.menu.file=File
+isisfish.script.menu.new=New
+isisfish.script.menu.paste=Paste
+isisfish.script.menu.save=Save
+isisfish.script.menu.txtExport=Export
+isisfish.script.menu.txtImport=Import
+isisfish.script.menu.txtNewAnalysePlan=New analyse plan
+isisfish.script.menu.txtNewEquationModel=New equation model
+isisfish.script.menu.txtNewExport=New export
+isisfish.script.menu.txtNewRule=New rule
+isisfish.script.menu.txtNewScript=New script
+isisfish.script.menu.txtNewSensitivity=New sensitivity calculator
+isisfish.script.menu.txtNewSimulator=New simulator
+isisfish.script.menu.txtVCS=Server
+isisfish.script.menu.update=Update from server
+isisfish.script.new=New
+isisfish.script.paste=Paste
+isisfish.script.save=Save
+isisfish.script.title=Script Editor
+isisfish.script.txtExport=Export
+isisfish.season.toString=season %1$s-%2$s
+isisfish.selectivity.equation=Equation
+isisfish.selectivity.selectPopulation=Select a population
+isisfish.selectivity.title=Selectivity
+isisfish.sens.backParameter=Back to parameter tab
+isisfish.sens.title=Simulation plan
+isisfish.sensitivity.displaysecondpass=Display results
+isisfish.sensitivity.export=Export
+isisfish.sensitivity.secondpass=Analyze results
+isisfish.sensitivity.secondpass.title=Analyze results
+isisfish.sensitivity.select=Method
+isisfish.sensitivity.title=Sensitivity analysis
+isisfish.sensitivityChooser.title=Sensitivities input
+isisfish.server.ssh.generateKey.title=Generate Ssh key
+isisfish.setOfVessels.comments=Comments
+isisfish.setOfVessels.fixedCosts=Fixed costs
+isisfish.setOfVessels.name=Name
+isisfish.setOfVessels.numberOfVessels=Number of vessels
+isisfish.setOfVessels.technicalEfficiency=Technical efficiency
+isisfish.setOfVessels.title=Caracteristics
+isisfish.setOfVessels.vesselType=Vessel type
+isisfish.simpleResult.legendPanel=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.legendPanel
+isisfish.simpleResult.more.information=Clic a cell for more information...
+isisfish.simpleResult.resultatMap=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMap
+isisfish.simpleResult.resultatMapToolBar=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMapToolBar
+isisfish.simpleResult.table=defaultToolTip-fr.ifremer.isisfish.map.SimpleResultatMapBean.table12
+isisfish.simulation.log.console.title=Log console for simulation '%1$s'
+isisfish.simulation.log.showConsole=display log console for simulation %1$s
+isisfish.simulation.menu.import=Restor simulation parameter
+isisfish.simulation.menu.save=Save simulation parameter
+isisfish.simulation.menu.simulation=Simulation
+isisfish.simulation.name=Simulation name
+isisfish.simulation.remote.message.connection=Connecting to Caparmor
+isisfish.simulation.remote.message.downloadresults=Downloading results
+isisfish.simulation.remote.message.upload=Uploading simulation
+isisfish.simulation.remote.message.waitingavailable=Waiting for available resource.
+isisfish.simulation.remote.message.waitingstart=Waiting for simulation start
+isisfish.simulation.restarting=Restarting...
+isisfish.simulation.title=Simulation launcher
+isisfish.simulator.launcher.inprocess=in current process
+isisfish.simulator.launcher.remote=on Caparmor server
+isisfish.simulator.launcher.subprocess=in subprocess
+isisfish.simulator.simulaction.badid=Can't start simulation, bad id\: %s
+isisfish.simulator.ssh.configuration.connecting=Connection...
+isisfish.simulator.ssh.configuration.connectingpk=Connection with public key...
+isisfish.simulator.ssh.configuration.connection=Connection information
+isisfish.simulator.ssh.configuration.connectionerror=Can't connect
+isisfish.simulator.ssh.configuration.connectionok=Connection successfull
+isisfish.simulator.ssh.configuration.environment=Caparmor configuration
+isisfish.simulator.ssh.configuration.invalidpassphrase=Invalid passphrase
+isisfish.simulator.ssh.configuration.keygenerate=Generate
+isisfish.simulator.ssh.configuration.test=Test configuration
+isisfish.simulator.ssh.configuration.title=Caparmor launcher configuration
+isisfish.simulator.subprocess.readoutput.error=
+isisfish.species.age=Age
+isisfish.species.cee=CEE
+isisfish.species.comments=Comments
+isisfish.species.length=Length
+isisfish.species.name=Species name
+isisfish.species.rubbinCode=Rubbin code
+isisfish.species.scientificName=Scientific name
+isisfish.species.structured=Structured
+isisfish.ssh.askpassphrase.message=Enter passphrase for key '%s' \:
+isisfish.ssh.askpassphrase.title=SSH key unlocking
+isisfish.ssh.askpassphrase.wrongpassphrase=Wrong passphrase, enter a new one for key '%s' \:
+isisfish.strategy.comments=Comments
+isisfish.strategy.inactivity=Inactivity equation
+isisfish.strategy.inactivityEquationUsed=Use inactivity equation
+isisfish.strategy.name=Name
+isisfish.strategy.proportionSetOfVessels=Set of vessels proportion
+isisfish.strategy.title=Caracteristics
+isisfish.strategyMonthInfo.metier=Metier
+isisfish.strategyMonthInfo.minInactivityDays=Min inactivity days
+isisfish.strategyMonthInfo.numberOfTrips=Number of trips
+isisfish.strategyMonthInfo.proportion=Proportion
+isisfish.strategyMonthInfo.title=StrategyMonthInfo
+isisfish.strategyMonthInfo.toString=%1$s %2$s
+isisfish.timeUnit.day=Day
+isisfish.timeUnit.hours=Hours
+isisfish.tray.simulation=Isis-fish - %1$s \: %2$s/%3$s
+isisfish.tray.simulation.no=Isis-fish - No simulation
+isisfish.tripType.comments=Comments
+isisfish.tripType.duration=Duration
+isisfish.tripType.minTime=Minimum time between trips
+isisfish.tripType.name=Name
+isisfish.vcs.ask.passphrase=Enter your pass phrase (if your private key have one).
+isisfish.vcs.ask.passphrase.title=Ask your pass phrase
+isisfish.vcs.commit=vcs.commit
+isisfish.vcs.commit.cancel=vcs.commit.cancel
+isisfish.vcs.commit.label=vcs.commit.label
+isisfish.vcs.commit.ok=vcs.commit.ok
+isisfish.vcs.init.notfoundcantdownload=No database version %s found and can't get it.\nYou must go to ISIS-Fish web site and download database manually.
+isisfish.vcs.init.wrongprotocol=Your database repository\: %s\n don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?
+isisfish.vcs.switchprotocol.confirm=Protocol to access repository script has changed.\nDo you want to switch your repository ?
+isisfish.vcs.switchtag.warningconflict=Your repository is now up-to-date, but following files are conflicted, you may check them \:
+isisfish.vcs.switchversion.confirm=You don't use correct repository script for your application version %s.\nDo you want to switch your repository ?
+isisfish.vcs.update=vcs.update
+isisfish.vcs.update.cancel=cancel
+isisfish.vcs.update.checkAll=checkAll
+isisfish.vcs.update.local=local
+isisfish.vcs.update.local.modified=modified
+isisfish.vcs.update.local.outofdateAndModified=outofdateAndModified
+isisfish.vcs.update.local.tooltip.modified=
+isisfish.vcs.update.local.tooltip.outofdateAndModified=
+isisfish.vcs.update.local.tooltip.unversionned=
+isisfish.vcs.update.local.unversionned=unversionned
+isisfish.vcs.update.ok=ok
+isisfish.vcs.update.remote=remote
+isisfish.vcs.update.remote.missing=missing
+isisfish.vcs.update.remote.outofdate=outofdate
+isisfish.vcs.update.remote.tooltip.missing=
+isisfish.vcs.update.remote.tooltip.outofdate=
+isisfish.vcs.update.tooltip.checkAll=checkAll
+isisfish.vcs.update.tooltip.local=
+isisfish.vcs.update.tooltip.remote=
+isisfish.vcs.update.warningconflict=Your repository is now up-to-date, but following files are conflicted, you may check them \:\n
+isisfish.vcs.updateconfirm=updateconfirm
+isisfish.vcs.updateconfirm.cancel=cancel
+isisfish.vcs.updateconfirm.checkAll=checkAll
+isisfish.vcs.updateconfirm.label=
+isisfish.vcs.updateconfirm.label2=
+isisfish.vcs.updateconfirm.ok=ok
+isisfish.vcs.updateconfirm.tooltip.checkAll=
+isisfish.vcs.updaterepository.confirm=Your repository is not up to date.\nDo you want to update following files ?
+isisfish.vcs.vcssvn.add.error=Can't add file
+isisfish.vcs.vcssvn.add.errorreadonly=You can't add file, this repository is readonly
+isisfish.vcs.vcssvn.checkProtocol.error=Can't get address on serveur of local repository
+isisfish.vcs.vcssvn.checkProtocol.relocate=Relocate repository %s from %s to %s
+isisfish.vcs.vcssvn.checkout.error=Can't checkout
+isisfish.vcs.vcssvn.cleanup.error=Can't cleanup working copy
+isisfish.vcs.vcssvn.commit.error=Can't commit files
+isisfish.vcs.vcssvn.commit.errorreadonly=You can't commit file, this repository is readonly
+isisfish.vcs.vcssvn.delete.error=Can't delete file
+isisfish.vcs.vcssvn.delete.errorreadonly=You can't delete file, this repository is readonly
+isisfish.vcs.vcssvn.diff.error=Can't get diff
+isisfish.vcs.vcssvn.gettag.error=Can't get address on serveur of local repository
+isisfish.vcs.vcssvn.getupdate.error=Can't status file
+isisfish.vcs.vcssvn.global.filelocalandremotestatus=file %s status is (l\:%s/r\:%s)
+isisfish.vcs.vcssvn.global.filestatus=status for %s is %s
+isisfish.vcs.vcssvn.global.foundUpdatedFile=add %s as updated file
+isisfish.vcs.vcssvn.global.torevision=At revision \: %d
+isisfish.vcs.vcssvn.isconnected.switchoff=Can't connect to serveur, switch to off line\: %s
+isisfish.vcs.vcssvn.isconnected.switchto=Connection to serveur available, switch on line\: %s
+isisfish.vcs.vcssvn.isonremote.error=file %s is not on server
+isisfish.vcs.vcssvn.istag.notexist=Tag %s don't exist
+isisfish.vcs.vcssvn.isuptodate.error=Can't get file status
+isisfish.vcs.vcssvn.list.error=Can't list files
+isisfish.vcs.vcssvn.localstatus.error=Can't status file
+isisfish.vcs.vcssvn.remotestatus.error=Can't status file
+isisfish.vcs.vcssvn.setTag.error=Can't get address on server of local repository
+isisfish.vcs.vcssvn.settag.switchfromto=Switch repository tag from %s to %s
+isisfish.vcs.vcssvn.update.error=Can't update files
+isisfish.vcs.vcssvn.update.notinlocal=Can't update file that not in local repository
+isisfish.versionStorage.removed=Removed
+isisfish.vesselType.activityRange=Activity range
+isisfish.vesselType.comments=Comments
+isisfish.vesselType.fuelCost=Fuel cost of travel
+isisfish.vesselType.length=Length
+isisfish.vesselType.maxDuration=Maximum trip duration
+isisfish.vesselType.miniCrew=Minimum crew size
+isisfish.vesselType.name=Name
+isisfish.vesselType.speed=Speed
+isisfish.welcome.menu.about=About
+isisfish.welcome.menu.api=API
+isisfish.welcome.menu.close=Close
+isisfish.welcome.menu.configuration=Configuration
+isisfish.welcome.menu.configuration.sshlauncher=Caparmor configuration
+isisfish.welcome.menu.configuration.vcs=VCS Configuration
+isisfish.welcome.menu.file=File
+isisfish.welcome.menu.frame=Window
+isisfish.welcome.menu.help=Help
+isisfish.welcome.menu.help.isisfish=Isis-Fish Website
+isisfish.welcome.menu.help.isisfishapi=Isis-Fish API
+isisfish.welcome.menu.help.javaapi=Java API
+isisfish.welcome.menu.help.lutinmatrixapi=LutinMatrix API
+isisfish.welcome.menu.help.topiaapi=ToPIA API
+isisfish.welcome.menu.input=Input
+isisfish.welcome.menu.monitor=Logs frame
+isisfish.welcome.menu.queue=Simulation queue
+isisfish.welcome.menu.result=Result
+isisfish.welcome.menu.script=Script
+isisfish.welcome.menu.simulation=Simulation launcher
+isisfish.welcome.menu.synchro=Server synchronization
+isisfish.welcome.title=Ifremer Simulation
+isisfish.wizardGroupCreation.allGroupsSameSize=All groups have the same size
+isisfish.wizardGroupCreation.allValues=Input all the values
+isisfish.wizardGroupCreation.computedGrowthCurve=Computed by a growth curve
+isisfish.wizardGroupCreation.firstAge=First age
+isisfish.wizardGroupCreation.firstAgeHelp=First age \= minimal age
+isisfish.wizardGroupCreation.firstGroup=First group
+isisfish.wizardGroupCreation.firstLength=First length
+isisfish.wizardGroupCreation.firstLengthHelp=First length \= minimal length of first group
+isisfish.wizardGroupCreation.gapBetweenGroupsHelp=gap between to group is 1 year.
+isisfish.wizardGroupCreation.groupWidth=Group width
+isisfish.wizardGroupCreation.groupWidthHelp=Group width \= width of group
+isisfish.wizardGroupCreation.lastAge=Last age
+isisfish.wizardGroupCreation.lastAgeHelp=Last age \= maximal age
+isisfish.wizardGroupCreation.maxGroupsLength=Maximal groups length
+isisfish.wizardGroupCreation.maxGroupsLengthHelp=A semicolon ';' must separe maximal length of each group
+isisfish.wizardGroupCreation.numberGroup=Number of group
+isisfish.wizardGroupCreation.numberGroupHelp=number of Group \= number of group wanted
+isisfish.wizardGroupCreation.numberGroups=Number of groups
+isisfish.wizardGroupCreation.populationCharacteristics=Input the population characteristics
+isisfish.wizardGroupCreation.selectGroupLengthType=Select group length type
+isisfish.wizardGroupCreation.timeStep=Time step (in month)
+isisfish.wizardGroupCreation.title=Group creation
+isisfish.wizardGroupCreation.undefinedGrowthEquation=The equation used is the population's growth curve, it needs to be defined first.
+isisfish.zone.cells=Zone cells
+isisfish.zone.comments=Comments
+isisfish.zone.name=Name
+region\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
+simulate\ %s\ with\ file\ %s=
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,1111 +0,0 @@
-Add\ to\ %s\ queue=
-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
-Can't\ add\ simulation\:\ =
-Can't\ create\ simulation\ logger=Can't create simulation logger
-Can't\ delete\ simulation\ %s\ =
-Can't\ do\ post\ action\ %s=
-Can't\ do\ simulation\ %s=
-Can't\ download\ archive\ \:\ %s=
-Can't\ download\ file=
-Can't\ evaluate\ simulation\ prescript=
-Can't\ export\ simulation\ %s=
-Can't\ get\ changlog=Impossible d'obtenir de changelog
-Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
-Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
-Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
-Can't\ instantiate\ %s=
-Can't\ open\ log\ for\ %s=
-Can't\ read\ ssh\ key\ \:\ %s=
-Can't\ simulate\ %s=
-Check\ state\ of\ local\ repository\:\ %s=
-Check\ syntax\ of\ the\ current\ script=
-Checkout\ pom.xml\ to\ %s=
-Command\ '%s'\ fail\ to\ execute=
-Commit\ script\ to\ CVS\ server=
-Copy\ current\ selection\ (Ctrl-c)=
-Could\ not\ found\ formule\ type\ %s\ autorised\ type\ are\ %s=
-Create\ a\ new\ script=
-Cut\ current\ selection\ (Ctrl-x)=
-Error\ during\ vcs\ initialisation=
-Error\ while\ uploading\ public\ key\ to\ remote\ serveur\ authorized_keys=
-Export\ selected\ script(s)\ to\ zip\ archive=
-Generate\ next\ simulation=
-Import\ one\ java\ file\ script\ source=
-Import\ simulation\ file\ %s\ in\ directory\ %s\ and\ rename\ from\ %s\ to\ %s=
-Import\ zipped\ file\ containing\ all\ scripts\ directory\ structure=
-Info=Info
-Jobs\ submited\ is\ not\ ItemSimulation\ but\ was\ %s=
-Last\ entry\ was\ %s\ extract\ name\ %s=
-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=
-Normal\ stop\ thread,\ this\ is\ not\ an\ error=
-Not\ start\ simulation\ %s\ because\ user\ ask\ stop=
-Paste\ current\ selection\ (Ctrl-v)=
-Process\ template\ error=
-Region\ %s\ allready\ exist\ in\ repository.\ Can't\ import=
-Region\ %s\ already\ inited=La r\u00E9gion %s a d\u00E9j\u00E0 \u00E9t\u00E9 initialis\u00E9e
-Remote\ IsisFish\ server=
-Remote\ control\ file\ doesn't\ exists\ %s=
-Remote\ information\ file\ doesn't\ exists\ %s=
-Rename\ data\ directory\ to\ %s=
-Save\ current\ script=
-Show\ help=
-SimulationExecutor\ started\ with\ %s\ thread\ for\ %s=
-Ssh\ key\ found\ '%s'\ will\ be\ used\ to\ connect\ to=
-Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
-Stop\ the\ process=
-SubProcess\ start\:\ %s\ %s=
-Switch\ repository\ type\ to\ none=
-Try\ to\ eval\ current\ script\ (must\ be\ have\ main\ method)=
-Try\ to\ log\ on\ %s@%s\:%d=
-Use\ branches,\ switch\ not\ needed=
-User\ restart\ simulation\ %s=
-User\ stop\ simulation\ %s=
-could\ not\ close\ reader\ %1$s=could not close reader %1$s
-could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
-could\ not\ filter\ on\ simulations=could not filter on simulations
-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
-destination\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
-destination\ already\ exists\ %s\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
-directory\ %s\ must\ be\ a\ directory=
-filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
-in\ hour=
-isisfish.about.abouthtmltext=<html><b>Isis-Fish (%s)</b><br /><br />Copyright IFREMER-MAERHA 2000-2009.<br /><br /><a href\="http\://isis-fish.labs.libre-entreprise.org">http\://isis-fish.labs.libre-entreprise.org</a><br /><br />Merci de rapporter les bugs.<html>
-isisfish.about.licensetext=Vous pouvez modifier et redistribuer ce programme sous les conditions \u00E9nonc\u00E9es par la licence GNU GPL (version 2 ou ult\u00E9rieure). Une copie de la licence GPL est dans le fichier \u00AB\u00A0LICENSE.txt\u00A0\u00BB fourni avec Isis-Fish. Tous droits r\u00E9serv\u00E9s. Aucune garantie n'est fournie pour l'utilisation de ce programme.
-isisfish.about.title=\u00C0 propos de Isis-Fish...
-isisfish.advancedParameters.title=Param\u00E8tres avanc\u00E9s
-isisfish.advancedParams.freeParameters=Param\u00E8tres libres
-isisfish.advancedParams.libLevelLogger=Niveau de tracage des librairies
-isisfish.advancedParams.scriptLevelLogger=Niveau de tracage des scripts
-isisfish.advancedParams.simulLevelLogger=Niveau de tracage du simulateur
-isisfish.advancedParams.simulationCache=Simulation cache
-isisfish.advancedParams.simulationStatistique=Simulation statistique
-isisfish.advancedParams.simulatorUse=Simulateur \u00E0 utiliser
-isisfish.cell.comments=Commentaires
-isisfish.cell.land=Terre
-isisfish.cell.latitude=Latitude
-isisfish.cell.longitude=Longitude
-isisfish.cell.name=Nom
-isisfish.change.equation=Ne peut pas changer l'\u00E9quation
-isisfish.commit.message=Entrer un message de commit
-isisfish.common.add=Ajouter
-isisfish.common.add.short=Aj.
-isisfish.common.alert=alerte
-isisfish.common.apply=Appliquer
-isisfish.common.blank=\
-isisfish.common.cancel=Annuler
-isisfish.common.check=V\u00E9rifier
-isisfish.common.clear=Effacer
-isisfish.common.date=Date
-isisfish.common.debug=Debug
-isisfish.common.delete=Supprimer
-isisfish.common.ellipsis=...
-isisfish.common.emigration=\u00E9migration
-isisfish.common.equation=Equation
-isisfish.common.error=Erreur
-isisfish.common.finish=Terminer
-isisfish.common.gear=Engin
-isisfish.common.immigration=immigration
-isisfish.common.info=Info
-isisfish.common.migration=migration
-isisfish.common.month=mois %1$s
-isisfish.common.name=Nom
-isisfish.common.new=Nouveau
-isisfish.common.newMatrix=Nouvelle matrice
-isisfish.common.next=Suivant
-isisfish.common.ok=Ok
-isisfish.common.openEditor=Ouvrir l'\u00E9diteur
-isisfish.common.population=Population
-isisfish.common.populationGroup=Groupe de population
-isisfish.common.populations=Populations
-isisfish.common.port=port
-isisfish.common.prev=Pr\u00E9c\u00E9dent
-isisfish.common.region=R\u00E9gion
-isisfish.common.remove=Supprimer
-isisfish.common.reset=R\u00E9initialiser
-isisfish.common.rules=R\u00E8gles
-isisfish.common.save=Sauver
-isisfish.common.saveModel=Sauver comme mod\u00E8le
-isisfish.common.saveNextSimulation=Sauver pour la prochaine simulation
-isisfish.common.season=Saison
-isisfish.common.setOfVessels=Ensemble de navires
-isisfish.common.simulate=Simuler
-isisfish.common.stop=Arr\u00EAter
-isisfish.common.strategies=Strat\u00E9gies
-isisfish.common.sum=somme
-isisfish.common.tag=Tag
-isisfish.common.tripType=Type de trajet
-isisfish.common.valid=Valider
-isisfish.common.value=Valeur
-isisfish.common.warn=Warning
-isisfish.common.year=ann\u00E9e
-isisfish.common.zone=Zone
-isisfish.config.database.lockmode.description=
-isisfish.config.main.compileDirectory.description=le r\u00E9pertoire o\u00F9 sont compil\u00E9s les scripts
-isisfish.config.main.configFileName.description=le fichier de configuration \u00E0 utiliser
-isisfish.config.main.defaultBackupDirectory.description=le r\u00E9pertoire o\u00F9 stocker les backups des donn\u00E9es
-isisfish.config.main.defaultExportDirectory.description=le r\u00E9pertoire o\u00F9 exporter les r\u00E9sultats des simulations
-isisfish.config.main.defaultExportNames.description=les noms des exports \u00E0 effectuer apr\u00E8s une simulation
-isisfish.config.main.defaultMapFile.description=TODO
-isisfish.config.main.defaultResultNames.description=les noms des r\u00E9sultats \u00E0 traiter apr\u00E8s une simulation
-isisfish.config.main.defaultSimulator.description=le nom du simulateur par d\u00E9faut \u00E0 utiliser lors d'une simulation
-isisfish.config.main.defaultTagValue.description=TODO
-isisfish.config.main.encoding.description=l'encoding du syst\u00E8me
-isisfish.config.main.javadocDirectory.description=
-isisfish.config.main.javadocURL.description=l'url de la javadoc des scripts
-isisfish.config.main.launchUI.description=
-isisfish.config.main.localSimulator.description=pour indiquer si les simulations sont \u00E0 effectuer localement
-isisfish.config.main.locale.description=la locale utilisateur
-isisfish.config.main.login.description=le login pour se connecter au serveur de simulations distant
-isisfish.config.main.password.description=le mot de passe pour se connecter au serveur de simulations distant
-isisfish.config.main.projectName.description=le nom du projet
-isisfish.config.main.regionMap.description=le nom du r\u00E9pertoire contenant les maps d'une r\u00E9gion
-isisfish.config.main.remoteCaparmor.description=lance les simulations sur un serveur distant
-isisfish.config.main.resultExport.description=TODO
-isisfish.config.main.simulation.max.simultaneous.simulation=Nombre de simulations simultan\u00E9es
-isisfish.config.main.simulation.max.simultaneous.simulation.description=Nombre maximum de simulations pouvant \u00EAtre envoy\u00E9es au serveur
-isisfish.config.main.simulation.ssh.control.check.interval=V\u00E9rification de la progression (secondes)
-isisfish.config.main.simulation.ssh.control.check.interval.description=Temps d'attente en secondes entre deux v\u00E9rifications de progression
-isisfish.config.main.simulation.ssh.datapath=Base de donn\u00E9es
-isisfish.config.main.simulation.ssh.datapath.description=Emplacement de la base de donn\u00E9es (isis-database)
-isisfish.config.main.simulation.ssh.isis.home=Installation d'Isis-Fish
-isisfish.config.main.simulation.ssh.isis.home.description=Emplacement d'installation d'Isis-Fish sur le serveur
-isisfish.config.main.simulation.ssh.pbsbinpath=Emplacement des executables PBS
-isisfish.config.main.simulation.ssh.pbsbinpath.description=Emplacement des commandes PBS (qsub, qdel...) sur le serveur
-isisfish.config.main.simulation.ssh.server=Adresse du serveur
-isisfish.config.main.simulation.ssh.server.description=Adresse du serveur
-isisfish.config.main.simulation.ssh.tmppath=Dossier temporaire
-isisfish.config.main.simulation.ssh.tmppath.description=Emplacement du dossier temporaire
-isisfish.config.main.simulation.ssh.userhome=R\u00E9pertoire d'accueil
-isisfish.config.main.simulation.ssh.userhome.description=R\u00E9pertoire d'accueil de l'utilisateur
-isisfish.config.main.simulation.ssh.username=Identifiant
-isisfish.config.main.simulation.ssh.username.description=Identifiant SSH pour se connecter au serveur
-isisfish.config.main.simulationServer.description=l'url du serveur de simulations distant
-isisfish.config.main.simulationShowOnlyError.description=pour indiquer si l'on doit conserver dans l'UI des simulations termin\u00E9es uniquement celles avec erreur
-isisfish.config.main.simulationShowOnlyQueue.description=pour indiquer si l'on doit conserver dans l'UI des simulations termin\u00E9es uniquement celles effectu\u00E9es localement
-isisfish.config.main.smtpServer.description=le nom du serveur smtp \u00E0 utiliser pour envoyer les courriels
-isisfish.config.main.subSimulator.description=pour indiquer si les simulations sont \u00E0 effectuer localement dans un sous process
-isisfish.config.main.userMail.description=le courriel de l'utilisateur
-isisfish.config.main.userName.description=le nom - pr\u00E9nom de l'utilisateur
-isisfish.config.ssh.key.file=Cl\u00E9 SSH
-isisfish.config.ssh.key.file.description=Emplacement de la cl\u00E9 priv\u00E9e SSH
-isisfish.config.vcs.hostName.description=le nom du serveur vcs \u00E0 utiliser
-isisfish.config.vcs.keyFile.description=le chemin complet du fichier de clef priv\u00E9e ssh2 \u00E0 utiliser lors d'une connexion s\u00E9curis\u00E9e
-isisfish.config.vcs.localDatabasePath.description=
-isisfish.config.vcs.noPassPhrase.description=pour indiquer si la clef priv\u00E9e ssh2 utilis\u00E9e pour communiquer avec le serveur vcs est prot\u00E9g\u00E9 par une passe-phrase
-isisfish.config.vcs.passphrase.description=la passe-phrase utilis\u00E9e pour prot\u00E9ger la clef priv\u00E9e ssh
-isisfish.config.vcs.remoteDatabase.description=le nom du module de donn\u00E9es sur le serveur vcs
-isisfish.config.vcs.remotePath.description=le chemin jusqu'au parent du module de donn\u00E9es sur le serveur vcs
-isisfish.config.vcs.type.description=le type de communication vcs utilis\u00E9
-isisfish.config.vcs.typeRepo.description=le type de r\u00E9pository vcs utilis\u00E9
-isisfish.config.vcs.useSshConnexion.description=pour indiquer si l'on utilise une connexion s\u00E9curis\u00E9e pour communiquer avec le serveur vcs (ssh2)
-isisfish.config.vcs.userName.description=le login de l'utilisateur sur le serveur vcs
-isisfish.config.vcs.userPassword.description=
-isisfish.dataResult.descriptionLabel=defaultToolTip-fr.ifremer.resultat.DataResult.descriptionLabel
-isisfish.dataResult.export.csv=Exporter en CSV
-isisfish.dataResult.exportButton=defaultToolTip-fr.ifremer.resultat.DataResult.exportButton
-isisfish.dataResult.label=label9
-isisfish.dataResult.matriceTable=defaultToolTip-fr.ifremer.resultat.DataResult.matriceTable
-isisfish.dataResult.scrolledwindow2=defaultToolTip-fr.ifremer.resultat.DataResult.scrolledwindow2
-isisfish.dataResult.table2=defaultToolTip-fr.ifremer.resultat.DataResult.table2
-isisfish.date.toString=%1$s %2$s
-isisfish.effortDescription.crewFoodCost=Co\u00FBt de l'alimentation pour l'\u00E9quipage
-isisfish.effortDescription.crewShareRate=Taux de partage de l'\u00E9quipage
-isisfish.effortDescription.crewSize=Taille de l'\u00E9quipage
-isisfish.effortDescription.economicTitle=Param\u00E8tres \u00E9conomiques
-isisfish.effortDescription.effortTitle=Param\u00E8tres d'effort de p\u00EAche
-isisfish.effortDescription.fishingOperation=Op\u00E9ration de p\u00EAche
-isisfish.effortDescription.fishingOperationDuration=Dur\u00E9e de la p\u00EAche
-isisfish.effortDescription.fishingOperationDuration.tooltip=En heures
-isisfish.effortDescription.fixedCrewSalary=Salaire d'\u00E9quipage fixe
-isisfish.effortDescription.gearsNumberPerOperation=Nombre d'engins par op\u00E9ration
-isisfish.effortDescription.landingCosts=Co\u00FBts d'accastillage
-isisfish.effortDescription.otherRunningCost=Autres co\u00FBts
-isisfish.effortDescription.parametersTitle=Param\u00E8tres des m\u00E9tiers
-isisfish.effortDescription.repairAndMaintenanceGearCost=Co\u00FBts de maintenance
-isisfish.effortDescription.title=M\u00E9tiers pratiqu\u00E9s
-isisfish.effortDescription.toString=EffortDescription for %1$s with %2$s
-isisfish.effortDescription.unitCostOfFishing=Co\u00FBt unitaire de la p\u00EAche
-isisfish.equation.editor.title=Editeur d'\u00E9quation
-isisfish.error.acceptable.population=La nouvelle valeur n'est pas une valeur valide pour cette population
-isisfish.error.add.card=Erreur lors de l'ajout du r\u00E9sultat \u00E0 la carte.
-isisfish.error.add.logger.simulation=isisfish.error.add.logger.simulation
-isisfish.error.add.result.data=Erreur lors de l'ajout du r\u00E9sultat au data.
-isisfish.error.add.result.graph=Erreur lors de l'ajout du r\u00E9sultat au graph.
-isisfish.error.add.tray=Impossible d'ajouter une icone de notification
-isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s
-isisfish.error.change.equation=Can't change equation
-isisfish.error.check.region=
-isisfish.error.compile.fileerror=Le fichier %s contient des erreurs \!
-isisfish.error.compile.script=Impossible de compiler le script \: %s
-isisfish.error.compiled.parameter=Can't get rule parameter from compiled class
-isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es
-isisfish.error.create.equation=Can't create equation
-isisfish.error.delete.database=Can't delete database
-isisfish.error.delete.file=could not delete file %1$s
-isisfish.error.delete.vcs.files=Can't delete vcs files
-isisfish.error.during.simulation=Error during simulation
-isisfish.error.emigration.negative=emigration negative
-isisfish.error.empty.code.rubbin=le code rubbin est vide
-isisfish.error.empty.emigration=emigration vide
-isisfish.error.empty.id.geographic=l'identifiant g\u00E9ographique est vide
-isisfish.error.empty.immigration=immigration vide
-isisfish.error.empty.migration=Migration vide
-isisfish.error.empty.name=le nom est vide
-isisfish.error.empty.params.name=le nom du param\u00E8tre est vide
-isisfish.error.empty.population=Population est vide
-isisfish.error.empty.scientific.name=le nom scientifique est vide
-isisfish.error.empty.season=info saison vide
-isisfish.error.empty.selectivity=s\u00E9lectivit\u00E9 est vide
-isisfish.error.empty.species=espece capturable vide
-isisfish.error.empty.species.name=le nom d'espece est vide
-isisfish.error.empty.unit=l'unit\u00E9 de mesure est vide
-isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
-isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
-isisfish.error.evaluate.preplan.script=
-isisfish.error.evalute.plan.script=Can't evaluate plan script
-isisfish.error.factor.invalid=Le facteur n'est pas valide
-isisfish.error.file.already.exists=The file %1$s already exist
-isisfish.error.get.fisheryRegion=Can't get FisheryRegion
-isisfish.error.growth.equation.before.create.group.population=Error, You must input growth equation before create the group population
-isisfish.error.immigration.negative=immigration negative
-isisfish.error.import.convertible=Erreur lors de l'import, la version du fichier que vous souhaitez importer n'est pas transformable en une version importable.
-isisfish.error.import.file=Can't import file %1$s
-isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
-isisfish.error.init.map=Can't init map.
-isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
-isisfish.error.instanciate=Can't instanciate %1$s
-isisfish.error.instanciate.export=Can't instanciate export %1$s
-isisfish.error.invalid.costs.fix=les co\u00FBts fixes sont invalides
-isisfish.error.invalid.distribution.recruitment=distribution de recrutement invalide
-isisfish.error.invalid.equation=Equation invalide
-isisfish.error.invalid.equation.name=Nom d'\u00E9quation invalide
-isisfish.error.invalid.file.name=Le nom du script %1$s n'est pas valide.
-isisfish.error.invalid.interval.reproduction.recruitment=interval entre la reproduction et le recrutement invalide
-isisfish.error.invalid.mean.weight=poids moyen invalide
-isisfish.error.invalid.natural.death=mortalit\u00E9 naturelle sur les classes naissantes invalide
-isisfish.error.invalid.number=le nombre est invalide
-isisfish.error.invalid.range=La gamme possible n'a pas de valeur acceptable
-isisfish.error.invalid.values.params=Param\u00E8tre controlable hors valeurs possibles
-isisfish.error.invalidate.natural.death=mortalite naturelle invalide
-isisfish.error.invoke.method=Can't invoke method '%1$s' for class %2$s
-isisfish.error.linkageerror.message=Isis-Fish a d\u00E9tect\u00E9 une erreur d'utilisation des scripts.\nLe dossier de compilation a \u00E9t\u00E9 supprim\u00E9 pour forcer leur recompilation.\n\nMerci de relancer Isis-Fish.
-isisfish.error.linkageerror.title=Erreur d'initialisation
-isisfish.error.load.class=Can't load class\: %1$s
-isisfish.error.load.classloader=Can't create ClassLoader for script, bad directory\: %1$s for reason %2$s
-isisfish.error.load.file=could not load file %1$s
-isisfish.error.load.map=Can't load map file\: %1$s
-isisfish.error.log.closeAppender=n'a pas pu ferme l'appender %1$s et la categorie %2$s
-isisfish.error.log.console.dispose=Une erreur est survenue pendant la fermeture de la console %1$s de log, raison %2$s
-isisfish.error.log.createAppender=n'a pas pu creer l'appender [%1$s] \: %2$s pour la raison %3$s
-isisfish.error.log.foundAppender=n'a pas trouve l'appender %1$s pour la categorie %2$s
-isisfish.error.matrix.more.2d=Matrice de plus de 2 dimensions\!\!\nS\u00E9lectionnez moins d'\u00E9l\u00E9ments ou utilisez l'op\u00E9rateur somme.
-isisfish.error.migration.negative=Migration negative
-isisfish.error.no.matrix=No matrix for\:
-isisfish.error.no.null.time.step=Error, the time step should not be null
-isisfish.error.no.sector=il n'y a pas de secteur de d\u00E9finit
-isisfish.error.no.select.simulation=could not select simulation
-isisfish.error.no.target.species=no target species in %1$s for %2$s
-isisfish.error.not.found.code=could not found codeclass for %1$s
-isisfish.error.not.found.description=could not found description for %1$s
-isisfish.error.not.found.field=could not found field %1$s doc for %2$s
-isisfish.error.not.found.field.class=could not found field %1$s for class %2$s
-isisfish.error.not.null.class.grown=classe mature vaut nul
-isisfish.error.not.null.mean.weight=poids moyen nul
-isisfish.error.not.null.natiral.death=mortalite naturelle nulle
-isisfish.error.not.possible.metier=Pas de m\u00E9tier possible
-isisfish.error.not.support.class=La classe %s ne supporte pas les descritions
-isisfish.error.number.classes.upper.zero=Error, the number of classes must be upper than 0
-isisfish.error.obtain.analyseplan=Can't obtain description of AnalysePlan
-isisfish.error.obtain.doc.export=Can't obtain @Doc on class Export
-isisfish.error.obtain.doc.resultName=Can't obtain @Doc on ResultName
-isisfish.error.obtain.doc.rule=Can't obtain description for a Rule class
-isisfish.error.obtain.field=Can't obtain field @Doc for Rule %1$s
-isisfish.error.obtain.field.analyseplan=Can't obtain field @Doc for AnalysePlan %1$s
-isisfish.error.obtain.field.export=Can't obtain field @Doc for Export %1$s
-isisfish.error.obtain.field.sensitivitycalculator=Can't obtain field @Doc for Calculator %1$s
-isisfish.error.out.memory=Out of memory try with more memory (option -mx)
-isisfish.error.overlap.season=Cette saison chevauche une autre saison
-isisfish.error.parse.date=Can't parse date %1$s
-isisfish.error.parse.long=Can't parse long %1$s
-isisfish.error.plan.parameter=Can't get plan parameter from compiled class
-isisfish.error.prepare.data=Can't prepare data
-isisfish.error.prepare.information.simulation=Can't prepare information for simulation
-isisfish.error.read.simulation=Can't read simulation information %1$s
-isisfish.error.read.simulation.parameters=Impossible de lire les param\u00EAtres du fichier \: %1$s
-isisfish.error.region.already.exists=Cette r\u00E9gion existe d\u00E9j\u00E0
-isisfish.error.region.name.empty=Le nom de la R\u00E9gion est vide
-isisfish.error.remove.directory=Can't remove directory %1$s
-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.region=
-isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
-isisfish.error.save.simulation.parameters=Can't save simulation parameters in file %1$s
-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
-isisfish.error.script.load=N'a pas pu charger le fichier %1$s pour la raison suivante %2$s
-isisfish.error.script.save=N'a pas pu sauver le fichier %1$s pour la raison suivante %2$s
-isisfish.error.sensitivity.parameter=
-isisfish.error.simulation.log.openAppender=n'a pas pu ouvrir l'appender de la simulation %1$s pour la raison %2$s
-isisfish.error.simulation.remote.global=Impossible de lancer une simulation sur serveur distant
-isisfish.error.simulation.remote.wrongportvalue=Le port de connexion a une valeur incorrecte \: %s
-isisfish.error.simulation.resultXml.close=Can't close simulation result XML for reason %1$s
-isisfish.error.simulation.resultXml.open=Can't open simulation result XML for reason %1$s
-isisfish.error.simulation.resultXml.write=Can't write simulation result XML for reason %1$s
-isisfish.error.source.parameter=Can't get parameter from source
-isisfish.error.strategy.order=Strategy %1$s don't have 12 StrategyMonthInfo but %2$s. Recreate them
-isisfish.error.undefined.classes=pas de classes d\u00E9finies
-isisfish.error.undefined.correspondence.zones.reproduction.recruitment=pas de correspondance entre les zones de reproduction et les zones de recrutement
-isisfish.error.undefined.gear=l'engin n'est pas d\u00E9fini
-isisfish.error.undefined.mesh=aucune maille de d\u00E9fini
-isisfish.error.undefined.mesh.sector=aucune maille dans le secteur
-isisfish.error.undefined.meta.population=aucune meta population de d\u00E9fini
-isisfish.error.undefined.natural.death=pas de mortalit\u00E9 naturelle sur les classes naissantes
-isisfish.error.undefined.sector=aucun secteur de d\u00E9fini
-isisfish.error.undefined.stategy=aucune strat\u00E9gie de d\u00E9fini
-isisfish.error.undefined.stategy.months=La strat\u00E9gie n'est pas d\u00E9finie pour certain mois
-isisfish.error.undefined.zone.population=il n'y a pas de zone de population de d\u00E9finie
-isisfish.error.undefined.zone.recruitment=il n'y a pas de zone de recrutement de d\u00E9finie
-isisfish.error.undefined.zone.reproduction=il n'y a pas de zone de reproduction de d\u00E9finie
-isisfish.error.unsupported.equation.langage=unsupported langage '%1$s' for equation\: %2$s
-isisfish.error.wait.simThread=Can't wait SimThread
-isisfish.error.warning.title=Attention
-isisfish.error.write.simulation=Can't write information %1$s
-isisfish.export.directory=Dossier d'export
-isisfish.export.saved=Exports des r\u00E9sultats sauvegard\u00E9s
-isisfish.export.title=Export des r\u00E9sultats
-isisfish.factor.coefficient=Coefficient (en %)
-isisfish.factor.comment=Commentaires
-isisfish.factor.continue=Facteur continu
-isisfish.factor.discret=Facteur discret
-isisfish.factor.equation.variable.action=Action
-isisfish.factor.equation.variable.coefficient=Coef (en %)
-isisfish.factor.equation.variable.name=Nom
-isisfish.factor.equation.variable.operator=Op\u00E9rateur
-isisfish.factor.equation.variable.value=Valeur
-isisfish.factor.factor=Facteur
-isisfish.factor.factors=Facteurs
-isisfish.factor.firstValue=Premi\u00E8re valeur
-isisfish.factor.increment=Cardinalit\u00E9
-isisfish.factor.lastValue=Derni\u00E8re valeur
-isisfish.factor.name=Nom du facteur
-isisfish.factor.operateur=Op\u00E9rateur
-isisfish.factor.selectDiscretNumber=Nombre de facteurs
-isisfish.factor.title=Saisie d'un facteur
-isisfish.factor.validDiscretNumber=Valider
-isisfish.factor.value=Valeur
-isisfish.filter=Filtrer
-isisfish.filter.apply=Appliquer le filtre
-isisfish.filter.cancel=Annuler
-isisfish.filter.log.levelDebug=debug
-isisfish.filter.log.levelError=erreur
-isisfish.filter.log.levelFatal=fatal
-isisfish.filter.log.levelInfo=info
-isisfish.filter.log.levelTrace=trace
-isisfish.filter.log.levelWarn=warning
-isisfish.filter.log.tooltip.levelDebug=s\u00E9lectionner pour filtrer ce niveau
-isisfish.filter.log.tooltip.levelError=s\u00E9lectionner pour filtrer ce niveau
-isisfish.filter.log.tooltip.levelFatal=s\u00E9lectionner pour filtrer ce niveau
-isisfish.filter.log.tooltip.levelInfo=s\u00E9lectionner pour filtrer ce niveau
-isisfish.filter.log.tooltip.levelTrace=s\u00E9lectionner pour filtrer ce niveau
-isisfish.filter.log.tooltip.levelWarn=s\u00E9lectionner pour filtrer ce niveau
-isisfish.filter.log.tooltip.message=Entrer un terme \u00E0 rechercher et appuyer sur Entr\u00E9e
-isisfish.filter.reset=R\u00E9initialiser
-isisfish.filter.result=R\u00E9sultats
-isisfish.filter.result.found=R\u00E9sultats (%d/%d)
-isisfish.filter.select=S\u00E9lectionner
-isisfish.filter.select.simulation=S\u00E9lectionner une simulation
-isisfish.filter.simulation=Filtrer les simulations
-isisfish.filter.simulation.analysePlanNumber=num\u00E9ro d'analyse
-isisfish.filter.simulation.description=description
-isisfish.filter.simulation.local=locale
-isisfish.filter.simulation.numberOfYear=nombre d'ann\u00E9e(s)
-isisfish.filter.simulation.regionName=nom de r\u00E9gion
-isisfish.filter.simulation.simulationEnd=date de fin (dd/MM/yyyy)
-isisfish.filter.simulation.simulationName=nom de simulation
-isisfish.filter.simulation.simulationStart=date de d\u00E9but (dd/MM/yyyy)
-isisfish.filter.simulation.simulatorName=nom du simulateur
-isisfish.filter.simulation.tooltip.analysePlanNumber=filter sur le num\u00E9ro d'analyse (uniquement pour les simulations avec plan d'analyse)
-isisfish.filter.simulation.tooltip.description=filtrer sur la description (format regex)
-isisfish.filter.simulation.tooltip.local=filter uniquement les simulations locales
-isisfish.filter.simulation.tooltip.numberOfYear=filter sur le nombre d'ann\u00E9e(s) (recherche extacte)
-isisfish.filter.simulation.tooltip.regionName=filtrer sur le nom de la r\u00E9gion (format regex)
-isisfish.filter.simulation.tooltip.simulationEnd=filtrer sur la date de fin de simulation (format dd/MM/yyyy)
-isisfish.filter.simulation.tooltip.simulationName=filtrer sur le nom de simulation (format regex)
-isisfish.filter.simulation.tooltip.simulationStart=filtrer sur la date de d\u00E9but de simulation (format dd/MM/yyyy)
-isisfish.filter.simulation.tooltip.simulatorName=filter sur le nom du simulateur utilis\u00E9 (format regex)
-isisfish.filter.simulation.tooltip.useAnalysePlan=filter uniquement les simulations avec plan d'analyse
-isisfish.filter.simulation.tooltip.useOptimization=filter uniquement les simulations avec optimisation
-isisfish.filter.simulation.tooltip.usePreScript=filter uniquement les simulations avec Prescript
-isisfish.filter.simulation.tooltip.useStatistic=filter uniquement les simulations avec statistiques
-isisfish.filter.simulation.useAnalysePlan=plan d'analyse
-isisfish.filter.simulation.useOptimization=optimisation
-isisfish.filter.simulation.usePreScript=prescript
-isisfish.filter.simulation.useStatistic=statistiques
-isisfish.fisheryRegion.addMap=Ajouter une carte
-isisfish.fisheryRegion.area=Extr\u00E9mit\u00E9s de la zone de p\u00EAche
-isisfish.fisheryRegion.comments=Commentaires
-isisfish.fisheryRegion.delMap=Supprimer la carte
-isisfish.fisheryRegion.latitude=Lat.
-isisfish.fisheryRegion.latitude.max=Lat. max.
-isisfish.fisheryRegion.latitude.min=Lat. min.
-isisfish.fisheryRegion.longitude=Long.
-isisfish.fisheryRegion.longitude.max=Long. max.
-isisfish.fisheryRegion.longitude.min=Long. min.
-isisfish.fisheryRegion.name=Nom de la r\u00E9gion
-isisfish.fisheryRegion.ofCells=de mailles (option)
-isisfish.fisheryRegion.selectFile=S\u00E9lectionnez un fichier
-isisfish.fisheryRegion.spatial=R\u00E9solution spatiale
-isisfish.gear.comments=Commentaires
-isisfish.gear.effortUnit=Unit\u00E9 d'effort
-isisfish.gear.name=Nom
-isisfish.gear.rangeValues=Gamme de valeurs
-isisfish.gear.standardisationFactor=Facteur de standardisation
-isisfish.gear.technicalParameter=Param\u00E8tre technique
-isisfish.gear.title=Engin
-isisfish.graphBean.graph.render=Choisir un rendu de graphe
-isisfish.graphBean.graphPanel=defaultToolTip-fr.ifremer.graph.GraphBean.graphPanel
-isisfish.graphBean.graphRendererCombo=defaultToolTip-fr.ifremer.graph.GraphBean.graphRendererCombo
-isisfish.graphBean.graphSplitPane=defaultToolTip-fr.ifremer.graph.GraphBean.graphSplitPane
-isisfish.graphBean.label=defaultToolTip-fr.ifremer.graph.GraphBean.label1
-isisfish.graphBean.palettePanel=defaultToolTip-fr.ifremer.graph.GraphBean.palettePanel
-isisfish.graphBean.scrolledwindow=defaultToolTip-fr.ifremer.graph.GraphBean.scrolledwindow1
-isisfish.graphBean.table=defaultToolTip-fr.ifremer.graph.GraphBean.table2
-isisfish.graphBean.table3=defaultToolTip-fr.ifremer.graph.GraphBean.table3
-isisfish.graphCombo.render.bar.horizontal=Rendu en barre horizontale
-isisfish.graphCombo.render.bar.horizontal.stacked=Rendu en barre horizontale empil\u00E9e
-isisfish.graphCombo.render.bar.vertical=Rendu en barre verticale
-isisfish.graphCombo.render.bar.vertical.3d=Rendu en barre verticale 3D
-isisfish.graphCombo.render.bar.vertical.stacked=Rendu en barre verticale empil\u00E9e
-isisfish.graphCombo.render.line=Rendu en ligne
-isisfish.graphCombo.render.min.max=Rendu en MinMax
-isisfish.graphCombo.render.surface=Rendu en Aire
-isisfish.infoItem..table=defaultToolTip-fr.ifremer.resultat.InfoItem.table29
-isisfish.infoItem.label=defaultToolTip-fr.ifremer.resultat.InfoItem.label
-isisfish.infoItem.list=defaultToolTip-fr.ifremer.resultat.InfoItem.list
-isisfish.infoItem.scrolledwindow=defaultToolTip-fr.ifremer.resultat.InfoItem.scrolledwindow1
-isisfish.infoItem.sum=defaultToolTip-fr.ifremer.resultat.InfoItemDate.sumButton
-isisfish.infoItem.sum.year=Somme de \u00E9l\u00E9ment par ann\u00E9e
-isisfish.infoItem.table=defaultToolTip-fr.ifremer.resultat.InfoItem.table30
-isisfish.input.continueCells=Continuer vers les mailles
-isisfish.input.continueGears=Continuer vers les engins
-isisfish.input.continueMetiers=Continuer vers les metiers
-isisfish.input.continuePopulations=Continuer vers les populations
-isisfish.input.continuePorts=Continuer vers les ports
-isisfish.input.continueSetOfVessels=Continuer vers les ensembles de navires
-isisfish.input.continueSpecies=Continuer vers les esp\u00E8ces
-isisfish.input.continueStrategies=Continuer vers les strat\u00E9gies
-isisfish.input.continueTripTypes=Continuer vers les types de trajets
-isisfish.input.continueVesselTypes=Continuer vers les types de navires
-isisfish.input.continueZones=Continuer vers les zones
-isisfish.input.menu.addRegion=Ajouter une r\u00E9gion
-isisfish.input.menu.commit=Sauvegarder les changements
-isisfish.input.menu.copyRegion=Copier r\u00E9gion
-isisfish.input.menu.exportRegion=Exporter la r\u00E9gion
-isisfish.input.menu.importRegion=Importer une r\u00E9gion
-isisfish.input.menu.importRegionSimulation=Importer la r\u00E9gion d'une simulation
-isisfish.input.menu.importRegionV2=Importer une r\u00E9gion de la v2 d'IsisFish
-isisfish.input.menu.importRenameRegion=Importer une r\u00E9gion et la renommer
-isisfish.input.menu.removeLocaly=Supprimer localement
-isisfish.input.menu.removeLocalyRemotely=Supprimer localement et \u00E0 distance
-isisfish.input.menu.server=Serveur
-isisfish.input.newRegion=Nouvelle r\u00E9gion
-isisfish.input.selectRegion=S\u00E9lectionnez une r\u00E9gion
-isisfish.input.title=Saisie de la p\u00EAcherie
-isisfish.input.tree.cells=Mailles
-isisfish.input.tree.gears=Engins
-isisfish.input.tree.metiers=M\u00E9tiers
-isisfish.input.tree.populations=Populations
-isisfish.input.tree.ports=Ports
-isisfish.input.tree.setofvessels=Flottilles
-isisfish.input.tree.species=Esp\u00E8ces
-isisfish.input.tree.strategies=Strat\u00E9gies
-isisfish.input.tree.triptypes=Types de mar\u00E9e
-isisfish.input.tree.vesseltypes=Types de navire
-isisfish.input.tree.zones=Zones
-isisfish.launch.anonymous=lecture seule
-isisfish.launch.email=courriel
-isisfish.launch.firstname=nom
-isisfish.launch.init.done=init done in %1$s.
-isisfish.launch.lasstname=pr\u00E9nom
-isisfish.launch.server.authenticationMethod=droit d'acc\u00E8s au serveur
-isisfish.launch.server.login=nom utilisateur
-isisfish.launch.server.ssh.confirm.passphrase=confirmer la passphrase
-isisfish.launch.server.ssh.key.change=Changer la clef ssh
-isisfish.launch.server.ssh.key.generate=G\u00E9n\u00E9rer la clef ssh
-isisfish.launch.server.ssh.no.passphrase=pas de passphrase
-isisfish.launch.server.ssh.passphrase=passphrase
-isisfish.launch.server.ssh.privateKeyFile=clef priv\u00E9e ssh
-isisfish.launch.server.ssh.publicKeyFile=clef publique ssh
-isisfish.launch.ssh=lecture-\u00E9criture (ssh)
-isisfish.launch.stop=Arr\u00EAt de la simulation...
-isisfish.launching=after init done in %1$s.
-isisfish.log.addAppender=ajoute un appender [%1$s]
-isisfish.log.body=Message \u00E0 joindre
-isisfish.log.closeAppender=ferme l'appender [%1$s] pour la categorie %2$s
-isisfish.log.mail.failed=Impossible d'envoyer le rapport par courriel. Le serveur smtp fonctionne ? (J'essaye de contacter < %1$s > smtp server)
-isisfish.log.mail.send=Un rapport a \u00E9t\u00E9 envoy\u00E9 \u00E0 %1$s
-isisfish.log.mail.send.title=Envoi de la simulation %1$s par email
-isisfish.log.mailTo=Adresse du destinataire
-isisfish.log.removeAppender=supprime l'appender [%1$s]
-isisfish.log.restoreLogLevel=repositionne le niveau du logger %1$s du niveau %2$s au niveau %3$s
-isisfish.log.sendAll=Envoyer la simulation complete
-isisfish.log.sendMail=Envoyer par email
-isisfish.log.simulation.name=IsisFish simulation %1$s
-isisfish.log.swapLogLevel=permute le niveau du logger %1$s du niveau %2$s au niveau %3$s
-isisfish.log.tooltip.body=Le message saisi sera joint au courriel envoy\u00E9
-isisfish.log.tooltip.mailTo=Entrer l'adresse du destinataire du courriel
-isisfish.log.tooltip.sendAll=Envoyer toute la simulation, ou uniquement le fichier de log
-isisfish.log.tooltip.sendMail=Cliquer pour envoyer le courriel contentant les fichiers
-isisfish.message.add.objets.simulation=Ajout des nouveaux objets cr\u00E9\u00E9s durant la simulation
-isisfish.message.backup.database.finished=backup database termin\u00E9
-isisfish.message.backup.database.progress=backup database en cours
-isisfish.message.cancel.finished=Annulation termin\u00E9e
-isisfish.message.check.finished=v\u00E9rification termin\u00E9e
-isisfish.message.check.region=
-isisfish.message.checking.cell=
-isisfish.message.choose.archive=choose archive file or directory
-isisfish.message.commit.cancelled=commit annul\u00E9
-isisfish.message.commit.finished=commit termin\u00E9
-isisfish.message.commit.region.canceled=Commit de la r\u00E9gion annul\u00E9
-isisfish.message.commiting.region=En train de commiter la r\u00E9gion %1$s ...
-isisfish.message.compilation.time=Temps de compilation %1$ss
-isisfish.message.confirm.delete.object=Voulez-vous vraiment supprimer l'objet %1$s
-isisfish.message.confirm.remove.region=Voulez-vous vraiment supprimer la r\u00E9gion %1$s ?
-isisfish.message.confirm.remove.script=Voulez-vous vraiment supprimer le script '%1$s' ?
-isisfish.message.copy.finished=Copie termin\u00E9e
-isisfish.message.copy.region=Copier la r\u00E9gion vers %1$s
-isisfish.message.creating.region=En train de cr\u00E9er la r\u00E9gion %1$s
-isisfish.message.creation.done=cr\u00E9ation termin\u00E9e %1$s
-isisfish.message.creation.finished=Cr\u00E9ation termin\u00E9e
-isisfish.message.delete.canceled=supression annul\u00E9e
-isisfish.message.delete.entities=Supprimer les entit\u00E9s
-isisfish.message.delete.entity=Supprimer l'entit\u00E9
-isisfish.message.delete.finished=Suppression termin\u00E9e
-isisfish.message.delete.object=Pour supprimer l'objet %1$s, tous les objets suivants seront aussi supprim\u00E9s \n\n
-isisfish.message.evaluation.finished=\u00E9valuation termin\u00E9e
-isisfish.message.export.done=Export termin\u00E9
-isisfish.message.export.zip=Exporter dans le fichier zip %1$s
-isisfish.message.file.overwrite=Le fichier existe, Voulez-vous l'\u00E9craser ?
-isisfish.message.import=Importer %1$s
-isisfish.message.import.equation.convert=Conversion manuelle de l'\u00E9quation
-isisfish.message.import.finished=Import termin\u00E9
-isisfish.message.import.region.name=Entre le nom de la r\u00E9egion \u00E0 importer
-isisfish.message.import.region.xml=R\u00E9gion XML (Isis-Fish V2.x)
-isisfish.message.import.region.zipped=Zipped Region
-isisfish.message.import.scripts.file.cancelled=Importation des scripts annul\u00E9
-isisfish.message.import.xml.v2.file=Import xml v2 file
-isisfish.message.import.zip=Import zip file
-isisfish.message.launchui.notlaunch=
-isisfish.message.load.finished=Chargement termin\u00E9
-isisfish.message.load.map=Chargement de la carte \: %1$s (%2$s, %3$s)
-isisfish.message.loading.old.simulation=Chargement d'une ancienne simulation ...
-isisfish.message.loading.region=Chargement de la r\u00E9gion
-isisfish.message.name.imported.region=Entrez le nom de la r\u00E9gion \u00E0 importer
-isisfish.message.new.filename=Entrez le nom du nouveau du fichier.\n\t (utiliser uniquemment des caract\u00E8res et _ en commencant avec une majuscule)
-isisfish.message.new.formule.category=Choisissez le cat\u00E9gorie de la formule
-isisfish.message.new.formule.title=Nouvelle formule
-isisfish.message.new.region.name=Entrer le nom de la nouvell r\u00E9gion
-isisfish.message.old.simulation.loaded=Ancienne simulation charg\u00E9e
-isisfish.message.page.modified=Cette page a \u00E9t\u00E9 modifi\u00E9, voulez-vous la sauvegarder ?
-isisfish.message.presimulation.script.execution=Ex\u00E9cution des scripts de Presimulation
-isisfish.message.recruitment.number.month=Entrez le nombre de mois de recrutement
-isisfish.message.region.commited=R\u00E9gion commit\u00E9e
-isisfish.message.region.loaded=R\u00E9gion charg\u00E9e
-isisfish.message.region.remove.canceled=Suppression de r\u00E9gion annul\u00E9
-isisfish.message.region.removed=R\u00E9gion supprim\u00E9e
-isisfish.message.remove.canceled=Suppression annul\u00E9e
-isisfish.message.remove.finished=Suppresison termin\u00E9
-isisfish.message.removing.region=Suppression de la r\u00E9gion %1$s ...
-isisfish.message.result.verif.region=R\u00E9sultat de la v\u00E9rification de la r\u00E9gion
-isisfish.message.save.finished=Sauvegarde termin\u00E9e
-isisfish.message.saveModel.finished=Sauvegarde du mod\u00E8le termin\u00E9e
-isisfish.message.script.commit=Indiquez vos modifications
-isisfish.message.setting.cache.aspects=Mise en place des aspects Cache
-isisfish.message.setting.trace.aspects=Mise en place des aspects Trace
-isisfish.message.simulation.after=Export des r\u00E9sultats
-isisfish.message.simulation.ended=Simulation termin\u00E9e
-isisfish.message.simulation.execution=Simulation execution
-isisfish.message.simulation.prepare=Pr\u00E9paration de la simulation
-isisfish.message.tray.disabled=Icone de notification d\u00E9sactiv\u00E9e
-isisfish.message.update.finished=Mise \u00E0 jour termin\u00E9e
-isisfish.metier.comments=Commentaires
-isisfish.metier.name=Nom
-isisfish.metier.rangeValues=Param\u00E8tre d'engin
-isisfish.metier.title=M\u00E9tier
-isisfish.metierMonitor.metiers=M\u00E9tiers
-isisfish.metierMonitor.strategies=Strat\u00E9gies
-isisfish.metierSeasonInfo.toString=%1$s saison %2$s-%3$s
-isisfish.metierSeasonInfoSpecies.mainSpecies=Esp\u00E8ces principales pour le m\u00E9tier
-isisfish.metierSeasonInfoSpecies.selectSeason=S\u00E9lectionnez une saison
-isisfish.metierSeasonInfoSpecies.selectSpecies=Choix de l'esp\u00E8ce
-isisfish.metierSeasonInfoSpecies.species=Esp\u00E8ce
-isisfish.metierSeasonInfoSpecies.targetFactor=Facteur cible
-isisfish.metierSeasonInfoSpecies.title=Esp\u00E8ces capturables
-isisfish.metierSeasonInfoZone.comments=Commentaires
-isisfish.metierSeasonInfoZone.season=Saison
-isisfish.metierSeasonInfoZone.selectSeason=S\u00E9lectionnez une saison
-isisfish.metierSeasonInfoZone.title=Saison / Zones
-isisfish.monitor.title=Moniteur de l'application
-isisfish.month.april=avril
-isisfish.month.august=ao\u00FBt
-isisfish.month.december=d\u00E9cembre
-isisfish.month.february=f\u00E9vrier
-isisfish.month.january=janvier
-isisfish.month.july=juillet
-isisfish.month.june=juin
-isisfish.month.march=mars
-isisfish.month.may=mai
-isisfish.month.november=novembre
-isisfish.month.october=octobre
-isisfish.month.september=septembre
-isisfish.params.changeLogLev=Passe du niveau '%1$s' au niveau '%2$s'
-isisfish.params.clearFilter=Remise \u00E0 z\u00E9ro du filtre
-isisfish.params.description=Description
-isisfish.params.filter=Filtrer
-isisfish.params.lblLauncher=Lanceur de simulation
-isisfish.params.loadOldSimulation=Charger une ancienne simulation
-isisfish.params.numberYear=Nombre d'ann\u00E9es
-isisfish.params.onlyExportSimulation=Exporter uniquement des simulations
-isisfish.params.populationNumbers=Donn\u00E9es de population
-isisfish.params.ruleParameters=Param\u00E8tres des r\u00E8gles
-isisfish.params.sensitivityName=Nom de l'analyse de sensibilit\u00E9
-isisfish.params.simulationName=Nom de la simulation
-isisfish.params.title=Param\u00E8tres
-isisfish.params.toString.fishery=P\u00EAcherie\: %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\u00E9\u00E9s \: %1$s\n\n
-isisfish.params.toString.plan=Plan\: %1$s
-isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\n\n
-isisfish.params.toString.populations=Populations\:
-isisfish.params.toString.rule=Rule\: %1$s
-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\u00E9alis\u00E9e avec %1$s\:
-isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation\:
-isisfish.params.useAnalysePlan=Utiliser le plan de simulation
-isisfish.params.usePreSimulationScript=Utiliser un script de pr\u00E9-simulation
-isisfish.population.capturability=Capturabilit\u0E009e
-isisfish.population.comments=Commentaires
-isisfish.population.group=Groupe
-isisfish.population.groups=Groupes
-isisfish.population.mappingZoneReproZoneRecru=MappingZoneReproZoneRecru
-isisfish.population.matrixAbundance=Matrice d'abondance
-isisfish.population.matrixAbundance1D=matrixAbundance1D
-isisfish.population.recruitment=Recrutement
-isisfish.population.reproduction=Reproduction
-isisfish.population.season=Saison
-isisfish.population.zones=Zones
-isisfish.populationBasics.geographicID=Identifiant g\u00E9ographique
-isisfish.populationBasics.growth=Croissance
-isisfish.populationBasics.growthReverse=Croissance inverse
-isisfish.populationBasics.maturityGroup=Groupe de maturit\u00E9
-isisfish.populationBasics.name=Nom
-isisfish.populationBasics.numberGroup=Nombre de groupes
-isisfish.populationBasics.plusGroup=Groupe plus
-isisfish.populationBasics.recreateClasses=Reconstruire les groupes
-isisfish.populationBasics.title=Saisie des populations
-isisfish.populationCapturability.comments=Commentaires
-isisfish.populationCapturability.selectCoefficient=S\u00E9lectionnez un coefficient par saison et par classe
-isisfish.populationCapturability.title=Saisie de la capturabilit\u00E9
-isisfish.populationEquation.meanWeight=Poids moyen
-isisfish.populationEquation.naturalDeathRate=Taux de mortalit\u00E9 naturelle
-isisfish.populationEquation.price=Prix
-isisfish.populationEquation.title=Saisie des \u00E9quations
-isisfish.populationGroup.age=Age
-isisfish.populationGroup.comments=Commentaires
-isisfish.populationGroup.length=Longueur
-isisfish.populationGroup.maximumLength=Longueur maximale
-isisfish.populationGroup.meanWeigth=Poids principal
-isisfish.populationGroup.minimumLength=Longueur minimale
-isisfish.populationGroup.naturalDeathRate=Taux de mortalit\u00E9 naturelle
-isisfish.populationGroup.price=Prix
-isisfish.populationGroup.reproductionRate=Taux de reproduction
-isisfish.populationGroup.title=Saisie des groupes de population
-isisfish.populationGroup.toString=%1$s Groupe %2$s
-isisfish.populationMigration.comments=Commentaires
-isisfish.populationMigration.selectSeason=S\u00E9lectionnez une saison
-isisfish.populationMigration.title=Migration
-isisfish.populationMigration.useEquation=Utiliser l'\u00E9quation
-isisfish.populationMigrationEmigration.coefficient=Coefficient
-isisfish.populationMigrationEmigration.departureZone=Zone de d\u00E9part
-isisfish.populationMigrationEmigration.title=Migration
-isisfish.populationMigrationImmigration.arrivalZone=Zone d'arriv\u00E9e
-isisfish.populationMigrationImmigration.coefficient=Coefficient
-isisfish.populationMigrationImmigration.title=Immigration
-isisfish.populationMigrationMigration.arrivalZone=Zone d'arriv\u00E9e
-isisfish.populationMigrationMigration.coefficient=Coefficient
-isisfish.populationMigrationMigration.departureZone=Zone de d\u00E9part
-isisfish.populationMigrationMigration.title=Migration de population
-isisfish.populationRecruitment.comments=Commentaires
-isisfish.populationRecruitment.monthgapgetweenreprorecruitment=Nombre de mois entre ponte et recrutement
-isisfish.populationRecruitment.recruitmentDistribution=Distribution du recrutement
-isisfish.populationRecruitment.reproductionEquation=Equation de reproduction
-isisfish.populationRecruitment.title=Saisie des reproductions
-isisfish.populationSeasonInfo.arrival=Arriv\u00E9e
-isisfish.populationSeasonInfo.departure=D\u00E9part
-isisfish.populationSeasonInfo.distributionSpawing=Distribution de la reproduction
-isisfish.populationSeasonInfo.emigration=Emigration
-isisfish.populationSeasonInfo.group=Groupe
-isisfish.populationSeasonInfo.immigration=Immigration
-isisfish.populationSeasonInfo.migration=Migration
-isisfish.populationSeasonInfo.months=Mois
-isisfish.populationSeasonInfo.toString=%1$s saison %2$s-%3$s
-isisfish.populationSeasons.Reproduction=Reproduction
-isisfish.populationSeasons.changeGroup=Changement de groupe
-isisfish.populationSeasons.comments=Commentaires
-isisfish.populationSeasons.computeCoefficient=Calculer le coefficient
-isisfish.populationSeasons.distributionSpawning=Distribution de la reproduction
-isisfish.populationSeasons.noSpacialized=Non spatialis\u00E9
-isisfish.populationSeasons.selectSeason=S\u00E9lectionnez une saison
-isisfish.populationSeasons.showSpacialized=Voir les coefficients spatialis\u00E9s
-isisfish.populationSeasons.spacialized=spatialis\u00E9
-isisfish.populationSeasons.spacialized.visualisation=Coefficients spatialis\u00E9s
-isisfish.populationSeasons.title=Saisons
-isisfish.populationZones.betweenSpawningRecruitmentAreas=Correspondance entre les zones de reproduction et de recrutement
-isisfish.populationZones.selectPopulationAreas=S\u00E9lectionnez les zones des populations
-isisfish.populationZones.selectRecruitmentAreas=S\u00E9lectionnez les zones de recrutement
-isisfish.populationZones.selectSpawningAreas=S\u00E9lectionnez les zones de reproduction
-isisfish.populationZones.title=Zones
-isisfish.port.cell=Maille du port
-isisfish.port.comments=Commentaires
-isisfish.port.name=Nom
-isisfish.preScript.backParameter=Retour aux param\u00E8tres
-isisfish.preScript.title=Script de pr\u00E9-simulation
-isisfish.queue.clearDone=Retirer les simulations termin\u00E9es
-isisfish.queue.id=Identifiant
-isisfish.queue.launcher=Lanceur de simulation
-isisfish.queue.masterplan=Plan de simulation
-isisfish.queue.notstarted=Non d\u00E9marr\u00E9
-isisfish.queue.plan=Plan
-isisfish.queue.progression=Progression
-isisfish.queue.restartSimulation=Red\u00E9marrer
-isisfish.queue.showLog=Voir les logs de la simulation
-isisfish.queue.simulationLaunch=Lanceur de la queue des simulations
-isisfish.queue.status=\u00C9tat
-isisfish.queue.stopSimulation=Arr\u00EAter la simulation
-isisfish.queue.title=Queue
-isisfish.result.abundance=Abondance
-isisfish.result.add=Ajouter un r\u00E9sultat
-isisfish.result.begin.simulation=En d\u00E9but de simulation\:
-isisfish.result.capture=Capturer
-isisfish.result.capture.metier=Capturer par m\u00E9tier
-isisfish.result.choose.simulation=Choisir une simulation
-isisfish.result.datas=Donn\u00E9es
-isisfish.result.datasRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.donneeRadioButton
-isisfish.result.desktopPane=defaultToolTip-fr.ifremer.resultat.ResultatView.desktopPane
-isisfish.result.dimension=Dimension
-isisfish.result.end.simulation=En fin de Simulation\:
-isisfish.result.export=Export
-isisfish.result.export.file=Exporter un fichier texte
-isisfish.result.file=Fichier
-isisfish.result.graph=Graphe
-isisfish.result.graphRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.graphRadioButton
-isisfish.result.hpaned=defaultToolTip-fr.ifremer.resultat.ResultatEdit.hpaned2
-isisfish.result.infoPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.infoPanel
-isisfish.result.label=defaultToolTip-fr.ifremer.resultat.ResultatView.label9
-isisfish.result.map=Carte
-isisfish.result.mapRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.mapRadioButton
-isisfish.result.menuExport=defaultToolTip-fr.ifremer.resultat.ResultatEdit.menuExport
-isisfish.result.menubar=defaultToolTip-fr.ifremer.resultat.ResultatView.menubar1
-isisfish.result.menuitem=defaultToolTip-fr.ifremer.resultat.ResultatView.menuitem2
-isisfish.result.new.window=Ouvrir une nouvelle fen\u00EAtre
-isisfish.result.openWindowButton=defaultToolTip-fr.ifremer.resultat.ResultatView.openWindowButton
-isisfish.result.quit=Quitter
-isisfish.result.reject.metier=Rejet par metier
-isisfish.result.remove.simulation=Supprimer Simulation
-isisfish.result.removeSimulationButton=defaultToolTip-fr.ifremer.resultat.ResultatView.supprimerSimulationButton
-isisfish.result.resultat=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resultat
-isisfish.result.scroll=defaultToolTip-fr.ifremer.resultat.ResultatEdit.scroll
-isisfish.result.show.simulation.log=Voir les logs
-isisfish.result.simulation=defaultToolTip-fr.ifremer.resultat.ResultatView.simulation
-isisfish.result.statusBar=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusbar1
-isisfish.result.statusImage=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusImage
-isisfish.result.stress.metier=Effort par metier
-isisfish.result.summary=R\u00E9sum\u00E9
-isisfish.result.summaryRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resumeRadioButton
-isisfish.result.table=defaultToolTip-fr.ifremer.resultat.ResultatView.table33
-isisfish.result.title=R\u00E9sultat
-isisfish.result.tooltip.show.simulation.log=Cliquer pour afficher la console des logs de la simulation
-isisfish.result.unload.metier=Debarquement par metier
-isisfish.result.vbox=defaultToolTip-fr.ifremer.resultat.ResultatView.vbox1
-isisfish.result.viewPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.viewPanel
-isisfish.resultChoice.save=R\u00E9sultats \u00E0 sauvegarder
-isisfish.resultChoice.saved=R\u00E9sultats sauvegard\u00E9
-isisfish.resultChoice.title=Choix de r\u00E9sultats
-isisfish.resume.matrixInfoGrid=defaultToolTip-fr.ifremer.resultat.ResumePanel.matriceInfoGrid
-isisfish.resume.resumeTextArea=defaultToolTip-fr.ifremer.resultat.ResumePanel.resumeTextArea
-isisfish.resume.scrolledwindow=defaultToolTip-fr.ifremer.resultat.ResumePanel.scrolledwindow2
-isisfish.resume.table=defaultToolTip-fr.ifremer.resultat.ResumePanel.table1
-isisfish.script.check=V\u00E9rifier
-isisfish.script.commit=Commit
-isisfish.script.compilation.failed=%s
-isisfish.script.compilation.ok=Compilation r\u00E9ussie.\n--------------------\n\n%s
-isisfish.script.copy=Copier
-isisfish.script.cut=Couper
-isisfish.script.evaluate=\u00C9valuer
-isisfish.script.export=Exporter des scripts dans une archive zip
-isisfish.script.export.cancel=annuler
-isisfish.script.export.checkAll=Tout (d\u00E9-)s\u00E9lectionner
-isisfish.script.export.chooseDir=...
-isisfish.script.export.ok=exporter
-isisfish.script.export.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 exporter
-isisfish.script.export.tooltip.chooseDir=Choisir le r\u00E9pertoire o\u00F9 exporter les scripts
-isisfish.script.import=Importer des scripts depuis une archive zip
-isisfish.script.import.cancel=annuler
-isisfish.script.import.checkAll=Tout (d\u00E9-)s\u00E9lectionner
-isisfish.script.import.labelAdd=Le(s) fichier(s) suivant(s) sera(ont) ajout\u00E9(s), Confirmer l'ajout
-isisfish.script.import.labelOverwrite=Le(s) fichier(s) suivant(s) existe(nt) d\u00E9j\u00E0, Confirmer pour l'\u00E9crasement
-isisfish.script.import.ok=importer
-isisfish.script.import.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 importer
-isisfish.script.menu.checkSyntax=V\u00E9rifier la syntaxe
-isisfish.script.menu.code=Code
-isisfish.script.menu.commit=Commiter des scripts sur le serveur
-isisfish.script.menu.copy=Copier
-isisfish.script.menu.cut=Couper
-isisfish.script.menu.deleteLocaly=Supprimer localement
-isisfish.script.menu.deleteLocalyServer=Supprimer localement et sur le serveur
-isisfish.script.menu.diff=Voir les diff\u00E9rences avec la version du serveur
-isisfish.script.menu.edit=\u00C9dition
-isisfish.script.menu.evaluate=Evaluer
-isisfish.script.menu.file=Fichier
-isisfish.script.menu.new=Nouveau
-isisfish.script.menu.paste=Coller
-isisfish.script.menu.save=Sauver
-isisfish.script.menu.txtExport=Exporter
-isisfish.script.menu.txtImport=Importer
-isisfish.script.menu.txtNewAnalysePlan=Nouveau plan d'analyse
-isisfish.script.menu.txtNewEquationModel=Nouvelle formule
-isisfish.script.menu.txtNewExport=Nouveau script d'export
-isisfish.script.menu.txtNewRule=Nouvelle r\u00E8gle
-isisfish.script.menu.txtNewScript=Nouveau script
-isisfish.script.menu.txtNewSensitivity=Nouveau calculateur de sensibilit\u00E9
-isisfish.script.menu.txtNewSimulator=Nouveau simulateur
-isisfish.script.menu.txtVCS=Serveur
-isisfish.script.menu.update=Synchronisation
-isisfish.script.new=Nouveau
-isisfish.script.paste=Coller
-isisfish.script.save=Sauver
-isisfish.script.title=Editeur de scripts
-isisfish.script.txtExport=Exporter
-isisfish.season.toString=saison %1$s-%2$s
-isisfish.selectivity.equation=Equation
-isisfish.selectivity.selectPopulation=S\u00E9lectionnez une population
-isisfish.selectivity.title=S\u00E9lectivit\u00E9
-isisfish.sens.backParameter=Retour aux param\u00E8tres
-isisfish.sens.title=Plan de simulation
-isisfish.sensitivity.displaysecondpass=Afficher les r\u00E9sultats
-isisfish.sensitivity.export=Export
-isisfish.sensitivity.secondpass=Analyse des r\u00E9sultats
-isisfish.sensitivity.secondpass.title=Analyse des r\u00E9sultats
-isisfish.sensitivity.select=M\u00E9thode
-isisfish.sensitivity.title=Analyse de sensibilit\u00E9
-isisfish.sensitivityChooser.title=M\u00E9thode de la sensibilit\u00E9
-isisfish.server.ssh.generateKey.title=G\u00E9n\u00E9rer une cl\u00E9 SSH
-isisfish.setOfVessels.comments=Commentaires
-isisfish.setOfVessels.fixedCosts=Co\u00FBts fixes
-isisfish.setOfVessels.name=Nom
-isisfish.setOfVessels.numberOfVessels=Nombre de navires
-isisfish.setOfVessels.technicalEfficiency=\u00C9fficacit\u00E9 technique
-isisfish.setOfVessels.title=Caract\u00E9ristiques
-isisfish.setOfVessels.vesselType=Type de navire
-isisfish.simpleResult.legendPanel=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.legendPanel
-isisfish.simpleResult.more.information=Cliquer sur une cellule pour plus d'informations...
-isisfish.simpleResult.resultatMap=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMap
-isisfish.simpleResult.resultatMapToolBar=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMapToolBar
-isisfish.simpleResult.table=defaultToolTip-fr.ifremer.isisfish.map.SimpleResultatMapBean.table12
-isisfish.simulation.log.console.title=Console de log simulation '%1$s'
-isisfish.simulation.log.showConsole=affichage de la console de log pour la simulation %1$s
-isisfish.simulation.menu.import=Restaurer les param\u00E9tres d'une simulation
-isisfish.simulation.menu.save=Sauver les param\u00E8tres de la simulation
-isisfish.simulation.menu.simulation=Simulation
-isisfish.simulation.name=Nom de la simulation
-isisfish.simulation.remote.message.connection=Connexion \u00E0 Caparmor
-isisfish.simulation.remote.message.downloadresults=T\u00E9l\u00E9chargement des r\u00E9sultats
-isisfish.simulation.remote.message.upload=Upload de la simulation
-isisfish.simulation.remote.message.waitingavailable=Attente d'une place de simulation
-isisfish.simulation.remote.message.waitingstart=Attente du d\u00E9marrage de la simulation
-isisfish.simulation.restarting=Red\u00E9marrage...
-isisfish.simulation.title=Lanceur de simulation
-isisfish.simulator.launcher.inprocess=dans le m\u00EAme processus
-isisfish.simulator.launcher.remote=sur le serveur Caparmor
-isisfish.simulator.launcher.subprocess=dans un sous processus
-isisfish.simulator.simulaction.badid=Impossible de lancer la simulation '%s' \: l'identifiant existe d\u00E9j\u00E0 \!
-isisfish.simulator.ssh.configuration.connecting=Connexion en cours
-isisfish.simulator.ssh.configuration.connectingpk=Connexion en cours (avec cl\u00E9 publique)
-isisfish.simulator.ssh.configuration.connection=Information de connexion
-isisfish.simulator.ssh.configuration.connectionerror=Connexion impossible (%s)
-isisfish.simulator.ssh.configuration.connectionok=Connect\u00E9 avec succ\u00E8s
-isisfish.simulator.ssh.configuration.environment=Configuration sur Caparmor
-isisfish.simulator.ssh.configuration.invalidpassphrase=Passphrase invalide
-isisfish.simulator.ssh.configuration.keygenerate=G\u00E9n\u00E9rer
-isisfish.simulator.ssh.configuration.test=Tester la configuration
-isisfish.simulator.ssh.configuration.title=Configuration du lanceur Caparmor
-isisfish.simulator.subprocess.readoutput.error=
-isisfish.species.age=Age
-isisfish.species.cee=CEE
-isisfish.species.comments=Commentaires
-isisfish.species.length=Longueur
-isisfish.species.name=Nom des esp\u00E8ces
-isisfish.species.rubbinCode=Code Rubbin
-isisfish.species.scientificName=Nom scientifique
-isisfish.species.structured=Structur\u00E9
-isisfish.ssh.askpassphrase.message=Entrez la passphrase pour la cl\u00E9 '%s' \:
-isisfish.ssh.askpassphrase.title=D\u00E9verrouillage de cl\u00E9 SSH
-isisfish.ssh.askpassphrase.wrongpassphrase=Mauvaise cl\u00E9, entrez une nouvelle passphrase '%s' \:
-isisfish.strategy.comments=Commentaires
-isisfish.strategy.inactivity=Equation d'inactivit\u00E9
-isisfish.strategy.inactivityEquationUsed=Utiliser une \u00E9quation d'inactivit\u00E9
-isisfish.strategy.name=Nom
-isisfish.strategy.proportionSetOfVessels=Proportion des ensembles de navires
-isisfish.strategy.title=Caract\u00E9ristiques
-isisfish.strategyMonthInfo.metier=M\u00E9tier
-isisfish.strategyMonthInfo.minInactivityDays=Jour minimums d'inactivit\u00E9
-isisfish.strategyMonthInfo.numberOfTrips=Nombre de trajets
-isisfish.strategyMonthInfo.proportion=Proportion
-isisfish.strategyMonthInfo.title=Saisie des mois
-isisfish.strategyMonthInfo.toString=%1$s %2$s
-isisfish.timeUnit.day=Jour
-isisfish.timeUnit.hours=Heures
-isisfish.tray.simulation=Isis-fish - %1$s \: %2$s/%3$s
-isisfish.tray.simulation.no=Isis-fish - Pas de simulation
-isisfish.tripType.comments=Commentaires
-isisfish.tripType.duration=Dur\u00E9e
-isisfish.tripType.minTime=Temps minimal entre deux voyages
-isisfish.tripType.name=Nom
-isisfish.vcs.ask.passphrase=Entrez votre passe phrase (si votre clef ssh en contient une).
-isisfish.vcs.ask.passphrase.title=Demande de passe phrase
-isisfish.vcs.commit=Message de sauvegarde
-isisfish.vcs.commit.cancel=annuler
-isisfish.vcs.commit.label=Entrer quelques mots concernant la modification des scripts
-isisfish.vcs.commit.ok=confirmer
-isisfish.vcs.init.notfoundcantdownload=La base de donn\u00E9es pour la version %s n'a ni pu \u00EAtre trouv\u00E9e, ni t\u00E9l\u00E9charg\u00E9e.\nVous devez la t\u00E9l\u00E9charger manullement \u00E0 partir du site d'Isis-Fish.
-isisfish.vcs.init.wrongprotocol=Votre base de donn\u00E9es locale \: %s n'utilise pas un protocole correct.\nVoulez-vous faire une sauvegarde de cette base et r\u00E9cup\u00E9rer une meilleure version ?
-isisfish.vcs.switchprotocol.confirm=Le protocole d'acc\u00E8s au d\u00E9p\u00F4t des scripts a chang\u00E9.\nVoulez-vous changer vers le nouveau d\u00E9p\u00F4t ?
-isisfish.vcs.switchtag.warningconflict=Votre base de donn\u00E9es a \u00E9t\u00E9 mise \u00E0 jour\nmais les fichiers suivants sont en conflit, merci de les v\u00E9rifier \:\n
-isisfish.vcs.switchversion.confirm=Vous n'utilisez pas le d\u00E9p\u00F4t correct pour votre version d'Isis-Fish \: %s.\nVoulez-vous changer de d\u00E9p\u00F4t ?
-isisfish.vcs.update=R\u00E9sultats de la synchronisation avec le serveur
-isisfish.vcs.update.cancel=annuler
-isisfish.vcs.update.checkAll=(de)-select tout
-isisfish.vcs.update.local=Systeme local
-isisfish.vcs.update.local.modified=Fichiers modifi\u00E9s
-isisfish.vcs.update.local.outofdateAndModified=Fichiers localement modifi\u00E9s en conflit avec le serveur
-isisfish.vcs.update.local.tooltip.modified=Fichiers localement modifi\u00E9s \n(confirmer pour revenir \u00E0 la version avant modification ou soum\u00EAtre au serveur)
-isisfish.vcs.update.local.tooltip.outofdateAndModified=Fichiers localement modifi\u00E9s mais ayant une version plus r\u00E9cente sur le serveur\n (confirmer pour revenir \u00E0 la version avant modification ou r\u00E9cup\u00E9rer la nouvelle version du serveur)
-isisfish.vcs.update.local.tooltip.unversionned=Fichiers uniquement pr\u00E9sents sur votre systeme \n(confirmer pour les enregister sur le serveur)
-isisfish.vcs.update.local.unversionned=Nouveaux fichiers
-isisfish.vcs.update.ok=continuer
-isisfish.vcs.update.remote=Serveur distant
-isisfish.vcs.update.remote.missing=Nouveaux fichiers
-isisfish.vcs.update.remote.outofdate=Fichiers plus r\u00E9cents sur le serveur
-isisfish.vcs.update.remote.tooltip.missing=Nouveaux fichiers uniquement pr\u00E9sents sur le serveur \n(confirmer pour les r\u00E9cup\u00E9rer)
-isisfish.vcs.update.remote.tooltip.outofdate=Fichiers dont il existe une version plus r\u00E9cente sur le serveur \n(confirmer pour les r\u00E9cup\u00E9rer)
-isisfish.vcs.update.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les fichiers (\u00E0 action unique) que vous voulez traiter
-isisfish.vcs.update.tooltip.local=vcs.update.tooltip.local
-isisfish.vcs.update.tooltip.remote=vcs.update.tooltip.remote
-isisfish.vcs.update.warningconflict=Votre base de donn\u00E9es a \u00E9t\u00E9 mise \u00E0 jour\nmais les fichiers suivants sont en conflit, merci de les v\u00E9rifier \:\n
-isisfish.vcs.updateconfirm=Confirmation des ope\u00E9rations de synchronisation avec le serveur
-isisfish.vcs.updateconfirm.cancel=annuler
-isisfish.vcs.updateconfirm.checkAll=(de)-select tout
-isisfish.vcs.updateconfirm.label=Confirmer les op\u00E9rations qui pourraient \u00E9craser vos fichiers
-isisfish.vcs.updateconfirm.label2='Etes vous sur de vouloir effectuer ces op\u00E9rations ?'
-isisfish.vcs.updateconfirm.ok=confirmer
-isisfish.vcs.updateconfirm.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts que vous voulez traiter
-isisfish.vcs.updaterepository.confirm=Votre d\u00E9p\u00F4t des scripts n'est pas \u00E0 jour. Voulez-vous mettre \u00E0 jour les fichiers suivants ?
-isisfish.vcs.vcssvn.add.error=Impossible d'ajouter un fichier
-isisfish.vcs.vcssvn.add.errorreadonly=Vous ne pouver pas ajouter de fichier, ce d\u00E9p\u00F4t est en lecture seule \!
-isisfish.vcs.vcssvn.checkProtocol.error=Impossible d'obtenir l'adresse correspondant au d\u00E9p\u00F4t local
-isisfish.vcs.vcssvn.checkProtocol.relocate=Transfert du d\u00E9p\u00F4t %s de %s vers %s
-isisfish.vcs.vcssvn.checkout.error=Impossible de mettre \u00E0 jour
-isisfish.vcs.vcssvn.cleanup.error=Impossible de d\u00E9verrouiller la copie locale
-isisfish.vcs.vcssvn.commit.error=Impossible de commiter
-isisfish.vcs.vcssvn.commit.errorreadonly=Vous ne pouvez pas commiter, le d\u00E9p\u00F4t est en lecture seule
-isisfish.vcs.vcssvn.delete.error=Impossible de supprimer des fichiers
-isisfish.vcs.vcssvn.delete.errorreadonly=Vous ne pouvez pas supprimer ce fichier, le d\u00E9p\u00F4t est en lecture seule
-isisfish.vcs.vcssvn.diff.error=Impossible d'obtenir le diff
-isisfish.vcs.vcssvn.gettag.error=Erreur lors de la r\u00E9cup\u00E9ration de l'adresse du d\u00E9p\u00F4t local
-isisfish.vcs.vcssvn.getupdate.error=Impossible d'obtenir le statut des fichiers
-isisfish.vcs.vcssvn.global.filelocalandremotestatus=Le statut du fichier %s est (l\:%s/d\:%s)
-isisfish.vcs.vcssvn.global.filestatus=Le statut de %s est %s
-isisfish.vcs.vcssvn.global.foundUpdatedFile=Ajout de %s comme fichier mis \u00E0 jour
-isisfish.vcs.vcssvn.global.torevision=\u00C0 la r\u00E9vision \: %d
-isisfish.vcs.vcssvn.isconnected.switchoff=Impossible de se connecter au serveur, passage en mode d\u00E9connect\u00E9 \: %s
-isisfish.vcs.vcssvn.isconnected.switchto=Connexion au serveur disponible, passage en mode connect\u00E9 \: %s
-isisfish.vcs.vcssvn.isonremote.error=Le fichier %s n'est pas sur le serveur
-isisfish.vcs.vcssvn.istag.notexist=Le tag %s n'existe pas
-isisfish.vcs.vcssvn.isuptodate.error=Impossible d'obtenir le statut de fichier
-isisfish.vcs.vcssvn.list.error=Impossible de lister
-isisfish.vcs.vcssvn.localstatus.error=Impossible d'obtenir le statut local de fichier
-isisfish.vcs.vcssvn.remotestatus.error=Impossible d'obtenir le statut distant de fichier
-isisfish.vcs.vcssvn.setTag.error=Erreur lors de la r\u00E9cup\u00E9ration de l'adresse du d\u00E9p\u00F4t local
-isisfish.vcs.vcssvn.settag.switchfromto=Switch du tag du d\u00E9p\u00F4t de %s \u00E0 %s
-isisfish.vcs.vcssvn.update.error=Impossible de mettre \u00E0 jour
-isisfish.vcs.vcssvn.update.notinlocal=Impossible de mettre \u00E0 jour des fichiers qui ne sont pas pas dans le d\u00E9p\u00F4t
-isisfish.versionStorage.removed=Supprim\u00E9
-isisfish.vesselType.activityRange=Intervalle d'activit\u00E9
-isisfish.vesselType.comments=Commentaires
-isisfish.vesselType.fuelCost=Co\u00FBt d'un trajet en fuel
-isisfish.vesselType.length=Longueur
-isisfish.vesselType.maxDuration=Dur\u00E9e maximale du trajet
-isisfish.vesselType.miniCrew=Taille minimale d'\u00E9quipage
-isisfish.vesselType.name=Nom
-isisfish.vesselType.speed=Vitesse
-isisfish.welcome.menu.about=\u00C0 propos
-isisfish.welcome.menu.api=API
-isisfish.welcome.menu.close=Fermer
-isisfish.welcome.menu.configuration=Configuration
-isisfish.welcome.menu.configuration.sshlauncher=Configuration Caparmor
-isisfish.welcome.menu.configuration.vcs=Configuration vcs
-isisfish.welcome.menu.file=Fichier
-isisfish.welcome.menu.frame=Fen\u00EAtre
-isisfish.welcome.menu.help=Aide
-isisfish.welcome.menu.help.isisfish=Site d'Isis-Fish
-isisfish.welcome.menu.help.isisfishapi=API Isis-Fish
-isisfish.welcome.menu.help.javaapi=API Java
-isisfish.welcome.menu.help.lutinmatrixapi=API LutinMatrix
-isisfish.welcome.menu.help.topiaapi=API ToPIA
-isisfish.welcome.menu.input=Saisie
-isisfish.welcome.menu.monitor=Fen\u00EAtre de logs
-isisfish.welcome.menu.queue=Liste des simulations
-isisfish.welcome.menu.result=R\u00E9sultat
-isisfish.welcome.menu.script=Script
-isisfish.welcome.menu.simulation=Lanceur de simulations
-isisfish.welcome.menu.synchro=Synchronisation Serveur
-isisfish.welcome.title=Simulation Ifremer
-isisfish.wizardGroupCreation.allGroupsSameSize=Tous les groupes ont la m\u00EAme taille
-isisfish.wizardGroupCreation.allValues=Entrer toutes les valeurs
-isisfish.wizardGroupCreation.computedGrowthCurve=Calcul\u00E9 par une courbe de croissance
-isisfish.wizardGroupCreation.firstAge=Premier age
-isisfish.wizardGroupCreation.firstAgeHelp=Premier age \= age minimal
-isisfish.wizardGroupCreation.firstGroup=Premier groupe
-isisfish.wizardGroupCreation.firstLength=Premi\u00E8re taille
-isisfish.wizardGroupCreation.firstLengthHelp=Premi\u00E8re taille \= taille minimale du premier groupe
-isisfish.wizardGroupCreation.gapBetweenGroupsHelp=L'interval entre chaque groupe est de 1 an
-isisfish.wizardGroupCreation.groupWidth=Longueur du groupe
-isisfish.wizardGroupCreation.groupWidthHelp=Longueur du groupe \= Longueur du groupe
-isisfish.wizardGroupCreation.lastAge=Dernier age
-isisfish.wizardGroupCreation.lastAgeHelp=Dernier age \= age maximal
-isisfish.wizardGroupCreation.maxGroupsLength=Taille maximale de groupes
-isisfish.wizardGroupCreation.maxGroupsLengthHelp=Un point-virgule ';' doit s\u00E9parer les tailles maximales de chaque groupe
-isisfish.wizardGroupCreation.numberGroup=Nombre de groupe
-isisfish.wizardGroupCreation.numberGroupHelp=Nombre de groupe \= Nombre de groupe voulu
-isisfish.wizardGroupCreation.numberGroups=Nombre de groupes
-isisfish.wizardGroupCreation.populationCharacteristics=Entrez les caract\u00E9ristiques de la population
-isisfish.wizardGroupCreation.selectGroupLengthType=Choisir la longueur du groupe
-isisfish.wizardGroupCreation.timeStep=Pas de temps (en mois)
-isisfish.wizardGroupCreation.title=Cr\u00E9ation du groupe
-isisfish.wizardGroupCreation.undefinedGrowthEquation=L'\u00E9quation utilis\u00E9e est la courbe de croissance de la population. Elle doit \u00EAtre pr\u00E9alablement d\u00E9finie.
-isisfish.zone.cells=Cellules de la zone
-isisfish.zone.comments=Commentaires
-isisfish.zone.name=Nom
-region\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
-simulate\ %s\ with\ file\ %s=
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties (from rev 2489, isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,1103 @@
+Add\ to\ %s\ queue=
+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
+Can't\ add\ simulation\:\ =
+Can't\ create\ simulation\ logger=Can't create simulation logger
+Can't\ delete\ simulation\ %s\ =
+Can't\ do\ post\ action\ %s=
+Can't\ do\ simulation\ %s=
+Can't\ download\ archive\ \:\ %s=
+Can't\ download\ file=
+Can't\ evaluate\ simulation\ prescript=
+Can't\ export\ simulation\ %s=
+Can't\ get\ changlog=Impossible d'obtenir de changelog
+Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
+Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
+Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
+Can't\ instantiate\ %s=
+Can't\ open\ log\ for\ %s=
+Can't\ read\ ssh\ key\ \:\ %s=
+Can't\ simulate\ %s=
+Check\ state\ of\ local\ repository\:\ %s=
+Check\ syntax\ of\ the\ current\ script=
+Checkout\ pom.xml\ to\ %s=
+Command\ '%s'\ fail\ to\ execute=
+Commit\ script\ to\ CVS\ server=
+Copy\ current\ selection\ (Ctrl-c)=
+Could\ not\ found\ formule\ type\ %s\ autorised\ type\ are\ %s=
+Create\ a\ new\ script=
+Cut\ current\ selection\ (Ctrl-x)=
+Error\ during\ vcs\ initialisation=
+Error\ while\ uploading\ public\ key\ to\ remote\ serveur\ authorized_keys=
+Export\ selected\ script(s)\ to\ zip\ archive=
+Generate\ next\ simulation=
+Import\ one\ java\ file\ script\ source=
+Import\ simulation\ file\ %s\ in\ directory\ %s\ and\ rename\ from\ %s\ to\ %s=
+Import\ zipped\ file\ containing\ all\ scripts\ directory\ structure=
+Info=Info
+Jobs\ submited\ is\ not\ ItemSimulation\ but\ was\ %s=
+Last\ entry\ was\ %s\ extract\ name\ %s=
+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=
+Normal\ stop\ thread,\ this\ is\ not\ an\ error=
+Not\ start\ simulation\ %s\ because\ user\ ask\ stop=
+Paste\ current\ selection\ (Ctrl-v)=
+Process\ template\ error=
+Region\ %s\ allready\ exist\ in\ repository.\ Can't\ import=
+Region\ %s\ already\ inited=La r\u00E9gion %s a d\u00E9j\u00E0 \u00E9t\u00E9 initialis\u00E9e
+Remote\ IsisFish\ server=
+Remote\ control\ file\ doesn't\ exists\ %s=
+Remote\ information\ file\ doesn't\ exists\ %s=
+Rename\ data\ directory\ to\ %s=
+Save\ current\ script=
+Show\ help=
+SimulationExecutor\ started\ with\ %s\ thread\ for\ %s=
+Ssh\ key\ found\ '%s'\ will\ be\ used\ to\ connect\ to=
+Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
+Stop\ the\ process=
+SubProcess\ start\:\ %s\ %s=
+Switch\ repository\ type\ to\ none=
+Try\ to\ eval\ current\ script\ (must\ be\ have\ main\ method)=
+Try\ to\ log\ on\ %s@%s\:%d=
+Use\ branches,\ switch\ not\ needed=
+User\ restart\ simulation\ %s=
+User\ stop\ simulation\ %s=
+could\ not\ close\ reader\ %1$s=could not close reader %1$s
+could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
+could\ not\ filter\ on\ simulations=could not filter on simulations
+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
+destination\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
+destination\ already\ exists\ %s\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
+directory\ %s\ must\ be\ a\ directory=
+filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
+in\ hour=
+isisfish.about.abouthtmltext=<html><b>Isis-Fish (%s)</b><br /><br />Copyright IFREMER-MAERHA 2000-2009.<br /><br /><a href\="http\://isis-fish.labs.libre-entreprise.org">http\://isis-fish.labs.libre-entreprise.org</a><br /><br />Merci de rapporter les bugs.<html>
+isisfish.about.licensetext=Vous pouvez modifier et redistribuer ce programme sous les conditions \u00E9nonc\u00E9es par la licence GNU GPL (version 2 ou ult\u00E9rieure). Une copie de la licence GPL est dans le fichier \u00AB\u00A0LICENSE.txt\u00A0\u00BB fourni avec Isis-Fish. Tous droits r\u00E9serv\u00E9s. Aucune garantie n'est fournie pour l'utilisation de ce programme.
+isisfish.about.title=\u00C0 propos de Isis-Fish...
+isisfish.advancedParameters.title=Param\u00E8tres avanc\u00E9s
+isisfish.advancedParams.freeParameters=Param\u00E8tres libres
+isisfish.advancedParams.libLevelLogger=Niveau de tracage des librairies
+isisfish.advancedParams.scriptLevelLogger=Niveau de tracage des scripts
+isisfish.advancedParams.simulLevelLogger=Niveau de tracage du simulateur
+isisfish.advancedParams.simulationCache=Simulation cache
+isisfish.advancedParams.simulationStatistique=Simulation statistique
+isisfish.advancedParams.simulatorUse=Simulateur \u00E0 utiliser
+isisfish.cell.comments=Commentaires
+isisfish.cell.land=Terre
+isisfish.cell.latitude=Latitude
+isisfish.cell.longitude=Longitude
+isisfish.cell.name=Nom
+isisfish.change.equation=Ne peut pas changer l'\u00E9quation
+isisfish.commit.message=Entrer un message de commit
+isisfish.common.add=Ajouter
+isisfish.common.add.short=Aj.
+isisfish.common.alert=alerte
+isisfish.common.apply=Appliquer
+isisfish.common.blank=\
+isisfish.common.cancel=Annuler
+isisfish.common.check=V\u00E9rifier
+isisfish.common.clear=Effacer
+isisfish.common.date=Date
+isisfish.common.debug=Debug
+isisfish.common.delete=Supprimer
+isisfish.common.ellipsis=...
+isisfish.common.emigration=\u00E9migration
+isisfish.common.equation=Equation
+isisfish.common.error=Erreur
+isisfish.common.finish=Terminer
+isisfish.common.gear=Engin
+isisfish.common.immigration=immigration
+isisfish.common.info=Info
+isisfish.common.migration=migration
+isisfish.common.month=mois %1$s
+isisfish.common.name=Nom
+isisfish.common.new=Nouveau
+isisfish.common.newMatrix=Nouvelle matrice
+isisfish.common.next=Suivant
+isisfish.common.ok=Ok
+isisfish.common.openEditor=Ouvrir l'\u00E9diteur
+isisfish.common.population=Population
+isisfish.common.populationGroup=Groupe de population
+isisfish.common.populations=Populations
+isisfish.common.port=port
+isisfish.common.prev=Pr\u00E9c\u00E9dent
+isisfish.common.region=R\u00E9gion
+isisfish.common.remove=Supprimer
+isisfish.common.reset=R\u00E9initialiser
+isisfish.common.rules=R\u00E8gles
+isisfish.common.save=Sauver
+isisfish.common.saveModel=Sauver comme mod\u00E8le
+isisfish.common.saveNextSimulation=Sauver pour la prochaine simulation
+isisfish.common.season=Saison
+isisfish.common.setOfVessels=Ensemble de navires
+isisfish.common.simulate=Simuler
+isisfish.common.stop=Arr\u00EAter
+isisfish.common.strategies=Strat\u00E9gies
+isisfish.common.sum=somme
+isisfish.common.tag=Tag
+isisfish.common.tripType=Type de trajet
+isisfish.common.valid=Valider
+isisfish.common.value=Valeur
+isisfish.common.warn=Warning
+isisfish.common.year=ann\u00E9e
+isisfish.common.zone=Zone
+isisfish.config.database.lockmode.description=
+isisfish.config.main.compileDirectory.description=le r\u00E9pertoire o\u00F9 sont compil\u00E9s les scripts
+isisfish.config.main.configFileName.description=le fichier de configuration \u00E0 utiliser
+isisfish.config.main.defaultBackupDirectory.description=le r\u00E9pertoire o\u00F9 stocker les backups des donn\u00E9es
+isisfish.config.main.defaultExportDirectory.description=le r\u00E9pertoire o\u00F9 exporter les r\u00E9sultats des simulations
+isisfish.config.main.defaultExportNames.description=les noms des exports \u00E0 effectuer apr\u00E8s une simulation
+isisfish.config.main.defaultMapFile.description=TODO
+isisfish.config.main.defaultResultNames.description=les noms des r\u00E9sultats \u00E0 traiter apr\u00E8s une simulation
+isisfish.config.main.defaultSimulator.description=le nom du simulateur par d\u00E9faut \u00E0 utiliser lors d'une simulation
+isisfish.config.main.defaultTagValue.description=TODO
+isisfish.config.main.encoding.description=l'encoding du syst\u00E8me
+isisfish.config.main.javadocDirectory.description=
+isisfish.config.main.javadocURL.description=l'url de la javadoc des scripts
+isisfish.config.main.launchUI.description=
+isisfish.config.main.localSimulator.description=pour indiquer si les simulations sont \u00E0 effectuer localement
+isisfish.config.main.locale.description=la locale utilisateur
+isisfish.config.main.login.description=le login pour se connecter au serveur de simulations distant
+isisfish.config.main.password.description=le mot de passe pour se connecter au serveur de simulations distant
+isisfish.config.main.projectName.description=le nom du projet
+isisfish.config.main.regionMap.description=le nom du r\u00E9pertoire contenant les maps d'une r\u00E9gion
+isisfish.config.main.remoteCaparmor.description=lance les simulations sur un serveur distant
+isisfish.config.main.resultExport.description=TODO
+isisfish.config.main.simulation.max.simultaneous.simulation=Nombre de simulations simultan\u00E9es
+isisfish.config.main.simulation.max.simultaneous.simulation.description=Nombre maximum de simulations pouvant \u00EAtre envoy\u00E9es au serveur
+isisfish.config.main.simulation.ssh.control.check.interval=V\u00E9rification de la progression (secondes)
+isisfish.config.main.simulation.ssh.control.check.interval.description=Temps d'attente en secondes entre deux v\u00E9rifications de progression
+isisfish.config.main.simulation.ssh.datapath=Base de donn\u00E9es
+isisfish.config.main.simulation.ssh.datapath.description=Emplacement de la base de donn\u00E9es (isis-database)
+isisfish.config.main.simulation.ssh.isis.home=Installation d'Isis-Fish
+isisfish.config.main.simulation.ssh.isis.home.description=Emplacement d'installation d'Isis-Fish sur le serveur
+isisfish.config.main.simulation.ssh.pbsbinpath=Emplacement des executables PBS
+isisfish.config.main.simulation.ssh.pbsbinpath.description=Emplacement des commandes PBS (qsub, qdel...) sur le serveur
+isisfish.config.main.simulation.ssh.server=Adresse du serveur
+isisfish.config.main.simulation.ssh.server.description=Adresse du serveur
+isisfish.config.main.simulation.ssh.tmppath=Dossier temporaire
+isisfish.config.main.simulation.ssh.tmppath.description=Emplacement du dossier temporaire
+isisfish.config.main.simulation.ssh.userhome=R\u00E9pertoire d'accueil
+isisfish.config.main.simulation.ssh.userhome.description=R\u00E9pertoire d'accueil de l'utilisateur
+isisfish.config.main.simulation.ssh.username=Identifiant
+isisfish.config.main.simulation.ssh.username.description=Identifiant SSH pour se connecter au serveur
+isisfish.config.main.simulationServer.description=l'url du serveur de simulations distant
+isisfish.config.main.simulationShowOnlyError.description=pour indiquer si l'on doit conserver dans l'UI des simulations termin\u00E9es uniquement celles avec erreur
+isisfish.config.main.simulationShowOnlyQueue.description=pour indiquer si l'on doit conserver dans l'UI des simulations termin\u00E9es uniquement celles effectu\u00E9es localement
+isisfish.config.main.smtpServer.description=le nom du serveur smtp \u00E0 utiliser pour envoyer les courriels
+isisfish.config.main.subSimulator.description=pour indiquer si les simulations sont \u00E0 effectuer localement dans un sous process
+isisfish.config.main.userMail.description=le courriel de l'utilisateur
+isisfish.config.main.userName.description=le nom - pr\u00E9nom de l'utilisateur
+isisfish.config.ssh.key.file=Cl\u00E9 SSH
+isisfish.config.ssh.key.file.description=Emplacement de la cl\u00E9 priv\u00E9e SSH
+isisfish.config.vcs.hostName.description=le nom du serveur vcs \u00E0 utiliser
+isisfish.config.vcs.keyFile.description=le chemin complet du fichier de clef priv\u00E9e ssh2 \u00E0 utiliser lors d'une connexion s\u00E9curis\u00E9e
+isisfish.config.vcs.localDatabasePath.description=
+isisfish.config.vcs.noPassPhrase.description=pour indiquer si la clef priv\u00E9e ssh2 utilis\u00E9e pour communiquer avec le serveur vcs est prot\u00E9g\u00E9 par une passe-phrase
+isisfish.config.vcs.passphrase.description=la passe-phrase utilis\u00E9e pour prot\u00E9ger la clef priv\u00E9e ssh
+isisfish.config.vcs.remoteDatabase.description=le nom du module de donn\u00E9es sur le serveur vcs
+isisfish.config.vcs.remotePath.description=le chemin jusqu'au parent du module de donn\u00E9es sur le serveur vcs
+isisfish.config.vcs.type.description=le type de communication vcs utilis\u00E9
+isisfish.config.vcs.typeRepo.description=le type de r\u00E9pository vcs utilis\u00E9
+isisfish.config.vcs.useSshConnexion.description=pour indiquer si l'on utilise une connexion s\u00E9curis\u00E9e pour communiquer avec le serveur vcs (ssh2)
+isisfish.config.vcs.userName.description=le login de l'utilisateur sur le serveur vcs
+isisfish.config.vcs.userPassword.description=
+isisfish.dataResult.descriptionLabel=defaultToolTip-fr.ifremer.resultat.DataResult.descriptionLabel
+isisfish.dataResult.export.csv=Exporter en CSV
+isisfish.dataResult.exportButton=defaultToolTip-fr.ifremer.resultat.DataResult.exportButton
+isisfish.dataResult.label=label9
+isisfish.dataResult.matriceTable=defaultToolTip-fr.ifremer.resultat.DataResult.matriceTable
+isisfish.dataResult.scrolledwindow2=defaultToolTip-fr.ifremer.resultat.DataResult.scrolledwindow2
+isisfish.dataResult.table2=defaultToolTip-fr.ifremer.resultat.DataResult.table2
+isisfish.date.toString=%1$s %2$s
+isisfish.effortDescription.crewFoodCost=Co\u00FBt de l'alimentation pour l'\u00E9quipage
+isisfish.effortDescription.crewShareRate=Taux de partage de l'\u00E9quipage
+isisfish.effortDescription.crewSize=Taille de l'\u00E9quipage
+isisfish.effortDescription.economicTitle=Param\u00E8tres \u00E9conomiques
+isisfish.effortDescription.effortTitle=Param\u00E8tres d'effort de p\u00EAche
+isisfish.effortDescription.fishingOperation=Op\u00E9ration de p\u00EAche
+isisfish.effortDescription.fishingOperationDuration=Dur\u00E9e de la p\u00EAche
+isisfish.effortDescription.fishingOperationDuration.tooltip=En heures
+isisfish.effortDescription.fixedCrewSalary=Salaire d'\u00E9quipage fixe
+isisfish.effortDescription.gearsNumberPerOperation=Nombre d'engins par op\u00E9ration
+isisfish.effortDescription.landingCosts=Co\u00FBts d'accastillage
+isisfish.effortDescription.otherRunningCost=Autres co\u00FBts
+isisfish.effortDescription.parametersTitle=Param\u00E8tres des m\u00E9tiers
+isisfish.effortDescription.repairAndMaintenanceGearCost=Co\u00FBts de maintenance
+isisfish.effortDescription.title=M\u00E9tiers pratiqu\u00E9s
+isisfish.effortDescription.toString=EffortDescription for %1$s with %2$s
+isisfish.effortDescription.unitCostOfFishing=Co\u00FBt unitaire de la p\u00EAche
+isisfish.equation.editor.title=Editeur d'\u00E9quation
+isisfish.error.acceptable.population=La nouvelle valeur n'est pas une valeur valide pour cette population
+isisfish.error.add.card=Erreur lors de l'ajout du r\u00E9sultat \u00E0 la carte.
+isisfish.error.add.logger.simulation=isisfish.error.add.logger.simulation
+isisfish.error.add.result.data=Erreur lors de l'ajout du r\u00E9sultat au data.
+isisfish.error.add.result.graph=Erreur lors de l'ajout du r\u00E9sultat au graph.
+isisfish.error.add.tray=Impossible d'ajouter une icone de notification
+isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s
+isisfish.error.change.equation=Can't change equation
+isisfish.error.check.region=
+isisfish.error.compile.fileerror=Le fichier %s contient des erreurs \!
+isisfish.error.compile.script=Impossible de compiler le script \: %s
+isisfish.error.compiled.parameter=Can't get rule parameter from compiled class
+isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es
+isisfish.error.create.equation=Can't create equation
+isisfish.error.delete.database=Can't delete database
+isisfish.error.delete.file=could not delete file %1$s
+isisfish.error.delete.vcs.files=Can't delete vcs files
+isisfish.error.during.simulation=Error during simulation
+isisfish.error.emigration.negative=emigration negative
+isisfish.error.empty.code.rubbin=le code rubbin est vide
+isisfish.error.empty.emigration=emigration vide
+isisfish.error.empty.id.geographic=l'identifiant g\u00E9ographique est vide
+isisfish.error.empty.immigration=immigration vide
+isisfish.error.empty.migration=Migration vide
+isisfish.error.empty.name=le nom est vide
+isisfish.error.empty.params.name=le nom du param\u00E8tre est vide
+isisfish.error.empty.population=Population est vide
+isisfish.error.empty.scientific.name=le nom scientifique est vide
+isisfish.error.empty.season=info saison vide
+isisfish.error.empty.selectivity=s\u00E9lectivit\u00E9 est vide
+isisfish.error.empty.species=espece capturable vide
+isisfish.error.empty.species.name=le nom d'espece est vide
+isisfish.error.empty.unit=l'unit\u00E9 de mesure est vide
+isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
+isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
+isisfish.error.evaluate.preplan.script=
+isisfish.error.evalute.plan.script=Can't evaluate plan script
+isisfish.error.factor.invalid=Le facteur n'est pas valide
+isisfish.error.file.already.exists=The file %1$s already exist
+isisfish.error.get.fisheryRegion=Can't get FisheryRegion
+isisfish.error.growth.equation.before.create.group.population=Error, You must input growth equation before create the group population
+isisfish.error.immigration.negative=immigration negative
+isisfish.error.import.convertible=Erreur lors de l'import, la version du fichier que vous souhaitez importer n'est pas transformable en une version importable.
+isisfish.error.import.file=Can't import file %1$s
+isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
+isisfish.error.init.map=Can't init map.
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
+isisfish.error.instanciate=Can't instanciate %1$s
+isisfish.error.instanciate.export=Can't instanciate export %1$s
+isisfish.error.invalid.costs.fix=les co\u00FBts fixes sont invalides
+isisfish.error.invalid.distribution.recruitment=distribution de recrutement invalide
+isisfish.error.invalid.equation=Equation invalide
+isisfish.error.invalid.equation.name=Nom d'\u00E9quation invalide
+isisfish.error.invalid.file.name=Le nom du script %1$s n'est pas valide.
+isisfish.error.invalid.interval.reproduction.recruitment=interval entre la reproduction et le recrutement invalide
+isisfish.error.invalid.mean.weight=poids moyen invalide
+isisfish.error.invalid.natural.death=mortalit\u00E9 naturelle sur les classes naissantes invalide
+isisfish.error.invalid.number=le nombre est invalide
+isisfish.error.invalid.range=La gamme possible n'a pas de valeur acceptable
+isisfish.error.invalid.values.params=Param\u00E8tre controlable hors valeurs possibles
+isisfish.error.invalidate.natural.death=mortalite naturelle invalide
+isisfish.error.invoke.method=Can't invoke method '%1$s' for class %2$s
+isisfish.error.linkageerror.message=Isis-Fish a d\u00E9tect\u00E9 une erreur d'utilisation des scripts.\nLe dossier de compilation a \u00E9t\u00E9 supprim\u00E9 pour forcer leur recompilation.\n\nMerci de relancer Isis-Fish.
+isisfish.error.linkageerror.title=Erreur d'initialisation
+isisfish.error.load.class=Can't load class\: %1$s
+isisfish.error.load.classloader=Can't create ClassLoader for script, bad directory\: %1$s for reason %2$s
+isisfish.error.load.file=could not load file %1$s
+isisfish.error.load.map=Can't load map file\: %1$s
+isisfish.error.log.closeAppender=n'a pas pu ferme l'appender %1$s et la categorie %2$s
+isisfish.error.log.console.dispose=Une erreur est survenue pendant la fermeture de la console %1$s de log, raison %2$s
+isisfish.error.log.createAppender=n'a pas pu creer l'appender [%1$s] \: %2$s pour la raison %3$s
+isisfish.error.log.foundAppender=n'a pas trouve l'appender %1$s pour la categorie %2$s
+isisfish.error.matrix.more.2d=Matrice de plus de 2 dimensions\!\!\nS\u00E9lectionnez moins d'\u00E9l\u00E9ments ou utilisez l'op\u00E9rateur somme.
+isisfish.error.migration.negative=Migration negative
+isisfish.error.no.matrix=No matrix for\:
+isisfish.error.no.null.time.step=Error, the time step should not be null
+isisfish.error.no.sector=il n'y a pas de secteur de d\u00E9finit
+isisfish.error.no.select.simulation=could not select simulation
+isisfish.error.no.target.species=no target species in %1$s for %2$s
+isisfish.error.not.found.code=could not found codeclass for %1$s
+isisfish.error.not.found.description=could not found description for %1$s
+isisfish.error.not.found.field=could not found field %1$s doc for %2$s
+isisfish.error.not.found.field.class=could not found field %1$s for class %2$s
+isisfish.error.not.null.class.grown=classe mature vaut nul
+isisfish.error.not.null.mean.weight=poids moyen nul
+isisfish.error.not.null.natiral.death=mortalite naturelle nulle
+isisfish.error.not.possible.metier=Pas de m\u00E9tier possible
+isisfish.error.not.support.class=La classe %s ne supporte pas les descritions
+isisfish.error.number.classes.upper.zero=Error, the number of classes must be upper than 0
+isisfish.error.out.memory=Out of memory try with more memory (option -mx)
+isisfish.error.overlap.season=Cette saison chevauche une autre saison
+isisfish.error.parse.date=Can't parse date %1$s
+isisfish.error.parse.long=Can't parse long %1$s
+isisfish.error.plan.parameter=Can't get plan parameter from compiled class
+isisfish.error.prepare.data=Can't prepare data
+isisfish.error.prepare.information.simulation=Can't prepare information for simulation
+isisfish.error.read.simulation=Can't read simulation information %1$s
+isisfish.error.read.simulation.parameters=Impossible de lire les param\u00EAtres du fichier \: %1$s
+isisfish.error.region.already.exists=Cette r\u00E9gion existe d\u00E9j\u00E0
+isisfish.error.region.name.empty=Le nom de la R\u00E9gion est vide
+isisfish.error.remove.directory=Can't remove directory %1$s
+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.region=
+isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
+isisfish.error.save.simulation.parameters=Can't save simulation parameters in file %1$s
+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
+isisfish.error.script.load=N'a pas pu charger le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.save=N'a pas pu sauver le fichier %1$s pour la raison suivante %2$s
+isisfish.error.sensitivity.parameter=
+isisfish.error.simulation.log.openAppender=n'a pas pu ouvrir l'appender de la simulation %1$s pour la raison %2$s
+isisfish.error.simulation.remote.global=Impossible de lancer une simulation sur serveur distant
+isisfish.error.simulation.remote.wrongportvalue=Le port de connexion a une valeur incorrecte \: %s
+isisfish.error.simulation.resultXml.close=Can't close simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.open=Can't open simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.write=Can't write simulation result XML for reason %1$s
+isisfish.error.source.parameter=Can't get parameter from source
+isisfish.error.strategy.order=Strategy %1$s don't have 12 StrategyMonthInfo but %2$s. Recreate them
+isisfish.error.undefined.classes=pas de classes d\u00E9finies
+isisfish.error.undefined.correspondence.zones.reproduction.recruitment=pas de correspondance entre les zones de reproduction et les zones de recrutement
+isisfish.error.undefined.gear=l'engin n'est pas d\u00E9fini
+isisfish.error.undefined.mesh=aucune maille de d\u00E9fini
+isisfish.error.undefined.mesh.sector=aucune maille dans le secteur
+isisfish.error.undefined.meta.population=aucune meta population de d\u00E9fini
+isisfish.error.undefined.natural.death=pas de mortalit\u00E9 naturelle sur les classes naissantes
+isisfish.error.undefined.sector=aucun secteur de d\u00E9fini
+isisfish.error.undefined.stategy=aucune strat\u00E9gie de d\u00E9fini
+isisfish.error.undefined.stategy.months=La strat\u00E9gie n'est pas d\u00E9finie pour certain mois
+isisfish.error.undefined.zone.population=il n'y a pas de zone de population de d\u00E9finie
+isisfish.error.undefined.zone.recruitment=il n'y a pas de zone de recrutement de d\u00E9finie
+isisfish.error.undefined.zone.reproduction=il n'y a pas de zone de reproduction de d\u00E9finie
+isisfish.error.unsupported.equation.langage=unsupported langage '%1$s' for equation\: %2$s
+isisfish.error.wait.simThread=Can't wait SimThread
+isisfish.error.warning.title=Attention
+isisfish.error.write.simulation=Can't write information %1$s
+isisfish.export.directory=Dossier d'export
+isisfish.export.saved=Exports des r\u00E9sultats sauvegard\u00E9s
+isisfish.export.title=Export des r\u00E9sultats
+isisfish.factor.coefficient=Coefficient (en %)
+isisfish.factor.comment=Commentaires
+isisfish.factor.continue=Facteur continu
+isisfish.factor.discret=Facteur discret
+isisfish.factor.equation.variable.action=Action
+isisfish.factor.equation.variable.coefficient=Coef (en %)
+isisfish.factor.equation.variable.name=Nom
+isisfish.factor.equation.variable.operator=Op\u00E9rateur
+isisfish.factor.equation.variable.value=Valeur
+isisfish.factor.factor=Facteur
+isisfish.factor.factors=Facteurs
+isisfish.factor.firstValue=Premi\u00E8re valeur
+isisfish.factor.increment=Cardinalit\u00E9
+isisfish.factor.lastValue=Derni\u00E8re valeur
+isisfish.factor.name=Nom du facteur
+isisfish.factor.operateur=Op\u00E9rateur
+isisfish.factor.selectDiscretNumber=Nombre de facteurs
+isisfish.factor.title=Saisie d'un facteur
+isisfish.factor.validDiscretNumber=Valider
+isisfish.factor.value=Valeur
+isisfish.filter=Filtrer
+isisfish.filter.apply=Appliquer le filtre
+isisfish.filter.cancel=Annuler
+isisfish.filter.log.levelDebug=debug
+isisfish.filter.log.levelError=erreur
+isisfish.filter.log.levelFatal=fatal
+isisfish.filter.log.levelInfo=info
+isisfish.filter.log.levelTrace=trace
+isisfish.filter.log.levelWarn=warning
+isisfish.filter.log.tooltip.levelDebug=s\u00E9lectionner pour filtrer ce niveau
+isisfish.filter.log.tooltip.levelError=s\u00E9lectionner pour filtrer ce niveau
+isisfish.filter.log.tooltip.levelFatal=s\u00E9lectionner pour filtrer ce niveau
+isisfish.filter.log.tooltip.levelInfo=s\u00E9lectionner pour filtrer ce niveau
+isisfish.filter.log.tooltip.levelTrace=s\u00E9lectionner pour filtrer ce niveau
+isisfish.filter.log.tooltip.levelWarn=s\u00E9lectionner pour filtrer ce niveau
+isisfish.filter.log.tooltip.message=Entrer un terme \u00E0 rechercher et appuyer sur Entr\u00E9e
+isisfish.filter.reset=R\u00E9initialiser
+isisfish.filter.result=R\u00E9sultats
+isisfish.filter.result.found=R\u00E9sultats (%d/%d)
+isisfish.filter.select=S\u00E9lectionner
+isisfish.filter.select.simulation=S\u00E9lectionner une simulation
+isisfish.filter.simulation=Filtrer les simulations
+isisfish.filter.simulation.analysePlanNumber=num\u00E9ro d'analyse
+isisfish.filter.simulation.description=description
+isisfish.filter.simulation.local=locale
+isisfish.filter.simulation.numberOfYear=nombre d'ann\u00E9e(s)
+isisfish.filter.simulation.regionName=nom de r\u00E9gion
+isisfish.filter.simulation.simulationEnd=date de fin (dd/MM/yyyy)
+isisfish.filter.simulation.simulationName=nom de simulation
+isisfish.filter.simulation.simulationStart=date de d\u00E9but (dd/MM/yyyy)
+isisfish.filter.simulation.simulatorName=nom du simulateur
+isisfish.filter.simulation.tooltip.analysePlanNumber=filter sur le num\u00E9ro d'analyse (uniquement pour les simulations avec plan d'analyse)
+isisfish.filter.simulation.tooltip.description=filtrer sur la description (format regex)
+isisfish.filter.simulation.tooltip.local=filter uniquement les simulations locales
+isisfish.filter.simulation.tooltip.numberOfYear=filter sur le nombre d'ann\u00E9e(s) (recherche extacte)
+isisfish.filter.simulation.tooltip.regionName=filtrer sur le nom de la r\u00E9gion (format regex)
+isisfish.filter.simulation.tooltip.simulationEnd=filtrer sur la date de fin de simulation (format dd/MM/yyyy)
+isisfish.filter.simulation.tooltip.simulationName=filtrer sur le nom de simulation (format regex)
+isisfish.filter.simulation.tooltip.simulationStart=filtrer sur la date de d\u00E9but de simulation (format dd/MM/yyyy)
+isisfish.filter.simulation.tooltip.simulatorName=filter sur le nom du simulateur utilis\u00E9 (format regex)
+isisfish.filter.simulation.tooltip.useAnalysePlan=filter uniquement les simulations avec plan d'analyse
+isisfish.filter.simulation.tooltip.useOptimization=filter uniquement les simulations avec optimisation
+isisfish.filter.simulation.tooltip.usePreScript=filter uniquement les simulations avec Prescript
+isisfish.filter.simulation.tooltip.useStatistic=filter uniquement les simulations avec statistiques
+isisfish.filter.simulation.useAnalysePlan=plan d'analyse
+isisfish.filter.simulation.useOptimization=optimisation
+isisfish.filter.simulation.usePreScript=prescript
+isisfish.filter.simulation.useStatistic=statistiques
+isisfish.fisheryRegion.addMap=Ajouter une carte
+isisfish.fisheryRegion.area=Extr\u00E9mit\u00E9s de la zone de p\u00EAche
+isisfish.fisheryRegion.comments=Commentaires
+isisfish.fisheryRegion.delMap=Supprimer la carte
+isisfish.fisheryRegion.latitude=Lat.
+isisfish.fisheryRegion.latitude.max=Lat. max.
+isisfish.fisheryRegion.latitude.min=Lat. min.
+isisfish.fisheryRegion.longitude=Long.
+isisfish.fisheryRegion.longitude.max=Long. max.
+isisfish.fisheryRegion.longitude.min=Long. min.
+isisfish.fisheryRegion.name=Nom de la r\u00E9gion
+isisfish.fisheryRegion.ofCells=de mailles (option)
+isisfish.fisheryRegion.selectFile=S\u00E9lectionnez un fichier
+isisfish.fisheryRegion.spatial=R\u00E9solution spatiale
+isisfish.gear.comments=Commentaires
+isisfish.gear.effortUnit=Unit\u00E9 d'effort
+isisfish.gear.name=Nom
+isisfish.gear.rangeValues=Gamme de valeurs
+isisfish.gear.standardisationFactor=Facteur de standardisation
+isisfish.gear.technicalParameter=Param\u00E8tre technique
+isisfish.gear.title=Engin
+isisfish.graphBean.graph.render=Choisir un rendu de graphe
+isisfish.graphBean.graphPanel=defaultToolTip-fr.ifremer.graph.GraphBean.graphPanel
+isisfish.graphBean.graphRendererCombo=defaultToolTip-fr.ifremer.graph.GraphBean.graphRendererCombo
+isisfish.graphBean.graphSplitPane=defaultToolTip-fr.ifremer.graph.GraphBean.graphSplitPane
+isisfish.graphBean.label=defaultToolTip-fr.ifremer.graph.GraphBean.label1
+isisfish.graphBean.palettePanel=defaultToolTip-fr.ifremer.graph.GraphBean.palettePanel
+isisfish.graphBean.scrolledwindow=defaultToolTip-fr.ifremer.graph.GraphBean.scrolledwindow1
+isisfish.graphBean.table=defaultToolTip-fr.ifremer.graph.GraphBean.table2
+isisfish.graphBean.table3=defaultToolTip-fr.ifremer.graph.GraphBean.table3
+isisfish.graphCombo.render.bar.horizontal=Rendu en barre horizontale
+isisfish.graphCombo.render.bar.horizontal.stacked=Rendu en barre horizontale empil\u00E9e
+isisfish.graphCombo.render.bar.vertical=Rendu en barre verticale
+isisfish.graphCombo.render.bar.vertical.3d=Rendu en barre verticale 3D
+isisfish.graphCombo.render.bar.vertical.stacked=Rendu en barre verticale empil\u00E9e
+isisfish.graphCombo.render.line=Rendu en ligne
+isisfish.graphCombo.render.min.max=Rendu en MinMax
+isisfish.graphCombo.render.surface=Rendu en Aire
+isisfish.infoItem..table=defaultToolTip-fr.ifremer.resultat.InfoItem.table29
+isisfish.infoItem.label=defaultToolTip-fr.ifremer.resultat.InfoItem.label
+isisfish.infoItem.list=defaultToolTip-fr.ifremer.resultat.InfoItem.list
+isisfish.infoItem.scrolledwindow=defaultToolTip-fr.ifremer.resultat.InfoItem.scrolledwindow1
+isisfish.infoItem.sum=defaultToolTip-fr.ifremer.resultat.InfoItemDate.sumButton
+isisfish.infoItem.sum.year=Somme de \u00E9l\u00E9ment par ann\u00E9e
+isisfish.infoItem.table=defaultToolTip-fr.ifremer.resultat.InfoItem.table30
+isisfish.input.continueCells=Continuer vers les mailles
+isisfish.input.continueGears=Continuer vers les engins
+isisfish.input.continueMetiers=Continuer vers les metiers
+isisfish.input.continuePopulations=Continuer vers les populations
+isisfish.input.continuePorts=Continuer vers les ports
+isisfish.input.continueSetOfVessels=Continuer vers les ensembles de navires
+isisfish.input.continueSpecies=Continuer vers les esp\u00E8ces
+isisfish.input.continueStrategies=Continuer vers les strat\u00E9gies
+isisfish.input.continueTripTypes=Continuer vers les types de trajets
+isisfish.input.continueVesselTypes=Continuer vers les types de navires
+isisfish.input.continueZones=Continuer vers les zones
+isisfish.input.menu.addRegion=Ajouter une r\u00E9gion
+isisfish.input.menu.commit=Sauvegarder les changements
+isisfish.input.menu.copyRegion=Copier r\u00E9gion
+isisfish.input.menu.exportRegion=Exporter la r\u00E9gion
+isisfish.input.menu.importRegion=Importer une r\u00E9gion
+isisfish.input.menu.importRegionSimulation=Importer la r\u00E9gion d'une simulation
+isisfish.input.menu.importRegionV2=Importer une r\u00E9gion de la v2 d'IsisFish
+isisfish.input.menu.importRenameRegion=Importer une r\u00E9gion et la renommer
+isisfish.input.menu.removeLocaly=Supprimer localement
+isisfish.input.menu.removeLocalyRemotely=Supprimer localement et \u00E0 distance
+isisfish.input.menu.server=Serveur
+isisfish.input.newRegion=Nouvelle r\u00E9gion
+isisfish.input.selectRegion=S\u00E9lectionnez une r\u00E9gion
+isisfish.input.title=Saisie de la p\u00EAcherie
+isisfish.input.tree.cells=Mailles
+isisfish.input.tree.gears=Engins
+isisfish.input.tree.metiers=M\u00E9tiers
+isisfish.input.tree.populations=Populations
+isisfish.input.tree.ports=Ports
+isisfish.input.tree.setofvessels=Flottilles
+isisfish.input.tree.species=Esp\u00E8ces
+isisfish.input.tree.strategies=Strat\u00E9gies
+isisfish.input.tree.triptypes=Types de mar\u00E9e
+isisfish.input.tree.vesseltypes=Types de navire
+isisfish.input.tree.zones=Zones
+isisfish.launch.anonymous=lecture seule
+isisfish.launch.email=courriel
+isisfish.launch.firstname=nom
+isisfish.launch.init.done=init done in %1$s.
+isisfish.launch.lasstname=pr\u00E9nom
+isisfish.launch.server.authenticationMethod=droit d'acc\u00E8s au serveur
+isisfish.launch.server.login=nom utilisateur
+isisfish.launch.server.ssh.confirm.passphrase=confirmer la passphrase
+isisfish.launch.server.ssh.key.change=Changer la clef ssh
+isisfish.launch.server.ssh.key.generate=G\u00E9n\u00E9rer la clef ssh
+isisfish.launch.server.ssh.no.passphrase=pas de passphrase
+isisfish.launch.server.ssh.passphrase=passphrase
+isisfish.launch.server.ssh.privateKeyFile=clef priv\u00E9e ssh
+isisfish.launch.server.ssh.publicKeyFile=clef publique ssh
+isisfish.launch.ssh=lecture-\u00E9criture (ssh)
+isisfish.launch.stop=Arr\u00EAt de la simulation...
+isisfish.launching=after init done in %1$s.
+isisfish.log.addAppender=ajoute un appender [%1$s]
+isisfish.log.body=Message \u00E0 joindre
+isisfish.log.closeAppender=ferme l'appender [%1$s] pour la categorie %2$s
+isisfish.log.mail.failed=Impossible d'envoyer le rapport par courriel. Le serveur smtp fonctionne ? (J'essaye de contacter < %1$s > smtp server)
+isisfish.log.mail.send=Un rapport a \u00E9t\u00E9 envoy\u00E9 \u00E0 %1$s
+isisfish.log.mail.send.title=Envoi de la simulation %1$s par email
+isisfish.log.mailTo=Adresse du destinataire
+isisfish.log.removeAppender=supprime l'appender [%1$s]
+isisfish.log.restoreLogLevel=repositionne le niveau du logger %1$s du niveau %2$s au niveau %3$s
+isisfish.log.sendAll=Envoyer la simulation complete
+isisfish.log.sendMail=Envoyer par email
+isisfish.log.simulation.name=IsisFish simulation %1$s
+isisfish.log.swapLogLevel=permute le niveau du logger %1$s du niveau %2$s au niveau %3$s
+isisfish.log.tooltip.body=Le message saisi sera joint au courriel envoy\u00E9
+isisfish.log.tooltip.mailTo=Entrer l'adresse du destinataire du courriel
+isisfish.log.tooltip.sendAll=Envoyer toute la simulation, ou uniquement le fichier de log
+isisfish.log.tooltip.sendMail=Cliquer pour envoyer le courriel contentant les fichiers
+isisfish.message.add.objets.simulation=Ajout des nouveaux objets cr\u00E9\u00E9s durant la simulation
+isisfish.message.backup.database.finished=backup database termin\u00E9
+isisfish.message.backup.database.progress=backup database en cours
+isisfish.message.cancel.finished=Annulation termin\u00E9e
+isisfish.message.check.finished=v\u00E9rification termin\u00E9e
+isisfish.message.check.region=
+isisfish.message.checking.cell=
+isisfish.message.choose.archive=choose archive file or directory
+isisfish.message.commit.cancelled=commit annul\u00E9
+isisfish.message.commit.finished=commit termin\u00E9
+isisfish.message.commit.region.canceled=Commit de la r\u00E9gion annul\u00E9
+isisfish.message.commiting.region=En train de commiter la r\u00E9gion %1$s ...
+isisfish.message.compilation.time=Temps de compilation %1$ss
+isisfish.message.confirm.delete.object=Voulez-vous vraiment supprimer l'objet %1$s
+isisfish.message.confirm.remove.region=Voulez-vous vraiment supprimer la r\u00E9gion %1$s ?
+isisfish.message.confirm.remove.script=Voulez-vous vraiment supprimer le script '%1$s' ?
+isisfish.message.copy.finished=Copie termin\u00E9e
+isisfish.message.copy.region=Copier la r\u00E9gion vers %1$s
+isisfish.message.creating.region=En train de cr\u00E9er la r\u00E9gion %1$s
+isisfish.message.creation.done=cr\u00E9ation termin\u00E9e %1$s
+isisfish.message.creation.finished=Cr\u00E9ation termin\u00E9e
+isisfish.message.delete.canceled=supression annul\u00E9e
+isisfish.message.delete.entities=Supprimer les entit\u00E9s
+isisfish.message.delete.entity=Supprimer l'entit\u00E9
+isisfish.message.delete.finished=Suppression termin\u00E9e
+isisfish.message.delete.object=Pour supprimer l'objet %1$s, tous les objets suivants seront aussi supprim\u00E9s \n\n
+isisfish.message.evaluation.finished=\u00E9valuation termin\u00E9e
+isisfish.message.export.done=Export termin\u00E9
+isisfish.message.export.zip=Exporter dans le fichier zip %1$s
+isisfish.message.file.overwrite=Le fichier existe, Voulez-vous l'\u00E9craser ?
+isisfish.message.import=Importer %1$s
+isisfish.message.import.equation.convert=Conversion manuelle de l'\u00E9quation
+isisfish.message.import.finished=Import termin\u00E9
+isisfish.message.import.region.name=Entre le nom de la r\u00E9egion \u00E0 importer
+isisfish.message.import.region.xml=R\u00E9gion XML (Isis-Fish V2.x)
+isisfish.message.import.region.zipped=Zipped Region
+isisfish.message.import.scripts.file.cancelled=Importation des scripts annul\u00E9
+isisfish.message.import.xml.v2.file=Import xml v2 file
+isisfish.message.import.zip=Import zip file
+isisfish.message.launchui.notlaunch=
+isisfish.message.load.finished=Chargement termin\u00E9
+isisfish.message.load.map=Chargement de la carte \: %1$s (%2$s, %3$s)
+isisfish.message.loading.old.simulation=Chargement d'une ancienne simulation ...
+isisfish.message.loading.region=Chargement de la r\u00E9gion
+isisfish.message.name.imported.region=Entrez le nom de la r\u00E9gion \u00E0 importer
+isisfish.message.new.filename=Entrez le nom du nouveau du fichier.\n\t (utiliser uniquemment des caract\u00E8res et _ en commencant avec une majuscule)
+isisfish.message.new.formule.category=Choisissez le cat\u00E9gorie de la formule
+isisfish.message.new.formule.title=Nouvelle formule
+isisfish.message.new.region.name=Entrer le nom de la nouvell r\u00E9gion
+isisfish.message.old.simulation.loaded=Ancienne simulation charg\u00E9e
+isisfish.message.page.modified=Cette page a \u00E9t\u00E9 modifi\u00E9, voulez-vous la sauvegarder ?
+isisfish.message.presimulation.script.execution=Ex\u00E9cution des scripts de Presimulation
+isisfish.message.recruitment.number.month=Entrez le nombre de mois de recrutement
+isisfish.message.region.commited=R\u00E9gion commit\u00E9e
+isisfish.message.region.loaded=R\u00E9gion charg\u00E9e
+isisfish.message.region.remove.canceled=Suppression de r\u00E9gion annul\u00E9
+isisfish.message.region.removed=R\u00E9gion supprim\u00E9e
+isisfish.message.remove.canceled=Suppression annul\u00E9e
+isisfish.message.remove.finished=Suppresison termin\u00E9
+isisfish.message.removing.region=Suppression de la r\u00E9gion %1$s ...
+isisfish.message.result.verif.region=R\u00E9sultat de la v\u00E9rification de la r\u00E9gion
+isisfish.message.save.finished=Sauvegarde termin\u00E9e
+isisfish.message.saveModel.finished=Sauvegarde du mod\u00E8le termin\u00E9e
+isisfish.message.script.commit=Indiquez vos modifications
+isisfish.message.setting.cache.aspects=Mise en place des aspects Cache
+isisfish.message.setting.trace.aspects=Mise en place des aspects Trace
+isisfish.message.simulation.after=Export des r\u00E9sultats
+isisfish.message.simulation.ended=Simulation termin\u00E9e
+isisfish.message.simulation.execution=Simulation execution
+isisfish.message.simulation.prepare=Pr\u00E9paration de la simulation
+isisfish.message.tray.disabled=Icone de notification d\u00E9sactiv\u00E9e
+isisfish.message.update.finished=Mise \u00E0 jour termin\u00E9e
+isisfish.metier.comments=Commentaires
+isisfish.metier.name=Nom
+isisfish.metier.rangeValues=Param\u00E8tre d'engin
+isisfish.metier.title=M\u00E9tier
+isisfish.metierMonitor.metiers=M\u00E9tiers
+isisfish.metierMonitor.strategies=Strat\u00E9gies
+isisfish.metierSeasonInfo.toString=%1$s saison %2$s-%3$s
+isisfish.metierSeasonInfoSpecies.mainSpecies=Esp\u00E8ces principales pour le m\u00E9tier
+isisfish.metierSeasonInfoSpecies.selectSeason=S\u00E9lectionnez une saison
+isisfish.metierSeasonInfoSpecies.selectSpecies=Choix de l'esp\u00E8ce
+isisfish.metierSeasonInfoSpecies.species=Esp\u00E8ce
+isisfish.metierSeasonInfoSpecies.targetFactor=Facteur cible
+isisfish.metierSeasonInfoSpecies.title=Esp\u00E8ces capturables
+isisfish.metierSeasonInfoZone.comments=Commentaires
+isisfish.metierSeasonInfoZone.season=Saison
+isisfish.metierSeasonInfoZone.selectSeason=S\u00E9lectionnez une saison
+isisfish.metierSeasonInfoZone.title=Saison / Zones
+isisfish.monitor.title=Moniteur de l'application
+isisfish.month.april=avril
+isisfish.month.august=ao\u00FBt
+isisfish.month.december=d\u00E9cembre
+isisfish.month.february=f\u00E9vrier
+isisfish.month.january=janvier
+isisfish.month.july=juillet
+isisfish.month.june=juin
+isisfish.month.march=mars
+isisfish.month.may=mai
+isisfish.month.november=novembre
+isisfish.month.october=octobre
+isisfish.month.september=septembre
+isisfish.params.changeLogLev=Passe du niveau '%1$s' au niveau '%2$s'
+isisfish.params.clearFilter=Remise \u00E0 z\u00E9ro du filtre
+isisfish.params.description=Description
+isisfish.params.filter=Filtrer
+isisfish.params.lblLauncher=Lanceur de simulation
+isisfish.params.loadOldSimulation=Charger une ancienne simulation
+isisfish.params.numberYear=Nombre d'ann\u00E9es
+isisfish.params.onlyExportSimulation=Exporter uniquement des simulations
+isisfish.params.populationNumbers=Donn\u00E9es de population
+isisfish.params.ruleParameters=Param\u00E8tres des r\u00E8gles
+isisfish.params.sensitivityName=Nom de l'analyse de sensibilit\u00E9
+isisfish.params.simulationName=Nom de la simulation
+isisfish.params.title=Param\u00E8tres
+isisfish.params.toString.fishery=P\u00EAcherie\: %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\u00E9s \: %1$s\n\n
+isisfish.params.toString.plan=Plan\: %1$s
+isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\n\n
+isisfish.params.toString.populations=Populations\:
+isisfish.params.toString.rule=Rule\: %1$s
+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\u00E9alis\u00E9e avec %1$s\:
+isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation\:
+isisfish.params.useAnalysePlan=Utiliser le plan de simulation
+isisfish.params.usePreSimulationScript=Utiliser un script de pr\u00E9-simulation
+isisfish.population.capturability=Capturabilit\u0E009e
+isisfish.population.comments=Commentaires
+isisfish.population.group=Groupe
+isisfish.population.groups=Groupes
+isisfish.population.mappingZoneReproZoneRecru=MappingZoneReproZoneRecru
+isisfish.population.matrixAbundance=Matrice d'abondance
+isisfish.population.matrixAbundance1D=matrixAbundance1D
+isisfish.population.recruitment=Recrutement
+isisfish.population.reproduction=Reproduction
+isisfish.population.season=Saison
+isisfish.population.zones=Zones
+isisfish.populationBasics.geographicID=Identifiant g\u00E9ographique
+isisfish.populationBasics.growth=Croissance
+isisfish.populationBasics.growthReverse=Croissance inverse
+isisfish.populationBasics.maturityGroup=Groupe de maturit\u00E9
+isisfish.populationBasics.name=Nom
+isisfish.populationBasics.numberGroup=Nombre de groupes
+isisfish.populationBasics.plusGroup=Groupe plus
+isisfish.populationBasics.recreateClasses=Reconstruire les groupes
+isisfish.populationBasics.title=Saisie des populations
+isisfish.populationCapturability.comments=Commentaires
+isisfish.populationCapturability.selectCoefficient=S\u00E9lectionnez un coefficient par saison et par classe
+isisfish.populationCapturability.title=Saisie de la capturabilit\u00E9
+isisfish.populationEquation.meanWeight=Poids moyen
+isisfish.populationEquation.naturalDeathRate=Taux de mortalit\u00E9 naturelle
+isisfish.populationEquation.price=Prix
+isisfish.populationEquation.title=Saisie des \u00E9quations
+isisfish.populationGroup.age=Age
+isisfish.populationGroup.comments=Commentaires
+isisfish.populationGroup.length=Longueur
+isisfish.populationGroup.maximumLength=Longueur maximale
+isisfish.populationGroup.meanWeigth=Poids principal
+isisfish.populationGroup.minimumLength=Longueur minimale
+isisfish.populationGroup.naturalDeathRate=Taux de mortalit\u00E9 naturelle
+isisfish.populationGroup.price=Prix
+isisfish.populationGroup.reproductionRate=Taux de reproduction
+isisfish.populationGroup.title=Saisie des groupes de population
+isisfish.populationGroup.toString=%1$s Groupe %2$s
+isisfish.populationMigration.comments=Commentaires
+isisfish.populationMigration.selectSeason=S\u00E9lectionnez une saison
+isisfish.populationMigration.title=Migration
+isisfish.populationMigration.useEquation=Utiliser l'\u00E9quation
+isisfish.populationMigrationEmigration.coefficient=Coefficient
+isisfish.populationMigrationEmigration.departureZone=Zone de d\u00E9part
+isisfish.populationMigrationEmigration.title=Migration
+isisfish.populationMigrationImmigration.arrivalZone=Zone d'arriv\u00E9e
+isisfish.populationMigrationImmigration.coefficient=Coefficient
+isisfish.populationMigrationImmigration.title=Immigration
+isisfish.populationMigrationMigration.arrivalZone=Zone d'arriv\u00E9e
+isisfish.populationMigrationMigration.coefficient=Coefficient
+isisfish.populationMigrationMigration.departureZone=Zone de d\u00E9part
+isisfish.populationMigrationMigration.title=Migration de population
+isisfish.populationRecruitment.comments=Commentaires
+isisfish.populationRecruitment.monthgapgetweenreprorecruitment=Nombre de mois entre ponte et recrutement
+isisfish.populationRecruitment.recruitmentDistribution=Distribution du recrutement
+isisfish.populationRecruitment.reproductionEquation=Equation de reproduction
+isisfish.populationRecruitment.title=Saisie des reproductions
+isisfish.populationSeasonInfo.arrival=Arriv\u00E9e
+isisfish.populationSeasonInfo.departure=D\u00E9part
+isisfish.populationSeasonInfo.distributionSpawing=Distribution de la reproduction
+isisfish.populationSeasonInfo.emigration=Emigration
+isisfish.populationSeasonInfo.group=Groupe
+isisfish.populationSeasonInfo.immigration=Immigration
+isisfish.populationSeasonInfo.migration=Migration
+isisfish.populationSeasonInfo.months=Mois
+isisfish.populationSeasonInfo.toString=%1$s saison %2$s-%3$s
+isisfish.populationSeasons.Reproduction=Reproduction
+isisfish.populationSeasons.changeGroup=Changement de groupe
+isisfish.populationSeasons.comments=Commentaires
+isisfish.populationSeasons.computeCoefficient=Calculer le coefficient
+isisfish.populationSeasons.distributionSpawning=Distribution de la reproduction
+isisfish.populationSeasons.noSpacialized=Non spatialis\u00E9
+isisfish.populationSeasons.selectSeason=S\u00E9lectionnez une saison
+isisfish.populationSeasons.showSpacialized=Voir les coefficients spatialis\u00E9s
+isisfish.populationSeasons.spacialized=spatialis\u00E9
+isisfish.populationSeasons.spacialized.visualisation=Coefficients spatialis\u00E9s
+isisfish.populationSeasons.title=Saisons
+isisfish.populationZones.betweenSpawningRecruitmentAreas=Correspondance entre les zones de reproduction et de recrutement
+isisfish.populationZones.selectPopulationAreas=S\u00E9lectionnez les zones des populations
+isisfish.populationZones.selectRecruitmentAreas=S\u00E9lectionnez les zones de recrutement
+isisfish.populationZones.selectSpawningAreas=S\u00E9lectionnez les zones de reproduction
+isisfish.populationZones.title=Zones
+isisfish.port.cell=Maille du port
+isisfish.port.comments=Commentaires
+isisfish.port.name=Nom
+isisfish.preScript.backParameter=Retour aux param\u00E8tres
+isisfish.preScript.title=Script de pr\u00E9-simulation
+isisfish.queue.clearDone=Retirer les simulations termin\u00E9es
+isisfish.queue.id=Identifiant
+isisfish.queue.launcher=Lanceur de simulation
+isisfish.queue.masterplan=Plan de simulation
+isisfish.queue.notstarted=Non d\u00E9marr\u00E9
+isisfish.queue.plan=Plan
+isisfish.queue.progression=Progression
+isisfish.queue.restartSimulation=Red\u00E9marrer
+isisfish.queue.showLog=Voir les logs de la simulation
+isisfish.queue.simulationLaunch=Lanceur de la queue des simulations
+isisfish.queue.status=\u00C9tat
+isisfish.queue.stopSimulation=Arr\u00EAter la simulation
+isisfish.queue.title=Queue
+isisfish.result.abundance=Abondance
+isisfish.result.add=Ajouter un r\u00E9sultat
+isisfish.result.begin.simulation=En d\u00E9but de simulation\:
+isisfish.result.capture=Capturer
+isisfish.result.capture.metier=Capturer par m\u00E9tier
+isisfish.result.choose.simulation=Choisir une simulation
+isisfish.result.datas=Donn\u00E9es
+isisfish.result.datasRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.donneeRadioButton
+isisfish.result.desktopPane=defaultToolTip-fr.ifremer.resultat.ResultatView.desktopPane
+isisfish.result.dimension=Dimension
+isisfish.result.end.simulation=En fin de Simulation\:
+isisfish.result.export=Export
+isisfish.result.export.file=Exporter un fichier texte
+isisfish.result.file=Fichier
+isisfish.result.graph=Graphe
+isisfish.result.graphRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.graphRadioButton
+isisfish.result.hpaned=defaultToolTip-fr.ifremer.resultat.ResultatEdit.hpaned2
+isisfish.result.infoPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.infoPanel
+isisfish.result.label=defaultToolTip-fr.ifremer.resultat.ResultatView.label9
+isisfish.result.map=Carte
+isisfish.result.mapRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.mapRadioButton
+isisfish.result.menuExport=defaultToolTip-fr.ifremer.resultat.ResultatEdit.menuExport
+isisfish.result.menubar=defaultToolTip-fr.ifremer.resultat.ResultatView.menubar1
+isisfish.result.menuitem=defaultToolTip-fr.ifremer.resultat.ResultatView.menuitem2
+isisfish.result.new.window=Ouvrir une nouvelle fen\u00EAtre
+isisfish.result.openWindowButton=defaultToolTip-fr.ifremer.resultat.ResultatView.openWindowButton
+isisfish.result.quit=Quitter
+isisfish.result.reject.metier=Rejet par metier
+isisfish.result.remove.simulation=Supprimer Simulation
+isisfish.result.removeSimulationButton=defaultToolTip-fr.ifremer.resultat.ResultatView.supprimerSimulationButton
+isisfish.result.resultat=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resultat
+isisfish.result.scroll=defaultToolTip-fr.ifremer.resultat.ResultatEdit.scroll
+isisfish.result.show.simulation.log=Voir les logs
+isisfish.result.simulation=defaultToolTip-fr.ifremer.resultat.ResultatView.simulation
+isisfish.result.statusBar=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusbar1
+isisfish.result.statusImage=defaultToolTip-fr.ifremer.resultat.ResultatEdit.statusImage
+isisfish.result.stress.metier=Effort par metier
+isisfish.result.summary=R\u00E9sum\u00E9
+isisfish.result.summaryRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.resumeRadioButton
+isisfish.result.table=defaultToolTip-fr.ifremer.resultat.ResultatView.table33
+isisfish.result.title=R\u00E9sultat
+isisfish.result.tooltip.show.simulation.log=Cliquer pour afficher la console des logs de la simulation
+isisfish.result.unload.metier=Debarquement par metier
+isisfish.result.vbox=defaultToolTip-fr.ifremer.resultat.ResultatView.vbox1
+isisfish.result.viewPanel=defaultToolTip-fr.ifremer.resultat.ResultatEdit.viewPanel
+isisfish.resultChoice.save=R\u00E9sultats \u00E0 sauvegarder
+isisfish.resultChoice.saved=R\u00E9sultats sauvegard\u00E9
+isisfish.resultChoice.title=Choix de r\u00E9sultats
+isisfish.resume.matrixInfoGrid=defaultToolTip-fr.ifremer.resultat.ResumePanel.matriceInfoGrid
+isisfish.resume.resumeTextArea=defaultToolTip-fr.ifremer.resultat.ResumePanel.resumeTextArea
+isisfish.resume.scrolledwindow=defaultToolTip-fr.ifremer.resultat.ResumePanel.scrolledwindow2
+isisfish.resume.table=defaultToolTip-fr.ifremer.resultat.ResumePanel.table1
+isisfish.script.check=V\u00E9rifier
+isisfish.script.commit=Commit
+isisfish.script.compilation.failed=%s
+isisfish.script.compilation.ok=Compilation r\u00E9ussie.\n--------------------\n\n%s
+isisfish.script.copy=Copier
+isisfish.script.cut=Couper
+isisfish.script.evaluate=\u00C9valuer
+isisfish.script.export=Exporter des scripts dans une archive zip
+isisfish.script.export.cancel=annuler
+isisfish.script.export.checkAll=Tout (d\u00E9-)s\u00E9lectionner
+isisfish.script.export.chooseDir=...
+isisfish.script.export.ok=exporter
+isisfish.script.export.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 exporter
+isisfish.script.export.tooltip.chooseDir=Choisir le r\u00E9pertoire o\u00F9 exporter les scripts
+isisfish.script.import=Importer des scripts depuis une archive zip
+isisfish.script.import.cancel=annuler
+isisfish.script.import.checkAll=Tout (d\u00E9-)s\u00E9lectionner
+isisfish.script.import.labelAdd=Le(s) fichier(s) suivant(s) sera(ont) ajout\u00E9(s), Confirmer l'ajout
+isisfish.script.import.labelOverwrite=Le(s) fichier(s) suivant(s) existe(nt) d\u00E9j\u00E0, Confirmer pour l'\u00E9crasement
+isisfish.script.import.ok=importer
+isisfish.script.import.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts \u00E0 importer
+isisfish.script.menu.checkSyntax=V\u00E9rifier la syntaxe
+isisfish.script.menu.code=Code
+isisfish.script.menu.commit=Commiter des scripts sur le serveur
+isisfish.script.menu.copy=Copier
+isisfish.script.menu.cut=Couper
+isisfish.script.menu.deleteLocaly=Supprimer localement
+isisfish.script.menu.deleteLocalyServer=Supprimer localement et sur le serveur
+isisfish.script.menu.diff=Voir les diff\u00E9rences avec la version du serveur
+isisfish.script.menu.edit=\u00C9dition
+isisfish.script.menu.evaluate=Evaluer
+isisfish.script.menu.file=Fichier
+isisfish.script.menu.new=Nouveau
+isisfish.script.menu.paste=Coller
+isisfish.script.menu.save=Sauver
+isisfish.script.menu.txtExport=Exporter
+isisfish.script.menu.txtImport=Importer
+isisfish.script.menu.txtNewAnalysePlan=Nouveau plan d'analyse
+isisfish.script.menu.txtNewEquationModel=Nouvelle formule
+isisfish.script.menu.txtNewExport=Nouveau script d'export
+isisfish.script.menu.txtNewRule=Nouvelle r\u00E8gle
+isisfish.script.menu.txtNewScript=Nouveau script
+isisfish.script.menu.txtNewSensitivity=Nouveau calculateur de sensibilit\u00E9
+isisfish.script.menu.txtNewSimulator=Nouveau simulateur
+isisfish.script.menu.txtVCS=Serveur
+isisfish.script.menu.update=Synchronisation
+isisfish.script.new=Nouveau
+isisfish.script.paste=Coller
+isisfish.script.save=Sauver
+isisfish.script.title=Editeur de scripts
+isisfish.script.txtExport=Exporter
+isisfish.season.toString=saison %1$s-%2$s
+isisfish.selectivity.equation=Equation
+isisfish.selectivity.selectPopulation=S\u00E9lectionnez une population
+isisfish.selectivity.title=S\u00E9lectivit\u00E9
+isisfish.sens.backParameter=Retour aux param\u00E8tres
+isisfish.sens.title=Plan de simulation
+isisfish.sensitivity.displaysecondpass=Afficher les r\u00E9sultats
+isisfish.sensitivity.export=Export
+isisfish.sensitivity.secondpass=Analyse des r\u00E9sultats
+isisfish.sensitivity.secondpass.title=Analyse des r\u00E9sultats
+isisfish.sensitivity.select=M\u00E9thode
+isisfish.sensitivity.title=Analyse de sensibilit\u00E9
+isisfish.sensitivityChooser.title=M\u00E9thode de la sensibilit\u00E9
+isisfish.server.ssh.generateKey.title=G\u00E9n\u00E9rer une cl\u00E9 SSH
+isisfish.setOfVessels.comments=Commentaires
+isisfish.setOfVessels.fixedCosts=Co\u00FBts fixes
+isisfish.setOfVessels.name=Nom
+isisfish.setOfVessels.numberOfVessels=Nombre de navires
+isisfish.setOfVessels.technicalEfficiency=\u00C9fficacit\u00E9 technique
+isisfish.setOfVessels.title=Caract\u00E9ristiques
+isisfish.setOfVessels.vesselType=Type de navire
+isisfish.simpleResult.legendPanel=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.legendPanel
+isisfish.simpleResult.more.information=Cliquer sur une cellule pour plus d'informations...
+isisfish.simpleResult.resultatMap=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMap
+isisfish.simpleResult.resultatMapToolBar=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMapToolBar
+isisfish.simpleResult.table=defaultToolTip-fr.ifremer.isisfish.map.SimpleResultatMapBean.table12
+isisfish.simulation.log.console.title=Console de log simulation '%1$s'
+isisfish.simulation.log.showConsole=affichage de la console de log pour la simulation %1$s
+isisfish.simulation.menu.import=Restaurer les param\u00E9tres d'une simulation
+isisfish.simulation.menu.save=Sauver les param\u00E8tres de la simulation
+isisfish.simulation.menu.simulation=Simulation
+isisfish.simulation.name=Nom de la simulation
+isisfish.simulation.remote.message.connection=Connexion \u00E0 Caparmor
+isisfish.simulation.remote.message.downloadresults=T\u00E9l\u00E9chargement des r\u00E9sultats
+isisfish.simulation.remote.message.upload=Upload de la simulation
+isisfish.simulation.remote.message.waitingavailable=Attente d'une place de simulation
+isisfish.simulation.remote.message.waitingstart=Attente du d\u00E9marrage de la simulation
+isisfish.simulation.restarting=Red\u00E9marrage...
+isisfish.simulation.title=Lanceur de simulation
+isisfish.simulator.launcher.inprocess=dans le m\u00EAme processus
+isisfish.simulator.launcher.remote=sur le serveur Caparmor
+isisfish.simulator.launcher.subprocess=dans un sous processus
+isisfish.simulator.simulaction.badid=Impossible de lancer la simulation '%s' \: l'identifiant existe d\u00E9j\u00E0 \!
+isisfish.simulator.ssh.configuration.connecting=Connexion en cours
+isisfish.simulator.ssh.configuration.connectingpk=Connexion en cours (avec cl\u00E9 publique)
+isisfish.simulator.ssh.configuration.connection=Information de connexion
+isisfish.simulator.ssh.configuration.connectionerror=Connexion impossible (%s)
+isisfish.simulator.ssh.configuration.connectionok=Connect\u00E9 avec succ\u00E8s
+isisfish.simulator.ssh.configuration.environment=Configuration sur Caparmor
+isisfish.simulator.ssh.configuration.invalidpassphrase=Passphrase invalide
+isisfish.simulator.ssh.configuration.keygenerate=G\u00E9n\u00E9rer
+isisfish.simulator.ssh.configuration.test=Tester la configuration
+isisfish.simulator.ssh.configuration.title=Configuration du lanceur Caparmor
+isisfish.simulator.subprocess.readoutput.error=
+isisfish.species.age=Age
+isisfish.species.cee=CEE
+isisfish.species.comments=Commentaires
+isisfish.species.length=Longueur
+isisfish.species.name=Nom des esp\u00E8ces
+isisfish.species.rubbinCode=Code Rubbin
+isisfish.species.scientificName=Nom scientifique
+isisfish.species.structured=Structur\u00E9
+isisfish.ssh.askpassphrase.message=Entrez la passphrase pour la cl\u00E9 '%s' \:
+isisfish.ssh.askpassphrase.title=D\u00E9verrouillage de cl\u00E9 SSH
+isisfish.ssh.askpassphrase.wrongpassphrase=Mauvaise cl\u00E9, entrez une nouvelle passphrase '%s' \:
+isisfish.strategy.comments=Commentaires
+isisfish.strategy.inactivity=Equation d'inactivit\u00E9
+isisfish.strategy.inactivityEquationUsed=Utiliser une \u00E9quation d'inactivit\u00E9
+isisfish.strategy.name=Nom
+isisfish.strategy.proportionSetOfVessels=Proportion des ensembles de navires
+isisfish.strategy.title=Caract\u00E9ristiques
+isisfish.strategyMonthInfo.metier=M\u00E9tier
+isisfish.strategyMonthInfo.minInactivityDays=Jour minimums d'inactivit\u00E9
+isisfish.strategyMonthInfo.numberOfTrips=Nombre de trajets
+isisfish.strategyMonthInfo.proportion=Proportion
+isisfish.strategyMonthInfo.title=Saisie des mois
+isisfish.strategyMonthInfo.toString=%1$s %2$s
+isisfish.timeUnit.day=Jour
+isisfish.timeUnit.hours=Heures
+isisfish.tray.simulation=Isis-fish - %1$s \: %2$s/%3$s
+isisfish.tray.simulation.no=Isis-fish - Pas de simulation
+isisfish.tripType.comments=Commentaires
+isisfish.tripType.duration=Dur\u00E9e
+isisfish.tripType.minTime=Temps minimal entre deux voyages
+isisfish.tripType.name=Nom
+isisfish.vcs.ask.passphrase=Entrez votre passe phrase (si votre clef ssh en contient une).
+isisfish.vcs.ask.passphrase.title=Demande de passe phrase
+isisfish.vcs.commit=Message de sauvegarde
+isisfish.vcs.commit.cancel=annuler
+isisfish.vcs.commit.label=Entrer quelques mots concernant la modification des scripts
+isisfish.vcs.commit.ok=confirmer
+isisfish.vcs.init.notfoundcantdownload=La base de donn\u00E9es pour la version %s n'a ni pu \u00EAtre trouv\u00E9e, ni t\u00E9l\u00E9charg\u00E9e.\nVous devez la t\u00E9l\u00E9charger manullement \u00E0 partir du site d'Isis-Fish.
+isisfish.vcs.init.wrongprotocol=Votre base de donn\u00E9es locale \: %s n'utilise pas un protocole correct.\nVoulez-vous faire une sauvegarde de cette base et r\u00E9cup\u00E9rer une meilleure version ?
+isisfish.vcs.switchprotocol.confirm=Le protocole d'acc\u00E8s au d\u00E9p\u00F4t des scripts a chang\u00E9.\nVoulez-vous changer vers le nouveau d\u00E9p\u00F4t ?
+isisfish.vcs.switchtag.warningconflict=Votre base de donn\u00E9es a \u00E9t\u00E9 mise \u00E0 jour mais les fichiers suivants sont en conflit, merci de les v\u00E9rifier \:
+isisfish.vcs.switchversion.confirm=Vous n'utilisez pas le d\u00E9p\u00F4t correct pour votre version d'Isis-Fish \: %s.\nVoulez-vous changer de d\u00E9p\u00F4t ?
+isisfish.vcs.update=R\u00E9sultats de la synchronisation avec le serveur
+isisfish.vcs.update.cancel=annuler
+isisfish.vcs.update.checkAll=(de)-select tout
+isisfish.vcs.update.local=Systeme local
+isisfish.vcs.update.local.modified=Fichiers modifi\u00E9s
+isisfish.vcs.update.local.outofdateAndModified=Fichiers localement modifi\u00E9s en conflit avec le serveur
+isisfish.vcs.update.local.tooltip.modified=Fichiers localement modifi\u00E9s \n(confirmer pour revenir \u00E0 la version avant modification ou soum\u00EAtre au serveur)
+isisfish.vcs.update.local.tooltip.outofdateAndModified=Fichiers localement modifi\u00E9s mais ayant une version plus r\u00E9cente sur le serveur\n (confirmer pour revenir \u00E0 la version avant modification ou r\u00E9cup\u00E9rer la nouvelle version du serveur)
+isisfish.vcs.update.local.tooltip.unversionned=Fichiers uniquement pr\u00E9sents sur votre systeme \n(confirmer pour les enregister sur le serveur)
+isisfish.vcs.update.local.unversionned=Nouveaux fichiers
+isisfish.vcs.update.ok=continuer
+isisfish.vcs.update.remote=Serveur distant
+isisfish.vcs.update.remote.missing=Nouveaux fichiers
+isisfish.vcs.update.remote.outofdate=Fichiers plus r\u00E9cents sur le serveur
+isisfish.vcs.update.remote.tooltip.missing=Nouveaux fichiers uniquement pr\u00E9sents sur le serveur \n(confirmer pour les r\u00E9cup\u00E9rer)
+isisfish.vcs.update.remote.tooltip.outofdate=Fichiers dont il existe une version plus r\u00E9cente sur le serveur \n(confirmer pour les r\u00E9cup\u00E9rer)
+isisfish.vcs.update.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les fichiers (\u00E0 action unique) que vous voulez traiter
+isisfish.vcs.update.tooltip.local=vcs.update.tooltip.local
+isisfish.vcs.update.tooltip.remote=vcs.update.tooltip.remote
+isisfish.vcs.update.warningconflict=Votre base de donn\u00E9es a \u00E9t\u00E9 mise \u00E0 jour\nmais les fichiers suivants sont en conflit, merci de les v\u00E9rifier \:\n
+isisfish.vcs.updateconfirm=Confirmation des ope\u00E9rations de synchronisation avec le serveur
+isisfish.vcs.updateconfirm.cancel=annuler
+isisfish.vcs.updateconfirm.checkAll=(de)-select tout
+isisfish.vcs.updateconfirm.label=Confirmer les op\u00E9rations qui pourraient \u00E9craser vos fichiers
+isisfish.vcs.updateconfirm.label2='Etes vous sur de vouloir effectuer ces op\u00E9rations ?'
+isisfish.vcs.updateconfirm.ok=confirmer
+isisfish.vcs.updateconfirm.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts que vous voulez traiter
+isisfish.vcs.updaterepository.confirm=Votre d\u00E9p\u00F4t des scripts n'est pas \u00E0 jour. Voulez-vous mettre \u00E0 jour les fichiers suivants ?
+isisfish.vcs.vcssvn.add.error=Impossible d'ajouter un fichier
+isisfish.vcs.vcssvn.add.errorreadonly=Vous ne pouver pas ajouter de fichier, ce d\u00E9p\u00F4t est en lecture seule \!
+isisfish.vcs.vcssvn.checkProtocol.error=Impossible d'obtenir l'adresse correspondant au d\u00E9p\u00F4t local
+isisfish.vcs.vcssvn.checkProtocol.relocate=Transfert du d\u00E9p\u00F4t %s de %s vers %s
+isisfish.vcs.vcssvn.checkout.error=Impossible de mettre \u00E0 jour
+isisfish.vcs.vcssvn.cleanup.error=Impossible de d\u00E9verrouiller la copie locale
+isisfish.vcs.vcssvn.commit.error=Impossible de commiter
+isisfish.vcs.vcssvn.commit.errorreadonly=Vous ne pouvez pas commiter, le d\u00E9p\u00F4t est en lecture seule
+isisfish.vcs.vcssvn.delete.error=Impossible de supprimer des fichiers
+isisfish.vcs.vcssvn.delete.errorreadonly=Vous ne pouvez pas supprimer ce fichier, le d\u00E9p\u00F4t est en lecture seule
+isisfish.vcs.vcssvn.diff.error=Impossible d'obtenir le diff
+isisfish.vcs.vcssvn.gettag.error=Erreur lors de la r\u00E9cup\u00E9ration de l'adresse du d\u00E9p\u00F4t local
+isisfish.vcs.vcssvn.getupdate.error=Impossible d'obtenir le statut des fichiers
+isisfish.vcs.vcssvn.global.filelocalandremotestatus=Le statut du fichier %s est (l\:%s/d\:%s)
+isisfish.vcs.vcssvn.global.filestatus=Le statut de %s est %s
+isisfish.vcs.vcssvn.global.foundUpdatedFile=Ajout de %s comme fichier mis \u00E0 jour
+isisfish.vcs.vcssvn.global.torevision=\u00C0 la r\u00E9vision \: %d
+isisfish.vcs.vcssvn.isconnected.switchoff=Impossible de se connecter au serveur, passage en mode d\u00E9connect\u00E9 \: %s
+isisfish.vcs.vcssvn.isconnected.switchto=Connexion au serveur disponible, passage en mode connect\u00E9 \: %s
+isisfish.vcs.vcssvn.isonremote.error=Le fichier %s n'est pas sur le serveur
+isisfish.vcs.vcssvn.istag.notexist=Le tag %s n'existe pas
+isisfish.vcs.vcssvn.isuptodate.error=Impossible d'obtenir le statut de fichier
+isisfish.vcs.vcssvn.list.error=Impossible de lister
+isisfish.vcs.vcssvn.localstatus.error=Impossible d'obtenir le statut local de fichier
+isisfish.vcs.vcssvn.remotestatus.error=Impossible d'obtenir le statut distant de fichier
+isisfish.vcs.vcssvn.setTag.error=Erreur lors de la r\u00E9cup\u00E9ration de l'adresse du d\u00E9p\u00F4t local
+isisfish.vcs.vcssvn.settag.switchfromto=Switch du tag du d\u00E9p\u00F4t de %s \u00E0 %s
+isisfish.vcs.vcssvn.update.error=Impossible de mettre \u00E0 jour
+isisfish.vcs.vcssvn.update.notinlocal=Impossible de mettre \u00E0 jour des fichiers qui ne sont pas pas dans le d\u00E9p\u00F4t
+isisfish.versionStorage.removed=Supprim\u00E9
+isisfish.vesselType.activityRange=Intervalle d'activit\u00E9
+isisfish.vesselType.comments=Commentaires
+isisfish.vesselType.fuelCost=Co\u00FBt d'un trajet en fuel
+isisfish.vesselType.length=Longueur
+isisfish.vesselType.maxDuration=Dur\u00E9e maximale du trajet
+isisfish.vesselType.miniCrew=Taille minimale d'\u00E9quipage
+isisfish.vesselType.name=Nom
+isisfish.vesselType.speed=Vitesse
+isisfish.welcome.menu.about=\u00C0 propos
+isisfish.welcome.menu.api=API
+isisfish.welcome.menu.close=Fermer
+isisfish.welcome.menu.configuration=Configuration
+isisfish.welcome.menu.configuration.sshlauncher=Configuration Caparmor
+isisfish.welcome.menu.configuration.vcs=Configuration vcs
+isisfish.welcome.menu.file=Fichier
+isisfish.welcome.menu.frame=Fen\u00EAtre
+isisfish.welcome.menu.help=Aide
+isisfish.welcome.menu.help.isisfish=Site d'Isis-Fish
+isisfish.welcome.menu.help.isisfishapi=API Isis-Fish
+isisfish.welcome.menu.help.javaapi=API Java
+isisfish.welcome.menu.help.lutinmatrixapi=API LutinMatrix
+isisfish.welcome.menu.help.topiaapi=API ToPIA
+isisfish.welcome.menu.input=Saisie
+isisfish.welcome.menu.monitor=Fen\u00EAtre de logs
+isisfish.welcome.menu.queue=Liste des simulations
+isisfish.welcome.menu.result=R\u00E9sultat
+isisfish.welcome.menu.script=Script
+isisfish.welcome.menu.simulation=Lanceur de simulations
+isisfish.welcome.menu.synchro=Synchronisation Serveur
+isisfish.welcome.title=Simulation Ifremer
+isisfish.wizardGroupCreation.allGroupsSameSize=Tous les groupes ont la m\u00EAme taille
+isisfish.wizardGroupCreation.allValues=Entrer toutes les valeurs
+isisfish.wizardGroupCreation.computedGrowthCurve=Calcul\u00E9 par une courbe de croissance
+isisfish.wizardGroupCreation.firstAge=Premier age
+isisfish.wizardGroupCreation.firstAgeHelp=Premier age \= age minimal
+isisfish.wizardGroupCreation.firstGroup=Premier groupe
+isisfish.wizardGroupCreation.firstLength=Premi\u00E8re taille
+isisfish.wizardGroupCreation.firstLengthHelp=Premi\u00E8re taille \= taille minimale du premier groupe
+isisfish.wizardGroupCreation.gapBetweenGroupsHelp=L'interval entre chaque groupe est de 1 an
+isisfish.wizardGroupCreation.groupWidth=Longueur du groupe
+isisfish.wizardGroupCreation.groupWidthHelp=Longueur du groupe \= Longueur du groupe
+isisfish.wizardGroupCreation.lastAge=Dernier age
+isisfish.wizardGroupCreation.lastAgeHelp=Dernier age \= age maximal
+isisfish.wizardGroupCreation.maxGroupsLength=Taille maximale de groupes
+isisfish.wizardGroupCreation.maxGroupsLengthHelp=Un point-virgule ';' doit s\u00E9parer les tailles maximales de chaque groupe
+isisfish.wizardGroupCreation.numberGroup=Nombre de groupe
+isisfish.wizardGroupCreation.numberGroupHelp=Nombre de groupe \= Nombre de groupe voulu
+isisfish.wizardGroupCreation.numberGroups=Nombre de groupes
+isisfish.wizardGroupCreation.populationCharacteristics=Entrez les caract\u00E9ristiques de la population
+isisfish.wizardGroupCreation.selectGroupLengthType=Choisir la longueur du groupe
+isisfish.wizardGroupCreation.timeStep=Pas de temps (en mois)
+isisfish.wizardGroupCreation.title=Cr\u00E9ation du groupe
+isisfish.wizardGroupCreation.undefinedGrowthEquation=L'\u00E9quation utilis\u00E9e est la courbe de croissance de la population. Elle doit \u00EAtre pr\u00E9alablement d\u00E9finie.
+isisfish.zone.cells=Cellules de la zone
+isisfish.zone.comments=Commentaires
+isisfish.zone.name=Nom
+region\ already\ exists\ %s\ use\ 'force'\ argument\ to\ force\ overwrite=
+simulate\ %s\ with\ file\ %s=
Deleted: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties
===================================================================
--- isis-fish/trunk/src/main/resources/sensitivity.properties 2009-07-13 09:28:52 UTC (rev 2478)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties 2009-07-16 16:44:13 UTC (rev 2499)
@@ -1,63 +0,0 @@
-EffortDescription.CrewFoodCost
-EffortDescription.CrewShareRate
-EffortDescription.CrewSize
-EffortDescription.FishingOperation
-EffortDescription.FishingOperationDuration
-EffortDescription.FixedCrewSalary
-EffortDescription.GearsNumberPerOperation
-EffortDescription.LandingCosts
-EffortDescription.OtherRunningCost
-EffortDescription.RepairAndMaintenanceGearCost
-EffortDescription.UnitCostOfFishing
-Gear.PopulationSelectivity
-Gear.PossibleValue
-Gear.StandardisationFactor
-Metier.GearParameterValue
-MetierSeasonInfo.SpeciesTargetSpecies
-Metier.Zone
-Population.Capturability
-Population.GeographicId
-PopulationGroup.Age
-PopulationGroup.MaxLength
-PopulationGroup.MeanWeight
-PopulationGroup.MinLength
-PopulationGroup.Price
-PopulationGroup.ReproductionRate
-Population.Growth
-Population.GrowthReverse
-Population.MappingZoneReproZoneRecru
-Population.MaturityGroup
-Population.MeanWeight
-Population.MonthGapBetweenReproRecrutement
-Population.NaturalDeathRate
-Population.NaturalDeathRateMatrix
-Population.PlusGroup
-Population.Price
-Population.RecruitmentDistribution
-Population.ReproductionEquation
-PopulationSeasonInfo.EmigrationMatrix
-PopulationSeasonInfo.GroupChange
-PopulationSeasonInfo.ImmigrationMatrix
-PopulationSeasonInfo.LengthChangeMatrix
-PopulationSeasonInfo.MigrationMatrix
-PopulationSeasonInfo.UseEquationMigration
-SetOfVessels.FixedCosts
-SetOfVessels.NumberOfVessels
-SetOfVessels.TechnicalEfficiencyEquation
-Species.AgeGroupType
-Species.CodeCEE
-Strategy.Inactivity
-StrategyMonthInfo.LengthChangeMatrix
-StrategyMonthInfo.MinInactivityDays
-StrategyMonthInfo.ProportionMetier
-Strategy.ProportionSetOfVessels
-Strategy.SetOfVessels
-TripType.MinTimeBetweenTrip
-TripType.TripDuration
-VesselType.ActivityRange
-VesselType.Length
-VesselType.MaxTripDuration
-VesselType.MinCrewSize
-VesselType.Speed
-VesselType.TripType
-VesselType.UnitFuelCostOfTravel
\ No newline at end of file
Copied: isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties (from rev 2493, isis-fish/trunk/src/main/resources/sensitivity.properties)
===================================================================
--- isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties (rev 0)
+++ isis-fish/tags/isis-fish-3.2.0.5-rc1/src/main/resources/sensitivity.properties 2009-07-16 16:44:13 UTC (rev 2499)
@@ -0,0 +1,56 @@
+EffortDescription.CrewFoodCost
+EffortDescription.CrewShareRate
+EffortDescription.CrewSize
+EffortDescription.FishingOperation
+EffortDescription.FishingOperationDuration
+EffortDescription.FixedCrewSalary
+EffortDescription.GearsNumberPerOperation
+EffortDescription.LandingCosts
+EffortDescription.OtherRunningCost
+EffortDescription.RepairAndMaintenanceGearCost
+EffortDescription.UnitCostOfFishing
+Gear.PossibleValue
+Gear.StandardisationFactor
+Metier.GearParameterValue
+Metier.Zone
+Population.Capturability
+Population.GeographicId
+PopulationGroup.Age
+PopulationGroup.MaxLength
+PopulationGroup.MeanWeight
+PopulationGroup.MinLength
+PopulationGroup.Price
+PopulationGroup.ReproductionRate
+Population.Growth
+Population.GrowthReverse
+Population.MaturityGroup
+Population.MeanWeight
+Population.MonthGapBetweenReproRecrutement
+Population.NaturalDeathRate
+Population.NaturalDeathRateMatrix
+Population.PlusGroup
+Population.Price
+Population.RecruitmentDistribution
+Population.ReproductionEquation
+PopulationSeasonInfo.GroupChange
+PopulationSeasonInfo.LengthChangeMatrix
+SetOfVessels.FixedCosts
+SetOfVessels.NumberOfVessels
+SetOfVessels.TechnicalEfficiencyEquation
+Species.AgeGroupType
+Species.CodeCEE
+Strategy.Inactivity
+StrategyMonthInfo.LengthChangeMatrix
+StrategyMonthInfo.MinInactivityDays
+StrategyMonthInfo.ProportionMetier
+Strategy.ProportionSetOfVessels
+Strategy.SetOfVessels
+TripType.MinTimeBetweenTrip
+TripType.TripDuration
+VesselType.ActivityRange
+VesselType.Length
+VesselType.MaxTripDuration
+VesselType.MinCrewSize
+VesselType.Speed
+VesselType.TripType
+VesselType.UnitFuelCostOfTravel
\ No newline at end of file
1
0
Author: chatellier
Date: 2009-07-16 16:44:09 +0000 (Thu, 16 Jul 2009)
New Revision: 2498
Modified:
isis-fish/trunk/pom.xml
Log:
[maven-release-plugin] prepare release isis-fish-3.2.0.5-rc1
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-07-16 16:17:18 UTC (rev 2497)
+++ isis-fish/trunk/pom.xml 2009-07-16 16:44:09 UTC (rev 2498)
@@ -13,7 +13,7 @@
<groupId>ifremer</groupId>
<artifactId>isis-fish</artifactId>
- <version>3.2.0.5-rc1-SNAPSHOT</version>
+ <version>3.2.0.5-rc1</version>
<!-- POM Relationships : Inheritance : Dependencies -->
<dependencies>
@@ -585,9 +585,9 @@
<!-- *** Build Environment ************************************** -->
<!-- ************************************************************* -->
<scm>
- <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/trunk</connection>
- <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/trunk</developerConnection>
- <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/isis-fish/trunk…</url>
+ <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/tags/isis-fish-3.2.0.…</connection>
+ <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/isis-fish/isis-fish/tags/isis-fish-3.2.0.…</developerConnection>
+ <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/isis-fish/tags/…</url>
</scm>
<!--Code Lutin Repository-->
1
0
r2497 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 16 Jul '09
by chatellier@users.labs.libre-entreprise.org 16 Jul '09
16 Jul '09
Author: chatellier
Date: 2009-07-16 16:17:18 +0000 (Thu, 16 Jul 2009)
New Revision: 2497
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
Log:
Passage en debug (ca polue les log)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-07-16 16:08:25 UTC (rev 2496)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-07-16 16:17:18 UTC (rev 2497)
@@ -40,7 +40,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.topia.TopiaException;
import org.codelutin.util.FileUtil;
import fr.ifremer.isisfish.IsisFish;
@@ -395,8 +394,8 @@
SimulationJob job = firstEntry.getValue();
SimulatorLauncher launcher = job.getLauncher();
- if (log.isInfoEnabled()) {
- log.info("Check simulation progression : " + job.getId());
+ if (log.isDebugEnabled()) {
+ log.debug("Check simulation progression : " + job.getId());
}
// retourne true if :
1
0
r2496 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish
by chatellier@users.labs.libre-entreprise.org 16 Jul '09
by chatellier@users.labs.libre-entreprise.org 16 Jul '09
16 Jul '09
Author: chatellier
Date: 2009-07-16 16:08:25 +0000 (Thu, 16 Jul 2009)
New Revision: 2496
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
Log:
Disable local launcher due to memory consumption !
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-16 16:07:11 UTC (rev 2495)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-07-16 16:08:25 UTC (rev 2496)
@@ -865,8 +865,8 @@
SIMULATOR_CLASSFILE("simulator.classfile", _("isisfish.config.main.defaultSimulator.description"), "DefaultSimulator.java"),
/** prevu pour l'architecture de lancement en plugin: local, isis-server, caparmor, ... */
- SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localDefault", _("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
- SIMULATOR_LAUNCHER_SUB(SimulationService.SIMULATION_LAUNCHER + ".subDefault", _("isisfish.config.main.subSimulator.description"), SubProcessSimulationLauncher.class.getName()),
+ //SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localDefault", _("isisfish.config.main.localSimulator.description"), InProcessSimulatorLauncher.class.getName()),
+ SIMULATOR_LAUNCHER(SimulationService.SIMULATION_LAUNCHER + ".localSubProcessDefault", _("isisfish.config.main.subSimulator.description"), SubProcessSimulationLauncher.class.getName()),
SIMULATOR_LAUNCHER_REMOTE(SimulationService.SIMULATION_LAUNCHER + ".remoteCaparmor", _("isisfish.config.main.remoteCaparmor.description"), SSHSimulatorLauncher.class.getName()),
SIMULATOR_SERVER("simulation.server", _("isisfish.config.main.simulationServer.description"), "http://simulateur.ifremer.fr:9090"),
1
0
Author: chatellier
Date: 2009-07-16 16:07:11 +0000 (Thu, 16 Jul 2009)
New Revision: 2495
Modified:
isis-fish/trunk/changelog.txt
Log:
Update changelog
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-07-16 16:06:54 UTC (rev 2494)
+++ isis-fish/trunk/changelog.txt 2009-07-16 16:07:11 UTC (rev 2495)
@@ -1,4 +1,7 @@
-isis-fish (3.2.0.4-rc2) xxx
+isis-fish (3.2.0.5-rc1) chatellier
+
+ * Remove inprocess launcher (due to memory consumption)
+ * Readd tools.jar (isis don't need jdk anymore)
* Fix bug 1772 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1772&gr… )
* Fix bug 1900 ( https://labs.libre-entreprise.org/tracker/index.php?func=detail&aid=1900&gr… )
* Fix simulation plan subjob number : start at 0
@@ -8,6 +11,10 @@
* Add tests on each storage for testing template content compilation
* Add script templates based on freemarker template engine
+isis-fish (3.2.0.4) chatellier
+
+ * Add sensitivity analysis
+
isis-fish (3.2.0.4-rc1) sletellier
* Fix ask passphrase in svn+ssh mode
1
0
Author: chatellier
Date: 2009-07-16 16:06:54 +0000 (Thu, 16 Jul 2009)
New Revision: 2494
Modified:
isis-fish/trunk/pom.xml
Log:
Use jaxx and topia stable.
Readd i18n config !
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-07-16 15:26:12 UTC (rev 2493)
+++ isis-fish/trunk/pom.xml 2009-07-16 16:06:54 UTC (rev 2494)
@@ -359,8 +359,8 @@
<labs.project>isis-fish</labs.project>
<!-- Custom version -->
- <jaxx.version>1.5.1-SNAPSHOT</jaxx.version>
- <topia.version>2.1.6.1-SNAPSHOT</topia.version>
+ <jaxx.version>1.5.1</jaxx.version>
+ <topia.version>2.1.6.1</topia.version>
<topia.service.version>1.0.3</topia.service.version>
<lutinmatrix.version>1.3</lutinmatrix.version>
<lutinutil.version>1.0.6</lutinutil.version>
@@ -462,6 +462,17 @@
<groupId>org.codelutin</groupId>
<artifactId>maven-i18n-plugin</artifactId>
<version>${i18n.version}</version>
+ <configuration>
+ <entries>
+ <entry>
+ <basedir>${maven.gen.dir}/java/</basedir>
+ <specificGoal>parserJava</specificGoal>
+ <includes>
+ <param>**\/**UI.java</param>
+ </includes>
+ </entry>
+ </entries>
+ </configuration>
<executions>
<execution>
<goals>
1
0
16 Jul '09
Author: chatellier
Date: 2009-07-16 15:26:12 +0000 (Thu, 16 Jul 2009)
New Revision: 2493
Modified:
isis-fish/trunk/src/main/resources/sensitivity.properties
Log:
Remove some non factorizable entries
Modified: isis-fish/trunk/src/main/resources/sensitivity.properties
===================================================================
--- isis-fish/trunk/src/main/resources/sensitivity.properties 2009-07-16 15:23:51 UTC (rev 2492)
+++ isis-fish/trunk/src/main/resources/sensitivity.properties 2009-07-16 15:26:12 UTC (rev 2493)
@@ -9,11 +9,9 @@
EffortDescription.OtherRunningCost
EffortDescription.RepairAndMaintenanceGearCost
EffortDescription.UnitCostOfFishing
-Gear.PopulationSelectivity
Gear.PossibleValue
Gear.StandardisationFactor
Metier.GearParameterValue
-MetierSeasonInfo.SpeciesTargetSpecies
Metier.Zone
Population.Capturability
Population.GeographicId
@@ -25,7 +23,6 @@
PopulationGroup.ReproductionRate
Population.Growth
Population.GrowthReverse
-Population.MappingZoneReproZoneRecru
Population.MaturityGroup
Population.MeanWeight
Population.MonthGapBetweenReproRecrutement
@@ -35,12 +32,8 @@
Population.Price
Population.RecruitmentDistribution
Population.ReproductionEquation
-PopulationSeasonInfo.EmigrationMatrix
PopulationSeasonInfo.GroupChange
-PopulationSeasonInfo.ImmigrationMatrix
PopulationSeasonInfo.LengthChangeMatrix
-PopulationSeasonInfo.MigrationMatrix
-PopulationSeasonInfo.UseEquationMigration
SetOfVessels.FixedCosts
SetOfVessels.NumberOfVessels
SetOfVessels.TechnicalEfficiencyEquation
1
0