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
- 3175 discussions
r1329 - in trunk/isis-fish: doc src/resources src/test/fr/ifremer/isisfish/simulator
by bpoussin@users.labs.libre-entreprise.org 01 Sep '08
by bpoussin@users.labs.libre-entreprise.org 01 Sep '08
01 Sep '08
Author: bpoussin
Date: 2008-09-01 08:48:20 +0000 (Mon, 01 Sep 2008)
New Revision: 1329
Removed:
trunk/isis-fish/src/resources/IsisFish_init.properties
Modified:
trunk/isis-fish/doc/Todo.rst
trunk/isis-fish/src/test/fr/ifremer/isisfish/simulator/SimulationHelperTest.java
Log:
- suppression de vieux fichiers
- mise en commentaire d'un test qui ne passe plus
Modified: trunk/isis-fish/doc/Todo.rst
===================================================================
--- trunk/isis-fish/doc/Todo.rst 2008-09-01 08:43:55 UTC (rev 1328)
+++ trunk/isis-fish/doc/Todo.rst 2008-09-01 08:48:20 UTC (rev 1329)
@@ -1,20 +1,21 @@
Pour la version 3.2.0.0:
-- suppression du la queue de simulation (et du bouton associe)
+(d)- suppression du la queue de simulation (et du bouton associe)
(d)- parsing d'option
(d)- equation TechnicalEfficiency
(d)- equation Inactivity
(d)- algo avec maille
-- lancement de simulation dans un process extern qui ecrit sont etat dans un fichier
-- suivi de l'etat des fichiers par un thread.
(d)- passage en I18nf
(d)- prise en compte modif fichier isis-config existant
(d)- vcs (attention au merge avec conflit, en svn il faut faire un resolv conflict)
(d)- interface d'upgrade de script pour nouvelle implatantion vcs
+(d)- nouvelle migration de int -> double StrategyMonthInfo
+- lancement de simulation dans un process extern qui ecrit sont etat dans un fichier
+- suivi de l'etat des fichiers par un thread.
- mode remote sur caparmor (type de simulation plugable, inprocess, batch, caparmor, remote, ...)
- sauvegarde des resultats plugable par listener (bd, mexico XML, mexico binaire, socket, ...)
- passage en UTF-8
- lors de l'import d'une region le service de migration topia ne se met pas en route
-- nouvelle migration de int -> double StrategyMonthInfo
+- Pour les regles qui ont des parametres File, prevoir de les mettres aussi dans les simulatioons (redirection a l'execution du chemin ? sans doute juste avant l'init de la regle)
Pour la version 3.2.0.1:
- jaxx + validator
Deleted: trunk/isis-fish/src/resources/IsisFish_init.properties
===================================================================
--- trunk/isis-fish/src/resources/IsisFish_init.properties 2008-09-01 08:43:55 UTC (rev 1328)
+++ trunk/isis-fish/src/resources/IsisFish_init.properties 2008-09-01 08:48:20 UTC (rev 1329)
@@ -1,262 +0,0 @@
-###
-### script, data options
-###
-addScript.option.definition=--add|-a <analyseplans|exports|formules=String|rules|scripts|simulators> <file:File+> [check|force]
-exportData.option.definition=--export|-o <fileZip:NewFile> <region|simulation> <name:String> [force]
-exportScript.option.definition=--export-script|-os <fileZip:NewFile> <analyseplans|exports|formules=String|rules|scripts|simulators> [filter:String] [force]
-import.option.definition=--import|-i <region|simulation|script> <fileZip:File> [force]
-importAndRenameRegion.option.definition=--importAndRenameRegion <regionFile:File> <name:String> [force]
-list.option.definition=--list|-l * <analyseplans|exports|formules|regions|rules|scripts|simulations|simulators> [filter:String]
-simulate.option.definition=--simulate <simulationId:String> [simulationParameter=File] [simulation=File] [region=File]
-
-###
-### vcs options
-###
-createSshKey.option.definition=--create-ssh-key|-c [force] [privateKeyFile:NewFile]
-mavenFile.option.definition=--mavenFile
-sshKeyFile.option.definition=--ssh-key-file|-k <privateKeyFile:File>
-update.option.definition=--update|-u <value:Boolean>
-vcsAddRemove.option.definition=--vcs2 <add|remove> <file:File+>
-vcsUpdateCommitState.option.definition=--vcs <update|commit|state> [file:File*]
-
-
-###
-### les propri\u00E9t\u00E9s de la configuration principal obligatoires pour commandline
-###
-
-#main.config.definition.configFileName=java.io.File:.isis-config-3
-#main.config.modifiers.configFileName=final,mandatory,transient
-
-#main.config.definition.encoding=java.lang.String:ISO-8859-1
-#main.config.modifiers.encoding=final,static,mandatory
-
-#main.config.definition.locale=java.util.Locale:fr_FR
-#main.config.modifiers.locale=mandatory
-
-#main.config.definition.projectName=java.lang.String:Isis-Fish
-#main.config.modifiers.projectName=final,static,mandatory
-
-#main.config.definition.version=org.codelutin.util.VersionNumber:3.1.2
-#main.config.modifiers.version=final,static,mandatory
-
-###
-### les propri\u00E9t\u00E9s de la configuration principal
-###
-
-main.config.definition.compileDirectory=java.io.File:isis-build
-main.config.modifiers.compileDirectory=final,mandatory
-
-main.config.definition.dataBackupFilename=java.lang.String:data-backup.sql.gz
-main.config.modifiers.dataBackupFilename=final,mandatory,static,transient
-
-main.config.definition.defaultBackupDirectory=java.io.File:isis-backup
-main.config.modifiers.defaultBackupDirectory=final,mandatory
-
-main.config.definition.defaultExportDirectory=java.io.File:isis-export
-main.config.modifiers.defaultExportDirectory=mandatory
-
-main.config.definition.defaultExportNames=java.lang.String
-main.config.modifiers.defaultExportNames=
-
-main.config.definition.defaultMapFile=java.lang.String:maps/vmap_area_thin
-main.config.modifiers.defaultMapFile=final,mandatory,static,transient
-
-main.config.definition.defaultResultNames=java.lang.String
-main.config.modifiers.defaultResultNames=
-
-main.config.definition.defaultSimulator=java.lang.String:DefaultSimulator.java
-main.config.modifiers.defaultSimulator=mandatory
-
-main.config.definition.defaultTagValue=java.lang.String
-main.config.modifiers.defaultTagValue=
-
-main.config.definition.javadocURL=java.net.URL:http://isis-fish.labs.libre-entreprise.org/apidocs/
-main.config.modifiers.javadocURL=final,mandatory
-
-main.config.definition.localSimulator=java.lang.Boolean:true
-main.config.modifiers.localSimulator=mandatory
-
-main.config.definition.login=java.lang.String:anonymous
-main.config.modifiers.login=mandatory
-
-main.config.definition.password=java.lang.String:guest
-main.config.modifiers.password=mandatory
-
-main.config.definition.regionMap=java.lang.String:maps
-main.config.modifiers.regionMap=final,mandatory,static,transient
-
-main.config.definition.resultExport=java.lang.String:resultExports
-main.config.modifiers.resultExport=final,mandatory,static,transient
-
-main.config.definition.simulationInformationFilename=java.lang.String:information
-main.config.modifiers.simulationInformationFilename=final,mandatory,static,transient
-
-main.config.definition.simulationParametersFilename=java.lang.String:parameters.properties
-main.config.modifiers.simulationParametersFilename=final,mandatory,static,transient
-
-main.config.definition.simulationReportMail=java.lang.String:isis-fish-bugreport at lists.labs.libre-entreprise.org
-main.config.modifiers.simulationReportMail=mandatory
-
-main.config.definition.simulationResultXmlFilename=java.lang.String:isis-mexico-output.xml
-main.config.modifiers.simulationResultXmlFilename=final,mandatory,static,transient
-
-main.config.definition.simulationServer=java.net.URL:http://simulateur.ifremer.fr:9090
-main.config.modifiers.simulationServer=mandatory
-
-main.config.definition.simulationShowOnlyError=java.lang.Boolean:false
-main.config.modifiers.simulationShowOnlyError=
-
-main.config.definition.simulationShowOnlyQueue=java.lang.Boolean:false
-main.config.modifiers.simulationShowOnlyQueue=
-
-main.config.definition.smtpServer=java.lang.String:smtp
-main.config.modifiers.smtpServer=mandatory
-
-main.config.definition.userMail=java.lang.String
-main.config.modifiers.userMail=mandatory
-
-main.config.definition.userName=java.lang.String
-main.config.modifiers.userName=mandatory
-
-
-###
-### les propri\u00E9t\u00E9s de la configuration vcs
-###
-vcs.config.definition.localDatabasePath=java.io.File:isis-database-3
-vcs.config.modifiers.localDatabasePath=mandatory
-#TODO Should use application version
-vcs.config.definition.databaseVersion=org.codelutin.util.VersionNumber:3.1.3
-vcs.config.modifiers.databaseVersion=final,mandatory
-
-vcs.config.definition.hostName=java.lang.String:labs.libre-entreprise.org
-vcs.config.modifiers.hostName=mandatory
-
-#vcs.config.definition.localDatabase=java.lang.String:isis-database-3
-#vcs.config.modifiers.localDatabase=final,mandatory
-
-#vcs.config.definition.localPath=java.io.File
-#vcs.config.definition.localPath=java.io.File:isis-database-3
-#vcs.config.modifiers.localPath=final,mandatory
-
-vcs.config.definition.remoteDatabase=java.lang.String
-vcs.config.modifiers.remoteDatabase=final,mandatory
-
-vcs.config.definition.remotePath=java.lang.String:svnroot/isis-fish-data
-vcs.config.modifiers.remotePath=final,mandatory
-
-vcs.config.definition.useSshConnexion=java.lang.Boolean:false
-vcs.config.modifiers.useSshConnexion=mandatory
-
-vcs.config.definition.keyFile=java.io.File:.ssh/id_dsa
-vcs.config.modifiers.keyFile=
-
-vcs.config.definition.noPassPhrase=java.lang.Boolean:true
-vcs.config.modifiers.noPassPhrase=
-
-#vcs.config.definition.passphrase=java.lang.char[]
-#TODO Deal with char[] type
-vcs.config.definition.passphrase=java.lang.String
-vcs.config.modifiers.passphrase=transient
-
-vcs.config.definition.type=org.codelutin.vcs.VCSType:SVN
-vcs.config.modifiers.type=final,mandatory
-
-vcs.config.definition.typeRepo=org.codelutin.vcs.VCSTypeRepo:TAG
-vcs.config.modifiers.typeRepo=final,mandatory
-
-vcs.config.definition.userName=java.lang.String:anonymous
-vcs.config.modifiers.userName=mandatory
-
-###
-### les propri\u00E9t\u00E9s de la configuration h2
-###
-# On utilise pas cglib pour eviter les OutOfMemory: PermGen
-h2.config.definition.h2BytecodeProvider=java.lang.String:javassist
-h2.config.modifiers.h2BytecodeProvider=final,mandatory,static,transient
-
-h2.config.definition.h2CurrentSessionContextClass=java.lang.String:thread
-h2.config.modifiers.h2CurrentSessionContextClass=final,mandatory,static,transient
-
-h2.config.definition.h2Pass=java.lang.String:
-h2.config.modifiers.h2Pass=final,static,transient
-
-h2.config.definition.h2User=java.lang.String:sa
-h2.config.modifiers.h2User=final,static,transient
-
-h2.config.modifiers.h2Type=final,mandatory,static,transient
-# TODO Use class type when we can use the project classpath in commandline plugin
-h2.config.modifiers.h2Dialect=final,mandatory,static,transient
-# TODO Use class type when we can use the project classpath in commandline plugin
-h2.config.modifiers.h2Driver=final,mandatory,static,transient
-h2.config.modifiers.h2URL=final,mandatory,static,transient
-
-# pour utiliser h2
-h2.config.definition.h2Type=org.codelutin.util.H2TypeEnum:h2
-h2.config.definition.h2Dialect=java.lang.String:org.hibernate.dialect.H2Dialect
-h2.config.definition.h2Driver=java.lang.String:org.h2.Driver
-h2.config.definition.h2URL=java.lang.String:jdbc:h2:file:{0};FILE_LOCK=file;MODE=hsqldb;DEFAULT_LOCK_TIMEOUT=1000;DB_CLOSE_DELAY=0;LOCK_MODE=3;LOG=1;TRACE_LEVEL_FILE=0;TRACE_LEVEL_SYSTEM_OUT=1
-
-# pour utiliser Derby
-#h2.config.definition.h2Type=org.codelutin.util.H2TypeEnum:derby
-#h2.config.definition.h2Dialect=java.lang.String:org.hibernate.dialect.DerbyDialect
-#h2.config.definition.h2Driver=java.lang.String:org.apache.derby.jdbc.EmbeddedDriver
-#h2.config.definition.h2URL=java.lang.String:jdbc:derby:{0};create=true
-
-# pour utiliser HSQL
-#h2.config.definition.h2Type=org.codelutin.util.H2TypeEnum:hsql
-#h2.config.definition.h2Dialect=java.lang.String:org.hibernate.dialect.HSQLDialect
-#h2.config.definition.h2Driver=java.lang.String:org.hsqldb.jdbcDriver
-#h2.config.definition.h2URL=java.lang.String:jdbc:hsqldb:file:{0};shutdown=true
-
-# pour utiliser McKoi
-#h2.config.definition.h2Type=org.codelutin.util.H2TypeEnum:mckoi
-#h2.config.definition.h2Dialect=java.lang.String:org.hibernate.dialect.MckoiDialect
-#h2.config.definition.h2Driver=java.lang.String:com.mckoi.JDBCDriver
-#h2.config.definition.h2URL=java.lang.String:jdbc:mckoi:local://{0}?create_or_boot=true&database_path={1}&log_path={1}&use_nio_if_available=enabled&dont_synch_filesystem=enabled&io_safety_level=3
-
-# On utilise pas cglib pour eviter les OutOfMemory: PermGen
-h2.config.definition.h2MemBytecodeProvider=java.lang.String:javassist
-h2.config.modifiers.h2MemBytecodeProvider=final,mandatory,static,transient
-
-h2.config.definition.h2MemPass=java.lang.String:
-h2.config.modifiers.h2MemPass=final,mandatory,static,transient
-
-h2.config.definition.h2MemUser=java.lang.String:sa
-h2.config.modifiers.h2MemUser=final,mandatory,static,transient
-
-h2.config.definition.h2MemURL=java.lang.String:jdbc:h2:mem:{0};MODE=hsqldb;DEFAULT_LOCK_TIMEOUT=1000;DB_CLOSE_DELAY=0;LOCK_MODE=3;LOG=0;TRACE_LEVEL_FILE=0;TRACE_LEVEL_SYSTEM_OUT=1
-h2.config.modifiers.h2MemURL=final,mandatory,static,transient
-# TODO Use class type when we can use the project classpath in commandline plugin
-
-h2.config.definition.h2MemDialect=java.lang.String:org.hibernate.dialect.H2Dialect
-h2.config.modifiers.h2MemDialect=final,mandatory,static,transient
-
-# TODO Use class type when we can use the project classpath in commandline plugin
-h2.config.definition.h2MemDriver=java.lang.String:org.h2.Driver
-h2.config.modifiers.h2MemDriver=final,mandatory,static,transient
-
-h2.config.modifiers.h2MemType=final,mandatory,static,transient
-h2.config.definition.h2MemType=org.codelutin.util.H2TypeEnum:h2
-
-h2.config.definition.migrationApplicationVersion=java.lang.String:1
-h2.config.modifiers.migrationApplicationVersion=final,mandatory,static,transient
-
-# TODO Use class type when we can use the project classpath in commandline plugin
-h2.config.definition.migrationCallBackhandlers=java.lang.String:fr.ifremer.isisfish.datastore.migration.SwingMigrationCallbackHandler
-h2.config.modifiers.migrationCallBackhandlers=final,mandatory,static,transient
-
-h2.config.definition.migrationModelNames=java.lang.String:IsisFish
-h2.config.modifiers.migrationModelNames=final,mandatory,static,transient
-
-h2.config.definition.migrationPreviousMappingDirectory=java.lang.String:oldmappings
-h2.config.modifiers.migrationPreviousMappingDirectory=final,mandatory,static,transient
-
-# TODO Use class type when we can use the project classpath in commandline plugin
-h2.config.definition.migrationTopiaService=java.lang.String:org.codelutin.topia.migration.TopiaMigrationServiceImpl
-h2.config.modifiers.migrationTopiaService=final,mandatory,static,transient
-
-h2.config.definition.storageData=java.lang.String:data
-h2.config.modifiers.storageData=final,mandatory,static,transient
-
-h2.config.definition.updateschemaDatabase=java.lang.Boolean:true
-h2.config.modifiers.updateschemaDatabase=final,mandatory,static,transient
Modified: trunk/isis-fish/src/test/fr/ifremer/isisfish/simulator/SimulationHelperTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/simulator/SimulationHelperTest.java 2008-09-01 08:43:55 UTC (rev 1328)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/simulator/SimulationHelperTest.java 2008-09-01 08:48:20 UTC (rev 1329)
@@ -151,7 +151,8 @@
tx.commitTransaction();
// lancement de la simulation
- SimulationHelper.simulate(null, sim);
+ // FIXME a remplacer avec SimulationService
+// SimulationHelper.simulate(null, sim);
// verification qu'on retrouve les memes resulats pour les deux simulations
ResultStorage resultRef = simRef.getResultStorage();
1
0
Author: bpoussin
Date: 2008-09-01 08:43:55 +0000 (Mon, 01 Sep 2008)
New Revision: 1328
Modified:
trunk/isis-fish/pom.xml
Log:
- modif pour avoir les bonnes versions de lib
Modified: trunk/isis-fish/pom.xml
===================================================================
--- trunk/isis-fish/pom.xml 2008-09-01 08:43:06 UTC (rev 1327)
+++ trunk/isis-fish/pom.xml 2008-09-01 08:43:55 UTC (rev 1328)
@@ -163,7 +163,9 @@
<plugin>
<groupId>lutinplugin</groupId>
<artifactId>maven-processor-plugin</artifactId>
+<!--
<version>0.12</version>
+-->
<executions>
<execution>
<id>Processor</id>
@@ -191,7 +193,9 @@
<plugin>
<groupId>lutinplugin</groupId>
<artifactId>maven-generator-plugin</artifactId>
- <version>0.51-SNAPSHOT</version>
+<!--
+ <version>[0.50,]</version>
+-->
<executions>
<execution>
<id>Generator</id>
@@ -238,7 +242,7 @@
<dependency>
<groupId>lutinlib</groupId>
<artifactId>topia</artifactId>
- <version>2.0.26-SNAPSHOT</version>
+ <version>[2.0.25,]</version>
<scope>compile</scope>
</dependency>
</dependencies>
@@ -246,28 +250,41 @@
<plugin>
<groupId>org.codelutin.jaxx</groupId>
<artifactId>maven-jaxx-plugin</artifactId>
- <version>0.1</version>
+<!--
+ <version>[0.2,]</version>
+-->
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
+ <configuration>
+ <src>src/uimodel</src>
+ </configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>lutinlib</groupId>
<artifactId>lutinwidget</artifactId>
- <version>0.10-SNAPSHOT</version>
+ <version>[0.9,]</version>
<scope>compile</scope>
</dependency>
+<!--
<dependency>
- <groupId>org.codelutin.jaxx.provider</groupId>
- <artifactId>swing</artifactId>
+ <groupId>lutinlib</groupId>
+ <artifactId>jaxx</artifactId>
<scope>compile</scope>
- <version>0.1</version>
+ <version>1.1.0</version>
</dependency>
+-->
+ <dependency>
+ <groupId>org.codelutin.jaxx</groupId>
+ <artifactId>jaxx-swing</artifactId>
+ <scope>compile</scope>
+ <version>[0.2,]</version>
+ </dependency>
</dependencies>
</plugin>
<plugin>
@@ -421,7 +438,9 @@
<plugin>
<groupId>lutinplugin</groupId>
<artifactId>maven-i18n-plugin</artifactId>
+<!--
<version>0.4</version>
+-->
<configuration>
<bundles>
<param>fr_FR</param>
@@ -507,21 +526,21 @@
<dependency>
<groupId>org.codelutin</groupId>
<artifactId>lutinutil</artifactId>
- <version>0.30-SNAPSHOT</version>
+ <version>[0.29,]</version>
<scope>compile</scope>
</dependency>
-
+<!--
<dependency>
<groupId>lutinlib</groupId>
<artifactId>lutinutilextra</artifactId>
- <version>0.1</version>
+ <version>[0.1,]</version>
<scope>compile</scope>
</dependency>
-
+-->
<dependency>
<groupId>lutinlib</groupId>
<artifactId>topia</artifactId>
- <version>2.0.26-SNAPSHOT</version>
+ <version>[2.0.25,]</version>
<scope>compile</scope>
<!-- use javassist instead of cglib -->
<exclusions>
@@ -535,30 +554,31 @@
<dependency>
<groupId>lutinlib</groupId>
<artifactId>topia-service</artifactId>
- <version>0.9-SNAPSHOT</version>
+ <version>[0.8,]</version>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>lutinlib</groupId>
+ <groupId>org.codelutin</groupId>
<artifactId>lutinmatrix</artifactId>
- <version>0.15</version>
+ <version>[1.0,]</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>lutinlib</groupId>
<artifactId>lutinwidget</artifactId>
- <version>0.10-SNAPSHOT</version>
+ <version>[0.9,]</version>
<scope>compile</scope>
</dependency>
+ <!--
<dependency>
<groupId>lutinlib</groupId>
<artifactId>lutinxml</artifactId>
<version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
-
+-->
<!-- librairie commandline
<dependency>
<groupId>org.codelutin.commandline</groupId>
@@ -576,17 +596,18 @@
</dependency>
-->
<!--Jaxx-->
- <!--dependency>
+<!--
+ <dependency>
<groupId>lutinlib</groupId>
<artifactId>jaxx</artifactId>
- <version>1.0.5</version>
+ <version>1.1.0</version>
<scope>compile</scope>
- </dependency-->
-
+ </dependency>
+-->
<dependency>
- <groupId>org.codelutin.jaxx.provider</groupId>
- <artifactId>swing</artifactId>
- <version>0.1</version>
+ <groupId>org.codelutin.jaxx</groupId>
+ <artifactId>jaxx-swing</artifactId>
+ <version>[0.2,]</version>
<scope>compile</scope>
</dependency>
@@ -621,27 +642,27 @@
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
- <version>2.1</version>
+ <version>[2.1,]</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-math</groupId>
<artifactId>commons-math</artifactId>
- <version>1.1</version>
+ <version>[1.1,]</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
- <version>3.1</version>
+ <version>[3.1,]</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
- <version>1.6.1</version>
+ <version>[1.6.1,]</version>
<scope>compile</scope>
</dependency>
@@ -675,6 +696,7 @@
<scope>compile</scope>
</dependency>
-->
+ <!-- encore utilise pour les pre-scripts -->
<dependency>
<groupId>bsh</groupId>
<artifactId>bsh</artifactId>
@@ -720,7 +742,7 @@
<dependency>
<groupId>lutinlib</groupId>
<artifactId>lutinj2r</artifactId>
- <version>0.1</version>
+ <version>[0.1,]</version>
<scope>compile</scope>
</dependency>
1
0
Author: bpoussin
Date: 2008-09-01 08:43:06 +0000 (Mon, 01 Sep 2008)
New Revision: 1327
Modified:
trunk/isis-fish/changelog
Log:
- ajout de ce qui a ete faut pour le 3.2.0.0
Modified: trunk/isis-fish/changelog
===================================================================
--- trunk/isis-fish/changelog 2008-09-01 08:38:03 UTC (rev 1326)
+++ trunk/isis-fish/changelog 2008-09-01 08:43:06 UTC (rev 1327)
@@ -1,3 +1,9 @@
+isis-fish (3.2.0.0) poussin
+
+ * complete refactoring option, vcs
+ * complete refactoring simulation engin
+ * new launcher type (subprocess, caparmor ...) in progress
+
isis-fish (3.1.3) stable; urgency=high
* bug correction when migration failed, still launch application on a new database
1
0
r1326 - trunk/isis-fish/src/java/fr/ifremer/isisfish
by bpoussin@users.labs.libre-entreprise.org 01 Sep '08
by bpoussin@users.labs.libre-entreprise.org 01 Sep '08
01 Sep '08
Author: bpoussin
Date: 2008-09-01 08:38:03 +0000 (Mon, 01 Sep 2008)
New Revision: 1326
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
Log:
- je ne comprend pas bien pourquoi il a ete supprime :(
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-09-01 08:38:03 UTC (rev 1326)
@@ -0,0 +1,684 @@
+/* *##%
+ * Copyright (C) 2002-2008 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.I18nf._;
+
+import fr.ifremer.isisfish.actions.ExportAction;
+import fr.ifremer.isisfish.actions.OtherAction;
+import fr.ifremer.isisfish.actions.ImportAction;
+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.vcs.VCS;
+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;
+
+/**
+ *
+ * @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(\"...\"); */
+ static private Log log = LogFactory.getLog(IsisConfig.class);
+
+ /** 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, 0);
+ 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-2008";
+ 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 repertoire ou sont stockes les scripts compiles
+ * @return
+ */
+ public File getCompileDirectory() {
+ File result = getOptionAsFile(Option.COMPILATION_DIRECTORY.key);
+ if (!result.exists()) {
+ result.mkdirs();
+ }
+ return result;
+ }
+
+ /**
+ * Retourne l'objet Local a utilise pour la langue
+ * @return
+ */
+ 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
+ */
+ public String getSimulatorServer() {
+ String result = getOption(Option.SIMULATOR_SERVER.key);
+ return result;
+ }
+
+ /**
+ * Retourne le login pour acceder au serveur de simulation
+ * @return
+ */
+ 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
+ */
+ 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);
+ }
+
+ /**
+ * Le type de simulation par defaut a utiliser (local, remote, ...)
+ * @return
+ */
+ public boolean isSimulatorLocal() {
+ String value = getOption(Option.SIMULATOR_LAUNCHER.key);
+ 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().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().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().substring(1);
+ setOption(Option.DEFAULT_TAG_VALUE.key, value);
+ 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_PROPERTY_KEY
+ */
+ 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,
+
+ };
+
+ 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();
+ log.info("Config file migration done");
+ }
+ if (log.isDebugEnabled()) {
+ printConfig();
+ }
+ }
+
+ //////////////////////////////////////////////////
+ // Toutes les options disponibles
+ //////////////////////////////////////////////////
+
+ static public enum Option {
+
+ COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
+ 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/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_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"),
+
+ 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"),
+
+ SSH_KEY_FILE("ssh.key.file", _("isisfish.config.vcs.keyFile.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
+ //////////////////////////////////////////////////
+
+ static public enum Step {
+ AfterInit, AfterInitVCS, AfterUI, BeforeExit
+ }
+
+ static public 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"),
+ ;
+
+ 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;
+ }
+ }
+}
1
0
r1325 - in trunk/isis-fish/src/java/fr/ifremer/isisfish: . actions datastore rule simulator simulator/launcher ui/simulator
by bpoussin@users.labs.libre-entreprise.org 01 Sep '08
by bpoussin@users.labs.libre-entreprise.org 01 Sep '08
01 Sep '08
Author: bpoussin
Date: 2008-09-01 08:37:01 +0000 (Mon, 01 Sep 2008)
New Revision: 1325
Removed:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/rule/Rule.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
Log:
- correction des queues nouvelles implantations
- debut de debuggade de subprocess
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -1,689 +0,0 @@
-/* *##%
- * Copyright (C) 2002-2008 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.I18nf._;
-
-import fr.ifremer.isisfish.actions.ExportAction;
-import fr.ifremer.isisfish.actions.OtherAction;
-import fr.ifremer.isisfish.actions.ImportAction;
-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.vcs.VCS;
-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;
-
-/**
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class IsisConfig extends ApplicationConfig {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(IsisConfig.class);
-
- /** 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, 0);
- 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-2008";
- 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 repertoire ou sont stockes les scripts compiles
- * @return
- */
- public File getCompileDirectory() {
- File result = getOptionAsFile(Option.COMPILATION_DIRECTORY.key);
- if (!result.exists()) {
- result.mkdirs();
- }
- return result;
- }
-
- /**
- * Retourne l'objet Local a utilise pour la langue
- * @return
- */
- 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
- */
- public String getSimulatorServer() {
- String result = getOption(Option.SIMULATOR_SERVER.key);
- return result;
- }
-
- /**
- * Retourne le login pour acceder au serveur de simulation
- * @return
- */
- 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
- */
- 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);
- }
-
- /**
- * Le type de simulation par defaut a utiliser (local, remote, ...)
- * @return
- */
- public boolean isSimulatorLocal() {
- String value = getOption(Option.SIMULATOR_LAUNCHER.key);
- 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().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().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().substring(1);
- setOption(Option.DEFAULT_TAG_VALUE.key, value);
- 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_PROPERTY_KEY
- */
- 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,
-
- };
-
- 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();
- log.info("Config file migration done");
- try {
- save(new File("/tmp/test.properties"), true);
- } catch(Exception eee ){
- eee.printStackTrace();
- }
- }
- if (log.isDebugEnabled()) {
- printConfig();
- }
- }
-
- //////////////////////////////////////////////////
- // Toutes les options disponibles
- //////////////////////////////////////////////////
-
- static public enum Option {
-
- COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
- 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/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_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"),
-
- 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"),
-
- SSH_KEY_FILE("ssh.key.file", _("isisfish.config.vcs.keyFile.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
- //////////////////////////////////////////////////
-
- static public enum Step {
- AfterInit, AfterInitVCS, AfterUI, BeforeExit
- }
-
- static public 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"),
- ;
-
- 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;
- }
- }
-}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -258,119 +258,123 @@
* l'utilisateur
*/
static public void initVCS() throws VCSException {
- // init vcs
- vcs = VCSFactory.createVCS(config);
- VCSActionAsker asker = new VCSActionAsker();
- vcs.addVetoableActionListener(asker);
+ if (config.isLaunchUI()) {
+ // FIXME ajouter une option vcs.init
- // Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
- File local = config.getDatabaseDirectory();
- log.info(_("Check state of local repository: %s", local));
+ // init vcs
+ vcs = VCSFactory.createVCS(config);
+ VCSActionAsker asker = new VCSActionAsker();
+ vcs.addVetoableActionListener(asker);
- if (local.exists()) {
- if(!vcs.isValidLocalRepository()) {
- log.info(_("Local repository exists but it's not valide for current vcs: %s", config.getOption(VCS.VCS_TYPE)));
- if (ask(_("Your database repository: %s\n don't use correct" +
- " protocol.\nDo you want to make backup of your database" +
- " and take the correct one ?", local))) {
- File localBackup = new File(local.getParentFile(),
- local.getName() + "-" +
- new SimpleDateFormat("yyyy-mm-dd-HH-mm-ss").format(new java.util.Date()));
- log.info(_("Rename data directory to %s", localBackup));
- if (!local.renameTo(localBackup)) {
- throw new IsisFishRuntimeException(
- "Can't rename local repository that don't use svn");
+ // Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
+ File local = config.getDatabaseDirectory();
+ log.info(_("Check state of local repository: %s", local));
+
+ if (local.exists()) {
+ if (!vcs.isValidLocalRepository()) {
+ log.info(_("Local repository exists but it's not valide for current vcs: %s", config.getOption(VCS.VCS_TYPE)));
+ if (ask(_("Your database repository: %s\n don't use correct" +
+ " protocol.\nDo you want to make backup of your database" +
+ " and take the correct one ?", local))) {
+ File localBackup = new File(local.getParentFile(),
+ local.getName() + "-" +
+ new SimpleDateFormat("yyyy-mm-dd-HH-mm-ss").format(new java.util.Date()));
+ log.info(_("Rename data directory to %s", localBackup));
+ if (!local.renameTo(localBackup)) {
+ throw new IsisFishRuntimeException(
+ "Can't rename local repository that don't use svn");
+ }
+ } else {
+ switchToNoneVCS();
}
- } else {
- switchToNoneVCS();
}
}
- }
-
- // Si le repo local n'existe pas on fait un check out complet
- if (!local.exists()) {
- log.info(_("Local repository don't exist"));
- if (!vcs.isConnected()) {
- UserLog.warn(_(
- "No database version %s found and can't get it.\n" +
- "You must go to ISIS-Fish web site and download database manualy.",
- IsisConfig.getDatabaseVersion()));
- } else {
- // Si on utilise pas le bon tag on change de tag
- VersionNumber tag = IsisConfig.getApiVersion();
- if (!vcs.isTag(tag)) {
- // pas de tag pour cette version, on checkout le trunk
- tag = null;
- }
- // initialise le repo local
- vcs.checkout(tag, false);
+ // Si le repo local n'existe pas on fait un check out complet
+ if (!local.exists()) {
+ log.info(_("Local repository don't exist"));
+ if (!vcs.isConnected()) {
+ UserLog.warn(_(
+ "No database version %s found and can't get it.\n" +
+ "You must go to ISIS-Fish web site and download database manualy.",
+ IsisConfig.getDatabaseVersion()));
+ } else {
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (!vcs.isTag(tag)) {
+ // pas de tag pour cette version, on checkout le trunk
+ tag = null;
+ }
- // ajoute les repertoires qu'il faut
- AnalysePlanStorage.checkout();
- ExportStorage.checkout();
- FormuleStorage.checkout();
- RuleStorage.checkout();
- ScriptStorage.checkout();
- SimulatorStorage.checkout();
+ // initialise le repo local
+ vcs.checkout(tag, false);
- // on ne prend pas toutes les simu ni toutes les regions
- vcs.update(new File(local, SimulationStorage.SIMULATION_PATH), false);
- vcs.update(new File(local, RegionStorage.REGION_PATH), false);
- try {
- RegionStorage.checkout("DemoRegion");
- } catch (TopiaException eee) {
- log.warn("Can't checkout DemoRegion", eee);
+ // ajoute les repertoires qu'il faut
+ AnalysePlanStorage.checkout();
+ ExportStorage.checkout();
+ FormuleStorage.checkout();
+ RuleStorage.checkout();
+ ScriptStorage.checkout();
+ SimulatorStorage.checkout();
+
+ // on ne prend pas toutes les simu ni toutes les regions
+ vcs.update(new File(local, SimulationStorage.SIMULATION_PATH), false);
+ vcs.update(new File(local, RegionStorage.REGION_PATH), false);
+ try {
+ RegionStorage.checkout("DemoRegion");
+ } catch (TopiaException eee) {
+ log.warn("Can't checkout DemoRegion", eee);
+ }
}
}
- }
-
- if (!local.exists()) {
- // arrive ici le repo devrait exister
- throw new IsisFishRuntimeException("Can't find local repository");
- }
- // on s'arrete la si on est pas connecte
- if (vcs.isConnected()) {
-
- // check protocol, user, host
- vcs.checkProtocol();
+ if (!local.exists()) {
+ // arrive ici le repo devrait exister
+ throw new IsisFishRuntimeException("Can't find local repository");
+ }
- // Suivant la version du logiciel et les versions de base disponible
- // il est possiblement obligatoire de ne plus etre sur le trunk, ou
- // de migrer sur un autre tag
+ // on s'arrete la si on est pas connecte
+ if (vcs.isConnected()) {
- // si on est sur une branche, on est en developpement, on ne fait donc rien
- if (vcs.getTag().startsWith("branches")) {
- log.info(_("Use branches, switch not needed"));
- } else {
- // Si on utilise pas le bon tag on change de tag
- VersionNumber tag = IsisConfig.getApiVersion();
- if (vcs.isTag(tag)) {
- // un tag dispo, on a donc pas la derniere version, on switch
- vcs.setTag(tag);
+ // check protocol, user, host
+ vcs.checkProtocol();
+
+ // Suivant la version du logiciel et les versions de base disponible
+ // il est possiblement obligatoire de ne plus etre sur le trunk, ou
+ // de migrer sur un autre tag
+
+ // si on est sur une branche, on est en developpement, on ne fait donc rien
+ if (vcs.getTag().startsWith("branches")) {
+ log.info(_("Use branches, switch not needed"));
} else {
- // pas de tag dispo on retourne sur le trunk
- vcs.setTag(null);
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (vcs.isTag(tag)) {
+ // un tag dispo, on a donc pas la derniere version, on switch
+ vcs.setTag(tag);
+ } else {
+ // pas de tag dispo on retourne sur le trunk
+ vcs.setTag(null);
+ }
}
- }
- // check file status
- vcs.checkFileStatus();
+ // check file status
+ vcs.checkFileStatus();
+ }
+ // fin de l'init on supprime le vetoable du vcs
+ vcs.remoteVetoableActionListener(asker);
}
- // fin de l'init on supprime le vetoable du vcs
- vcs.remoteVetoableActionListener(asker);
}
/**
* initialise et lance l'interface graphique si elle est demandee
*/
static public void launchUI() {
- // init simulater manager
- SimulationService.getService();
+ if (config.isLaunchUI()) {
+ // init simulater manager
+ SimulationService.getService();
- if (config.isLaunchUI()) {
// init IsisTray
IsisTray.getInstance();
// init context (will luanch remote server thread)
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -103,7 +103,7 @@
/* (non-Javadoc)
* @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
*/
- public void simulationStart(SimulationJob job) {
+ public void simulationStart(SimulationService simService, SimulationJob job) {
SimulationControl control = job.getItem().getControl();
control.addPropertyChangeListener(this);
getInstance().setToolTip(_(SIMULATION_TEXT, control.getId(), control.getProgress(), control.getProgressMax()));
@@ -112,12 +112,17 @@
/* (non-Javadoc)
* @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
*/
- public void simulationStop(SimulationJob job) {
+ public void simulationStop(SimulationService simService, SimulationJob job) {
SimulationControl control = job.getItem().getControl();
control.removePropertyChangeListener(this);
getInstance().setToolTip(_(NO_SIMULATION_TEXT));
getInstance().setImage(TRAY_IMAGE_STOP);
}
+
+ public void clearJobDone(SimulationService simService) {
+ // nothing to do
+ }
+
/* (non-Javadoc)
* @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -22,6 +22,7 @@
import static org.codelutin.i18n.I18nf._;
import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.SimulationControl;
@@ -76,7 +77,6 @@
}
SimulationService.getService().submit(simulId, params, null, 0);
- SimulationService.getService().getSimulationLaunchers();
}
/**
@@ -88,7 +88,7 @@
public static void simulateWithSimulation(String simulId, File simulationZip) throws Exception {
log.info("id:" + simulId + ", zip:" + simulationZip);
- String name = simulId + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
+ String name = simulId; // ne pas mettre la date, car le sub process la met deja + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
SimulationControl control = new SimulationControl(name);
// lancement de la simulation
@@ -96,6 +96,8 @@
SimulationStorage simulation = launcher.simulate(null, control, simulationZip);
simulation.getStorage().closeContext();
+ // FIXME integrer ca dans le process normal d'init
+ IsisFish.quit();
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -77,9 +77,9 @@
/**
* Contruit un nouveau AnalysePlan storage
*
+ * @param rootSrc repertoire root de stockage des plans
* @param directory le repertoire ou devrait se trouver le plan
* @param name le nom du plan
- * @param rootSrc TODO
*/
protected AnalysePlanStorage(File rootSrc, File directory, String name) {
super(rootSrc, directory, name);
@@ -95,7 +95,7 @@
/**
* Retourne le nom de toutes les plans existantes
*
- * @return TODO
+ * @return les noms de tous les plans existant en local
*/
static public List<String> getAnalysePlanNames() {
File dir = getAnalysePlanDirectory();
@@ -122,8 +122,8 @@
/**
* Retourne une nouvelle instance de la regle. Compile le fichier si besoin
*
- * @return TODO
- * @throws IsisFishException TODO
+ * @return retourne une nouvelle instance du plan
+ * @throws IsisFishException s'il y a un probleme d'instanciation
*/
public AnalysePlan getNewAnalysePlanInstance() throws IsisFishException {
Object result = getNewInstance();
@@ -174,8 +174,8 @@
* Recherche par introspection tous les parametres de la classe
* commencant par param_
*
- * @param plan TODO
- * @return TODO
+ * @param plan le plan dont on souhaite les infos de parametre
+ * @return retourne le nom et le type des parametres du plan
*/
static public Map<String, Class> getParameterNames(AnalysePlan plan) {
Map<String, Class> result = new LinkedHashMap<String, Class>();
@@ -192,9 +192,9 @@
* Donne la valeur d'un parametre par introspection
*
* @param name le nom du parametre
- * @param plan TODO
+ * @param plan le plan dont on souhaite la valeur du parametre
* @return la valeur courante du parametre
- * @throws IsisFishException TODO
+ * @throws IsisFishException s'il y a un probleme pour recuperer la valeur
*/
static public Object getParameterValue(AnalysePlan plan, String name) throws IsisFishException {
if (plan == null || name == null || "".equals(name)) {
@@ -216,8 +216,8 @@
*
* @param name le nom de l'attribut
* @param value la valeur de l'attribut
- * @param plan TODO
- * @throws IsisFishException TODO
+ * @param plan le plan dont on souhaite modifier la valeur de parametre
+ * @throws IsisFishException s'il y a un probleme
*/
static public void setParameterValue(AnalysePlan plan, String name, Object value) throws IsisFishException {
try {
@@ -237,9 +237,9 @@
* Recupere les parametres et leur valeur pour les retourner sous forme
* de chaine. Pour pouvoir par exemple les afficher a l'utilisateur
*
- * @param plan TODO
- * @return TODO
- * @throws IsisFishException TODO
+ * @param plan le plan dont on souhaite la valeur du parametre en string
+ * @return la valeur sous forme de string
+ * @throws IsisFishException
*/
public static String getParamAsString(AnalysePlan plan) throws IsisFishException {
StringBuffer result = new StringBuffer();
@@ -289,7 +289,6 @@
*
* @return liste de noms de regions
* @throws org.codelutin.vcs.VCSException
- * TODO
*/
static public List<String> getNewRemoteAnalysePlanNames() throws VCSException {
List<String> result = getRemoteAnalysePlanNames();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -115,7 +115,7 @@
* taille que le precedent. Pour reellement forcer la relecture on peut
* utiliser la methode {@link #reload()}}
*
- * @return TODO
+ * @return le contenu du fichier
*/
public String getContent() {
if (content == null
@@ -138,7 +138,7 @@
/**
* @param content The content to set.
- * @throws IOException TODO
+ * @throws IOException
*/
public void setContent(String content) throws IOException {
this.content = content;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -70,9 +70,9 @@
/**
* Constructeur
*
- * @param rootSrc TODO
- * @param directory TODO
- * @param name TODO
+ * @param rootSrc le repertoire root de stockage des exports
+ * @param directory le repertoire de l'export
+ * @param name le nom de l'export
*/
protected ExportStorage(File rootSrc, File directory, String name) {
super(rootSrc, directory, name);
@@ -88,8 +88,8 @@
/**
* Retourne une nouvelle instance de la regle. Compile le fichier si besoin
*
- * @return TODO
- * @throws IsisFishException TODO
+ * @return une nouvelle instance de la classe d'export
+ * @throws IsisFishException
*/
public Export getNewExportInstance() throws IsisFishException {
Object result = getNewInstance();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -70,11 +70,11 @@
protected String category = null;
/**
- * @param rootSrc TODO
- * @param directory TODO
- * @param category TODO
- * @param name TODO
- * @param extension TODO
+ * @param rootSrc le repertoire root de stockage des formules
+ * @param directory le repertoire des formules
+ * @param category la category de la formule
+ * @param name le nom de la formule
+ * @param extension l'extension a utiliser ".java"
*/
public FormuleStorage(File rootSrc, File directory, String category, String name, String extension) {
super(rootSrc, new File(directory, category), name, "." + extension);
@@ -99,8 +99,8 @@
/**
* Retourne toutes les formules sauvegardees
*
- * @param category TODO
- * @return TODO
+ * @param category la categorie des formules recherchees
+ * @return la liste de formule de la category
*/
static public List<FormuleStorage> getFormules(String category) {
List<FormuleStorage> result = new ArrayList<FormuleStorage>();
@@ -124,8 +124,8 @@
/**
* Retourne toutes les formules sauvegardees
*
- * @param category TODO
- * @return TODO
+ * @param category la categorie des formules dont on souhiate le nom
+ * @return la liste des noms formules existantes dans une categorie
*/
static public List<String> getFormuleNames(String category) {
List<String> result = new ArrayList<String>();
@@ -150,8 +150,8 @@
* Retourne toutes les categories existantes dans les formules sauvegardées
* ainsi que dans le TopiaContext passé en parametre
*
- * @param context TODO
- * @return TODO
+ * @param context le context dans lequel il faut faire la recherche
+ * @return la liste des noms des categories existantes
*/
static public List<String> getCategories(TopiaContext context) {
List<String> result = new ArrayList<String>();
@@ -179,9 +179,10 @@
* Retourne toutes les formules sauvegardees ainsi que dans le TopiaContext
* passé en parametre
*
- * @param category TODO
- * @param context TODO
- * @return TODO
+ * @param category la categorie dans lequel il faut faire la recherche
+ * @param context le context dans lequel il faut aussi recherche en plus
+ * des formules sauvegardees en tant que model
+ * @return la liste des formules de la categorie
*/
static public List<Formule> getFormules(TopiaContext context, String category) {
List<Formule> result = new ArrayList<Formule>();
@@ -206,7 +207,7 @@
/**
* Retourne toutes les categories existantes dans les formules sauvegardées
*
- * @return TODO
+ * @return la liste des categories existant en tant que modele
*/
static public List<String> getCategories() {
List<String> result = new ArrayList<String>();
@@ -225,7 +226,7 @@
* Retourne le storage pour la regle demandée
*
* @param name le nom de la regle souhaitée
- * @param category TODO
+ * @param category la categorie de la regle
* @return Le storage pour la regle
*/
static public FormuleStorage getFormule(String category, String name) {
@@ -250,7 +251,7 @@
* @param name le nom de la formule
* @param extension le script de la formule
* @return Le storage pour la regle
- * @throws IOException TODO
+ * @throws IOException
*/
static public FormuleStorage createFormule(String category, String name, String extension) throws IOException {
String key = category + File.separator + name + extension;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -100,8 +100,8 @@
/**
* Retourne la classe de la rule compilé. Compile le fichier si besoin
*
- * @return TODO
- * @throws IsisFishException TODO
+ * @return la class representant la regle
+ * @throws IsisFishException
*/
public Class getCodeClass() throws IsisFishException {
String fqn = getFQN();
@@ -119,8 +119,8 @@
/**
* Retourne une nouvelle instance de la regle. Compile le fichier si besoin
*
- * @return TODO
- * @throws IsisFishException TODO
+ * @return une novuelle instance de la regle
+ * @throws IsisFishException
*/
public Object getNewInstance() throws IsisFishException {
Class clazz = getCodeClass();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -167,6 +167,9 @@
}
}
+ // FIXME supprimer cette methode car context jamais ferme, pour l'instant
+ // elle est utilise dans swixat, pour la recuperation des str et pop
+ // pour les parametres de lancement de simulation
/**
* Retourne le nom courant de la région
*
@@ -174,7 +177,6 @@
* @throws StorageException if db problem
*/
public FisheryRegion getFisheryRegion() throws StorageException {
- // FIXME voir si la methode est vraiment utilisée car le context n'est jamais fermé, ce qui est dérangeant
try {
TopiaContext tx = getStorage().beginTransaction();
FisheryRegion result = getFisheryRegion(tx);
@@ -423,8 +425,6 @@
tx.execute("DELETE " + Result.class.getName());
tx.commitTransaction();
- // FIXME le service topia de migration devrait se mettre en
- // route pour les veilles base apres le restore
tx.closeContext();
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -69,9 +69,9 @@
*
* Constructeur
*
- * @param rootSrc TODO
- * @param directory TODO
- * @param name TODO
+ * @param rootSrc le repertoire root de stockage
+ * @param directory le repertoire des scripts
+ * @param name le nom du script
*/
protected ScriptStorage(File rootSrc, File directory, String name) {
super(rootSrc, directory, name);
@@ -87,8 +87,8 @@
/**
* Retourne une nouvelle instance de la regle. Compile le fichier si besoin
*
- * @return TODO
- * @throws IsisFishException TODO
+ * @return une nouvelle instance
+ * @throws IsisFishException
*/
public Object getNewScriptInstance() throws IsisFishException {
return getNewInstance();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -197,6 +197,17 @@
}
return simulationControlFile;
}
+
+ /**
+ * Retourne le fichier de stockage du fichier de control de la simulation.
+ * Ce fichier conserve l'etat de la simulation, cela permet a un processus
+ * externe de connaitre l'etat d'une simulation distante
+ * @return
+ */
+ static protected File getSimulationControlFile(String id) {
+ File result = new File(getSimulationDirectory(id), "control");
+ return result;
+ }
/**
* Force la sauvegarde du fichier de control d'une simulation, ce fichier
@@ -220,20 +231,26 @@
/**
* Reli le fichier contenant les infos de SimulationControl, en excluant
* certain champs
+ * @param id l'identifiant de la simulation a
* @param control le control a mettre a jour en fonction de ce qui est lu
* @param exclude les champs a exclure
*/
- public void readControl(SimulationControl control, String ... exclude) {
+ static public void readControl(String id, SimulationControl control, String... exclude) {
try {
Properties prop = new Properties();
- File file = getSimulationControlFile();
- FileInputStream in = new FileInputStream(file);
- prop.load(in);
- in.close();
- for (String e : exclude) {
- prop.remove(e);
+ File file = getSimulationControlFile(id);
+ if (file.exists()) {
+ FileInputStream in = new FileInputStream(file);
+ try {
+ prop.load(in);
+ } finally {
+ in.close();
+ }
+ for (String e : exclude) {
+ prop.remove(e);
+ }
+ control.updateFromProperties(prop);
}
- control.updateFromProperties(prop);
} catch (Exception eee) {
log.warn("Can't read control", eee);
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/rule/Rule.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/rule/Rule.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/rule/Rule.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -66,7 +66,7 @@
/**
* Permet d'afficher a l'utilisateur une aide sur la regle.
* @return L'aide ou la description de la regle
- * @throws Exception TODO
+ * @throws Exception
*/
public String getDescription() throws Exception;
@@ -74,17 +74,17 @@
* Appelé au démarrage de la simulation, cette méthode permet d'initialiser
* des valeurs
* @param context La simulation pour lequel on utilise cette regle
- * @throws Exception TODO
+ * @throws Exception
*/
public void init(SimulationContext context) throws Exception;
/**
* La condition qui doit etre vrai pour faire les actions
* @param context La simulation pour lequel on utilise cette regle
+ * @param date la date courante
+ * @param metier le metier
* @return vrai si on souhaite que les actions soit faites
- * @throws Exception TODO
- * @param date TODO
- * @param metier TODO
+ * @throws Exception s'il y a une erreur, met fin a la simulation
*/
public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception;
@@ -92,9 +92,9 @@
* Si la condition est vrai alors cette action est executée avant le pas
* de temps de la simulation.
* @param context La simulation pour lequel on utilise cette regle
- * @param date TODO
- * @param metier TODO
- * @throws Exception TODO
+ * @param date la date courant
+ * @param metier le metier
+ * @throws Exception s'il y a une erreur, met fin a la simulation
*/
public void preAction(SimulationContext context, Date date, Metier metier) throws Exception;
@@ -102,9 +102,9 @@
* Si la condition est vrai alors cette action est executée apres le pas
* de temps de la simulation.
* @param context La simulation pour lequel on utilise cette regle
- * @param date TODO
- * @param metier TODO
- * @throws Exception TODO
+ * @param date la date courante
+ * @param metier le metier
+ * @throws Exception s'il y a une erreur, met fin a la simulation
*/
public void postAction(SimulationContext context, Date date, Metier metier) throws Exception;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -65,10 +65,17 @@
* @return Returns the number.
*/
public int getNumber() {
- return param.getAnalysePlanNumber();
+ return number;
}
/**
+ * must be call when new simulation is generated from plan
+ */
+ public void incNumber() {
+ number++;
+ }
+
+ /**
* @return Returns the param.
*/
public SimulationParameter getParam() {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -48,7 +48,6 @@
import org.apache.commons.lang.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.profiling.LutinTrace;
import org.codelutin.topia.TopiaContext;
import org.codelutin.topia.TopiaException;
import org.codelutin.topia.event.TopiaTransactionEvent;
@@ -339,9 +338,7 @@
String cache = Cache.printStatistiqueAndClear();
simulation.getInformation().setOptimizationUsage(cache);
}
-
- LutinTrace.printStatistiqueAndClear();
-
+
}
return result;
}
@@ -386,7 +383,7 @@
* @see org.codelutin.topia.event.TopiaTransactionListener#commit(org.codelutin.topia.event.TopiaTransactionEvent)
*/
public void commit(TopiaTransactionEvent event) {
- // TODO Auto-generated method stub
+ // rien a faire, car normalement toujours rollback en fin de mois
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -23,6 +23,7 @@
import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.types.Month;
import java.io.File;
import static org.codelutin.i18n.I18nf._;
@@ -150,7 +151,8 @@
try {
SimulationControl control = item.getControl();
String id = control.getId();
- if (control.isStopSimulationRequest()) {
+ if (control.isStopSimulationRequest() ||
+ (getParentJob() != null && getParentJob().getItem().getControl().isStopSimulationRequest())) {
log.info(_("Not start simulation %s because user ask stop", id));
return ;
}
@@ -187,6 +189,10 @@
control.setProgress(0);
control.setStarted(true);
+ int lastYear = param.getNumberOfYear();
+ int lastDate = lastYear * Month.NUMBER_OF_MONTH;
+ control.setProgressMax(lastDate);
+
File zip = item.getSimulationZip();
SimulationStorage simulation = launcher.simulate(simulationService, control, zip);
@@ -230,6 +236,8 @@
log.error(_("Can't do post action %s", action), eee);
}
}
+ // la simulation est termine on, avant la progress au dernier cran
+ control.setProgress(control.getProgress()+1);
}
} catch (Throwable eee) {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -63,6 +63,8 @@
try {
boolean result = false;
for (SimulationQueue child : childs) {
+ // il faut bien faire le remove sur chaque fils,
+ // donc le || result doit etre en dernier
result = child.remove(o) || result;
}
result = q.remove(o) || result;
@@ -101,7 +103,7 @@
public SimulationJob poll() {
SimulationJob result = super.poll();
if (result == null && parent != null) {
- result = parent.peek();
+ result = parent.poll();
}
return result;
}
@@ -113,7 +115,10 @@
SimulationJob result = null;
try {
try {
- while (q.size() == 0 && parent != null && null == parent.poll()) {
+ // on fait bien un poll, sur le pere, car on ne souhaite pas
+ // rester bloquer dessus
+ while (q.size() == 0 &&
+ (parent == null || null == (result = parent.poll()))) {
notEmpty.await();
}
} catch (InterruptedException ie) {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -231,7 +231,7 @@
if (jobs.add(job)) {
idJobs.add(job.getItem().getControl().getId());
for (SimulationServiceListener l : listeners) {
- l.simulationStart(job);
+ l.simulationStart(this, job);
}
}
}
@@ -253,7 +253,7 @@
// de plan
jobDones.add(job);
for (SimulationServiceListener l : listeners) {
- l.simulationStop(job);
+ l.simulationStop(this, job);
}
}
@@ -262,7 +262,9 @@
*/
public void clearJobDone() {
jobDones.clear();
- // FIXME prevoir quelque chose pour prevenir la console de queue
+ for (SimulationServiceListener l : listeners) {
+ l.clearJobDone(this);
+ }
}
/**
@@ -316,7 +318,8 @@
* @param param les parametres de la simulation
* @param priority la priorite de la simulation
*/
- public void submit(String id, SimulationParameter param, SimulatorLauncher launcher, int priority) {
+ 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, null);
@@ -347,6 +350,7 @@
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;
@@ -354,6 +358,7 @@
}
}
// dernier recours on ajoute a la queue sans launcher
+ log.info(_("Add to default queue"));
queue.add(job);
}
@@ -416,8 +421,8 @@
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 ?
+ // 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 ?
job.setLauncher(null);
resubmit(job);
}
@@ -440,8 +445,8 @@
protected String id;
protected SimulationControl control;
protected SimulationParameter param;
- protected int planNumber = 0;
-
+ protected int done = 0;
+
public PrepareSimulationJob(SimulationService simulationService,
SimulationJob job) {
this.simulationService = simulationService;
@@ -484,7 +489,8 @@
if (nextJob == null) {
// Prepration de la simulation a faire
// create next id simulation
- planNumber++;
+ planContext.incNumber();
+ int planNumber = planContext.getNumber();
if (planNumber > MAX_PLAN_SIMULATION) {
log.error(_("Analyse plan error, too many simulation for %s : %s", id, planNumber));
doNext = false;
@@ -510,8 +516,11 @@
doNext = result;
if (result) {
File zip = sim.createZip();
- SimulationItem item = new SimulationItem(control, param, zip);
+ SimulationControl childControl = new SimulationControl(simId);
+ SimulationParameter childParam = param.copy();
+ SimulationItem item = new SimulationItem(childControl, childParam, 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
@@ -541,13 +550,12 @@
}
public void finished(SimulationJob job, SimulationStorage sim) {
- doNext = true;
- boolean result = true;
+// doNext = true;
// appel de tous les plans pour modifier la simulation
for (AnalysePlan plan : sim.getParameter().getAnalysePlans()) {
try {
- result = plan.afterSimulation(planContext, sim);
+ 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",
@@ -555,7 +563,13 @@
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) {
@@ -563,6 +577,7 @@
// cela n'impacte pas les plan independant puisque toutes les
// simulation on deja ete generee
doNext = false;
+ simulationService.fireStopEvent(this.job);
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -31,14 +31,22 @@
/**
* Notifie start of simulation
+ * @param simService le simulation service qui a lance la simulation
* @param job job that responsable to simulation
*/
- public void simulationStart(SimulationJob job);
+ public void simulationStart(SimulationService simService, SimulationJob job);
/**
* Notifie end of simulation
+ * @param simService le simulation service qui a arrete la simulation
* @param job job that responsable to simulation
*/
- public void simulationStop(SimulationJob job);
+ public void simulationStop(SimulationService simService, SimulationJob job);
+ /**
+ * Previent que le simulation service a vide ca liste de simulation faites
+ * @param simService le simulation service dont la liste des jobs finis
+ * a ete vide
+ */
+ public void clearJobDone(SimulationService simService);
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -39,7 +39,8 @@
*
* <p>
* <b>ATTENTION</b> Cette classe doit supporter les acces concurrents car
- * plusieurs threads peuvent etre simultanement en train de faire de simulation
+ * plusieurs threads peuvent etre simultanement en train de faire des
+ * simulations
*
* @author poussin
* @version $Revision$
@@ -94,17 +95,15 @@
public void addJob(SimulationJob job) {
String id = job.getItem().getControl().getId();
- log.info("************* Try do add job " + id);
synchronized(jobs) {
- log.info("++++++++++Try do add job" + id);
if (!contains(job)) {
- log.info("----------Add job" + id);
jobs.add(job);
jobIds.put(id, job);
fireTableRowsInserted(jobs.size() - 1, jobs.size() - 1);
}
}
}
+
public void removeJob(SimulationJob job) {
synchronized(jobs) {
int index = jobs.indexOf(job);
@@ -115,6 +114,11 @@
}
}
+ public void clearJob() {
+ jobs.clear();
+ fireTableDataChanged();
+ }
+
public ArrayList<SimulationJob> getJobs() {
return jobs;
}
@@ -152,7 +156,7 @@
SimulationJob result = jobs.get(row);
return result;
}
-
+
public int getRowCount() {
int result = jobs.size();
return result;
@@ -188,12 +192,18 @@
case 1:
if (param.getUseAnalysePlan()) {
int number = param.getAnalysePlanNumber();
- result = number;
+ if (number >=0) {
+ result = number;
+ }
}
break;
case 2:
if (job.getLauncher() == null) {
- result = "not started";
+ if (param.getUseAnalysePlan()) {
+ result = _("Master plan");
+ } else {
+ result = _("not started");
+ }
} else {
result = job.getLauncher().toString();
}
@@ -240,14 +250,18 @@
model.setJobs(new ArrayList<SimulationJob>(simulationService.getJobDones()));
}
- public void simulationStart(SimulationJob job) {
+ public void simulationStart(SimulationService simService, SimulationJob job) {
// nothing to do
}
- public void simulationStop(SimulationJob job) {
+ public void simulationStop(SimulationService simService, SimulationJob job) {
model.addJob(job);
}
+ public void clearJobDone(SimulationService simService) {
+ model.clearJob();
+ }
+
}
class JobToDoListener implements AbstractJobListener, SimulationServiceListener {
@@ -270,21 +284,25 @@
}
}
- public void simulationStart(SimulationJob job) {
+ public void simulationStart(SimulationService simService, SimulationJob job) {
model.addJob(job);
job.getItem().getControl().addPropertyChangeListener(
model.controlListener);
}
- public void simulationStop(SimulationJob job) {
+ public void simulationStop(SimulationService simService, SimulationJob job) {
model.removeJob(job);
job.getItem().getControl().removePropertyChangeListener(
model.controlListener);
}
+
+ public void clearJobDone(SimulationService simService) {
+ // nothing to do
+ }
}
- class ControlListener implements PropertyChangeListener {
+ protected class ControlListener implements PropertyChangeListener {
protected SimulationService simulationService;
protected SimulationServiceTableModel model;
@@ -298,8 +316,8 @@
SimulationControl control = (SimulationControl)evt.getSource();
String id = control.getId();
synchronized(model.jobs) {
- SimulationJob jobs = model.jobIds.get(id);
- int index = model.getJobs().indexOf(id);
+ SimulationJob job = model.jobIds.get(id);
+ int index = model.getJobs().indexOf(job);
if (index >= 0) {
fireTableRowsUpdated(index, index);
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -24,6 +24,7 @@
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.BufferedInputStream;
import java.io.File;
import java.io.InputStream;
import java.rmi.RemoteException;
@@ -43,13 +44,21 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SubProcessSimulationLauncher.class);
- public SimulationStorage simulate(SimulationService simulationService, SimulationControl control, File simulationZip) throws RemoteException {
+ protected boolean finished = false;
+
+ @Override
+ public String toString() {
+ return "Sub process";
+ }
+
+ public SimulationStorage simulate(SimulationService simulationService,
+ SimulationControl control, File simulationZip) throws RemoteException {
String simulationId = control.getId();
SimulationStorage simulation = null;
try {
- simulation = SimulationStorage.importAndRenameZip(
- simulationZip, simulationId);
- simulation = subProcessSimulate(control, simulation);
+// simulation = SimulationStorage.importAndRenameZip(
+// simulationZip, simulationId);
+ simulation = subProcessSimulate(control, simulationZip);
} catch (Exception eee) {
log.error(_("Can't do simulation %s", simulationId), eee);
simulation.getInformation().setException(eee);
@@ -67,11 +76,11 @@
}
public SimulationStorage subProcessSimulate(SimulationControl control,
- SimulationStorage simulation) throws Exception {
+ File simulationZip) throws Exception {
String simulationId = control.getId();
// on ferme le SimulationStorage pour ne pas interferer avec le process
- simulation.closeStorage();
+// simulation.closeStorage();
String java = System.getProperty("java.home") +
File.separator + "bin" + File.separator + "java";
@@ -80,23 +89,26 @@
// prepare le process
ProcessBuilder processBuilder = new ProcessBuilder(
java, "-classpath", classpath,
- IsisFish.class.getName(),
- "--simulate", simulationId);
+ IsisFish.class.getName(), "--option", "launch.ui", "false",
+ "--simulateWithSimulation", simulationId, simulationZip.getAbsolutePath());
processBuilder.redirectErrorStream(true);
// demarrage du process
Process process = processBuilder.start();
+ log.info(_("SubProcess start: %s %s", process, processBuilder.command()));
if (control != null) {
// prepare de thread de surveillance du process si control n'est pas null
Thread monitor = new SimulationCheckpointExternalProcessThread(
- control, simulation, process);
+ control, simulationId, process);
monitor.start();
}
// on attend que la simulation soit fini
process.waitFor();
- return simulation;
+ finished = true;
+ SimulationStorage result = SimulationStorage.getSimulation(simulationId);
+ return result;
}
/**
@@ -113,15 +125,16 @@
* Logger for this class
*/
protected SimulationControl control = null;
- protected SimulationStorage simulation = null;
+ protected String simulationId = null;
protected Process process = null;
// on l'appel plutot out que in, car c le output du process lance
protected InputStream out = null;
public SimulationCheckpointExternalProcessThread(SimulationControl control,
- SimulationStorage simulation, Process process) {
+ String simulationId, Process process) {
+ log.info("Lancement du thread de surveillance des simulations externes");
this.control = control;
- this.simulation = simulation;
+ this.simulationId = simulationId;
this.process = process;
out = process.getInputStream();
@@ -131,13 +144,13 @@
public void run() {
int sleepTime = 2000;
int error = 0;
- while (true) {
+ while (!finished) {
try {
out.skip(out.available());
Thread.sleep(sleepTime);
// on ne lit pas le stop, car le stop ne peut-etre appeler
// que par l'utilisateur qui est de ce cote de la machine
- simulation.readControl(control, "stop");
+ SimulationStorage.readControl(simulationId, control, "stop");
if (control.isStopSimulationRequest()) {
// FIXME, un destroy du process est peut-etre un peu violent ?
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -7,8 +7,6 @@
package fr.ifremer.isisfish.ui.simulator;
import fr.ifremer.isisfish.logging.SimulationLoggerUtil;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import static org.codelutin.i18n.I18nf._;
import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
@@ -33,7 +31,8 @@
import org.jdesktop.beansbinding.ELProperty;
/**
- *
+ * Widget permettant d'afficher l'etat des simulations
+ *
* @author poussin
*/
public class Queue extends javax.swing.JPanel {
@@ -68,7 +67,7 @@
tableJobDones.setModel(modelJobDones);
}
- private void stopSimulation(java.awt.event.ActionEvent evt) {
+ protected void stopSimulation(java.awt.event.ActionEvent evt) {
int i = tableJobs.getSelectedRow();
if (i >= 0) {
SimulationJob job = modelJobs.getJob(i);
@@ -77,7 +76,7 @@
}
}
- private void viewLog(java.awt.event.ActionEvent evt) {
+ protected void viewLog(java.awt.event.ActionEvent evt) {
int i = tableJobs.getSelectedRow();
if (i >= 0) {
SimulationJob job = modelJobs.getJob(i);
@@ -90,7 +89,12 @@
}
}
- private void initComponents() {
+ protected void clearDoneJobs(java.awt.event.ActionEvent evt) {
+ SimulationService ss = SimulationService.getService();
+ ss.clearJobDone();
+ }
+
+ protected void initComponents() {
bindingGroup = new BindingGroup();
tableJobsScroll = new javax.swing.JScrollPane();
@@ -98,14 +102,15 @@
tableJobDonesScroll = new javax.swing.JScrollPane();
tableJobDones = new javax.swing.JTable();
autoLaunchButton = new javax.swing.JToggleButton();
- jButton1 = new javax.swing.JButton();
- jButton2 = new javax.swing.JButton();
+ stopSimuButton = new javax.swing.JButton();
+ showLogButton = new javax.swing.JButton();
+ clearDoneJobsButton = new javax.swing.JButton();
tableJobsScroll.setViewportView(tableJobs);
tableJobDonesScroll.setViewportView(tableJobDones);
- autoLaunchButton.setText("Auto Launch");
+ autoLaunchButton.setText(_("Auto Launch"));
Binding binding = Bindings.createAutoBinding(
AutoBinding.UpdateStrategy.READ_WRITE,
@@ -113,38 +118,46 @@
autoLaunchButton, BeanProperty.create("selected"));
bindingGroup.addBinding(binding);
- jButton1.setText("Stop simulation");
+ stopSimuButton.setText(_("Stop simulation"));
binding = Bindings.createAutoBinding(
AutoBinding.UpdateStrategy.READ,
tableJobs, ELProperty.create("${selectedElement != null}"),
- jButton1, BeanProperty.create("enabled"));
+ stopSimuButton, BeanProperty.create("enabled"));
binding.setSourceNullValue(false);
binding.setSourceUnreadableValue(false);
bindingGroup.addBinding(binding);
- jButton1.addActionListener(new java.awt.event.ActionListener() {
+ stopSimuButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
stopSimulation(evt);
}
});
- jButton2.setText("View log");
+ showLogButton.setText(_("View log"));
binding = Bindings.createAutoBinding(
AutoBinding.UpdateStrategy.READ,
tableJobDones, ELProperty.create("${selectedElement != null}"),
- jButton2, BeanProperty.create("enabled"));
+ showLogButton, BeanProperty.create("enabled"));
binding.setSourceNullValue(false);
binding.setSourceUnreadableValue(false);
bindingGroup.addBinding(binding);
- jButton2.addActionListener(new java.awt.event.ActionListener() {
+ showLogButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
viewLog(evt);
}
});
+ clearDoneJobsButton.setText(_("Clear done jobs"));
+
+ clearDoneJobsButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ clearDoneJobs(evt);
+ }
+ });
+
GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -156,9 +169,11 @@
.addGap(12, 12, 12)
.addComponent(autoLaunchButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jButton1)
+ .addComponent(stopSimuButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jButton2))
+ .addComponent(showLogButton)
+ .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(clearDoneJobsButton))
.addComponent(tableJobDonesScroll, GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
.addComponent(tableJobsScroll, GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
.addContainerGap())
@@ -173,8 +188,9 @@
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(autoLaunchButton)
- .addComponent(jButton1)
- .addComponent(jButton2))
+ .addComponent(stopSimuButton)
+ .addComponent(showLogButton)
+ .addComponent(clearDoneJobsButton))
.addContainerGap())
);
@@ -184,8 +200,9 @@
protected SimulationServiceTableModel modelJobs;
protected SimulationServiceTableModel modelJobDones;
protected javax.swing.JToggleButton autoLaunchButton;
- protected javax.swing.JButton jButton1;
- protected javax.swing.JButton jButton2;
+ protected javax.swing.JButton stopSimuButton;
+ protected javax.swing.JButton showLogButton;
+ protected javax.swing.JButton clearDoneJobsButton;
protected javax.swing.JTable tableJobDones;
protected javax.swing.JScrollPane tableJobDonesScroll;
protected javax.swing.JTable tableJobs;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-29 19:29:03 UTC (rev 1324)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-09-01 08:37:01 UTC (rev 1325)
@@ -258,7 +258,8 @@
*/
static public Object simulate(Context uiContext, AbstractFrame frame,
String simulId, SimulationParameter param,
- boolean inQueue, JTabbedPane tabs, SimulatorLauncher luncher) {
+ boolean inQueue, JTabbedPane tabs,
+ SimulatorLauncher launcher) {
log.debug("call simulate");
try {
uiContext.setData("SimulationLaunched", false);
@@ -272,7 +273,7 @@
} else {
SimulationParameter p = param.copy();
- SimulationService.getService().submit(simulId, p, luncher, 0);
+ SimulationService.getService().submit(simulId, p, launcher, 0);
selectTab(tabs, true, 6);
}
1
0
r1324 - trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
29 Aug '08
Author: sletellier
Date: 2008-08-29 19:29:03 +0000 (Fri, 29 Aug 2008)
New Revision: 1324
Modified:
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul.xml
Log:
Ajout d'un combobox pour choisir sont launcher
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xgl 2008-08-29 19:28:47 UTC (rev 1323)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xgl 2008-08-29 19:29:03 UTC (rev 1324)
@@ -50,6 +50,7 @@
<td fill="Both" colspan="3" width="50%">fieldSimulParamsOptions</td>
</tr>
<tr>
+ <td colspan="3">comboSelLauncher</td>
<td colspan="3">buttonSimulParamsSimulate</td>
<td colspan="3">buttonSimulParamsAddQueue</td>
</tr>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml 2008-08-29 19:28:47 UTC (rev 1323)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml 2008-08-29 19:29:03 UTC (rev 1324)
@@ -3,6 +3,7 @@
<panel id="simulParams" name="isisfish.params.title" constraints="simulParams" layout="XMLGridLayout(fr/ifremer/isisfish/ui/simulator/Params.xgl)">
<ContextDataSource id="RuleNames" context="current" source="RuleNames"/>
+ <ContextDataSource id="SimulationService" context="current" source="SimulationService"/>
<label constraints="labelSimulParamsSelect" text="isisfish.params.loadOldSimulation"/>
<panel constraints="panelSimulParamsSelectFilterActions">
@@ -141,9 +142,14 @@
actionCommand="update($fieldSimulOnlyExport/selected)"/>
</panel>
+ <combobox constraints="comboSelLauncher" id="comboSelLauncher"
+ firstNull="true">
+ <ComboBoxModel origin="getSimulationLaunchers(fr.ifremer.isisfish.simulator.launcher.SimulationService.getService())"/>
+ </combobox>
+
<button constraints="buttonSimulParamsSimulate" id="buttonSimulParamsSimulate"
text="isisfish.common.simulate"
- actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'false', $simulTabs)"/>
+ actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'false', $simulTabs, $comboSelLauncher/selectedItem)"/>
<!-- La queue n'existe plus
<button constraints="buttonSimulParamsAddQueue" id="buttonSimulParamsAddQueue"
text="isisfish.common.addQueue"
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul.xml 2008-08-29 19:28:47 UTC (rev 1323)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul.xml 2008-08-29 19:29:03 UTC (rev 1324)
@@ -11,6 +11,10 @@
onOpened="simulator.SimulatorAction.opened($simulTabs,$buttonSimulQueueStart,$buttonSimulQueueRemove,$buttonSimulQueueShowLog,$queueTable,$queueTableDone,$buttonSimulParamsAnalysePlansRemove,$listSimulParamsAnalysePlansList,$buttonSimulParamsMesuresRemove,$listSimulParamsMesuresList)"
-->
+<!-- Fixme : Modif Letellier 29/08/08
+$buttonSimulQueueStart, $buttonSimulQueueRemove, $buttonSimulQueueShowLog, $queueTable, $queueTableDone,
+-->
+
<ContextDataSource id="OldSimulationName" context="current" source="OldSimulationName"/>
<ContextDataSource id="SimulationFilterModel" context="current" source="SimulationFilterModel"/>
<ContextDataSource id="SimulationParameter" context="current" source="SimulationParameter"/>
1
0
r1323 - trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
29 Aug '08
Author: sletellier
Date: 2008-08-29 19:28:47 +0000 (Fri, 29 Aug 2008)
New Revision: 1323
Modified:
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xml
Log:
Ajout d'un combobox pour choisir sont launcher
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xml 2008-08-29 19:28:21 UTC (rev 1322)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xml 2008-08-29 19:28:47 UTC (rev 1323)
@@ -26,7 +26,7 @@
| Local/Remote choice
|
+-->
-
+<!--
<checkbox text="isisfish.advancedParams.localSimulation"
constraints="fieldSimulAdvParamsSimulatorLocal"
id="fieldSimulAdvParamsSimulatorLocal"
@@ -38,7 +38,7 @@
id="fieldSimulAdvParamsSimulatorSubProcess"
origin="$SimulationParameter/subProcess"
actionCommand="Update($fieldSimulAdvParamsSimulatorSubProcess/selected)"/>
-
+ -->
<!--
|
| Trace/Cache option
1
0
r1322 - trunk/isis-fish/src/java/fr/ifremer/isisfish/actions
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
29 Aug '08
Author: sletellier
Date: 2008-08-29 19:28:21 +0000 (Fri, 29 Aug 2008)
New Revision: 1322
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java
Log:
Ajout d'un combobox pour choisir sont launcher
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-08-29 19:28:09 UTC (rev 1321)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-08-29 19:28:21 UTC (rev 1322)
@@ -75,7 +75,8 @@
}
}
- SimulationService.getService().submit(simulId, params, 0);
+ SimulationService.getService().submit(simulId, params, null, 0);
+ SimulationService.getService().getSimulationLaunchers();
}
/**
1
0
r1321 - trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
29 Aug '08
Author: sletellier
Date: 2008-08-29 19:28:09 +0000 (Fri, 29 Aug 2008)
New Revision: 1321
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
Log:
Ajout d'un combobox pour choisir sont launcher
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-29 19:27:58 UTC (rev 1320)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-29 19:28:09 UTC (rev 1321)
@@ -169,6 +169,14 @@
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();
}
@@ -308,11 +316,12 @@
* @param param les parametres de la simulation
* @param priority la priorite de la simulation
*/
- public void submit(String id, SimulationParameter param, int priority) {
+ 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, null);
SimulationJob job = new SimulationJob(this, item, priority);
+ job.setLauncher(launcher);
fireStartEvent(job);
// on construit le zip de la simulation
@@ -558,26 +567,26 @@
}
/**
- * Prepare les fichiers qui seront utils à la simulation:
+ * Prepare les fichiers qui seront utils ᅵ la simulation:
* <li> scripts
* <li> rules
* <li> exports
* <li> simulators
* <li> export de la database de la region
* <p>
- * Le tout est zippé et le zip est retourné, il peut-être directement
- * importé dans le SimulationStorage (en le renomant comme il faut
+ * Le tout est zippᅵ et le zip est retournᅵ, il peut-ᅵtre directement
+ * importᅵ dans le SimulationStorage (en le renomant comme il faut
* importAndRenameZip).
* <p>
- * Ce zip est automatiquement supprimé a la fin de l'application.
+ * Ce zip est automatiquement supprimᅵ a la fin de l'application.
*
* @param control le controleur
* @param param les parametre de la simulation
* @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...)
+ * @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, boolean compile) throws SimulationException {
@@ -611,7 +620,7 @@
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
+ // 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"));
@@ -663,16 +672,16 @@
}
/**
- * Compile les fichiers présent dans le répertoire passé en
- * parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
- * et scripts. Seul les fichiers des 3 premiers répertoire sont compilé
- * les fichiers du dernier sont compilé par les dépendances qu'on les autres
+ * Compile les fichiers prᅵsent dans le rᅵpertoire passᅵ en
+ * parametre, ce rᅵpertoire est hiᅵrarchisᅵ en: rules, exports, simulators
+ * et scripts. Seul les fichiers des 3 premiers rᅵpertoire sont compilᅵ
+ * 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
+ * @param directory le rᅵpertoire oᅵ compiler
*/
protected void compileAllFile(SimulationControl control, File directory) {
@@ -681,9 +690,9 @@
//
// 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é
+ // 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>();
1
0
r1320 - trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
by sletellier@users.labs.libre-entreprise.org 29 Aug '08
29 Aug '08
Author: sletellier
Date: 2008-08-29 19:27:58 +0000 (Fri, 29 Aug 2008)
New Revision: 1320
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
Log:
Ajout d'un combobox pour choisir sont launcher
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2008-08-29 19:27:25 UTC (rev 1319)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2008-08-29 19:27:58 UTC (rev 1320)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2006 Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2006 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
@@ -89,7 +89,7 @@
/** nom de la region sur lequel on simule */
protected String regionName = "";
- /** nombre d'année sur lequel on souhaite simuler */
+ /** nombre d'annᅵe sur lequel on souhaite simuler */
protected int numberOfYear = 1;
/** le nom de l'objet script a utiliser pour faire la simulation */
@@ -107,13 +107,13 @@
/** la liste des populations a utiliser pour la simulation */
protected List<Population> populations = new ArrayList<Population>();
- /** les effectifs initiaux des différentes population */
+ /** les effectifs initiaux des diffᅵrentes population */
protected Map<Population, MatrixND> numbers = new HashMap<Population, MatrixND>();
/** la liste des regles de gestions a utiliser pour la simulation */
protected List<Rule> rules = new ArrayList<Rule>();
- /** la liste des regles potentiellement ajoutée par les plans d'analyse */
+ /** la liste des regles potentiellement ajoutᅵe par les plans d'analyse */
protected List<String> extraRules = new ArrayList<String>();
/** la liste des plans a utiliser pour la simulation */
@@ -137,7 +137,7 @@
protected String analysePlan = "";
/** le numero de sequence de la liste des plans d'analyse, le premier
- * élement du plan doit etre 0. Si la simulation ne fait pas partie d'un
+ * ᅵlement du plan doit etre 0. Si la simulation ne fait pas partie d'un
* plan la valeur est -1 */
protected int analysePlanNumber = -1;
@@ -149,21 +149,21 @@
/**
* si vrai seul les exports automatiques ne sont souhaiter, la simulation
- * pourrait etre supprimée a la fin
+ * pourrait etre supprimᅵe a la fin
*/
protected boolean onlyExport = false;
transient protected RegionStorage region = null;
- /** le niveau de log du simulateur à utiliser pendant la simulation , par default info */
+ /** le niveau de log du simulateur ᅵ utiliser pendant la simulation , par default info */
protected String simulLogLevel = "info";
- /** le niveau de log des scripts à utiliser pendant la simulation , par default info */
+ /** le niveau de log des scripts ᅵ utiliser pendant la simulation , par default info */
protected String scriptLogLevel = "info";
- /** le niveau de log des librairies à utiliser pendant la simulation , par default info */
+ /** le niveau de log des librairies ᅵ utiliser pendant la simulation , par default info */
protected String libLogLevel = "error";
/**
* Permet de verifier que tous les parametres sont bon. Si ce n'est pas le
- * cas la liste retournée contient la liste des messages d'erreur.
+ * cas la liste retournᅵe contient la liste des messages d'erreur.
*
* @return
*/
@@ -873,7 +873,7 @@
public String getExportDirectory() {
return this.exportDirectory;
}
-
+
/**
* @param exportDirectory The exportDirectory to set.
*/
1
0