Isis-fish-commits
Threads by month
- ----- 2026 -----
- August
- July
- 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
August 2008
- 4 participants
- 45 discussions
r1324 - trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
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 Aug. 29, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
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 Aug. 29, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
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 Aug. 29, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
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 Aug. 29, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
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
r1319 - trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
Author: sletellier
Date: 2008-08-29 19:27:25 +0000 (Fri, 29 Aug 2008)
New Revision: 1319
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
Log:
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 18:03:29 UTC (rev 1318)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-29 19:27:25 UTC (rev 1319)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -45,6 +45,7 @@
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationProperties;
import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher;
import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil;
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import org.apache.commons.logging.Log;
@@ -257,7 +258,7 @@
*/
static public Object simulate(Context uiContext, AbstractFrame frame,
String simulId, SimulationParameter param,
- boolean inQueue, JTabbedPane tabs) {
+ boolean inQueue, JTabbedPane tabs, SimulatorLauncher luncher) {
log.debug("call simulate");
try {
uiContext.setData("SimulationLaunched", false);
@@ -271,7 +272,7 @@
} else {
SimulationParameter p = param.copy();
- SimulationService.getService().submit(simulId, p, 0);
+ SimulationService.getService().submit(simulId, p, luncher, 0);
selectTab(tabs, true, 6);
}
1
0
r1318 - trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui
by chatellier@users.labs.libre-entreprise.org Aug. 29, 2008
by chatellier@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
Author: chatellier
Date: 2008-08-29 18:03:29 +0000 (Fri, 29 Aug 2008)
New Revision: 1318
Modified:
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
Log:
Remove unsed class
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-29 17:39:49 UTC (rev 1317)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-29 18:03:29 UTC (rev 1318)
@@ -90,8 +90,6 @@
<entry key="JEditTextArea"><value>javax.swing.JTextArea</value></entry>
<!-- other -->
<entry key="StrategyMonthPanel"><value>javax.swing.JTextField</value></entry>
- <entry key="SimulationQueueModel"><value>fr.ifremer.isisfish.simulator.SimulationQueueModel</value></entry>
- <entry key="SimulationDoneQueueModel"><value>fr.ifremer.isisfish.simulator.SimulationDoneQueueModel</value></entry>
<entry key="OpenMapToolSet"><value>com.bbn.openmap.gui.OMToolSet</value></entry>
<entry key="OpenMap"><value>fr.ifremer.isisfish.map.IsisMapBean</value></entry>
<entry key="StatusBar"><value>org.codelutin.widget.StatusBar</value></entry>
1
0
r1317 - in trunk/isis-fish/src: resources/images site/fr/rst/v3/devel/images
by bpoussin@users.labs.libre-entreprise.org Aug. 29, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
Author: bpoussin
Date: 2008-08-29 17:39:49 +0000 (Fri, 29 Aug 2008)
New Revision: 1317
Added:
trunk/isis-fish/src/resources/images/stock_connect.png
trunk/isis-fish/src/resources/images/stock_disconnect.png
Modified:
trunk/isis-fish/src/site/fr/rst/v3/devel/images/IsisFishModel.png
Log:
ajout des images de connexaion au serveur
Added: trunk/isis-fish/src/resources/images/stock_connect.png
===================================================================
(Binary files differ)
Property changes on: trunk/isis-fish/src/resources/images/stock_connect.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/isis-fish/src/resources/images/stock_disconnect.png
===================================================================
(Binary files differ)
Property changes on: trunk/isis-fish/src/resources/images/stock_disconnect.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/isis-fish/src/site/fr/rst/v3/devel/images/IsisFishModel.png
===================================================================
(Binary files differ)
1
0
r1316 - in trunk/isis-fish/src: java/fr/ifremer/isisfish/simulator uimodel/fr/ifremer/isisfish/ui uimodel/fr/ifremer/isisfish/ui/simulator
by bpoussin@users.labs.libre-entreprise.org Aug. 29, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
Author: bpoussin
Date: 2008-08-29 17:38:51 +0000 (Fri, 29 Aug 2008)
New Revision: 1316
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java
Removed:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml
Modified:
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul.xml
Log:
modif pour que la queue s'aaffiche convenablement
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2008-08-29 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2008-08-29 17:38:51 UTC (rev 1316)
@@ -1,365 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * PopulationMonitor.java
- *
- * Created: 21 août 2006 15:41:18
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.keyvalue.MultiKey;
-import org.apache.commons.collections.map.MultiKeyMap;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixFactory;
-import org.codelutin.math.matrix.MatrixIterator;
-import org.codelutin.math.matrix.MatrixND;
-
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.entities.PopulationGroup;
-import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
-import fr.ifremer.isisfish.entities.Species;
-import fr.ifremer.isisfish.entities.Zone;
-import fr.ifremer.isisfish.types.Date;
-import fr.ifremer.isisfish.types.Month;
-
-
-/**
- *
- * @author poussin
- */
-public class PopulationMonitor {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(PopulationMonitor.class);
-
- /** current number of fish by Pop */
- protected Map<Population, MatrixND> Ns = new HashMap<Population, MatrixND>();
- /** reproduction key: <date, pop> value:<MatrixND> */
- protected MultiKeyMap reproductions = new MultiKeyMap();
- /** discard key: <date, pop> value:<MatrixND> */
- protected MultiKeyMap discards = new MultiKeyMap();
- /** catch per population, only last catch is remaining */
- protected Map<Population, MatrixND> catchs = new HashMap<Population, MatrixND>();
- /** catch per population, only last catch is remaining */
- protected Map<Population, MatrixND> holdCatchs = new HashMap<Population, MatrixND>();
- protected double totalHoldCatch = 0;
-
- /**
- * Return all population actualy in PopulationMonitor
- * @return new list of Population
- */
- public List<Population> getPopulations() {
- ArrayList<Population> result = new ArrayList<Population>(Ns.keySet());
- return result;
- }
-
- /**
- * Return current biomass for species
- * @param species
- * @return
- */
- public double getBiomass(Species species) {
- double result = 0;
-
- for (Population pop : species.getPopulation()) {
- result += getBiomass(pop);
- }
-
- return result;
- }
-
- /**
- * Return current biomass for population
- * @param pop
- * @return
- */
- public double getBiomass(Population pop) {
- double result = 0;
-
- MatrixND n = getN(pop);
- if (n != null) {
- n = n.sumOverDim(1);
- for (MatrixIterator i=n.iterator(); i.next();){
- Object [] coord = i.getSemanticsCoordinates();
- PopulationGroup group = (PopulationGroup)coord[0];
- result += i.getValue() * group.getMeanWeight();
- }
- }
-
- return result;
- }
-
- /**
- * Return current numbers for population
- * @param pop
- * @return
- */
- public MatrixND getN(Population pop) {
- MatrixND result = Ns.get(pop);
-
- if (result != null) {
- // change semantics with list from argument to ensure that
- // semantics don't used too old context
- result.setSemantics(0, pop.getPopulationGroup());
- result.setSemantics(1, pop.getPopulationZone());
- }
-
- return result;
- }
-
- public void setN(Population pop, MatrixND mat) {
- Ns.put(pop, mat);
- }
-
- /**
- * @return Returns the reproduction.
- */
- public MatrixND getReproduction(Date date, Population pop) {
- return (MatrixND)this.reproductions.get(date, pop);
- }
-
- /**
- * @param reproduction The reproduction to set.
- */
- public void setReproduction(Date date, Population pop, MatrixND repro) {
- this.reproductions.put(date, pop, repro);
- }
-
- /**
- * Applique de la mortalite naturelle aux poissons qui sont pas encore
- * dans les classes de populations. (Reproduction)
- * @param pop
- */
- public void applyReproductionMortality(Population pop) {
- for (MapIterator i=reproductions.mapIterator(); i.hasNext();) {
- i.next();
- MultiKey key = (MultiKey)i.getKey();
- if (pop.equals(key.getKey(1))) {
- MatrixND reproduction = (MatrixND)i.getValue();
- if (log.isTraceEnabled()) {
- log.trace("Matrix repro before mortality: " + reproduction);
- }
- for(MatrixIterator mi=reproduction.iterator(); mi.next();){
- Object[] sems = mi.getSemanticsCoordinates();
- Zone z = (Zone)sems[0];
- double coeff = pop.getNaturalDeathBirth(z);
- if (log.isTraceEnabled()) {
- log.trace("NaturalDeath zone " + z + "=" + coeff);
- }
- mi.setValue(mi.getValue() * Math.exp(-coeff/Month.NUMBER_OF_MONTH));
- }
- if (log.isTraceEnabled()) {
- log.trace("Matrix repro after mortality: " + reproduction);
- }
- }
- }
- }
-
- /**
- * @todo les reproductions qui sont trop veille pour encore servir
- * doivent être supprimées. c-a-d date < currentDate - etalement - gap between repro recru
- * Une autre facon de faire est de supprimer les repro == 0 car normalement
- * toute la repro doit etre utilisé au bout d'un certain temps
- *
- * @param date
- * @param pop
- * @return
- */
- public MatrixND getRecruitment(Date date, Population pop) {
- MatrixND matEtalement = pop.getRecruitmentDistribution();
- int etalement = matEtalement.getDim(0);
-
- MatrixND result = MatrixFactory.getInstance().create(
- new List[]{pop.getPopulationGroup(), pop.getPopulationZone()});
-
- // pour chaque
- for(int e=0; e<etalement; e++){
- // recuperation de la reproduction stucture en zone repro
- Date d = new Date(date.getDate() - e -
- pop.getMonthGapBetweenReproRecrutement());
- MatrixND repro = (MatrixND)reproductions.get(d, pop);
-
- if(repro != null){ // si une repro existe pour le mois
-
- // on fait la correspondance entre les zones repro et
- // recrutement
-
- PopulationGroup classe;
- int indiceClasse = 0;
- // si on a change d'annee le recrutement ne se fait pas en
- // classe 0 mais en classe 1, si on a change 2 fois d'annee
- // le recrutement se fait en age 2, etc.
- classe = pop.getPopulationGroup().get(indiceClasse);
-
- List<Zone> zoneRepros = pop.getReproductionZone();
-
- // on multiplie la repro par le coeff de recrutement
- double coeff = matEtalement.getValue(e);
-
- MatrixND matRepro = repro.copy();
- matRepro = matRepro.mults(coeff);
-
- matRepro.setSemantics(0, zoneRepros);
-
- MatrixND mapping = pop.getMappingZoneReproZoneRecru();
- for(Zone zoneRepro : zoneRepros){
- MatrixND submapping = mapping.getSubMatrix(0, new Object[]{zoneRepro});
- for (MatrixIterator i=submapping.iterator(); i.hasNext();) {
- i.next();
- Object[] sem = i.getSemanticsCoordinates();
- Zone zoneRecru = (Zone)sem[1];
- double c = i.getValue();
- result.setValue(classe, zoneRecru, c*matRepro.getValue(zoneRepro)
- +result.getValue(classe, zoneRecru));
- }
- }
- }
- }
-
- if(pop.getSpecies().getAgeGroupType()){
- // conversion et retour de la matrice en vecteur
- MatrixND N = pop.N2DToN1D(result);
- // on applique les migrations et le changement d'age sur le resultat
- // on suppose que la reproduction est toujours dans une seul saison
- Date dateRepro = new Date(date.getDate() -
- pop.getMonthGapBetweenReproRecrutement());
-
- // recherche les saisons des differents mois entre les deux dates
- List<PopulationSeasonInfo> infos = pop.getPopulationSeasonInfo();
- List<PopulationSeasonInfo> usedSeasons = new ArrayList<PopulationSeasonInfo>();
-
- while (date.after(dateRepro)) {
- dateRepro = dateRepro.next();
- Month month = dateRepro.getMonth();
- for (PopulationSeasonInfo info : infos) {
- if (month.equals(info.getFirstMonth())) {
- usedSeasons.add(info);
- dateRepro = new Date(dateRepro.getDate() + info.getMonths().size() - 1); // -1 because, for have next()
- break;
- }
- }
- }
-
- for(PopulationSeasonInfo info : usedSeasons){
- Month month = info.getFirstMonth();
- MatrixND CA = info.getGroupChangeMatrix(month);
- MatrixND MI = info.getMigrationMatrix(month, result);
- MatrixND tmp0 = N.mult(CA);
- MatrixND tmp2 = tmp0.mult(MI);
- N = tmp2;
- }
- result = pop.split2D(N);
- }
- return result;
- }
-
- /**
- * @param catchPerStrategyMet
- */
- public void holdCatch(Population pop, MatrixND catchPerStrategyMet) {
- catchs.put(pop, catchPerStrategyMet);
-
- MatrixND holdCatch = holdCatchs.get(pop);
- if (holdCatch == null) {
- holdCatch = MatrixFactory.getInstance().create(catchPerStrategyMet);
- holdCatchs.put(pop, holdCatch);
- } else {
- holdCatch.add(catchPerStrategyMet);
- }
-
- // compute total
- for(MatrixIterator i=catchPerStrategyMet.iterator(); i.next();){
- this.totalHoldCatch += i.getValue();
- }
-
- }
-
- /**
- * @param pop
- * @return
- */
- public MatrixND getCatch(Population pop) {
- MatrixND result = catchs.get(pop);
- return result;
- }
-
- /**
- * @param pop
- * @return
- */
- public MatrixND getHoldCatch(Population pop) {
- MatrixND result = holdCatchs.get(pop);
- return result;
- }
-
- /**
- * @param pop
- * @return
- */
- public double getTotalHoldCatch(Population pop) {
- double result = totalHoldCatch;
- return result;
- }
-
- /**
- * raz capture cumulée de toutes les pops
- */
- public void clearCatch() {
- catchs.clear();
- holdCatchs.clear();
- totalHoldCatch = 0;
- }
-
- /**
- * @param date
- * @param pop
- * @return
- */
- public MatrixND getDiscard(Date date, Population pop) {
- MatrixND result = (MatrixND)discards.get(date, pop);
- return result;
- }
-
- public void addDiscard(Date date, Population pop, MatrixND discard) {
- MatrixND tmp = (MatrixND)discards.get(date, pop);
- if (tmp == null) {
- tmp = discard.copy();
- discards.put(date, pop, tmp);
- } else {
- tmp.add(discard);
- }
- }
-}
-
-
Copied: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java (from rev 1300, branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java)
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2008-08-29 17:38:51 UTC (rev 1316)
@@ -0,0 +1,399 @@
+/* *##%
+ * Copyright (C) 2006
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.
+ *##%*/
+
+/* *
+ * PopulationMonitor.java
+ *
+ * Created: 21 août 2006 15:41:18
+ *
+ * @author poussin
+ * @version $Revision: 428 $
+ *
+ * Last update: $Date: 2007-10-15 14:56:13 +0200 (lun, 15 oct 2007) $
+ * by : $Author: bpoussin $
+ */
+
+package fr.ifremer.isisfish.simulator;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.PopulationGroup;
+import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
+import fr.ifremer.isisfish.entities.Species;
+import fr.ifremer.isisfish.entities.Zone;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.types.Month;
+import java.util.Collections;
+
+
+/**
+ * Classe permettant le suivi des populations de la simulation.
+ * <p>
+ * Cette classe est normalement multi-thread safe
+ * <p>
+ * FIXME: certain calcul sont les memes que ceux implanter dans les scripts
+ * a cause du groupe des juveniles qui n'est pas un vrai groupe de population.
+ * Il serait bon que ce groupe deviennent un vrai groupe et que ce code specifique
+ * puisse etre supprimer.
+ *
+ *
+ * @author poussin
+ */
+public class PopulationMonitor {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(PopulationMonitor.class);
+
+ /** La liste des pops monitorer par cette instance */
+ protected List<Population> pops = null;
+ /** current number of fish by Pop */
+ protected Map<Population, MatrixND> Ns = new HashMap<Population, MatrixND>();
+ /** reproduction key: <date, pop> value:<MatrixND> */
+ protected Map<Population, Map<Date, MatrixND>> reproductions = new HashMap<Population, Map<Date, MatrixND>>();
+ /** discard key: <date, pop> value:<MatrixND> */
+ protected Map<Population, Map<Date, MatrixND>> discards = new HashMap<Population, Map<Date, MatrixND>>();
+ /** catch per population, only last catch is remaining */
+ protected Map<Population, MatrixND> catchs = new HashMap<Population, MatrixND>();
+ /** catch per population, only last catch is remaining */
+ protected Map<Population, MatrixND> holdCatchs = new HashMap<Population, MatrixND>();
+ protected double totalHoldCatch = 0;
+
+ /**
+ * Initialise le monitor pour l'ensemble de pop passe en parametre.
+ * Normalement cet init est fait dans le thread principale de la simulation
+ * et il n'y a pas de besoin de le synchroniser.
+ *
+ * Cet init permet d'avoir ensuite le maxime de variable en lecture, et donc
+ * de permettre le multithreading de facon legere (pas de synchronise) et
+ * sur (pas de concurent modification exception)
+ *
+ * @param pops
+ */
+ public void init(List<Population> pops) {
+ this.pops = Collections.unmodifiableList(new ArrayList<Population>(pops));
+ for (Population pop : this.pops) {
+ reproductions.put(pop, new HashMap<Date, MatrixND>());
+ discards.put(pop, new HashMap<Date, MatrixND>());
+ }
+ }
+
+ /**
+ * Return all population actualy in PopulationMonitor
+ * @return new list of Population
+ */
+ public List<Population> getPopulations() {
+ return pops;
+ }
+
+ /**
+ * Return current biomass for species
+ * @param species
+ * @return
+ */
+ public double getBiomass(Species species) {
+ double result = 0;
+
+ for (Population pop : species.getPopulation()) {
+ result += getBiomass(pop);
+ }
+
+ return result;
+ }
+
+ /**
+ * Return current biomass for population
+ * @param pop
+ * @return
+ */
+ public double getBiomass(Population pop) {
+ double result = 0;
+
+ MatrixND n = getN(pop);
+ if (n != null) {
+ n = n.sumOverDim(1);
+ for (MatrixIterator i=n.iterator(); i.next();){
+ Object [] coord = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup)coord[0];
+ result += i.getValue() * group.getMeanWeight();
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Return current numbers for population
+ * @param pop
+ * @return
+ */
+ public MatrixND getN(Population pop) {
+ MatrixND result = Ns.get(pop);
+
+ if (result != null) {
+ // change semantics with list from argument to ensure that
+ // semantics don't used too old context
+ result.setSemantics(0, pop.getPopulationGroup());
+ result.setSemantics(1, pop.getPopulationZone());
+ }
+
+ return result;
+ }
+
+ public void setN(Population pop, MatrixND mat) {
+ Ns.put(pop, mat);
+ }
+
+ /**
+ * @return Returns the reproduction.
+ */
+ public MatrixND getReproduction(Date date, Population pop) {
+ return this.reproductions.get(pop).get(date);
+ }
+
+ /**
+ * @param reproduction The reproduction to set.
+ */
+ public void setReproduction(Date date, Population pop, MatrixND repro) {
+ reproductions.get(pop).put(date, repro);
+ }
+
+ /**
+ * Applique de la mortalite naturelle aux poissons qui sont pas encore
+ * dans les classes de populations. (Reproduction)
+ * @param pop
+ */
+ public void applyReproductionMortality(Population pop) {
+ for (MatrixND reproduction : reproductions.get(pop).values()) {
+ if (log.isTraceEnabled()) {
+ log.trace("Matrix repro before mortality: " + reproduction);
+ }
+
+ for (MatrixIterator mi = reproduction.iterator(); mi.next();) {
+ Object[] sems = mi.getSemanticsCoordinates();
+ Zone z = (Zone) sems[0];
+ double coeff = pop.getNaturalDeathBirth(z);
+ if (log.isTraceEnabled()) {
+ log.trace("NaturalDeath zone " + z + "=" + coeff);
+ }
+ mi.setValue(mi.getValue() * Math.exp(-coeff / Month.NUMBER_OF_MONTH));
+ }
+ if (log.isTraceEnabled()) {
+ log.trace("Matrix repro after mortality: " + reproduction);
+ }
+ }
+ }
+
+ /**
+ * @todo les reproductions qui sont trop veille pour encore servir
+ * doivent être supprimées. c-a-d date < currentDate - etalement - gap between repro recru
+ * Une autre facon de faire est de supprimer les repro == 0 car normalement
+ * toute la repro doit etre utilisé au bout d'un certain temps
+ *
+ * @param date
+ * @param pop
+ * @return
+ */
+ public MatrixND getRecruitment(Date date, Population pop) {
+ MatrixND matEtalement = pop.getRecruitmentDistribution();
+ int etalement = matEtalement.getDim(0);
+
+ MatrixND result = MatrixFactory.getInstance().create(
+ new List[]{pop.getPopulationGroup(), pop.getPopulationZone()});
+
+ // pour chaque
+ for(int e=0; e<etalement; e++){
+ // recuperation de la reproduction stucture en zone repro
+ Date d = new Date(date.getDate() - e -
+ pop.getMonthGapBetweenReproRecrutement());
+ MatrixND repro = (MatrixND)reproductions.get(pop).get(d);
+
+ if(repro != null){ // si une repro existe pour le mois
+
+ // on fait la correspondance entre les zones repro et
+ // recrutement
+
+ PopulationGroup classe;
+ int indiceClasse = 0;
+ // si on a change d'annee le recrutement ne se fait pas en
+ // classe 0 mais en classe 1, si on a change 2 fois d'annee
+ // le recrutement se fait en age 2, etc.
+ classe = pop.getPopulationGroup().get(indiceClasse);
+
+ List<Zone> zoneRepros = pop.getReproductionZone();
+
+ // on multiplie la repro par le coeff de recrutement
+ double coeff = matEtalement.getValue(e);
+
+ MatrixND matRepro = repro.copy();
+ matRepro = matRepro.mults(coeff);
+
+ matRepro.setSemantics(0, zoneRepros);
+
+ MatrixND mapping = pop.getMappingZoneReproZoneRecru();
+ for(Zone zoneRepro : zoneRepros){
+ MatrixND submapping = mapping.getSubMatrix(0, new Object[]{zoneRepro});
+ for (MatrixIterator i=submapping.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sem = i.getSemanticsCoordinates();
+ Zone zoneRecru = (Zone)sem[1];
+ double c = i.getValue();
+ result.setValue(classe, zoneRecru, c*matRepro.getValue(zoneRepro)
+ +result.getValue(classe, zoneRecru));
+ }
+ }
+ }
+ }
+
+ if(pop.getSpecies().getAgeGroupType()){
+ // conversion et retour de la matrice en vecteur
+ MatrixND N = pop.N2DToN1D(result);
+ // on applique les migrations et le changement d'age sur le resultat
+ // on suppose que la reproduction est toujours dans une seul saison
+ Date dateRepro = new Date(date.getDate() -
+ pop.getMonthGapBetweenReproRecrutement());
+
+ // recherche les saisons des differents mois entre les deux dates
+ List<PopulationSeasonInfo> infos = pop.getPopulationSeasonInfo();
+ List<PopulationSeasonInfo> usedSeasons = new ArrayList<PopulationSeasonInfo>();
+
+ while (date.after(dateRepro)) {
+ dateRepro = dateRepro.next();
+ Month month = dateRepro.getMonth();
+ for (PopulationSeasonInfo info : infos) {
+ if (month.equals(info.getFirstMonth())) {
+ usedSeasons.add(info);
+ dateRepro = new Date(dateRepro.getDate() + info.getMonths().size() - 1); // -1 because, for have next()
+ break;
+ }
+ }
+ }
+
+ for(PopulationSeasonInfo info : usedSeasons){
+ Month month = info.getFirstMonth();
+ MatrixND CA = info.getGroupChangeMatrix(month);
+ MatrixND MI = info.getMigrationMatrix(month, result);
+ MatrixND tmp0 = N.mult(CA);
+ MatrixND tmp2 = tmp0.mult(MI);
+ N = tmp2;
+ }
+ result = pop.split2D(N);
+ }
+ return result;
+ }
+
+ /**
+ * @param catchPerStrategyMet
+ */
+ public void holdCatch(Population pop, MatrixND catchPerStrategyMet) {
+ catchs.put(pop, catchPerStrategyMet);
+
+ MatrixND holdCatch = holdCatchs.get(pop);
+ if (holdCatch == null) {
+ holdCatch = MatrixFactory.getInstance().create(catchPerStrategyMet);
+ holdCatchs.put(pop, holdCatch);
+ } else {
+ holdCatch.add(catchPerStrategyMet);
+ }
+
+ // compute total
+ for(MatrixIterator i=catchPerStrategyMet.iterator(); i.next();){
+ this.totalHoldCatch += i.getValue();
+ }
+
+ }
+
+ /**
+ * @param pop
+ * @return
+ */
+ public MatrixND getCatch(Population pop) {
+ MatrixND result = catchs.get(pop);
+ return result;
+ }
+
+ /**
+ * @param pop
+ * @return
+ */
+ public MatrixND getHoldCatch(Population pop) {
+ MatrixND result = holdCatchs.get(pop);
+ return result;
+ }
+
+ /**
+ * @param pop
+ * @return
+ */
+ public double getTotalHoldCatch(Population pop) {
+ double result = totalHoldCatch;
+ return result;
+ }
+
+ /**
+ * raz capture cumulée de toutes les pops
+ */
+ public void clearCatch() {
+ catchs.clear();
+ holdCatchs.clear();
+ totalHoldCatch = 0;
+ }
+
+ /**
+ * @param date
+ * @param pop
+ * @return
+ */
+ public MatrixND getDiscard(Date date, Population pop) {
+ MatrixND result = discards.get(pop).get(date);
+ return result;
+ }
+
+ /**
+ * FIXME: discards n'est jamais vider, on le conserve pour toutes les annees
+ * il serait bon de faire un peu le menage de temps en temps.
+ *
+ * @param date
+ * @param pop
+ * @param discard
+ */
+ public void addDiscard(Date date, Population pop, MatrixND discard) {
+ Map<Date, MatrixND> oneDiscard = discards.get(pop);
+ synchronized(oneDiscard) {
+ MatrixND tmp = oneDiscard.get(date);
+ if (tmp == null) {
+ tmp = discard.copy();
+ discards.get(pop).put(date, tmp);
+ } else {
+ tmp.add(discard);
+ }
+ }
+ }
+}
+
+
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xgl 2008-08-29 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xgl 2008-08-29 17:38:51 UTC (rev 1316)
@@ -5,6 +5,7 @@
<td fill="Both" width="100%">labelStatus</td>
<td fill="Both" width="5%">stopCommand</td>
<td fill="Both" width="5%">memoryStatus</td>
+ <td fill="Both" width="5%">vcs</td>
</tr>
</table>
</layout>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xml 2008-08-29 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/StatusBar.xml 2008-08-29 17:38:51 UTC (rev 1316)
@@ -1,4 +1,5 @@
-<panel border="LoweredBevelBorder" layout="XMLGridLayout(fr/ifremer/isisfish/ui/StatusBar.xgl)">
+<panel border="LoweredBevelBorder"
+ layout="XMLGridLayout(fr/ifremer/isisfish/ui/StatusBar.xgl)">
<ActionMonitor postThreadCommand="xpath:setVisible($stopCommand, 'false')"
progressStartTime="5" messageTime="7"
@@ -14,4 +15,6 @@
<MemoryStatus constraints="memoryStatus"/>
+ <VCSConnectionState constraints="vcs"/>
+
</panel>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-29 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-29 17:38:51 UTC (rev 1316)
@@ -66,6 +66,7 @@
<map>
<!-- Les composants ajoutés pour isis -->
<!-- panel -->
+ <entry key="VCSConnectionState"><value>fr.ifremer.isisfish.ui.widget.VCSConnectionState</value></entry>
<entry key="Queue"><value>fr.ifremer.isisfish.ui.simulator.Queue</value></entry>
<entry key="MatrixPanel"><value>org.codelutin.math.matrix.gui.MatrixPanelEditor</value></entry>
<entry key="OpenMapToolPanel"><value>fr.ifremer.isisfish.map.OpenMapToolPanel</value></entry>
Deleted: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xgl 2008-08-29 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xgl 2008-08-29 17:38:51 UTC (rev 1316)
@@ -1,18 +0,0 @@
-<layout>
- <table cellspacing="2">
- <tr>
- <td fill="Both" height="40%" width="100%" colspan="3">queueTable</td>
- </tr>
- <tr>
- <td fill="Both" height="40%" width="100%" colspan="3">queueTableDone</td>
- </tr>
- <tr>
- <td height="20%" width="35%">buttonSimulQueueStart</td>
- <td height="20%" width="35%">buttonSimulQueueRemove</td>
- <td height="20%" width="30%">buttonSimulQueueShowLog</td>
- </tr>
- </table>
-</layout>
-
-
-
Deleted: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml 2008-08-29 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml 2008-08-29 17:38:51 UTC (rev 1316)
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-15"?>
-
-<Queue/>
-<!--
-<panel id="simulQueue" name="isisfish.queue.title" constraints="simulQueue" layout="XMLGridLayout(fr/ifremer/isisfish/ui/simulator/Queue.xgl)">
-
- <scrollPane constraints="queueTable">
- <table id="queueTable">
- <tableModel>
- <SimulationQueueModel id="queueModel"/>
- </tableModel>
- </table>
- </scrollPane>
- <scrollPane constraints="queueTableDone">
- <table id="queueTableDone">
- <tableModel>
- <SimulationDoneQueueModel id="queueModelDone"/>
- </tableModel>
- </table>
- </scrollPane>
-
- <button constraints="buttonSimulQueueStart" id="buttonSimulQueueStart" text="isisfish.queue.simulationLaunch"
- actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationService.getService(), 'true')"/>
- <button constraints="buttonSimulQueueRemove" id="buttonSimulQueueRemove" text="isisfish.queue.stopSimulation"
- actionCommand="xpath:stop(getJob($queueModel, $queueTable/selectedRow), 'true')"/>
- <button constraints="buttonSimulQueueShowLog" id="buttonSimulQueueShowLog" text="isisfish.queue.showLog"
- actionCommand="fr.ifremer.isisfish.ui.simulator.SimulatorAction.showLog($queueTableDone,$queueModelDone,$queueTableDone/selectedRow)"/>
-</panel>
-
--->
\ No newline at end of file
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 15:39:43 UTC (rev 1315)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul.xml 2008-08-29 17:38:51 UTC (rev 1316)
@@ -5,8 +5,11 @@
bundle="org.codelutin.i18n.I18nBundleBridge">
<!--onOpened="simulator.SimulatorAction.opened($simulTabs)"-->
<WindowEvents id="events"
- onOpened="simulator.SimulatorAction.opened($simulTabs,$buttonSimulQueueStart,$buttonSimulQueueRemove,$buttonSimulQueueShowLog,$queueTable,$queueTableDone,$buttonSimulParamsAnalysePlansRemove,$listSimulParamsAnalysePlansList,$buttonSimulParamsMesuresRemove,$listSimulParamsMesuresList)"
+ onOpened="simulator.SimulatorAction.opened($simulTabs,$buttonSimulParamsAnalysePlansRemove,$listSimulParamsAnalysePlansList,$buttonSimulParamsMesuresRemove,$listSimulParamsMesuresList)"
onClosing="UIHelper.closeContext()" />
+<!--
+onOpened="simulator.SimulatorAction.opened($simulTabs,$buttonSimulQueueStart,$buttonSimulQueueRemove,$buttonSimulQueueShowLog,$queueTable,$queueTableDone,$buttonSimulParamsAnalysePlansRemove,$listSimulParamsAnalysePlansList,$buttonSimulParamsMesuresRemove,$listSimulParamsMesuresList)"
+-->
<ContextDataSource id="OldSimulationName" context="current" source="OldSimulationName"/>
<ContextDataSource id="SimulationFilterModel" context="current" source="SimulationFilterModel"/>
@@ -39,7 +42,8 @@
<xpanel xml="simulator/Export.xml"/>
<xpanel xml="simulator/ResultChoice.xml"/>
<xpanel xml="simulator/AdvancedParams.xml"/>
- <xpanel xml="simulator/Queue.xml"/>
+ <Queue id="simulQueue" name="isisfish.queue.title"/>
+<!-- <xpanel xml="simulator/Queue.xml"/> -->
</tabbedPane>
<xpanel constraints="statusBar" xml="StatusBar.xml"/>
1
0
r1315 - in trunk/isis-fish/src/resources: . oldmappings oldmappings/IsisFish oldmappings/IsisFish/0 oldmappings/IsisFish/0/fr oldmappings/IsisFish/0/fr/ifremer oldmappings/IsisFish/0/fr/ifremer/isisfish oldmappings/IsisFish/0/fr/ifremer/isisfish/entities oldmappings/IsisFish/3.2 oldmappings/IsisFish/3.2/fr oldmappings/IsisFish/3.2/fr/ifremer oldmappings/IsisFish/3.2/fr/ifremer/isisfish oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities
by bpoussin@users.labs.libre-entreprise.org Aug. 29, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 29, 2008
Aug. 29, 2008
Author: bpoussin
Date: 2008-08-29 15:39:43 +0000 (Fri, 29 Aug 2008)
New Revision: 1315
Added:
trunk/isis-fish/src/resources/oldmappings/
trunk/isis-fish/src/resources/oldmappings/IsisFish/
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/CellImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/GearImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PortImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/CellImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/GearImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PortImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml
trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml
Log:
ajout des oldmappings v0 et v3.2
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.ActiveRuleImpl" table="activeRule" node="fr.ifremer.isisfish.entities.ActiveRuleImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.ActiveRule" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="activeRuleDate" type="fr.ifremer.isisfish.types.hibernate.DateType" access="field" column="activeRuleDate" node="activeRuleDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="param" type="text" access="field" column="param" node="param"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/CellImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/CellImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/CellImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.CellImpl" table="cell" node="fr.ifremer.isisfish.entities.CellImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Cell" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="latitude" type="float" access="field" column="latitude" node="latitude"/>
+ <property name="longitude" type="float" access="field" column="longitude" node="longitude"/>
+ <property name="land" type="boolean" access="field" column="land" node="land"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.EffortDescriptionImpl" table="effortDescription" node="fr.ifremer.isisfish.entities.EffortDescriptionImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.EffortDescription" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="fishingOperation" type="int" access="field" column="fishingOperation" node="fishingOperation"/>
+ <property name="fishingOperationDuration" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="fishingOperationDuration" node="fishingOperationDuration"/>
+ <property name="gearsNumberPerOperation" type="int" access="field" column="gearsNumberPerOperation" node="gearsNumberPerOperation"/>
+ <property name="crewSize" type="int" access="field" column="crewSize" node="crewSize"/>
+ <property name="unitCostOfFishing" type="double" access="field" column="unitCostOfFishing" node="unitCostOfFishing"/>
+ <property name="fixedCrewSalary" type="double" access="field" column="fixedCrewSalary" node="fixedCrewSalary"/>
+ <property name="crewShareRate" type="double" access="field" column="crewShareRate" node="crewShareRate"/>
+ <property name="crewFoodCost" type="double" access="field" column="crewFoodCost" node="crewFoodCost"/>
+ <property name="repairAndMaintenanceGearCost" type="double" access="field" column="repairAndMaintenanceGearCost" node="repairAndMaintenanceGearCost"/>
+ <property name="otherRunningCost" type="double" access="field" column="otherRunningCost" node="otherRunningCost"/>
+ <property name="landingCosts" type="double" access="field" column="landingCosts" node="landingCosts"/>
+ <many-to-one name="setOfVessels" class="fr.ifremer.isisfish.entities.SetOfVesselsImpl" column="setOfVessels" node="setOfVessels/@topiaId" embed-xml="false"/>
+ <many-to-one name="possibleMetiers" class="fr.ifremer.isisfish.entities.MetierImpl" column="possibleMetiers" node="possibleMetiers/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.EquationImpl" table="equation" node="fr.ifremer.isisfish.entities.EquationImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Equation" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="content" type="text" access="field" column="content" node="content"/>
+ <property name="category" type="text" access="field" column="category" node="category"/>
+ <property name="language" type="text" access="field" column="language" node="language"/>
+ <property name="javaInterface" type="java.lang.Class" access="field" column="javaInterface" node="javaInterface"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.FisheryRegionImpl" table="fisheryRegion" node="fr.ifremer.isisfish.entities.FisheryRegionImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.FisheryRegion" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="minLongitude" type="float" access="field" column="minLongitude" node="minLongitude"/>
+ <property name="maxLongitude" type="float" access="field" column="maxLongitude" node="maxLongitude"/>
+ <property name="minLatitude" type="float" access="field" column="minLatitude" node="minLatitude"/>
+ <property name="maxLatitude" type="float" access="field" column="maxLatitude" node="maxLatitude"/>
+ <property name="cellLengthLongitude" type="float" access="field" column="cellLengthLongitude" node="cellLengthLongitude"/>
+ <property name="cellLengthLatitude" type="float" access="field" column="cellLengthLatitude" node="cellLengthLatitude"/>
+ <property name="mapFiles" type="text" access="field" column="mapFiles" node="mapFiles"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/GearImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/GearImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/GearImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.GearImpl" table="gear" node="fr.ifremer.isisfish.entities.GearImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Gear" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="effortUnit" type="text" access="field" column="effortUnit" node="effortUnit"/>
+ <property name="standardisationFactor" type="double" access="field" column="standardisationFactor" node="standardisationFactor"/>
+ <property name="parameterName" type="text" access="field" column="parameterName" node="parameterName"/>
+ <property name="cost" type="double" access="field" column="cost" node="cost"/>
+ <property name="possibleValue" type="fr.ifremer.isisfish.types.hibernate.RangeOfValuesType" access="field" column="possibleValue" node="possibleValue"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="populationSelectivity" lazy="true" cascade="all,delete-orphan" node="populationSelectivity" embed-xml="true">
+ <key column="gear"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.SelectivityImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.MetierImpl" table="metier" node="fr.ifremer.isisfish.entities.MetierImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Metier" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="gearParameterValue" type="text" access="field" column="gearParameterValue" node="gearParameterValue"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <property name="capturableSpeciesComment" type="text" access="field" column="capturableSpeciesComment" node="capturableSpeciesComment"/>
+ <many-to-one name="gear" class="fr.ifremer.isisfish.entities.GearImpl" column="gear" node="gear/@topiaId" embed-xml="false"/>
+ <bag name="setOfVesselsEffortDescription" inverse="true" lazy="true" cascade="all,delete-orphan" node="setOfVesselsEffortDescription" embed-xml="true">
+ <key column="possibleMetiers"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.EffortDescriptionImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="metierSeasonInfo" order-by="firstMonth, lastMonth" inverse="true" lazy="true" cascade="all,delete-orphan" node="metierSeasonInfo" embed-xml="true">
+ <key column="metier"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <union-subclass name="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" extends="fr.ifremer.isisfish.entities.SeasonImpl" table="metierSeasonInfo" node="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.MetierSeasonInfo" >
+ <!--key column="topiaId"/-->
+ <property name="seasonZoneComment" type="text" access="field" column="seasonZoneComment" node="seasonZoneComment"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="speciesTargetSpecies" lazy="true" cascade="all,delete-orphan" node="speciesTargetSpecies" embed-xml="true">
+ <key column="metierSeasonInfo"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.TargetSpeciesImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <many-to-one name="metier" class="fr.ifremer.isisfish.entities.MetierImpl" column="metier" node="metier/@topiaId" embed-xml="false"/>
+ <bag name="zone" table="metierseasoninfo_zone" lazy="true" node="zone" embed-xml="true">
+ <key column="metierSeasonInfo"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="zone" node="topiaId"/>
+ </bag>
+ </union-subclass>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.PopulationGroupImpl" table="populationGroup" node="fr.ifremer.isisfish.entities.PopulationGroupImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.PopulationGroup" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="id" type="int" access="field" column="id" node="id"/>
+ <property name="reproductionRate" type="double" access="field" column="reproductionRate" node="reproductionRate"/>
+ <property name="age" type="double" access="field" column="age" node="age"/>
+ <property name="minLength" type="double" access="field" column="minLength" node="minLength"/>
+ <property name="maxLength" type="double" access="field" column="maxLength" node="maxLength"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="population" class="fr.ifremer.isisfish.entities.PopulationImpl" column="population" node="population/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.PopulationImpl" table="population" node="fr.ifremer.isisfish.entities.PopulationImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Population" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="geographicId" type="text" access="field" column="geographicId" node="geographicId"/>
+ <property name="plusGroup" type="boolean" access="field" column="plusGroup" node="plusGroup"/>
+ <many-to-one name="growth" class="fr.ifremer.isisfish.entities.EquationImpl" column="growth" cascade="delete" node="growth/@topiaId" embed-xml="false"/>
+ <many-to-one name="growthReverse" class="fr.ifremer.isisfish.entities.EquationImpl" column="growthReverse" cascade="delete" node="growthReverse/@topiaId" embed-xml="false"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="meanWeight" class="fr.ifremer.isisfish.entities.EquationImpl" column="meanWeight" cascade="delete" node="meanWeight/@topiaId" embed-xml="false"/>
+ <many-to-one name="price" class="fr.ifremer.isisfish.entities.EquationImpl" column="price" cascade="delete" node="price/@topiaId" embed-xml="false"/>
+ <many-to-one name="naturalDeathRate" class="fr.ifremer.isisfish.entities.EquationImpl" column="naturalDeathRate" cascade="delete" node="naturalDeathRate/@topiaId" embed-xml="false"/>
+ <property name="caractBioComment" type="text" access="field" column="caractBioComment" node="caractBioComment"/>
+ <many-to-one name="reproductionEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="reproductionEquation" cascade="delete" node="reproductionEquation/@topiaId" embed-xml="false"/>
+ <property name="monthGapBetweenReproRecrutement" type="int" access="field" column="monthGapBetweenReproRecrutement" node="monthGapBetweenReproRecrutement"/>
+ <property name="recruitmentDistribution" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="recruitmentDistribution_name"/>
+ <column name="recruitmentDistribution_dim"/>
+ <column name="recruitmentDistribution_dimNames"/>
+ <column name="recruitmentDistribution_semantics"/>
+ <column name="recruitmentDistribution_data"/>
+ </property>
+ <property name="recruitmentComment" type="text" access="field" column="recruitmentComment" node="recruitmentComment"/>
+ <property name="zonesComment" type="text" access="field" column="zonesComment" node="zonesComment"/>
+ <property name="seasonsComment" type="text" access="field" column="seasonsComment" node="seasonsComment"/>
+ <property name="capturabilityComment" type="text" access="field" column="capturabilityComment" node="capturabilityComment"/>
+ <property name="migrationComment" type="text" access="field" column="migrationComment" node="migrationComment"/>
+ <property name="mappingZoneReproZoneRecru" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="mappingZoneReproZoneRecru_name"/>
+ <column name="mappingZoneReproZoneRecru_dim"/>
+ <column name="mappingZoneReproZoneRecru_dimNames"/>
+ <column name="mappingZoneReproZoneRecru_semantics"/>
+ <column name="mappingZoneReproZoneRecru_data"/>
+ </property>
+ <property name="capturability" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="capturability_name"/>
+ <column name="capturability_dim"/>
+ <column name="capturability_dimNames"/>
+ <column name="capturability_semantics"/>
+ <column name="capturability_data"/>
+ </property>
+ <bag name="gearSelectivity" inverse="true" lazy="true" cascade="all,delete-orphan" node="gearSelectivity" embed-xml="true">
+ <key column="population"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.SelectivityImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="populationGroup" order-by="id" lazy="true" cascade="all,delete-orphan" node="populationGroup" embed-xml="true">
+ <key column="population"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.PopulationGroupImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="populationSeasonInfo" order-by="firstMonth, lastMonth" inverse="true" lazy="true" cascade="all,delete-orphan" node="populationSeasonInfo" embed-xml="true">
+ <key column="population"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <many-to-one name="species" class="fr.ifremer.isisfish.entities.SpeciesImpl" column="species" node="species/@topiaId" embed-xml="false"/>
+ <bag name="reproductionZone" table="population_reproductionzone" lazy="true" node="reproductionZone" embed-xml="true">
+ <key column="population"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="reproductionZone" node="topiaId"/>
+ </bag>
+ <bag name="populationZone" table="population_populationzone" lazy="true" node="populationZone" embed-xml="true">
+ <key column="population"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="populationZone" node="topiaId"/>
+ </bag>
+ <bag name="recruitmentZone" table="population_recruitmentzone" lazy="true" node="recruitmentZone" embed-xml="true">
+ <key column="population"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="recruitmentZone" node="topiaId"/>
+ </bag>
+ <many-to-one name="maturityGroup" class="fr.ifremer.isisfish.entities.PopulationGroupImpl" column="maturityGroup" unique="true" node="maturityGroup/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <union-subclass name="fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl" extends="fr.ifremer.isisfish.entities.SeasonImpl" table="populationSeasonInfo" node="fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.PopulationSeasonInfo" >
+ <!--key column="topiaId"/-->
+ <property name="reproductionDistribution" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="reproductionDistribution_name"/>
+ <column name="reproductionDistribution_dim"/>
+ <column name="reproductionDistribution_dimNames"/>
+ <column name="reproductionDistribution_semantics"/>
+ <column name="reproductionDistribution_data"/>
+ </property>
+ <property name="groupChange" type="boolean" access="field" column="groupChange" node="groupChange"/>
+ <property name="simpleLengthChangeMatrix" type="boolean" access="field" column="simpleLengthChangeMatrix" node="simpleLengthChangeMatrix"/>
+ <property name="lengthChangeMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="lengthChangeMatrix_name"/>
+ <column name="lengthChangeMatrix_dim"/>
+ <column name="lengthChangeMatrix_dimNames"/>
+ <column name="lengthChangeMatrix_semantics"/>
+ <column name="lengthChangeMatrix_data"/>
+ </property>
+ <property name="reproduction" type="boolean" access="field" column="reproduction" node="reproduction"/>
+ <property name="useEquationMigration" type="boolean" access="field" column="useEquationMigration" node="useEquationMigration"/>
+ <property name="migrationMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="migrationMatrix_name"/>
+ <column name="migrationMatrix_dim"/>
+ <column name="migrationMatrix_dimNames"/>
+ <column name="migrationMatrix_semantics"/>
+ <column name="migrationMatrix_data"/>
+ </property>
+ <property name="emigrationMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="emigrationMatrix_name"/>
+ <column name="emigrationMatrix_dim"/>
+ <column name="emigrationMatrix_dimNames"/>
+ <column name="emigrationMatrix_semantics"/>
+ <column name="emigrationMatrix_data"/>
+ </property>
+ <property name="immigrationMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="immigrationMatrix_name"/>
+ <column name="immigrationMatrix_dim"/>
+ <column name="immigrationMatrix_dimNames"/>
+ <column name="immigrationMatrix_semantics"/>
+ <column name="immigrationMatrix_data"/>
+ </property>
+ <many-to-one name="migrationEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="migrationEquation" cascade="delete" node="migrationEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="emigrationEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="emigrationEquation" cascade="delete" node="emigrationEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="immigrationEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="immigrationEquation" cascade="delete" node="immigrationEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="population" class="fr.ifremer.isisfish.entities.PopulationImpl" column="population" node="population/@topiaId" embed-xml="false"/>
+ </union-subclass>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PortImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PortImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/PortImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.PortImpl" table="port" node="fr.ifremer.isisfish.entities.PortImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Port" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="cell" class="fr.ifremer.isisfish.entities.CellImpl" column="cell" node="cell/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.ResultImpl" table="result" node="fr.ifremer.isisfish.entities.ResultImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Result" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="resultDate" type="fr.ifremer.isisfish.types.hibernate.DateType" access="field" column="resultDate" node="resultDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="matrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="matrix_name"/>
+ <column name="matrix_dim"/>
+ <column name="matrix_dimNames"/>
+ <column name="matrix_semantics"/>
+ <column name="matrix_data"/>
+ </property>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SeasonImpl" table="season" node="fr.ifremer.isisfish.entities.SeasonImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Season" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="firstMonth" type="fr.ifremer.isisfish.types.hibernate.MonthType" access="field" column="firstMonth" node="firstMonth"/>
+ <property name="lastMonth" type="fr.ifremer.isisfish.types.hibernate.MonthType" access="field" column="lastMonth" node="lastMonth"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SelectivityImpl" table="selectivity" node="fr.ifremer.isisfish.entities.SelectivityImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Selectivity" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <many-to-one name="equation" class="fr.ifremer.isisfish.entities.EquationImpl" column="equation" cascade="delete" node="equation/@topiaId" embed-xml="false"/>
+ <many-to-one name="gear" class="fr.ifremer.isisfish.entities.GearImpl" column="gear" node="gear/@topiaId" embed-xml="false"/>
+ <many-to-one name="population" class="fr.ifremer.isisfish.entities.PopulationImpl" column="population" node="population/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SetOfVesselsImpl" table="setOfVessels" node="fr.ifremer.isisfish.entities.SetOfVesselsImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.SetOfVessels" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="numberOfVessels" type="int" access="field" column="numberOfVessels" node="numberOfVessels"/>
+ <property name="fixedCosts" type="double" access="field" column="fixedCosts" node="fixedCosts"/>
+ <property name="vesselCosts" type="double" access="field" column="vesselCosts" node="vesselCosts"/>
+ <property name="capitalDeprecation" type="double" access="field" column="capitalDeprecation" node="capitalDeprecation"/>
+ <property name="interestCost" type="double" access="field" column="interestCost" node="interestCost"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="port" class="fr.ifremer.isisfish.entities.PortImpl" column="port" node="port/@topiaId" embed-xml="false"/>
+ <bag name="possibleMetiers" lazy="true" cascade="all,delete-orphan" node="possibleMetiers" embed-xml="true">
+ <key column="setOfVessels"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.EffortDescriptionImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <many-to-one name="vesselType" class="fr.ifremer.isisfish.entities.VesselTypeImpl" column="vesselType" node="vesselType/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SpeciesImpl" table="species" node="fr.ifremer.isisfish.entities.SpeciesImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Species" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="scientificName" type="text" access="field" column="scientificName" node="scientificName"/>
+ <property name="codeRubbin" type="text" access="field" column="codeRubbin" node="codeRubbin"/>
+ <property name="codeCEE" type="int" access="field" column="codeCEE" node="codeCEE"/>
+ <property name="ageGroupType" type="boolean" access="field" column="ageGroupType" node="ageGroupType"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="metierSeasonInfoTargetSpecies" inverse="true" lazy="true" cascade="all,delete-orphan" node="metierSeasonInfoTargetSpecies" embed-xml="true">
+ <key column="species"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.TargetSpeciesImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="population" inverse="true" lazy="true" cascade="all,delete-orphan" node="population" embed-xml="true">
+ <key column="species"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.PopulationImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.StrategyImpl" table="strategy" node="fr.ifremer.isisfish.entities.StrategyImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Strategy" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="proportionSetOfVessels" type="double" access="field" column="proportionSetOfVessels" node="proportionSetOfVessels"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="setOfVessels" class="fr.ifremer.isisfish.entities.SetOfVesselsImpl" column="setOfVessels" node="setOfVessels/@topiaId" embed-xml="false"/>
+ <bag name="strategyMonthInfo" order-by="month" inverse="true" lazy="true" cascade="all,delete-orphan" node="strategyMonthInfo" embed-xml="true">
+ <key column="strategy"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.StrategyMonthInfoImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.StrategyMonthInfoImpl" table="strategyMonthInfo" node="fr.ifremer.isisfish.entities.StrategyMonthInfoImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.StrategyMonthInfo" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="month" type="fr.ifremer.isisfish.types.hibernate.MonthType" access="field" column="month" node="month"/>
+ <property name="minInactivityDays" type="int" access="field" column="minInactivityDays" node="minInactivityDays"/>
+ <property name="numberOfTrips" type="int" access="field" column="numberOfTrips" node="numberOfTrips"/>
+ <property name="proportionMetier" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="proportionMetier_name"/>
+ <column name="proportionMetier_dim"/>
+ <column name="proportionMetier_dimNames"/>
+ <column name="proportionMetier_semantics"/>
+ <column name="proportionMetier_data"/>
+ </property>
+ <many-to-one name="tripType" class="fr.ifremer.isisfish.entities.TripTypeImpl" column="tripType" node="tripType/@topiaId" embed-xml="false"/>
+ <many-to-one name="strategy" class="fr.ifremer.isisfish.entities.StrategyImpl" column="strategy" node="strategy/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.TargetSpeciesImpl" table="targetSpecies" node="fr.ifremer.isisfish.entities.TargetSpeciesImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.TargetSpecies" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <many-to-one name="targetFactorEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="targetFactorEquation" cascade="delete" node="targetFactorEquation/@topiaId" embed-xml="false"/>
+ <property name="primaryCatch" type="boolean" access="field" column="primaryCatch" node="primaryCatch"/>
+ <many-to-one name="species" class="fr.ifremer.isisfish.entities.SpeciesImpl" column="species" node="species/@topiaId" embed-xml="false"/>
+ <many-to-one name="metierSeasonInfo" class="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" column="metierSeasonInfo" node="metierSeasonInfo/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.TripTypeImpl" table="tripType" node="fr.ifremer.isisfish.entities.TripTypeImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.TripType" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="tripDuration" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="tripDuration" node="tripDuration"/>
+ <property name="minTimeBetweenTrip" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="minTimeBetweenTrip" node="minTimeBetweenTrip"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.VesselTypeImpl" table="vesselType" node="fr.ifremer.isisfish.entities.VesselTypeImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.VesselType" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="length" type="int" access="field" column="length" node="length"/>
+ <property name="speed" type="double" access="field" column="speed" node="speed"/>
+ <property name="maxTripDuration" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="maxTripDuration" node="maxTripDuration"/>
+ <property name="activityRange" type="double" access="field" column="activityRange" node="activityRange"/>
+ <property name="minCrewSize" type="int" access="field" column="minCrewSize" node="minCrewSize"/>
+ <property name="unitFuelCostOfTravel" type="double" access="field" column="unitFuelCostOfTravel" node="unitFuelCostOfTravel"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="tripType" table="triptype_vesseltype" lazy="true" node="tripType" embed-xml="true">
+ <key column="vesselType"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.TripTypeImpl" column="tripType" node="topiaId"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/0/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.ZoneImpl" table="zone" node="fr.ifremer.isisfish.entities.ZoneImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Zone" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="cell" table="cell_zone" lazy="true" node="cell" embed-xml="true">
+ <key column="zone"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.CellImpl" column="cell" node="topiaId"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ActiveRuleImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.ActiveRuleImpl" table="activeRule" node="fr.ifremer.isisfish.entities.ActiveRuleImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.ActiveRule" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="activeRuleDate" type="fr.ifremer.isisfish.types.hibernate.DateType" access="field" column="activeRuleDate" node="activeRuleDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="param" type="text" access="field" column="param" node="param"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/CellImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/CellImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/CellImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.CellImpl" table="cell" node="fr.ifremer.isisfish.entities.CellImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Cell" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="latitude" type="float" access="field" column="latitude" node="latitude"/>
+ <property name="longitude" type="float" access="field" column="longitude" node="longitude"/>
+ <property name="land" type="boolean" access="field" column="land" node="land"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EffortDescriptionImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.EffortDescriptionImpl" table="effortDescription" node="fr.ifremer.isisfish.entities.EffortDescriptionImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.EffortDescription" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="fishingOperation" type="int" access="field" column="fishingOperation" node="fishingOperation"/>
+ <property name="fishingOperationDuration" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="fishingOperationDuration" node="fishingOperationDuration"/>
+ <property name="gearsNumberPerOperation" type="int" access="field" column="gearsNumberPerOperation" node="gearsNumberPerOperation"/>
+ <property name="crewSize" type="int" access="field" column="crewSize" node="crewSize"/>
+ <property name="unitCostOfFishing" type="double" access="field" column="unitCostOfFishing" node="unitCostOfFishing"/>
+ <property name="fixedCrewSalary" type="double" access="field" column="fixedCrewSalary" node="fixedCrewSalary"/>
+ <property name="crewShareRate" type="double" access="field" column="crewShareRate" node="crewShareRate"/>
+ <property name="crewFoodCost" type="double" access="field" column="crewFoodCost" node="crewFoodCost"/>
+ <property name="repairAndMaintenanceGearCost" type="double" access="field" column="repairAndMaintenanceGearCost" node="repairAndMaintenanceGearCost"/>
+ <property name="otherRunningCost" type="double" access="field" column="otherRunningCost" node="otherRunningCost"/>
+ <property name="landingCosts" type="double" access="field" column="landingCosts" node="landingCosts"/>
+ <many-to-one name="setOfVessels" class="fr.ifremer.isisfish.entities.SetOfVesselsImpl" column="setOfVessels" node="setOfVessels/@topiaId" embed-xml="false"/>
+ <many-to-one name="possibleMetiers" class="fr.ifremer.isisfish.entities.MetierImpl" column="possibleMetiers" node="possibleMetiers/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/EquationImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.EquationImpl" table="equation" node="fr.ifremer.isisfish.entities.EquationImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Equation" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="content" type="text" access="field" column="content" node="content"/>
+ <property name="category" type="text" access="field" column="category" node="category"/>
+ <property name="language" type="text" access="field" column="language" node="language"/>
+ <property name="javaInterface" type="java.lang.Class" access="field" column="javaInterface" node="javaInterface"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/FisheryRegionImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.FisheryRegionImpl" table="fisheryRegion" node="fr.ifremer.isisfish.entities.FisheryRegionImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.FisheryRegion" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="minLongitude" type="float" access="field" column="minLongitude" node="minLongitude"/>
+ <property name="maxLongitude" type="float" access="field" column="maxLongitude" node="maxLongitude"/>
+ <property name="minLatitude" type="float" access="field" column="minLatitude" node="minLatitude"/>
+ <property name="maxLatitude" type="float" access="field" column="maxLatitude" node="maxLatitude"/>
+ <property name="cellLengthLongitude" type="float" access="field" column="cellLengthLongitude" node="cellLengthLongitude"/>
+ <property name="cellLengthLatitude" type="float" access="field" column="cellLengthLatitude" node="cellLengthLatitude"/>
+ <property name="mapFiles" type="text" access="field" column="mapFiles" node="mapFiles"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/GearImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/GearImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/GearImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.GearImpl" table="gear" node="fr.ifremer.isisfish.entities.GearImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Gear" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="effortUnit" type="text" access="field" column="effortUnit" node="effortUnit"/>
+ <property name="standardisationFactor" type="double" access="field" column="standardisationFactor" node="standardisationFactor"/>
+ <property name="parameterName" type="text" access="field" column="parameterName" node="parameterName"/>
+ <property name="cost" type="double" access="field" column="cost" node="cost"/>
+ <property name="possibleValue" type="fr.ifremer.isisfish.types.hibernate.RangeOfValuesType" access="field" column="possibleValue" node="possibleValue"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="populationSelectivity" lazy="true" cascade="all,delete-orphan" node="populationSelectivity" embed-xml="true">
+ <key column="gear"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.SelectivityImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.MetierImpl" table="metier" node="fr.ifremer.isisfish.entities.MetierImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Metier" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="gearParameterValue" type="text" access="field" column="gearParameterValue" node="gearParameterValue"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <property name="capturableSpeciesComment" type="text" access="field" column="capturableSpeciesComment" node="capturableSpeciesComment"/>
+ <many-to-one name="gear" class="fr.ifremer.isisfish.entities.GearImpl" column="gear" node="gear/@topiaId" embed-xml="false"/>
+ <bag name="setOfVesselsEffortDescription" inverse="true" lazy="true" cascade="all,delete-orphan" node="setOfVesselsEffortDescription" embed-xml="true">
+ <key column="possibleMetiers"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.EffortDescriptionImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="metierSeasonInfo" order-by="firstMonth, lastMonth" inverse="true" lazy="true" cascade="all,delete-orphan" node="metierSeasonInfo" embed-xml="true">
+ <key column="metier"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <union-subclass name="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" extends="fr.ifremer.isisfish.entities.SeasonImpl" table="metierSeasonInfo" node="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.MetierSeasonInfo" >
+ <!--key column="topiaId"/-->
+ <property name="seasonZoneComment" type="text" access="field" column="seasonZoneComment" node="seasonZoneComment"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="speciesTargetSpecies" lazy="true" cascade="all,delete-orphan" node="speciesTargetSpecies" embed-xml="true">
+ <key column="metierSeasonInfo"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.TargetSpeciesImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <many-to-one name="metier" class="fr.ifremer.isisfish.entities.MetierImpl" column="metier" node="metier/@topiaId" embed-xml="false"/>
+ <bag name="zone" table="metierseasoninfo_zone" lazy="true" node="zone" embed-xml="true">
+ <key column="metierSeasonInfo"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="zone" node="topiaId"/>
+ </bag>
+ </union-subclass>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationGroupImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.PopulationGroupImpl" table="populationGroup" node="fr.ifremer.isisfish.entities.PopulationGroupImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.PopulationGroup" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="id" type="int" access="field" column="id" node="id"/>
+ <property name="reproductionRate" type="double" access="field" column="reproductionRate" node="reproductionRate"/>
+ <property name="age" type="double" access="field" column="age" node="age"/>
+ <property name="minLength" type="double" access="field" column="minLength" node="minLength"/>
+ <property name="maxLength" type="double" access="field" column="maxLength" node="maxLength"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="population" class="fr.ifremer.isisfish.entities.PopulationImpl" column="population" node="population/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.PopulationImpl" table="population" node="fr.ifremer.isisfish.entities.PopulationImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Population" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="geographicId" type="text" access="field" column="geographicId" node="geographicId"/>
+ <property name="plusGroup" type="boolean" access="field" column="plusGroup" node="plusGroup"/>
+ <many-to-one name="growth" class="fr.ifremer.isisfish.entities.EquationImpl" column="growth" cascade="delete" node="growth/@topiaId" embed-xml="false"/>
+ <many-to-one name="growthReverse" class="fr.ifremer.isisfish.entities.EquationImpl" column="growthReverse" cascade="delete" node="growthReverse/@topiaId" embed-xml="false"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="meanWeight" class="fr.ifremer.isisfish.entities.EquationImpl" column="meanWeight" cascade="delete" node="meanWeight/@topiaId" embed-xml="false"/>
+ <many-to-one name="price" class="fr.ifremer.isisfish.entities.EquationImpl" column="price" cascade="delete" node="price/@topiaId" embed-xml="false"/>
+ <many-to-one name="naturalDeathRate" class="fr.ifremer.isisfish.entities.EquationImpl" column="naturalDeathRate" cascade="delete" node="naturalDeathRate/@topiaId" embed-xml="false"/>
+ <property name="caractBioComment" type="text" access="field" column="caractBioComment" node="caractBioComment"/>
+ <many-to-one name="reproductionEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="reproductionEquation" cascade="delete" node="reproductionEquation/@topiaId" embed-xml="false"/>
+ <property name="monthGapBetweenReproRecrutement" type="int" access="field" column="monthGapBetweenReproRecrutement" node="monthGapBetweenReproRecrutement"/>
+ <property name="recruitmentDistribution" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="recruitmentDistribution_name"/>
+ <column name="recruitmentDistribution_dim"/>
+ <column name="recruitmentDistribution_dimNames"/>
+ <column name="recruitmentDistribution_semantics"/>
+ <column name="recruitmentDistribution_data"/>
+ </property>
+ <property name="recruitmentComment" type="text" access="field" column="recruitmentComment" node="recruitmentComment"/>
+ <property name="zonesComment" type="text" access="field" column="zonesComment" node="zonesComment"/>
+ <property name="seasonsComment" type="text" access="field" column="seasonsComment" node="seasonsComment"/>
+ <property name="capturabilityComment" type="text" access="field" column="capturabilityComment" node="capturabilityComment"/>
+ <property name="migrationComment" type="text" access="field" column="migrationComment" node="migrationComment"/>
+ <property name="mappingZoneReproZoneRecru" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="mappingZoneReproZoneRecru_name"/>
+ <column name="mappingZoneReproZoneRecru_dim"/>
+ <column name="mappingZoneReproZoneRecru_dimNames"/>
+ <column name="mappingZoneReproZoneRecru_semantics"/>
+ <column name="mappingZoneReproZoneRecru_data"/>
+ </property>
+ <property name="capturability" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="capturability_name"/>
+ <column name="capturability_dim"/>
+ <column name="capturability_dimNames"/>
+ <column name="capturability_semantics"/>
+ <column name="capturability_data"/>
+ </property>
+ <bag name="gearSelectivity" inverse="true" lazy="true" cascade="all,delete-orphan" node="gearSelectivity" embed-xml="true">
+ <key column="population"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.SelectivityImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="populationGroup" order-by="id" lazy="true" cascade="all,delete-orphan" node="populationGroup" embed-xml="true">
+ <key column="population"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.PopulationGroupImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="populationSeasonInfo" order-by="firstMonth, lastMonth" inverse="true" lazy="true" cascade="all,delete-orphan" node="populationSeasonInfo" embed-xml="true">
+ <key column="population"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <many-to-one name="species" class="fr.ifremer.isisfish.entities.SpeciesImpl" column="species" node="species/@topiaId" embed-xml="false"/>
+ <bag name="reproductionZone" table="population_reproductionzone" lazy="true" node="reproductionZone" embed-xml="true">
+ <key column="population"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="reproductionZone" node="topiaId"/>
+ </bag>
+ <bag name="populationZone" table="population_populationzone" lazy="true" node="populationZone" embed-xml="true">
+ <key column="population"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="populationZone" node="topiaId"/>
+ </bag>
+ <bag name="recruitmentZone" table="population_recruitmentzone" lazy="true" node="recruitmentZone" embed-xml="true">
+ <key column="population"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.ZoneImpl" column="recruitmentZone" node="topiaId"/>
+ </bag>
+ <many-to-one name="maturityGroup" class="fr.ifremer.isisfish.entities.PopulationGroupImpl" column="maturityGroup" unique="true" node="maturityGroup/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <union-subclass name="fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl" extends="fr.ifremer.isisfish.entities.SeasonImpl" table="populationSeasonInfo" node="fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.PopulationSeasonInfo" >
+ <!--key column="topiaId"/-->
+ <property name="reproductionDistribution" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="reproductionDistribution_name"/>
+ <column name="reproductionDistribution_dim"/>
+ <column name="reproductionDistribution_dimNames"/>
+ <column name="reproductionDistribution_semantics"/>
+ <column name="reproductionDistribution_data"/>
+ </property>
+ <property name="groupChange" type="boolean" access="field" column="groupChange" node="groupChange"/>
+ <property name="simpleLengthChangeMatrix" type="boolean" access="field" column="simpleLengthChangeMatrix" node="simpleLengthChangeMatrix"/>
+ <property name="lengthChangeMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="lengthChangeMatrix_name"/>
+ <column name="lengthChangeMatrix_dim"/>
+ <column name="lengthChangeMatrix_dimNames"/>
+ <column name="lengthChangeMatrix_semantics"/>
+ <column name="lengthChangeMatrix_data"/>
+ </property>
+ <property name="reproduction" type="boolean" access="field" column="reproduction" node="reproduction"/>
+ <property name="useEquationMigration" type="boolean" access="field" column="useEquationMigration" node="useEquationMigration"/>
+ <property name="migrationMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="migrationMatrix_name"/>
+ <column name="migrationMatrix_dim"/>
+ <column name="migrationMatrix_dimNames"/>
+ <column name="migrationMatrix_semantics"/>
+ <column name="migrationMatrix_data"/>
+ </property>
+ <property name="emigrationMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="emigrationMatrix_name"/>
+ <column name="emigrationMatrix_dim"/>
+ <column name="emigrationMatrix_dimNames"/>
+ <column name="emigrationMatrix_semantics"/>
+ <column name="emigrationMatrix_data"/>
+ </property>
+ <property name="immigrationMatrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="immigrationMatrix_name"/>
+ <column name="immigrationMatrix_dim"/>
+ <column name="immigrationMatrix_dimNames"/>
+ <column name="immigrationMatrix_semantics"/>
+ <column name="immigrationMatrix_data"/>
+ </property>
+ <many-to-one name="migrationEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="migrationEquation" cascade="delete" node="migrationEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="emigrationEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="emigrationEquation" cascade="delete" node="emigrationEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="immigrationEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="immigrationEquation" cascade="delete" node="immigrationEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="population" class="fr.ifremer.isisfish.entities.PopulationImpl" column="population" node="population/@topiaId" embed-xml="false"/>
+ </union-subclass>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PortImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PortImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/PortImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.PortImpl" table="port" node="fr.ifremer.isisfish.entities.PortImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Port" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="cell" class="fr.ifremer.isisfish.entities.CellImpl" column="cell" node="cell/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ResultImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.ResultImpl" table="result" node="fr.ifremer.isisfish.entities.ResultImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Result" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="resultDate" type="fr.ifremer.isisfish.types.hibernate.DateType" access="field" column="resultDate" node="resultDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="matrix" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="matrix_name"/>
+ <column name="matrix_dim"/>
+ <column name="matrix_dimNames"/>
+ <column name="matrix_semantics"/>
+ <column name="matrix_data"/>
+ </property>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SeasonImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SeasonImpl" table="season" node="fr.ifremer.isisfish.entities.SeasonImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Season" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="firstMonth" type="fr.ifremer.isisfish.types.hibernate.MonthType" access="field" column="firstMonth" node="firstMonth"/>
+ <property name="lastMonth" type="fr.ifremer.isisfish.types.hibernate.MonthType" access="field" column="lastMonth" node="lastMonth"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SelectivityImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SelectivityImpl" table="selectivity" node="fr.ifremer.isisfish.entities.SelectivityImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Selectivity" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <many-to-one name="equation" class="fr.ifremer.isisfish.entities.EquationImpl" column="equation" cascade="delete" node="equation/@topiaId" embed-xml="false"/>
+ <many-to-one name="gear" class="fr.ifremer.isisfish.entities.GearImpl" column="gear" node="gear/@topiaId" embed-xml="false"/>
+ <many-to-one name="population" class="fr.ifremer.isisfish.entities.PopulationImpl" column="population" node="population/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SetOfVesselsImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SetOfVesselsImpl" table="setOfVessels" node="fr.ifremer.isisfish.entities.SetOfVesselsImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.SetOfVessels" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="numberOfVessels" type="int" access="field" column="numberOfVessels" node="numberOfVessels"/>
+ <property name="fixedCosts" type="double" access="field" column="fixedCosts" node="fixedCosts"/>
+ <property name="vesselCosts" type="double" access="field" column="vesselCosts" node="vesselCosts"/>
+ <property name="capitalDeprecation" type="double" access="field" column="capitalDeprecation" node="capitalDeprecation"/>
+ <property name="interestCost" type="double" access="field" column="interestCost" node="interestCost"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <many-to-one name="technicalEfficiencyEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="technicalEfficiencyEquation" cascade="delete" node="technicalEfficiencyEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="port" class="fr.ifremer.isisfish.entities.PortImpl" column="port" node="port/@topiaId" embed-xml="false"/>
+ <bag name="possibleMetiers" lazy="true" cascade="all,delete-orphan" node="possibleMetiers" embed-xml="true">
+ <key column="setOfVessels"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.EffortDescriptionImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <many-to-one name="vesselType" class="fr.ifremer.isisfish.entities.VesselTypeImpl" column="vesselType" node="vesselType/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/SpeciesImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.SpeciesImpl" table="species" node="fr.ifremer.isisfish.entities.SpeciesImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Species" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="scientificName" type="text" access="field" column="scientificName" node="scientificName"/>
+ <property name="codeRubbin" type="text" access="field" column="codeRubbin" node="codeRubbin"/>
+ <property name="codeCEE" type="int" access="field" column="codeCEE" node="codeCEE"/>
+ <property name="ageGroupType" type="boolean" access="field" column="ageGroupType" node="ageGroupType"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="metierSeasonInfoTargetSpecies" inverse="true" lazy="true" cascade="all,delete-orphan" node="metierSeasonInfoTargetSpecies" embed-xml="true">
+ <key column="species"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.TargetSpeciesImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ <bag name="population" inverse="true" lazy="true" cascade="all,delete-orphan" node="population" embed-xml="true">
+ <key column="species"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.PopulationImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.StrategyImpl" table="strategy" node="fr.ifremer.isisfish.entities.StrategyImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Strategy" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="proportionSetOfVessels" type="double" access="field" column="proportionSetOfVessels" node="proportionSetOfVessels"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <property name="inactivityEquationUsed" type="boolean" access="field" column="inactivityEquationUsed" node="inactivityEquationUsed"/>
+ <many-to-one name="inactivityEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="inactivityEquation" cascade="delete" node="inactivityEquation/@topiaId" embed-xml="false"/>
+ <many-to-one name="setOfVessels" class="fr.ifremer.isisfish.entities.SetOfVesselsImpl" column="setOfVessels" node="setOfVessels/@topiaId" embed-xml="false"/>
+ <bag name="strategyMonthInfo" order-by="month" inverse="true" lazy="true" cascade="all,delete-orphan" node="strategyMonthInfo" embed-xml="true">
+ <key column="strategy"/>
+ <one-to-many class="fr.ifremer.isisfish.entities.StrategyMonthInfoImpl" node="topiaId" embed-xml="false"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.StrategyMonthInfoImpl" table="strategyMonthInfo" node="fr.ifremer.isisfish.entities.StrategyMonthInfoImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.StrategyMonthInfo" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="month" type="fr.ifremer.isisfish.types.hibernate.MonthType" access="field" column="month" node="month"/>
+ <property name="minInactivityDays" type="double" access="field" column="minInactivityDays" node="minInactivityDays"/>
+ <property name="numberOfTrips" type="double" access="field" column="numberOfTrips" node="numberOfTrips"/>
+ <property name="proportionMetier" type="fr.ifremer.isisfish.types.hibernate.MatrixType" access="field" >
+ <column name="proportionMetier_name"/>
+ <column name="proportionMetier_dim"/>
+ <column name="proportionMetier_dimNames"/>
+ <column name="proportionMetier_semantics"/>
+ <column name="proportionMetier_data"/>
+ </property>
+ <many-to-one name="tripType" class="fr.ifremer.isisfish.entities.TripTypeImpl" column="tripType" node="tripType/@topiaId" embed-xml="false"/>
+ <many-to-one name="strategy" class="fr.ifremer.isisfish.entities.StrategyImpl" column="strategy" node="strategy/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TargetSpeciesImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.TargetSpeciesImpl" table="targetSpecies" node="fr.ifremer.isisfish.entities.TargetSpeciesImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.TargetSpecies" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <many-to-one name="targetFactorEquation" class="fr.ifremer.isisfish.entities.EquationImpl" column="targetFactorEquation" cascade="delete" node="targetFactorEquation/@topiaId" embed-xml="false"/>
+ <property name="primaryCatch" type="boolean" access="field" column="primaryCatch" node="primaryCatch"/>
+ <many-to-one name="species" class="fr.ifremer.isisfish.entities.SpeciesImpl" column="species" node="species/@topiaId" embed-xml="false"/>
+ <many-to-one name="metierSeasonInfo" class="fr.ifremer.isisfish.entities.MetierSeasonInfoImpl" column="metierSeasonInfo" node="metierSeasonInfo/@topiaId" embed-xml="false"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/TripTypeImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.TripTypeImpl" table="tripType" node="fr.ifremer.isisfish.entities.TripTypeImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.TripType" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="tripDuration" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="tripDuration" node="tripDuration"/>
+ <property name="minTimeBetweenTrip" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="minTimeBetweenTrip" node="minTimeBetweenTrip"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/VesselTypeImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.VesselTypeImpl" table="vesselType" node="fr.ifremer.isisfish.entities.VesselTypeImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.VesselType" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="length" type="int" access="field" column="length" node="length"/>
+ <property name="speed" type="double" access="field" column="speed" node="speed"/>
+ <property name="maxTripDuration" type="fr.ifremer.isisfish.types.hibernate.TimeUnitType" access="field" column="maxTripDuration" node="maxTripDuration"/>
+ <property name="activityRange" type="double" access="field" column="activityRange" node="activityRange"/>
+ <property name="minCrewSize" type="int" access="field" column="minCrewSize" node="minCrewSize"/>
+ <property name="unitFuelCostOfTravel" type="double" access="field" column="unitFuelCostOfTravel" node="unitFuelCostOfTravel"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="tripType" table="triptype_vesseltype" lazy="true" node="tripType" embed-xml="true">
+ <key column="vesselType"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.TripTypeImpl" column="tripType" node="topiaId"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Added: trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml
===================================================================
--- trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml (rev 0)
+++ trunk/isis-fish/src/resources/oldmappings/IsisFish/3.2/fr/ifremer/isisfish/entities/ZoneImpl.hbm.xml 2008-08-29 15:39:43 UTC (rev 1315)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping default-access="field" auto-import="true" package="fr.ifremer.isisfish.entities">
+ <class name="fr.ifremer.isisfish.entities.ZoneImpl" table="zone" node="fr.ifremer.isisfish.entities.ZoneImpl" abstract="false" proxy="fr.ifremer.isisfish.entities.Zone" >
+ <id name="topiaId" type="string" length="255" node="@topiaId"/>
+ <version name="topiaVersion" type="long" node="@topiaVersion"/>
+ <property name="topiaCreateDate" type="date" node="@topiaCreateDate"/>
+ <property name="name" type="text" access="field" column="name" node="name"/>
+ <property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <bag name="cell" table="cell_zone" lazy="true" node="cell" embed-xml="true">
+ <key column="zone"/>
+ <many-to-many class="fr.ifremer.isisfish.entities.CellImpl" column="cell" node="topiaId"/>
+ </bag>
+ </class>
+</hibernate-mapping>
1
0
Author: bpoussin
Date: 2008-08-28 17:05:35 +0000 (Thu, 28 Aug 2008)
New Revision: 1314
Modified:
trunk/isis-fish/pom.xml
Log:
ajout lib jdesktop
Modified: trunk/isis-fish/pom.xml
===================================================================
--- trunk/isis-fish/pom.xml 2008-08-28 08:32:14 UTC (rev 1313)
+++ trunk/isis-fish/pom.xml 2008-08-28 17:05:35 UTC (rev 1314)
@@ -22,7 +22,7 @@
<packaging>jar</packaging>
<!--Version-->
- <version>3.1.6-SNAPSHOT</version>
+ <version>3.2.0.0-SNAPSHOT</version>
<!--Description-->
<description>Simulateur de pecherie complexe.</description>
@@ -496,10 +496,16 @@
<version>20061102</version>
</dependency>
+ <dependency>
+ <groupId>org.jdesktop</groupId>
+ <artifactId>beansbinding</artifactId>
+ <version>1.2.1</version>
+ </dependency>
+
<!--Compile-->
<!--Librairies CodeLutin-->
<dependency>
- <groupId>lutinlib</groupId>
+ <groupId>org.codelutin</groupId>
<artifactId>lutinutil</artifactId>
<version>0.30-SNAPSHOT</version>
<scope>compile</scope>
@@ -552,6 +558,7 @@
<version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
+
<!-- librairie commandline
<dependency>
<groupId>org.codelutin.commandline</groupId>
@@ -849,7 +856,7 @@
<scope>compile</scope>
</dependency>
- <!-- ssj pour les calculs stockastiques -->
+ <!-- ssj pour les calculs stockastiques - ->
<dependency>
<groupId>ssj</groupId>
<artifactId>ssj</artifactId>
@@ -899,7 +906,7 @@
<scope>compile</scope>
</dependency>
- <!-- fin ssj pour les calculs stockastiques -->
+ <!- - fin ssj pour les calculs stockastiques -->
<!-- debut svnkit pour communication subversion -->
<dependency>
1
0
r1313 - in branches/isis-fish-3.2.1: . src/java src/java/fr/ifremer src/java/fr/ifremer/isisfish src/java/fr/ifremer/isisfish/actions src/java/fr/ifremer/isisfish/aspect src/java/fr/ifremer/isisfish/datastore src/java/fr/ifremer/isisfish/datastore/migration src/java/fr/ifremer/isisfish/datastore/update src/java/fr/ifremer/isisfish/entities src/java/fr/ifremer/isisfish/equation src/java/fr/ifremer/isisfish/export src/java/fr/ifremer/isisfish/logging src/java/fr/ifremer/isisfish/logging/co
by sletellier@users.labs.libre-entreprise.org Aug. 28, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 28, 2008
Aug. 28, 2008
Author: sletellier
Date: 2008-08-28 08:32:14 +0000 (Thu, 28 Aug 2008)
New Revision: 1313
Added:
branches/isis-fish-3.2.1/DEADJOE
branches/isis-fish-3.2.1/hs_err_pid8663.log
branches/isis-fish-3.2.1/manifest.mf
branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs
branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties
branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties
branches/isis-fish-3.2.1/src/java/fr/ifremer/PersistenceTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/GenerationHibernate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Action.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Option.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Step.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish$IsisQuitHook.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$AWTSystemTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$DummySystemTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$JDICSystemTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ExportAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ImportAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/OtherAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/SimulationAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/VCSAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache$AdaptaptativeCache.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/StorageException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevelUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil$LogRecord.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/ThreadFilter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole$UpdateUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogMail.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelLineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelsLineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$PatternLineReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/OffsetReader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/CellSelectionLayer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Coordinate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMap.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapInfo.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapList.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultDataMap.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultScale.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Motif.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/OpenMapToolPanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ResultatLayer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Scale.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ZoneDelimiterLayer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/AbstractRule.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/Rule.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/RuleHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel$JProgressBarTableCellRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlan.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor$Licence.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/ResultManager.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/RuleMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationContext.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationControl.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$ObjectCreationListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$SimThread.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$PrepareIndependentSimulationJob.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItem.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlan.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlanIndependent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationJob.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/Simulator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/EditorPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/HidablePanelPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/LayoutConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelEvents.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapEvents.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapToolSetPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/SeasonIntervalPanelPropertySetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/TopiaEntityEvents.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/action/ExitCommand.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Date.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Month.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/RangeOfValues.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/TimeUnit.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/DateType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MatrixType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MonthType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Help.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/SwixATFileTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/UIHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Welcome.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/Input.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputGear.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputMetier.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputSpecies.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/WizardGroupCreation.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResult.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResult.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBean.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphEvent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphMatrixNDDataset.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItem.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateListRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoPanelable.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic$1.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendPanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/MatrixInfoTableModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit$ExportActionListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultView.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUICallback.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptFileFilter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptMapping.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/BackupAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/CancelAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SensWizard.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IDialog.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisAction.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/JaxxUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfItemSelectedInList.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfListNotEmpty.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval$Quitter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/HidablePanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval$IntervalIterator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$1.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseClick.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseMove.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalLabel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalPanel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$DateComponent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$TypeClassMapping.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/Acceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$AbstractAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$BooleanAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DateIntervalAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DoubleAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$FloatAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$IntegerAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$LongAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$ShortAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$StringAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/DateInterval.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$1.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$2.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$3.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$4.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$ModelMock.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$ResultState.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$State.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/ValueGetter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipListRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipComboBoxRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipTableColumnRenderer.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/WithToolTipListModel.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/ParameterColumnEditorPS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/WithToolTipListModelPS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ArgTypes.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Args.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CellPointcomparator.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper$CompilerClassLoader.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelperTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ConverterUtil.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DateConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Doc.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DocHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Docable.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileChangeListener.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileEvent.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor$FileMonitorTask.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MethodTest.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MonthConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/RangeOfValuesConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/StringConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TimeUnitConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TopiaEntityConverter.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Trace.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCS.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSException.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSFactory.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSNone.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVN.class
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVNTest.class
branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx
Log:
Premiere pass vers la migration vers jaxx
Added: branches/isis-fish-3.2.1/DEADJOE
===================================================================
--- branches/isis-fish-3.2.1/DEADJOE (rev 0)
+++ branches/isis-fish-3.2.1/DEADJOE 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,124 @@
+
+*** Ces fichiers modifiés étaient ouvert dans JOE quand il a quitté le Thu Aug 21 11:25:40 2008
+*** JOE a quitté suite à la fermeture du terminal
+
+*** Fichier 'src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx'
+q
+<Application title="isisfish.welcome.title" size='{new Dimension(315,114)}' resizable="true" location='{new Point(0,23)}' layout='{new BorderLayout()}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JMenuBar>
+ <JMenu text="isisfish.welcome.menu.file">
+<!--
+mnemonic="mnFile"
+-->
+ <JMenuItem text="isisfish.welcome.menu.synchro" accelerator="accSync"/>
+<!--
+icon="imgSync" mnemonic="mnSync"
+ActionCommand="thread:Welcome.updateVCS()"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.close" accelerator="accClose"/>
+<!--
+ icon="imgClose" mnemonic="mnClose"
+ActionCommand="close"
+-->
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.frame">
+<!--
+mnemonic="mnFrame"
+-->
+ <JMenuItem text="isisfish.welcome.menu.simulation" accelerator="accSimul"/>
+<!--
+icon="imgSimul" mnemonic="mnSimul"
+ActionCommand="OutputView('simulator/Simul.xml')"
+-->
+ <JMenuItem text="isisfish.welcome.menu.result" accelerator="accResult"/>
+<!--
+ icon="imgResult" mnemonic="mnResult"
+ ActionCommand="Welcome.openResultView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.input" accelerator="accInput"/>
+<!--
+ icon="imgInput" mnemonic="mnInput"
+ActionCommand="Welcome.openInputView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.script" accelerator="accScript"/>
+<!--
+con="imgScript" mnemonic="mnScript"
+ActionCommand="OutputView('script/Script.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.queue" accelerator="accSimulQueue"/>
+<!--
+ icon="imgSimulQueue" mnemonic="mnSimulQueue"
+ActionCommand="OutputView('simulator/SimulQueue.xml')"
+-->
+ <JSeparator/>
+ <JMenu text="isisfish.welcome.menu.configuration">
+<!--
+icon="imgConfig" mnemonic="mnConfig"
+-->
+ <JMenuItem text="isisfish.welcome.menu.configuration" accelerator="accConfig"/>
+<!--
+ icon="imgConfig" mnemonic="mnConfig"
+ ActionCommand="Welcome.showConfig()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.vcs.configuration" accelerator="accVCSConfig"/>
+<!--
+icon="imgVCSConfig" mnemonic="mnVCSConfig"
+ActionCommand="fr.ifremer.isisfish.versionning.ui.VCSConfigUI.doLaunch()"
+-->
+ </JMenu>
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.help">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem text="isisfish.welcome.menu.help" accelerator="accHelp"/>
+<!--
+icon="imgHelp" mnemonic="mnHelp"
+ActionCommand="help"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.monitor" accelerator="accLogMonitor"/>
+<!--
+icon="imgLogMonitor" mnemonic="mnLogMonitor"
+ActionCommand="OutputView('ApplicationMonitor.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.about" accelerator="accAbout"/>
+<!--
+ icon="imgAbout" mnemonic="mnAbout"
+ActionCommand="about"
+-->
+ </JMenu>
+ </JMenuBar>
+ <JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/Welcome.xgl")}'>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/simulation.jpg"))}'
+ background="white" constraints='"simul"' onActionPerformed='new fr.ifremer.isisfish.ui.simulator.Simul2()'/>
+<!--
+ border="EmptyBorder(6,6,6,6)" (pour tous)
+-->
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/calc.jpg"))}'
+ background="white" constraints='"result"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/book.jpg"))}'
+ background="white" constraints='"input"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/bookPage.jpg"))}'
+ background="white" constraints='"script"'/>
+ </JPanel>
+ <JPanel constraints="BorderLayout.SOUTH">
+ <StatusBar2/>
+ </JPanel>
+</Application>
+
+*** Fichier '(Sans nom)'
+/home/letellier/.bash_profile
+/home/letellier/.bashrc
+./go.sh
+pom.xml
+pom.xml
+src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx
+* Build Log *
Added: branches/isis-fish-3.2.1/hs_err_pid8663.log
===================================================================
--- branches/isis-fish-3.2.1/hs_err_pid8663.log (rev 0)
+++ branches/isis-fish-3.2.1/hs_err_pid8663.log 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,469 @@
+#
+# An unexpected error has been detected by Java Runtime Environment:
+#
+# SIGSEGV (0xb) at pc=0x00007fff41b3a755, pid=8663, tid=1093966160
+#
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0-b23 mixed mode linux-amd64)
+# Problematic frame:
+# C [libc.so.6+0x30755] catgets+0x15
+#
+# If you would like to submit a bug report, please visit:
+# http://java.sun.com/webapps/bugreport/crash.jsp
+# The crash happened outside the Java Virtual Machine in native code.
+# See problematic frame for where to report the bug.
+#
+
+--------------- T H R E A D ---------------
+
+Current thread (0x00007fff1761ac00): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=8678, stack(0x0000000041249000,0x000000004134a000)]
+
+siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000008
+
+Registers:
+RAX=0x00007fff16d52950, RBX=0x00007fff17590030, RCX=0x00007fff16c2482d, RDX=0x0000000000000001
+RSP=0x0000000041347e80, RBP=0x0000000041347eb0, RSI=0x0000000000000013, RDI=0x0000000000000000
+R8 =0x00007fff171f1860, R9 =0x0000000000000000, R10=0x0000000000000001, R11=0x00007fff41b3a740
+R12=0x00000000000000f6, R13=0x00007fff171f1860, R14=0x000000000000000f, R15=0x0000000041348390
+RIP=0x00007fff41b3a755, EFL=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
+ TRAPNO=0x000000000000000e
+
+Top of Stack: (sp=0x0000000041347e80)
+0x0000000041347e80: 00007fff17590030 00007fff16b82396
+0x0000000041347e90: 00007fff171f1860 00007fff17433ab0
+0x0000000041347ea0: 00007fff17433ab0 00007fff1734b700
+0x0000000041347eb0: 0000000041347f00 00007fff16b82fb5
+0x0000000041347ec0: 00000000009f7801 00000000000000f8
+0x0000000041347ed0: 0000000000011f08 00007fff171f1860
+0x0000000041347ee0: 00007fff16a3f280 00000000000000f6
+0x0000000041347ef0: 00000000000000f8 00007fff1734b700
+0x0000000041347f00: 00007fff1761ad98 00007fff16a3f38e
+0x0000000041347f10: 00007fff16d406d0 0000000041347fa0
+0x0000000041347f20: 00007fff17590030 00007fff16a40053
+0x0000000041347f30: 0000000041347fb0 00007fff414cece3
+0x0000000041347f40: 0000000000000000 00007fff17466d60
+0x0000000041347f50: 00007fff17466d60 0005003017689328
+0x0000000041347f60: 00007fff171f1860 01017fff00000000
+0x0000000041347f70: 00007fff100c9ec0 00007fff173d9ff0
+0x0000000041347f80: 00007fff163b8120 0000000000000000
+0x0000000041347f90: 0000000041348380 0000000000000000
+0x0000000041347fa0: 00007fff161ab192 0000000000000000
+0x0000000041347fb0: 00007fff161ab218 0000000000000001
+0x0000000041347fc0: 00007fff161ab168 00007fff174651c0
+0x0000000041347fd0: 00007fff161aa73a 0000000000000020
+0x0000000041347fe0: 00007fff161aa743 0000000000000018
+0x0000000041347ff0: 00007fff161aa865 0000000000000000
+0x0000000041348000: 00007fff161aaa15 0000000000000005
+0x0000000041348010: 00007fff161aaa17 0000000000000030
+0x0000000041348020: 00007fff161aaa08 0000000000000131
+0x0000000041348030: 00007fff161aa78a 0000000000000054
+0x0000000041348040: 00007fff16c1126b 00007fff1734c200
+0x0000000041348050: 00007fff16c11287 00007fff1734c2d0
+0x0000000041348060: 00007fff16c11295 00007fff1734c3a0
+0x0000000041348070: 00007fff16c1295f 0000000000000001
+
+Instructions: (pc=0x00007fff41b3a755)
+0x00007fff41b3a745: 41 89 d2 74 7a 83 c6 01 85 f6 7e 73 85 d2 78 6f
+0x00007fff41b3a755: 48 8b 57 08 4c 8b 5f 18 48 8d 04 52 48 89 d3 31
+
+Stack: [0x0000000041249000,0x000000004134a000], sp=0x0000000041347e80, free space=1019k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+C [libc.so.6+0x30755] catgets+0x15
+C [libmawt.so+0x1a6fb5]
+
+Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::Interpreter
+v ~BufferBlob::StubRoutines (1)
+
+--------------- P R O C E S S ---------------
+
+Java Threads: ( => current thread )
+ 0x00007fff17042800 JavaThread "Image Fetcher 0" daemon [_thread_blocked, id=8679, stack(0x0000000040817000,0x0000000040918000)]
+ 0x0000000040118800 JavaThread "DestroyJavaVM" [_thread_blocked, id=8664, stack(0x000000004012b000,0x000000004022c000)]
+=>0x00007fff1761ac00 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=8678, stack(0x0000000041249000,0x000000004134a000)]
+ 0x00007fff17620800 JavaThread "AWT-Motif" daemon [_thread_blocked, id=8677, stack(0x0000000041148000,0x0000000041249000)]
+ 0x00007fff17620000 JavaThread "AWT-Shutdown" [_thread_blocked, id=8676, stack(0x0000000040d2e000,0x0000000040e2f000)]
+ 0x00007fff1734c800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=8675, stack(0x0000000041047000,0x0000000041148000)]
+ 0x00007fff1767f800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=8673, stack(0x0000000040c2d000,0x0000000040d2e000)]
+ 0x00007fff1767d000 JavaThread "CompilerThread1" daemon [_thread_blocked, id=8672, stack(0x0000000040b2c000,0x0000000040c2d000)]
+ 0x00007fff17679800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=8671, stack(0x0000000040a2b000,0x0000000040b2c000)]
+ 0x00007fff17a37800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8670, stack(0x000000004092a000,0x0000000040a2b000)]
+ 0x00007fff17a1d000 JavaThread "Finalizer" daemon [_thread_blocked, id=8669, stack(0x0000000041e79000,0x0000000041f7a000)]
+ 0x00007fff17a1b800 JavaThread "Reference Handler" daemon [_thread_blocked, id=8668, stack(0x0000000041d78000,0x0000000041e79000)]
+
+Other Threads:
+ 0x00007fff17a16800 VMThread [stack: 0x0000000040716000,0x0000000040817000] [id=8667]
+ 0x00007fff176bd800 WatcherThread [stack: 0x000000004196a000,0x0000000041a6b000] [id=8674]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap
+ PSYoungGen total 152896K, used 18361K [0x00007fff325c0000, 0x00007fff3d060000, 0x00007fff3d060000)
+ eden space 131072K, 14% used [0x00007fff325c0000,0x00007fff337ae700,0x00007fff3a5c0000)
+ from space 21824K, 0% used [0x00007fff3bb10000,0x00007fff3bb10000,0x00007fff3d060000)
+ to space 21824K, 0% used [0x00007fff3a5c0000,0x00007fff3a5c0000,0x00007fff3bb10000)
+ PSOldGen total 349568K, used 0K [0x00007fff1d060000, 0x00007fff325c0000, 0x00007fff325c0000)
+ object space 349568K, 0% used [0x00007fff1d060000,0x00007fff1d060000,0x00007fff325c0000)
+ PSPermGen total 21248K, used 11945K [0x00007fff17c60000, 0x00007fff19120000, 0x00007fff1d060000)
+ object space 21248K, 56% used [0x00007fff17c60000,0x00007fff1880a6f0,0x00007fff19120000)
+
+Dynamic libraries:
+40000000-40009000 r-xp 00000000 08:01 1033038 /opt/jdk/bin/java
+40108000-4010a000 rwxp 00008000 08:01 1033038 /opt/jdk/bin/java
+4010a000-4012b000 rwxp 4010a000 00:00 0 [heap]
+4012b000-4012e000 ---p 4012b000 00:00 0
+4012e000-4022c000 rwxp 4012e000 00:00 0
+40716000-40717000 ---p 40716000 00:00 0
+40717000-40817000 rwxp 40717000 00:00 0
+40817000-4081a000 ---p 40817000 00:00 0
+4081a000-40918000 rwxp 4081a000 00:00 0
+4092a000-4092d000 ---p 4092a000 00:00 0
+4092d000-40a2b000 rwxp 4092d000 00:00 0
+40a2b000-40a2e000 ---p 40a2b000 00:00 0
+40a2e000-40b2c000 rwxp 40a2e000 00:00 0
+40b2c000-40b2f000 ---p 40b2c000 00:00 0
+40b2f000-40c2d000 rwxp 40b2f000 00:00 0
+40c2d000-40c30000 ---p 40c2d000 00:00 0
+40c30000-40d2e000 rwxp 40c30000 00:00 0
+40d2e000-40d31000 ---p 40d2e000 00:00 0
+40d31000-40e2f000 rwxp 40d31000 00:00 0
+40e45000-40e46000 ---p 40e45000 00:00 0
+40e46000-40f46000 rwxp 40e46000 00:00 0
+40f46000-40f47000 ---p 40f46000 00:00 0
+40f47000-41047000 rwxp 40f47000 00:00 0
+41047000-4104a000 ---p 41047000 00:00 0
+4104a000-41148000 rwxp 4104a000 00:00 0
+41148000-4114b000 ---p 41148000 00:00 0
+4114b000-41249000 rwxp 4114b000 00:00 0
+41249000-4124c000 ---p 41249000 00:00 0
+4124c000-4134a000 rwxp 4124c000 00:00 0
+4196a000-4196b000 ---p 4196a000 00:00 0
+4196b000-41a6b000 rwxp 4196b000 00:00 0
+41d78000-41d7b000 ---p 41d78000 00:00 0
+41d7b000-41e79000 rwxp 41d7b000 00:00 0
+41e79000-41e7c000 ---p 41e79000 00:00 0
+41e7c000-41f7a000 rwxp 41e7c000 00:00 0
+7fff10000000-7fff10610000 rwxp 7fff10000000 00:00 0
+7fff10610000-7fff14000000 ---p 7fff10610000 00:00 0
+7fff14165000-7fff14191000 r-xp 00000000 08:01 1007636 /opt/jdk/jre/lib/amd64/libjpeg.so
+7fff14191000-7fff14291000 ---p 0002c000 08:01 1007636 /opt/jdk/jre/lib/amd64/libjpeg.so
+7fff14291000-7fff14297000 rwxp 0002c000 08:01 1007636 /opt/jdk/jre/lib/amd64/libjpeg.so
+7fff14297000-7fff14497000 rwxp 7fff14297000 00:00 0
+7fff14497000-7fff1449e000 r-xp 00000000 08:01 1007664 /opt/jdk/jre/lib/amd64/libnio.so
+7fff1449e000-7fff1459d000 ---p 00007000 08:01 1007664 /opt/jdk/jre/lib/amd64/libnio.so
+7fff1459d000-7fff1459f000 rwxp 00006000 08:01 1007664 /opt/jdk/jre/lib/amd64/libnio.so
+7fff1459f000-7fff145b2000 r-xp 00000000 08:01 1007682 /opt/jdk/jre/lib/amd64/libnet.so
+7fff145b2000-7fff146b3000 ---p 00013000 08:01 1007682 /opt/jdk/jre/lib/amd64/libnet.so
+7fff146b3000-7fff146b6000 rwxp 00014000 08:01 1007682 /opt/jdk/jre/lib/amd64/libnet.so
+7fff146b6000-7fff146b9000 r-xs 00018000 08:03 2908875 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xom-1.0.jar
+7fff146b9000-7fff146bc000 r-xs 00010000 08:03 2908843 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-server-3.1.jar
+7fff146bc000-7fff146c0000 r-xs 00016000 08:03 2908842 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-common-3.1.jar
+7fff146c0000-7fff146c3000 r-xs 00009000 08:03 2908841 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-client-3.1.jar
+7fff146c3000-7fff146c6000 r-xs 00015000 08:03 2908874 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlrpc-2.0.jar
+7fff146c6000-7fff146cc000 r-xs 00019000 08:03 2908871 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xmlParserAPIs-2.6.2.jar
+7fff146cc000-7fff146d1000 r-xs 00016000 08:03 2908873 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xml-apis-1.0.b2.jar
+7fff146d1000-7fff146d2000 r-xs 00001000 08:03 2908872 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-jsr181-api-1.0-M1.jar
+7fff146d2000-7fff146d4000 r-xs 00005000 08:03 2908848 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-java5-1.2.6.jar
+7fff146d4000-7fff146dc000 r-xs 00060000 08:03 2908847 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-core-1.2.6.jar
+7fff146dc000-7fff146de000 r-xs 00006000 08:03 2908846 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-annotations-1.2.6.jar
+7fff146de000-7fff146e1000 r-xs 0001e000 08:03 2908845 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xfire-aegis-1.2.6.jar
+7fff146e1000-7fff146f5000 r-xs 000e3000 08:03 2908870 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xercesImpl-2.6.2.jar
+7fff146f5000-7fff14703000 r-xs 00161000 08:03 2908869 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xerces-1.2.3.jar
+7fff14703000-7fff14721000 r-xs 0027d000 08:03 2908868 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/xalan-2.7.0.jar
+7fff14721000-7fff14728000 r-xs 00075000 08:03 2908844 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/wstx-asl-3.2.0.jar
+7fff14728000-7fff1472d000 r-xs 00020000 08:03 2908867 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/wsdl4j-1.6.1.jar
+7fff1472d000-7fff1472f000 r-xs 00007000 08:03 2908840 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ws-commons-util-1.0.2.jar
+7fff1472f000-7fff14731000 r-xs 0000f000 08:03 2908851 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/util-0.1.jar
+7fff14731000-7fff14738000 r-xs 00032000 08:03 2908829 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/topia-service-0.9-SNAPSHOT.jar
+7fff14738000-7fff1473b000 r-xs 00029000 08:03 2908828 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/topia-2.0.26-SNAPSHOT.jar
+7fff1473b000-7fff14798000 r-xs 00b3c000 08:03 2908785 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tools-1.6.0.jar
+7fff14798000-7fff147a0000 r-xs 0003f000 08:03 2908838 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tapestry-ioc-5.0.7.jar
+7fff147a0000-7fff147b8000 r-xs 000e7000 08:03 2908837 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tapestry-core-5.0.7.jar
+7fff147b8000-7fff147b9000 r-xs 00001000 08:03 2908836 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/tapestry-annotations-5.0.7.jar
+7fff147b9000-7fff147bb000 r-xs 0000d000 08:03 2908856 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/swixml-1.5-144-cl-20050912.jar
+7fff147bb000-7fff147c4000 r-xs 0004e000 08:03 2908865 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/swixat-0.6.0.jar
+7fff147c4000-7fff147c6000 r-xs 0000b000 08:03 2908852 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/swing-0.1.jar
+7fff147c6000-7fff147d7000 r-xs 00120000 08:03 2908857 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/svnkit-1.1.2.jar
+7fff147d7000-7fff147da000 r-xs 00019000 08:03 2908830 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/stax-utils-20040917.jar
+7fff147da000-7fff147dc000 r-xs 00005000 08:03 2908864 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/stax-api-1.0.1.jar
+7fff147dc000-7fff147e1000 r-xs 00026000 08:03 2908861 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/spring-core-2.0.1.jar
+7fff147e1000-7fff147ea000 r-xs 00053000 08:03 2908860 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/spring-beans-2.0.1.jar
+7fff147ea000-7fff147ec000 r-xs 00001000 08:03 2908855 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/slf4j-log4j12-1.4.3.jar
+7fff147ec000-7fff147ed000 r-xs 00003000 08:03 2908854 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/slf4j-api-1.4.3.jar
+7fff147ed000-7fff147ef000 r-xs 00008000 08:03 2908806 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/servlet-api-2.2.jar
+7fff147ef000-7fff147f0000 r-xs 00010000 08:03 2908859 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/sdoc-0.5.0-beta.jar
+7fff147f0000-7fff147f2000 r-xs 0000c000 08:03 2908850 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/runtime-0.1.jar
+7fff147f2000-7fff14813000 r-xs 00233000 08:03 2908832 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/openmap-4.6.jar
+7fff14813000-7fff14819000 r-xs 00051000 08:03 2908805 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/mail-1.3.3.jar
+7fff14819000-7fff1481a000 r-xs 00007000 08:03 2908827 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinxml-0.7-SNAPSHOT.jar
+7fff1481a000-7fff1481e000 r-xs 00058000 08:03 2908826 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinwidget-0.10-SNAPSHOT.jar
+7fff1481e000-7fff14822000 r-xs 00031000 08:03 2908824 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinutil-0.30-SNAPSHOT.jar
+7fff14822000-7fff14824000 r-xs 00013000 08:03 2908823 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinmatrix-0.15.jar
+7fff14824000-7fff14828000 r-xs 00015000 08:03 2908821 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutingenerator-0.51-SNAPSHOT.jar
+7fff14828000-7fff14832000 r-xs 0007a000 08:03 2908835 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lucene-core-2.2.0.jar
+7fff14832000-7fff1483a000 r-xs 00048000 08:03 2908816 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/looks-1.2.2.jar
+7fff1483a000-7fff1483d000 r-xs 0000f000 08:03 2908820 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/logkit-1.0.1.jar
+7fff1483d000-7fff14844000 r-xs 00053000 08:03 2908819 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/log4j-1.2.14.jar
+7fff14844000-7fff1484a000 r-xs 0002f000 08:03 2908801 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/l2fprod-common-0.1.jar
+7fff1484a000-7fff1484f000 r-xp 00000000 08:01 1230422 /usr/lib/libXfixes.so.3.1.0
+7fff1484f000-7fff14a4e000 ---p 00005000 08:01 1230422 /usr/lib/libXfixes.so.3.1.0
+7fff14a4e000-7fff14a4f000 rwxp 00004000 08:01 1230422 /usr/lib/libXfixes.so.3.1.0
+7fff14a4f000-7fff14a58000 r-xp 00000000 08:01 1230442 /usr/lib/libXrender.so.1.3.0
+7fff14a58000-7fff14c57000 ---p 00009000 08:01 1230442 /usr/lib/libXrender.so.1.3.0
+7fff14c57000-7fff14c58000 rwxp 00008000 08:01 1230442 /usr/lib/libXrender.so.1.3.0
+7fff14c58000-7fff14c61000 r-xp 00000000 08:01 1230412 /usr/lib/libXcursor.so.1.0.2
+7fff14c61000-7fff14e61000 ---p 00009000 08:01 1230412 /usr/lib/libXcursor.so.1.0.2
+7fff14e61000-7fff14e62000 rwxp 00009000 08:01 1230412 /usr/lib/libXcursor.so.1.0.2
+7fff14e62000-7fff14ee0000 r-xp 00000000 08:01 1007663 /opt/jdk/jre/lib/amd64/libfontmanager.so
+7fff14ee0000-7fff14fdf000 ---p 0007e000 08:01 1007663 /opt/jdk/jre/lib/amd64/libfontmanager.so
+7fff14fdf000-7fff14ff5000 rwxp 0007d000 08:01 1007663 /opt/jdk/jre/lib/amd64/libfontmanager.so
+7fff14ff5000-7fff15006000 rwxp 7fff14ff5000 00:00 0
+7fff15006000-7fff1500b000 r-xp 00000000 08:01 1230416 /usr/lib/libXdmcp.so.6.0.0
+7fff1500b000-7fff1520a000 ---p 00005000 08:01 1230416 /usr/lib/libXdmcp.so.6.0.0
+7fff1520a000-7fff1520b000 rwxp 00004000 08:01 1230416 /usr/lib/libXdmcp.so.6.0.0
+7fff1520b000-7fff15226000 r-xp 00000000 08:01 1231244 /usr/lib/libxcb.so.1.0.0
+7fff15226000-7fff15425000 ---p 0001b000 08:01 1231244 /usr/lib/libxcb.so.1.0.0
+7fff15425000-7fff15426000 rwxp 0001a000 08:01 1231244 /usr/lib/libxcb.so.1.0.0
+7fff15426000-7fff15427000 r-xp 00000000 08:01 1231242 /usr/lib/libxcb-xlib.so.0.0.0
+7fff15427000-7fff15626000 ---p 00001000 08:01 1231242 /usr/lib/libxcb-xlib.so.0.0.0
+7fff15626000-7fff15627000 rwxp 00000000 08:01 1231242 /usr/lib/libxcb-xlib.so.0.0.0
+7fff15627000-7fff1563e000 r-xp 00000000 08:01 1230369 /usr/lib/libICE.so.6.3.0
+7fff1563e000-7fff1583d000 ---p 00017000 08:01 1230369 /usr/lib/libICE.so.6.3.0
+7fff1583d000-7fff1583f000 rwxp 00016000 08:01 1230369 /usr/lib/libICE.so.6.3.0
+7fff1583f000-7fff15842000 rwxp 7fff1583f000 00:00 0
+7fff15842000-7fff1584a000 r-xp 00000000 08:01 1230393 /usr/lib/libSM.so.6.0.0
+7fff1584a000-7fff15a49000 ---p 00008000 08:01 1230393 /usr/lib/libSM.so.6.0.0
+7fff15a49000-7fff15a4a000 rwxp 00007000 08:01 1230393 /usr/lib/libSM.so.6.0.0
+7fff15a4a000-7fff15a4c000 r-xp 00000000 08:01 1230405 /usr/lib/libXau.so.6.0.0
+7fff15a4c000-7fff15c4b000 ---p 00002000 08:01 1230405 /usr/lib/libXau.so.6.0.0
+7fff15c4b000-7fff15c4c000 rwxp 00001000 08:01 1230405 /usr/lib/libXau.so.6.0.0
+7fff15c4c000-7fff15c55000 r-xp 00000000 08:01 1230428 /usr/lib/libXi.so.6.0.0
+7fff15c55000-7fff15e54000 ---p 00009000 08:01 1230428 /usr/lib/libXi.so.6.0.0
+7fff15e54000-7fff15e55000 rwxp 00008000 08:01 1230428 /usr/lib/libXi.so.6.0.0
+7fff15e55000-7fff15f54000 r-xp 00000000 08:01 1230399 /usr/lib/libX11.so.6.2.0
+7fff15f54000-7fff16153000 ---p 000ff000 08:01 1230399 /usr/lib/libX11.so.6.2.0
+7fff16153000-7fff16158000 rwxp 000fe000 08:01 1230399 /usr/lib/libX11.so.6.2.0
+7fff16158000-7fff161b5000 r-xp 00000000 08:01 1230446 /usr/lib/libXt.so.6.0.0
+7fff161b5000-7fff163b5000 ---p 0005d000 08:01 1230446 /usr/lib/libXt.so.6.0.0
+7fff163b5000-7fff163bb000 rwxp 0005d000 08:01 1230446 /usr/lib/libXt.so.6.0.0
+7fff163bb000-7fff163bc000 rwxp 7fff163bb000 00:00 0
+7fff163bc000-7fff163cd000 r-xp 00000000 08:01 1230420 /usr/lib/libXext.so.6.4.0
+7fff163cd000-7fff165cc000 ---p 00011000 08:01 1230420 /usr/lib/libXext.so.6.4.0
+7fff165cc000-7fff165cd000 rwxp 00010000 08:01 1230420 /usr/lib/libXext.so.6.4.0
+7fff165cd000-7fff165d2000 r-xp 00000000 08:01 1230448 /usr/lib/libXtst.so.6.1.0
+7fff165d2000-7fff167d2000 ---p 00005000 08:01 1230448 /usr/lib/libXtst.so.6.1.0
+7fff167d2000-7fff167d3000 rwxp 00005000 08:01 1230448 /usr/lib/libXtst.so.6.1.0
+7fff167d3000-7fff167db000 r-xp 00000000 08:01 1230436 /usr/lib/libXp.so.6.2.0
+7fff167db000-7fff169db000 ---p 00008000 08:01 1230436 /usr/lib/libXp.so.6.2.0
+7fff169db000-7fff169dc000 rwxp 00008000 08:01 1230436 /usr/lib/libXp.so.6.2.0
+7fff169dc000-7fff16c41000 r-xp 00000000 08:01 1007645 /opt/jdk/jre/lib/amd64/motif21/libmawt.so
+7fff16c41000-7fff16d40000 ---p 00265000 08:01 1007645 /opt/jdk/jre/lib/amd64/motif21/libmawt.so
+7fff16d40000-7fff16d94000 rwxp 00264000 08:01 1007645 /opt/jdk/jre/lib/amd64/motif21/libmawt.so
+7fff16d94000-7fff16d97000 rwxp 7fff16d94000 00:00 0
+7fff16d97000-7fff16e21000 r-xp 00000000 08:01 1007661 /opt/jdk/jre/lib/amd64/libawt.so
+7fff16e21000-7fff16f20000 ---p 0008a000 08:01 1007661 /opt/jdk/jre/lib/amd64/libawt.so
+7fff16f20000-7fff16f39000 rwxp 00089000 08:01 1007661 /opt/jdk/jre/lib/amd64/libawt.so
+7fff16f39000-7fff16f5d000 rwxp 7fff16f39000 00:00 0
+7fff16f5d000-7fff16f61000 r-xs 00043000 08:03 2908849 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/core-0.1.jar
+7fff16f61000-7fff16f6a000 r-xs 00037000 08:03 2908797 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-primitives-1.0.jar
+7fff16f6a000-7fff16f6f000 r-xs 00026000 08:03 2908796 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-math-1.1.jar
+7fff16f6f000-7fff16f70000 r-xs 0000c000 08:03 2908795 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-logging-1.1.jar
+7fff16f70000-7fff16f74000 r-xs 0002f000 08:03 2908794 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-lang-2.1.jar
+7fff16f74000-7fff16f79000 r-xs 00041000 08:03 2908793 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-jxpath-1.2.jar
+7fff16f79000-7fff16f7e000 r-xs 00040000 08:03 2908792 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-httpclient-3.0.jar
+7fff16f7e000-7fff16f81000 r-xs 0000f000 08:03 2908791 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-discovery-0.2.jar
+7fff16f81000-7fff16f85000 r-xs 00020000 08:03 2908790 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-digester-1.8.jar
+7fff16f85000-7fff16f92000 r-xs 0007c000 08:03 2908789 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-collections-3.1.jar
+7fff16f92000-7fff16f94000 r-xs 0000a000 08:03 2908788 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-codec-1.3.jar
+7fff16f94000-7fff16f99000 r-xs 0002a000 08:03 2908787 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-beanutils-1.7.0.jar
+7fff16f99000-7fff16f9a000 r-xs 00008000 08:03 2908786 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/commons-attributes-api-2.1.jar
+7fff16f9a000-7fff16f9f000 r-xs 00040000 08:03 2908780 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/bsh-2.0b1.jar
+7fff16f9f000-7fff16fa2000 r-xs 0000d000 08:03 2908779 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/avalon-framework-4.1.3.jar
+7fff16fa2000-7fff16fa4000 r-xs 00002000 08:03 2908778 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/aspectwerkz-jdk5-2.0.jar
+7fff16fa4000-7fff16fa6000 r-xs 00012000 08:03 2908777 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/aspectwerkz-core-2.0.jar
+7fff16fa6000-7fff16fa9000 r-xs 00016000 08:03 2908817 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jrexx-1.1.1.jar
+7fff16fa9000-7fff16fb1000 r-xs 00051000 08:03 2908866 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/trove-1.0.2.jar
+7fff16fb1000-7fff16fb3000 r-xs 00011000 08:03 2908858 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/qdox-1.4.jar
+7fff16fb3000-7fff16fc0000 r-xs 000a1000 08:03 2908776 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/aspectwerkz-2.0.jar
+7fff16fc0000-7fff16fc1000 r-xs 00007000 08:03 2908775 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-util-1.5.4-snapshot.jar
+7fff16fc1000-7fff16fc3000 r-xs 00003000 08:03 2908774 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-attrs-1.5.4-snapshot.jar
+7fff16fc3000-7fff16fc5000 r-xs 00003000 08:03 2908773 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-attrs-1.5.3.jar
+7fff16fc5000-7fff16fc6000 r-xs 00006000 08:03 2908772 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/asm-1.5.4-snapshot.jar
+7fff16fc6000-7fff16fcc000 r-xs 00067000 08:03 2908771 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/antlr-2.7.6.jar
+7fff16fcc000-7fff16fd7000 r-xs 00095000 08:03 2908770 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-optional-1.5.1.jar
+7fff16fd7000-7fff16fd8000 r-xs 00002000 08:03 2908834 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-launcher-1.7.0.jar
+7fff16fd8000-7fff16feb000 r-xs 00128000 08:03 2908833 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-1.7.0.jar
+7fff16feb000-7fff16ffa000 r-xs 000ee000 08:03 2908769 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ant-1.6.5.jar
+7fff16ffa000-7fff16ffc000 r-xs 0000c000 08:03 2908803 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/activation-1.0.2.jar
+7fff16ffc000-7fff17000000 r-xs 0001c000 08:03 2908839 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/XmlSchema-1.1.jar
+7fff17000000-7fff17001000 r-xs 00006000 08:03 2908800 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/JRclient-RF503.jar
+7fff17001000-7fff17002000 r-xs 0000a000 08:03 2908799 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/JRI-0.2-4-cl.jar
+7fff17002000-7fff17202000 rwxp 7fff17002000 00:00 0
+7fff17203000-7fff17205000 r-xs 0000a000 08:03 2908812 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jdic_stub-linux-20061102.jar
+7fff17205000-7fff17208000 r-xs 0000c000 08:03 2908811 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jdic-20061102.jar
+7fff17208000-7fff1720b000 r-xs 00015000 08:03 2908810 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jcommon-0.7.0.jar
+7fff1720b000-7fff17211000 r-xs 00032000 08:03 2908808 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jaxen-1.1.1.jar
+7fff17211000-7fff17219000 r-xs 0007d000 08:03 2908809 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/javassist-3.6.ga.jar
+7fff17219000-7fff17222000 r-xs 00087000 08:03 2908804 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/javahelp-2.0.02.jar
+7fff17222000-7fff1722a000 r-xs 0004b000 08:03 2908863 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/j2ssh-core-0.2.2.jar
+7fff1722a000-7fff17231000 r-xs 00046000 08:03 2908862 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/j2ssh-common-0.2.2.jar
+7fff17231000-7fff17233000 r-xs 00053000 08:03 2908802 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/j2h-1.3.1.jar
+7fff17233000-7fff17245000 r-xs 00245000 08:03 2908783 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/icu4j-2.6.1.jar
+7fff17245000-7fff17267000 r-xs 0020a000 08:03 2908853 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/hibernate-3.2.6.ga-eventpatch.jar
+7fff17267000-7fff17767000 rwxp 7fff17267000 00:00 0
+7fff17767000-7fff1776e000 r-xs 00000000 08:01 1231911 /usr/lib/gconv/gconv-modules.cache
+7fff1776e000-7fff177ad000 r-xp 00000000 08:01 1304793 /usr/lib/locale/fr_FR.utf8/LC_CTYPE
+7fff177ad000-7fff17938000 r-xs 02def000 08:01 1000894 /opt/jdk/jre/lib/rt.jar
+7fff17938000-7fff17a6b000 rwxp 7fff17938000 00:00 0
+7fff17a6b000-7fff17a8a000 rwxp 7fff17a6b000 00:00 0
+7fff17a8a000-7fff17b40000 rwxp 7fff17a8a000 00:00 0
+7fff17b40000-7fff17b5f000 rwxp 7fff17b40000 00:00 0
+7fff17b5f000-7fff19120000 rwxp 7fff17b5f000 00:00 0
+7fff19120000-7fff1d060000 rwxp 7fff19120000 00:00 0
+7fff1d060000-7fff3d060000 rwxp 7fff1d060000 00:00 0
+7fff3d061000-7fff3d067000 r-xs 0004e000 08:03 2908815 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jfreechart-0.9.3.jar
+7fff3d067000-7fff3d06f000 r-xs 0009e000 08:03 2908814 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jetty-5.1.10.jar
+7fff3d06f000-7fff3d2df000 rwxp 7fff3d06f000 00:00 0
+7fff3d2df000-7fff4006f000 rwxp 7fff3d2df000 00:00 0
+7fff4006f000-7fff4007d000 r-xp 00000000 08:01 1007679 /opt/jdk/jre/lib/amd64/libzip.so
+7fff4007d000-7fff4017f000 ---p 0000e000 08:01 1007679 /opt/jdk/jre/lib/amd64/libzip.so
+7fff4017f000-7fff40182000 rwxp 00010000 08:01 1007679 /opt/jdk/jre/lib/amd64/libzip.so
+7fff40182000-7fff40183000 rwxp 7fff40182000 00:00 0
+7fff40183000-7fff401ac000 r-xp 00000000 08:01 1007660 /opt/jdk/jre/lib/amd64/libjava.so
+7fff401ac000-7fff402ab000 ---p 00029000 08:01 1007660 /opt/jdk/jre/lib/amd64/libjava.so
+7fff402ab000-7fff402b2000 rwxp 00028000 08:01 1007660 /opt/jdk/jre/lib/amd64/libjava.so
+7fff402b2000-7fff402bf000 r-xp 00000000 08:01 1007675 /opt/jdk/jre/lib/amd64/libverify.so
+7fff402bf000-7fff403be000 ---p 0000d000 08:01 1007675 /opt/jdk/jre/lib/amd64/libverify.so
+7fff403be000-7fff403c1000 rwxp 0000c000 08:01 1007675 /opt/jdk/jre/lib/amd64/libverify.so
+7fff403c1000-7fff403cb000 r-xp 00000000 08:01 2596952 /lib/libnss_files-2.7.so
+7fff403cb000-7fff405cb000 ---p 0000a000 08:01 2596952 /lib/libnss_files-2.7.so
+7fff405cb000-7fff405cd000 rwxp 0000a000 08:01 2596952 /lib/libnss_files-2.7.so
+7fff405cd000-7fff405d7000 r-xp 00000000 08:01 2596962 /lib/libnss_nis-2.7.so
+7fff405d7000-7fff407d6000 ---p 0000a000 08:01 2596962 /lib/libnss_nis-2.7.so
+7fff407d6000-7fff407d8000 rwxp 00009000 08:01 2596962 /lib/libnss_nis-2.7.so
+7fff407d8000-7fff407e0000 r-xp 00000000 08:01 2596948 /lib/libnss_compat-2.7.so
+7fff407e0000-7fff409df000 ---p 00008000 08:01 2596948 /lib/libnss_compat-2.7.so
+7fff409df000-7fff409e1000 rwxp 00007000 08:01 2596948 /lib/libnss_compat-2.7.so
+7fff409e1000-7fff409f7000 r-xp 00000000 08:01 2596946 /lib/libnsl-2.7.so
+7fff409f7000-7fff40bf6000 ---p 00016000 08:01 2596946 /lib/libnsl-2.7.so
+7fff40bf6000-7fff40bf8000 rwxp 00015000 08:01 2596946 /lib/libnsl-2.7.so
+7fff40bf8000-7fff40bfa000 rwxp 7fff40bf8000 00:00 0
+7fff40bfa000-7fff40c01000 r-xp 00000000 08:01 1007668 /opt/jdk/jre/lib/amd64/native_threads/libhpi.so
+7fff40c01000-7fff40d02000 ---p 00007000 08:01 1007668 /opt/jdk/jre/lib/amd64/native_threads/libhpi.so
+7fff40d02000-7fff40d04000 rwxp 00008000 08:01 1007668 /opt/jdk/jre/lib/amd64/native_threads/libhpi.so
+7fff40d04000-7fff40d05000 rwxp 7fff40d04000 00:00 0
+7fff40d05000-7fff40d0d000 r-xp 00000000 08:01 2596986 /lib/librt-2.7.so
+7fff40d0d000-7fff40f0c000 ---p 00008000 08:01 2596986 /lib/librt-2.7.so
+7fff40f0c000-7fff40f0e000 rwxp 00007000 08:01 2596986 /lib/librt-2.7.so
+7fff40f0e000-7fff40f8e000 r-xp 00000000 08:01 2596939 /lib/libm-2.7.so
+7fff40f8e000-7fff4118d000 ---p 00080000 08:01 2596939 /lib/libm-2.7.so
+7fff4118d000-7fff4118f000 rwxp 0007f000 08:01 2596939 /lib/libm-2.7.so
+7fff4118f000-7fff41884000 r-xp 00000000 08:01 1007671 /opt/jdk/jre/lib/amd64/server/libjvm.so
+7fff41884000-7fff41983000 ---p 006f5000 08:01 1007671 /opt/jdk/jre/lib/amd64/server/libjvm.so
+7fff41983000-7fff41acd000 rwxp 006f4000 08:01 1007671 /opt/jdk/jre/lib/amd64/server/libjvm.so
+7fff41acd000-7fff41b0a000 rwxp 7fff41acd000 00:00 0
+7fff41b0a000-7fff41c62000 r-xp 00000000 08:01 2596902 /lib/libc-2.7.so
+7fff41c62000-7fff41e62000 ---p 00158000 08:01 2596902 /lib/libc-2.7.so
+7fff41e62000-7fff41e65000 r-xp 00158000 08:01 2596902 /lib/libc-2.7.so
+7fff41e65000-7fff41e67000 rwxp 0015b000 08:01 2596902 /lib/libc-2.7.so
+7fff41e67000-7fff41e6c000 rwxp 7fff41e67000 00:00 0
+7fff41e6c000-7fff41e6e000 r-xp 00000000 08:01 2596919 /lib/libdl-2.7.so
+7fff41e6e000-7fff4206e000 ---p 00002000 08:01 2596919 /lib/libdl-2.7.so
+7fff4206e000-7fff42070000 rwxp 00002000 08:01 2596919 /lib/libdl-2.7.so
+7fff42070000-7fff42086000 r-xp 00000000 08:01 2596980 /lib/libpthread-2.7.so
+7fff42086000-7fff42286000 ---p 00016000 08:01 2596980 /lib/libpthread-2.7.so
+7fff42286000-7fff42288000 rwxp 00016000 08:01 2596980 /lib/libpthread-2.7.so
+7fff42288000-7fff4228c000 rwxp 7fff42288000 00:00 0
+7fff4228c000-7fff422a9000 r-xp 00000000 08:01 2596882 /lib/ld-2.7.so
+7fff422a9000-7fff422aa000 r-xs 00001000 08:03 2908825 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinutilextra-0.1.jar
+7fff422aa000-7fff422ab000 r-xs 00002000 08:03 2908822 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/lutinj2r-0.1.jar
+7fff422ab000-7fff422ae000 r-xs 0001b000 08:03 2908818 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/junit-3.8.1.jar
+7fff422ae000-7fff422b0000 r-xs 00001000 08:03 2908807 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jta-1.0.1B.jar
+7fff422b0000-7fff422b3000 r-xs 00023000 08:03 2908813 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/jdom-1.0.jar
+7fff422b3000-7fff422bc000 r-xs 00101000 08:03 2908782 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/h2-1.0.60.jar
+7fff422bc000-7fff422c0000 r-xs 00038000 08:03 2908781 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ganymed-ssh2-build210.jar
+7fff422c0000-7fff422c4000 r-xs 0002f000 08:03 2908831 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/ehcache-1.2.3.jar
+7fff422c4000-7fff422ca000 r-xs 0001e000 08:03 2908784 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/dt.jar
+7fff422ca000-7fff422d4000 rwxp 7fff422ca000 00:00 0
+7fff422d4000-7fff4238a000 rwxp 7fff422d4000 00:00 0
+7fff4238a000-7fff4238c000 rwxp 7fff4238a000 00:00 0
+7fff4238c000-7fff42393000 r-xp 00000000 08:01 1007651 /opt/jdk/jre/lib/amd64/jli/libjli.so
+7fff42393000-7fff42494000 ---p 00007000 08:01 1007651 /opt/jdk/jre/lib/amd64/jli/libjli.so
+7fff42494000-7fff42496000 rwxp 00008000 08:01 1007651 /opt/jdk/jre/lib/amd64/jli/libjli.so
+7fff42496000-7fff42497000 rwxp 7fff42496000 00:00 0
+7fff42497000-7fff4249c000 r-xs 00048000 08:03 2908798 /home/letellier/PROJET/isis-fish-3.2.1/target/dependency/dom4j-1.6.1.jar
+7fff4249c000-7fff424a4000 rwxs 00000000 08:01 909374 /tmp/hsperfdata_letellier/8663
+7fff424a4000-7fff424a5000 rwxp 7fff424a4000 00:00 0
+7fff424a5000-7fff424a6000 r-xp 7fff424a5000 00:00 0
+7fff424a6000-7fff424a9000 rwxp 7fff424a6000 00:00 0
+7fff424a9000-7fff424ab000 rwxp 0001d000 08:01 2596882 /lib/ld-2.7.so
+7fff4a493000-7fff4a4aa000 rwxp 7ffffffe8000 00:00 0 [stack]
+7fff4a5fc000-7fff4a5fe000 r-xp 7fff4a5fc000 00:00 0 [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
+
+VM Arguments:
+jvm_args: -Xmx512M -Xms512M -Dlog4j.configuration=file:/home/letellier/PROJET/isis-fish-3.2.1/src/resources/log4j.properties
+java_command: fr.ifremer.isisfish.ui.Welcome2
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=/opt/jdk
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/jdk/bin:/opt/maven2/bin:/opt/ant/bin
+USERNAME=letellier
+LD_LIBRARY_PATH=/opt/jdk/jre/lib/amd64/server:/opt/jdk/jre/lib/amd64:/opt/jdk/jre/../lib/amd64
+SHELL=/bin/bash
+DISPLAY=:0.0
+
+Signal Handlers:
+SIGSEGV: [libjvm.so+0x661750], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGBUS: [libjvm.so+0x661750], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGFPE: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGPIPE: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGXFSZ: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGILL: [libjvm.so+0x504550], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
+SIGUSR2: [libjvm.so+0x5067c0], sa_mask[0]=0x00000000, sa_flags=0x10000004
+SIGHUP: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGINT: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGTERM: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+SIGQUIT: [libjvm.so+0x506520], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
+
+
+--------------- S Y S T E M ---------------
+
+OS:lenny/sid
+
+uname:Linux 2.6.24-19-generic #1 SMP Fri Jul 11 21:01:46 UTC 2008 x86_64
+libc:glibc 2.7 NPTL 2.7
+rlimit: STACK 8192k, CORE 0k, NPROC 40960, NOFILE 1024, AS infinity
+load average:1.58 0.60 0.28
+
+CPU:total 2 (2 cores per cpu, 1 threads per core) family 15 model 104 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext
+
+Memory: 4k page, physical 3920464k(1951064k free), swap 1951888k(1951888k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (10.0-b23) for linux-amd64 JRE (1.6.0_07-b06), built on Jun 10 2008 01:53:27 by "java_re" with gcc 3.2.2 (SuSE Linux)
+
+time: Mon Aug 25 18:41:07 2008
+elapsed time: 1 seconds
+
Added: branches/isis-fish-3.2.1/manifest.mf
===================================================================
--- branches/isis-fish-3.2.1/manifest.mf (rev 0)
+++ branches/isis-fish-3.2.1/manifest.mf 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
Added: branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs
===================================================================
--- branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs (rev 0)
+++ branches/isis-fish-3.2.1/src/java/.isis-config-3_cvs 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+#IsisFish configuration version 3
+#Fri Dec 07 10:44:28 GMT 2007
+compileDirectory=/home/tony/isis-build
+cvsSsh2Connexion=false
+defaultExportDirectory=/home/tony/isis-export
+cvsUserName=anonymous
+simulatorServerPassword=guest
+simulatorServer=http\://simulateur.ifremer.fr\:9090
+javadocUrl=http\://isis-fish.labs.libre-entreprise.org/apidocs/
+smtpServer=smtp
+cvsHost=/home/tony/.isis-ssh-host.xml
+cvsHostName=cvs.labs.libre-entreprise.org
+userName=chemit tony
+cvsKeyFile=/home/tony/.isis-ssh-key
+cvsDataBase=isis-fish-data
+database=/home/tony/isis-database-3_cvs
+simulatorServerLogin=anonymous
+language=fr
+country=FR
+userMail=chemit at codelutin.com
+cvsRepository=/cvsroot/isis-fish
Added: branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties
===================================================================
--- branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties (rev 0)
+++ branches/isis-fish-3.2.1/src/java/VCSConfig-junit_CVS.properties 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,6 @@
+vcs.username=anonymous
+vcs.hostname=cvs.labs.libre-entreprise.org
+vcs.remote.path=/cvsroot/isis-fish
+vcs.remote.database=isis-fish-vcs-test_junit
+vcs.local.database=isis-vcs-test_junit_SVN
+vcs.ssh2.connexion=false
Added: branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties
===================================================================
--- branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties (rev 0)
+++ branches/isis-fish-3.2.1/src/java/VCSConfig-junit_SVN.properties 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,7 @@
+vcs.username=anonymous
+vcs.typeRepo=TAG
+vcs.hostname=labs.libre-entreprise.org
+vcs.remote.path=svnroot/isis-fish-data
+vcs.ssh2.connexion=false
+vcs.remote.database=isis-fish-vcs-test_junit
+vcs.local.database=isis-vcs-test_junit_SVN
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/PersistenceTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/PersistenceTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/GenerationHibernate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/GenerationHibernate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Action.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Action.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Option.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Option.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Step.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig$Step.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish$IsisQuitHook.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish$IsisQuitHook.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$AWTSystemTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$AWTSystemTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$DummySystemTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$DummySystemTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$JDICSystemTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray$JDICSystemTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ExportAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ExportAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ImportAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/ImportAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/OtherAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/OtherAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/SimulationAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/SimulationAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/VCSAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/actions/VCSAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache$AdaptaptativeCache.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache$AdaptaptativeCache.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorageTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/StorageException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/StorageException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevelUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/LogLevelUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtilTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil$LogRecord.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil$LogRecord.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/TestUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/ThreadFilter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/ThreadFilter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole$UpdateUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole$UpdateUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsole.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogConsoleModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogMail.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/console/LogMail.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/FileOffsetReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelLineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelLineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelsLineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$LevelsLineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$PatternLineReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil$PatternLineReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/LineReaderUtilTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/MemoryOffsetReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/OffsetReader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/io/OffsetReader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/CellSelectionLayer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/CellSelectionLayer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Coordinate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Coordinate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMap.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMap.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapInfo.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapInfo.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapList.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DataMapList.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultDataMap.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultDataMap.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultScale.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/DefaultScale.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Motif.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Motif.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/OpenMapToolPanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/OpenMapToolPanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ResultatLayer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ResultatLayer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Scale.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/Scale.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ZoneDelimiterLayer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/ZoneDelimiterLayer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/AbstractRule.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/AbstractRule.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/Rule.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/Rule.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/RuleHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/rule/RuleHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel$JProgressBarTableCellRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel$JProgressBarTableCellRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlan.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlan.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanContext.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor$Licence.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor$Licence.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/MetierMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/PopulationMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/ResultManager.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/ResultManager.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/RuleMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/RuleMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationContext.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationContext.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationControl.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationControl.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$ObjectCreationListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$ObjectCreationListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$SimThread.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper$SimThread.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$PrepareIndependentSimulationJob.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$PrepareIndependentSimulationJob.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItem.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItem.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlan.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlan.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlanIndependent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationItemPlanIndependent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationJob.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager$SimulationJob.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationManager.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip (rev 0)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationTest.zip 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,1110 @@
+PK,6TestNonRegression7/PKPK,6(TestNonRegression7/parameters.propertiesTMSÛ@œûWxkI Pñ!ÂL§ùh¡ÓRÂíØ»H}×^;±]Ó@OÖJ«'œ'f@##içhDÂýÒíÜþùÕàìêôÒœŸ]º^ïÂI>='Õ8ÛB4:B~M1Åâ€dŽœ}IaÆOHÓð;y§N¢4Jv +ìÚÞÃC¿×ëu{÷álg]ì¬,Z WâùèP¡Î&,bñ;/â1¥9lÎ
o=·x#}VŽõN8NNúØF²¡hkøF .+91ªy7«y~¬RbÔüÓ8ä: ù÷ŽA¶ã~(Ÿç
+ò÷cñœlaávxuy,â².Ý¡Va÷ž{`+q€|¬~{ÚËHW8wì\uŸ&ÙæÊDI#¡ÖhP×Ñ"ÎÒFŒ(Ý_°G3ÁÍ©ÙaXÝCb}3mlwðÀq¿¹YÊof¥Žx ç8ÓðÈ@È!-lÁí¹c¯R®æ,zox`T> ÖÅiú,Æ@+!§sHÀSefÛ¹
+CÓ_kák`=7ÎÖè¡î
k Fâ:cŽKMÁÜÒú]
ß(LSJâL%¥Ï9HYŽSãs#Ž
þöC±Zs3:QCÅFpÙU!ÉHèµP+<Ç
+e0!%Hï̯uk^0AßlùëП¶¡¥3aÆJòºYÏÞ¿oÍkøáygr
9°KyèÑT§ÚRdª=â±isžIq©;øÿûÞÉk€y*¥¬ÑóPKi©žPKð
,6%TestNonRegression7/data-backup.sql.gzd¹UT]M°5
+ÁÝÝ!ž$ž»wàîî®ÁÝ
+Ø@p÷à°qwÙžëÍwÎyùÇ]s¬~¬QÕ5GÏÙ]d±ðÿûwÙºI7ÒŒœ¿!æFq2>VœZXZîÑ'þZHN²ô@
cåàþª$vódwX.tãáDÀ4~Ã?œhß?þÆ:Ô»^NJÖûn®¬œNôèoßÖ4
~>ï[Ž#uÝŸ^L×·oyœûyœU¯aÜglŒóÔû?>ôø/Ÿ·==ól}ø]¿ÞN\ÔŒñmÞÜlM%úÎÛj2 RwµxúÍ úÎɰ¿¿nw\Lã|ÎŽÁsChÇcÓ'-=o}Þ=Kàζޚ4þ
+Ë.¥ÇËŒ®Ø©!¡ßųó.ßÇ)ßWy£öGÃÇ{ãúÛ!ÏŒ.ãÍûo²žk<êMæM4`k²þÛõ$?¢íÖÄöŸ^}È·°àËÏ¡7Ó³ó^¡Œ{
+÷wZÅGů՟3ü6WÎöÞ÷2ò.§Ñº×Ëþù>>/5xyw÷·±{MóS#Ò#]<¥3xy>M[%ÝÇÄîÓ,]BŸï6kGÏ{j
+ºõ¡Kyî
+f$YE~ö÷Ó×ÕZíxÓ1;¯³Ûó=õKK=ž¡×NÄúxx¡¡{;K;Ois|¡%Ro5t©\^¬Î$± ~¿`·VÔÄþ8J<IéèÛJ>~ú$Fje0N{²Dmw> ²ÆšÔûÏÍ
+g
+ÁÃÕœ·ZDᎵ3g5ÓFB_Ë(ð0aNÒ<\.ÕýÊ0,å]誀Á€Jëà×-}F
+ù=PÅF55NÄ|äEI
+pÁk'oêáï%<ÄÀ:A¥Ù°Ú~ÕhÒ]·/g±öoÒ€c«,žð7Ê
+»ïÅø«Vq,F&ËÑŽŠ,5* +8/øy~Œ@#ÌŸÏnò_y÷=Ú>¿ûò7ñêÚ~Õ>á9×^ۣȌ¥©sÜÌsvS¡~Ûiøé·Õ%b«:÷X ôø£µB:å_3:OóIﻩhIݯwÝñüœœ`óŒgyW>}/ßî'xÊh²
+·
+âý>ï*ùýýbx>V ¶rIQ·ÜHr
+îŠPÙy{¿4ñ£N))µWtÙd€ã»ºnšQ\ø~iJ5r
w/=zV?ü_ßoÅ5Øš6Äj¡¡Äd|ÐÒgïw=þnQð¬šß°OÐr:KÑÇñù"Q=g7zŸów¡õóõçåæiÊ?æÊpêjn7n7'. AY §açëëÙ³0ª%:?Ã-eõs»y[|ž¹~Tå%ÃÒþ(<¿zºÜÈ8x×âTùQ,Ï(ØÙátu~N-hëqÝùêó¿ðy¶¯ñèöyW(ï¯oåzó
+ø8ŒÃf5zÚÅqÈÕïÈ4ÞægªÂLêÌʶzÆÑ;ãÚÒo3
+œ53̺¹æ{8.屺¿ÏÕ:ùZcSÚ¿ç0beÒ·_nųÂ-9JLãäÙºŸÆÍ$Iõ£7§B bÇà*Ÿ±<Ktß¶ô{èÆN^Wµ/S9KÃ'÷Â7B{W}â§e$ñ_ÅØEPj³èEø+Øä7Ó%!04`r00ûSÕÒÏy-žÚÔ2wéXäQ+T'-î±[-NBŽüºÉ©úº#,
+ÍŒwÅá¯#K; M_ϲÀô6íÍÓû¶}œÕ$7ÀôÔé H
+\]»p
+ÓwŠŠ¯u
+Yýh×edi§}èÚu³ŸÑp&ìêºôºD4sËømÊœ}ʲuiêíû i¬
ØoÛFFJ>Œ®vSj&®ëG2.ë1·`1 G¯î>%+I_9÷k}Uc:Ð@èx4L¬ßù|RyfðÁœ4ú:=4ŸÚ]Ÿì
áK`â~>Íÿð®:HÔ*AZ«ñM40õ»÷^fB:~ôrzöPŸ;Ëðù|mêññ:óïjœü<©àde{j?ráš"ik):£!]²Ö¹uW*AB6íóÒô%]4É×dÈé» FCòÃDErûðŸ~~zlPuV ÜÝqfàùLÒV`g«TÙŠ5n;Å¡æøùaòY7?d&m,oý·J«È&ßþáÛQ?ŠÝQ'^i€úõRÀâ7ñ7³ÿ
+ÉðrNvVëJâËô4Âshñ¿Ñ®Ñ0óæ^ñ;Uÿ%A|öÓ¹ªÑ1ã'æ©,.\ß,aMÿ!û[ÇD£š3ºTîÂ_¡ÿàú0»ßóý]ZFÔÜr<~Îç#ú¯ðpý`§©UIJÈ]Ó;°}œ,äcÓà¥E1áÑ$<
++¶_LN&°jůÜÁb¬î^$]ŸÀ=œÀýìú¬ýó[Ej{œ!ó^pØðØgZmªVZiúòc@^m;ßAš«[@ýõ iœ¯ M¹¡Œ)\h"í%Æ>'Bt'¹zØŒ|'dºñÙJöi) çgëÌ_Ρ¥îRb³ln1</°kQ4èü絜ùÅ3žqÞŽ÷Ùç»ûµ=CT.æxBÜ=ð.@/v£þÞÀŽsè2RVúÌŸ/;Ó\;bws{Ûg@7áZ!P,ô¢§ýxJÆé(4Á"Û£êpa±HäçöBfsXêùQÞ1NSììóz$œ±)Øøã9DŒ·Šé6"å-%ìüµQÇd® Ì#ýÕíwŒž¶'øSÆÀïçlÍÆ£ªdÌ?®³V%\~u!}t(ÄA¹y䯣sXVŸ£õ\/-wf{Ûr»÷{R¬èçË©¬<:dkÙÞ¬}jÔãð)~ö²^Ðä~3Yÿ5I{>ðT'S duÓq£šúé·Ÿxu3 éÿØ4ÑÃbÐ]Öœ7æ}p:ÐŽ#âŸOŠJ 1;K
:
Ì/*}U{ã2¶~÷€p¹µòêeÐé¯>t®sS-¶Kš!µÉÁ6߬«šñÚ·ài¥*³ÔõNÕܪHµµöGë=š[(6&³?}7eBãa76Ì^nØï¶àäBs8úå@RlæS%øA0z>XP1Q}d8yh"Â1tÖrõ_z±LXŸš-ãº>[~ºE³ÔyÖfÄK)EY8"|Vg³QxPØözKi ;Pµ#GÕö¡òoYÂ9iæäs¶îeC,«:ÚØ*:(жs!ÂöÑЧY at kÍ%1T#ßGó]ÛŸç=ÒIn/Ã?{Ëm'áVûë27/4Ž\}ѶØCÒÝe&³M>¶ñÕt~sŠÕq®×гÅ`a€é1»`L4ãN"}J¹ñJ»šÞKYªo·xÜŒ ^=Þ¬-¹S·qG=%Zë.7øsFÚÆ±{ºêã:×þ])!Æ:k§)qÒÌÀ¡o&«Dßam0-²6®>gö$»Š«ÎVuöåÝÐ]n$ñO÷ªUóY³œÍK÷j]Ñ-þÉ;@2ÔìOGèµb÷ õ·=æ]ËLrKl²IÕ6ŸFÄ4H£òÝG
+\\¥BÌZfø¶¯«3Çd¬&×EnNzß_()Uü@Y_Þ¯ÛüË
¬?ÒÔlç»PïÊöÇôbGîpÄ6AÂn<š#[Ã,;%óúàÊGðã&<Íg«ícýÓÞë"Üy#{ï}ØáË
+²3>Þ÷obYRÁ
+_DhÖÒ7_{Æ>ïo+NR.ô-4€KjX*ÌqP5e#0ÔeflrÈiÖÞîû;ÐÛ^Ê2E`øôfJ«04nÓ
+zCúÕðf®cÌo=Uì"^Êl®q<w7©Õ}°i©RŒ2Š}üñm|y~å4óåÅML w³°ÿÃ"0îBh^SZéÃÁAÇzaÝ¥MÅ~bUj9HC·Î3²Ì.ísf×üÉd¡ |æe%D!Ò7ÑwôaõfÁYöZ2{eûInÄÔÓAgî]péòÇ{óíÕ×lŸóÇ â×ÛrºëN÷ §Ìú2 at wöxò4×ýûh0à)²²®®»9~wº÷ãeMÉQg³±ÓÂû5òÀò
+M=m¿Ök3æšöy3
+U÷Wªxõ"~xÂ,>âøYóDÔÞC×Óý°ŒÌ»œºQÞì°9°À^_š`ÆM`_:j
+Ì|Û-vÀ¥»îy5zù8óDô~pÚ&U»%ïª|E[ÌñÚîó7ÆÐ<<UêZ¹2îªâúLÝg7õÝkvS¢Mä¿>vè0ŒGRó¬íÍ«PvžbIGÿFµ$â{eÈÉOÀ4ñžI?`X'·S÷«PþÏB B ;þîáAYE9^RÚÞúdPê)wQ?Íz±À~Ï`é&øa\>GÌâ],È&L*]×"Š4_nÒ»³öËݰ²F¯zeQ(/XVàÄó"!ªeçŠX¢#ÄKú¥£R&Y!æyâžœÝܹM3Hîý~\Â/JK3·ö[É&ûØ¢vØoxF|"Úew
¿tA::O
+Wd6À}Šõ°Ÿ\Ë5
+â(þsÔy±³xC¬9µ®ób?kaÒFBktó-€)D8÷ËpIøXt\s_ÜÿaéÕpù±¿;ÿŸK
+Á»ŠhD¬Cbp>áOêBs*djÛyÀcMÄ,š
"~IìråAibû+*çùŒxG×ek»=!YMW]`¶œß*3é!!ŠBç }÷5=WùÓjÿ®ðô§~µìŠº±ßuÄædÙ>QëÛön²#¯eø~«¿]Œ%§©â³ËÕTe£Ã(uÛ¬À!çTs"R[¢-ºšWÚ¹ânùi᥯_S ¿ç²§\œ?CZ·rñû¥»óÑ®$§_è®ÎÏ»ãÉÙ9š£GÎçÑÖÚݧ? öTÃ
+Yž£ŒlOó¬¯ËïÂFžmVö_
+øe ÈiÃMÖÐêFòŠ¿éË@2]L$<!ùCíßßï
ÿ<>UàdRŠšÕì4RbŸYÝØÐ:]Óc8Iã}ÁôBûËýS)ÑÐmÊУÜÕñr31"zôO«ýêIèÉC?o'ÆGšõÑ]ji®²²ß÷\8^§?
^ÌîÞ
+
+
+_·>ßÎ 6|6©{)}n·tý°®êŒã|°jIñnWðUñ
+ùÁûl?:Üð°gÌŸÊ
£nÊßœØq§ïhí%wbQôô
+R
+§UzÜ?°óÐëò?·õU'zTkP Ýóu4óZÝà^nùË?ïë¥"ûŸîmdŽ.Œt
+
+ø~MSµ?©œŒŒ~°Z:J³~žÞœm©Ê}î|În¿L8;Ú_àÝ©ïæ}òìñ²Ê;â-®UÌ÷Pï.?
Õb§AE©ÈäFOê9+8=uß2ÕÕõ®œ-9fKmEìµö(Îôø>ŒyÓ2?¯}ÜR}¬Ý¡°XxëL±.¯¿µWòܵûLÖçºóö8Ô,
+uu^üÜJvÁlË}p®úŒ>ɶºÁýÚteOQP8ñ@HÁüLiqZ:¬â4ü46ÍÿÉ»pj>Óó¶fü޳tÍLÓârRšJ ¿OžúsÅÝ;(«æó
+æÑÓÏÈér-ùôt¢h]8J\ÉZîÍ«
+öï{û5
HH/]Dæ-SHúÖwOè÷±>Ô>Í`orÞͱ>ýo|òîŒ$jÍ
;æûëàŸ8ÞœAÉõÀ_àj3 °4Ž iŸ÷.+áG7¿5PR×Ñ aæ €%ÎfF¿È4€MàÄí2d¬Q§ÀÑ«òÄûIöGÀßÂíöÂïü0,: (/*šÝªò³ÃŽŽ*±ÎQ
ê°ÌêRÝT)b캪E©nÍÛëÂ"âYgqÔvëß?\ékæ8Î
cùl°Ò(dPÉ:ïfPØŸ¢7àr¢tAàzt€:]"× £m¢ò=œùYŠ_ÏmïA9œù> k]¬pü5k&Yúà tMr?Nš|>ïYÅ)ó
_Ê9¶ÀŸkŽP6ÂBwÏ{Ž[|ádõóbÛpZB;ù=»i×»à]i±ÃÀwv
+÷SøQÓÖê·ZÆÀ|\äÙ
³Ä^ûÈ÷ÖœÆcŸò=ô°d
+ÊïQüíåhwLûJv{gû:«lÄOœd:ßnÓB!fÔoIzušýrŽ¥·îMgÍ# ûPŽëÇÜ
8íöŒ>i«ÅôÏœúÆ[£yËëÝ@-×Êuúê6-ËÍÛ.€Çr=ÆÜÒtUÑ3l»²N'ÐjfºTŠ
+¯
+šC-d;4È\g5aسéPã¥6#ù+SÑ}Šÿ9c÷¹Ñó&§žfÔEâ÷bÁ¹\iX8«kX¡øQrññüû©#2Òòš§bDÞ÷
+¯ë}>ãõ5U5°á«évj¢çx3vêìÝUÁ\Ýi6§¿ãÏ÷a£h\X1JébHéðí|HYdJèé/U%MÝoÿ=ÿÙP!ai'aÏp«È>ÏKUsMåך Œyx
+UÂoOÎl¯^O×ÕÂ*
+TÈ&íqà8HlIÈ3VûkÇ[»ÉÔG»:ó[}ïïã¥M?Ý_@öŒíÒG¯õ=üBœ9žÝÞï§|U1sE=÷ÝzŠ¿ovœ3Úõù±òÑnŒÏ÷ž'&v17+0 ïžõ<ú}.Ê#ïvžÎ!pÃu9&NÛl©þáÃG¡H|0
+\¿×® *zæz¢MmݵxŠ%ŽèüñZ/eÉÈ_Yž;ž
+pãvóþ~_kY!y=ÿ<;Þ|+Ca׌ºS{¿ErÞSÞüúðŽè|é#9<
+ìø|áZøÖ%À,ÿç£Ës4¯eÙÕl?ÙÉÓêùøûÞÏŽo×Ðwj¥Ù]OÐgaÈ*hUVWß7âuscŸK³®>Ú¡Q^%Xœ[E\l)ûe2LIcFÁ|¢ú»NùœªYm¡zmn·!²ùïþ¥'J=Ö&Á׺Æs>n{Þ¿CAgu ³6^Ñy: ö?$yLD¹hMþ76CaüÈÎÞÜF¶Ìx~äÞöI¶µ]*xÿr,ñyqßyqFaaìà)¶ø7H_Ú÷éçÛ@
PqáÍîÔéÌ@á̯Ÿ«ï4ydD~wGUÔCš/Ö÷;#ѯá ZuØ}ï~íÉ?ŽnNÆ
?ÔùÛv¶ÈÙ¯ùfRó,ií(Ú·Âðò¶ho?lï/yø6ð £á±œähÙùèZDy,6lìÖ~ÛŽL0jÐðð€^û::ô»`^ãý;:à+;Î:ð×9Çøy{ÛgoFBÍŽr*ãÝú95~[þižk_lùÂâ Ÿ@hkªï¢§T±«žž$œØÃøéîDV
+úÙò EeÅ+å1ÒjÎ/5€1KwñÉëOùLC1Šnx%
+íî®)Oì¶õè,Yàa³#Gh«<ñ¶éþÙBЧŮº6°_µŒÄ»ûCJkí Zt=ÈiG°Õõçž»}YŸÿ$'űãš)cªu-ñsÓ_v¯Éª qraD0{f-vÜÿãDŸà;«
_œáàïÑM¬Ü]ó8p*¥t¿M;Ð&ôrïE¢ª%ÚÝ]f$iŸÌ^2ö{øxí»¿ßÞSWÒ©üœ×£óÄTñüõÍ<ÏmXë²§\#Å;þ69=~ø[õhxWŽŠåë¶Ÿj±v×ð<¹tPµ4n#nŠûYg:T³N[s#íe£çü)7»CbéØ,Z.Œý©üž÷¥"3Ðάªìy£@¥+wwO%Pàéê5ÕÉ8ÎÛ@LÉÊê· SÍ_î1à®Onÿ°éÆVQµ5¥«F§þoÕSëzÏ·lo at iGßçC?
mÚh¢l Ææó£pÊn5IÕYâ®oÉλ
äU¬eÄMŒµÅ^v.ë='-/qá_hª*Ši127£®Õ¿Xæ']Þ+`ânŸ5žÛ¹XŒFéEÑgK«à¿ÍyÝ=77y<¡}#ßÈp©%52Eº¥D`ZÈ£jùc!ŸæhÏXŸ\áÆ@
+^'ÿÅè Å¡Kâ2U!iXNÇÈc.Áðý²4ÿ)»8EëÈSÊ7{@ÊCdW¥¯»§AƵþ×[;#ucG?á>«A:oµNùçb gïEHíuÖpw&oÒmSA_~JCsðÞkd,ÙOßÄvôÁOàÓìÛ0Vïmdߣìs!&X-±h3»œÿº+»^=}YëlíÛåa6Ϫ+Àíe YÄ^«¶ó:©v̧Çá~i÷!ã!«òRå\z×BÌ#5è¬Ôùúýóÿ9µñ¥I@$yLŒmJSoQ{ïTÃïb|VuÇšÍ`oñ°åq-e-°š¶jEЀ" qU€öA¿{p+©l^¿Ì3<åÕ5ôðqÂßš^¶ß dåñãaůoÀÄ¿kê®
+²Pá$b5m~âÚ¶OŒ$Ý;õzÓq¿ow5öIžøËúsã4<}Ó©«å0;K,õ:"éTÚÖ¥³ÐÒ.Ì FR³AÓ }ÔŸ#ݹbæ1[óÔÿæû=tFÛã$çx¥Öùl°Ñ!LŸü
+2D§pé>KGsøÿöûÄ-
+æ¡·Æ*N/2ØßÝ¿Þlh?úRW©ñÉ[z)ìbiP6@Ö¯"ÄNß6ìWøcpß$kö°B·øÝÿrsêÕúÓßâfáÍ#XìØÕ$þ¬]
+R§ Ÿ<}ÊW\PÚš_¯.äbÅPK[cªäͬ6:$:£jŠY
+µB
+Õ&ifÛÍ¢}ó¯ýVWí3ÀN̩ӿØòüÅàæF·þÝ%Ú=Å
+Ò€2Š1+ìÅ@×dÄ~¿µ;vœÅ|Ûµ:Ûæx6rpÆÔæÀß³3ìõõ,ÿõ$ÉÿnŠryÛJüÂôÿmótú|{!ŒÆÐ: {^Ô)IWó÷`G"®Åm@ËYÏ+VYå;0, Œö¹vúÅc<æ ¯©²$iñw£cøËè*VºÒ ¶àwü§ñ9"Põ,áÊ|ð[\³ASÞTšOM×,©ÜØÌNÙÿUè=ÿ@g1ú8ÏgãîŠ0LT=Ññoÿä :ÕRÓá¯VRÊOcóãµÔG:žÎr0׬ø*ìùîèÙºÝ5ÙAÞÀüÜ£¢Xdo2/òùÿvÀVw»;Õm¢ù_Â×í§/hs'Ç
+èÓÜyxaº7Þ{8×/å]*âpÖA²ç¥:QÿQ=] £é×B}Z*k¿
+ÞK_<uëd|s-[aDhPyuz%¿Ù Vuëߨ²ùª'òbô~.²i¢úÊO[ÐRu=£Æ]*HݵÙX5üä¬(Ô¡rÁŽYVýçe$®fì$g,]'ü
''F+úÞhŸøë_Ô_eâËÑÉœ®îXSsÝíœzЪÕß+Áš<åMq;í§7Ã1ª;lªãÏ87ÿÓÜô®±ŸaÉQë¬}ÍÞÆEMÒ$
+®¹9âÔøþ .Í"ý+³1û[³¬Ô¿ÈÚªm©nìuý-M-¿,æ"~_ħbà
úØ<NW3þ+q¢le-u7®³l°
+Ö)`¶eZtvVQ!oÖŽYaø»ÊbNö«'MS$èÙÝgLÓäñÜšXT§SGÄaRñðM³ë,æÛüÇ^-¿ìž²Þ®)å;»á ÿN«Ÿjbæ¢ÄZÍÔ~ï]S¿5
+
+ŠRÎa÷{cžÝ^nü¢ô¶í!u9^
+môaÅ`ŒÐ°gÀ_Ñ#E¿µ·ß
+Ÿï> >õNï`2Y~Áȶ]ßÅJÇlíÇßÓk±MŠ8ò8Ø^-l)Î!®5Òpn§J«^&äï;V_!qèÁÀÐõ"TD at M§ŸÓªJò°:=vZØižÿ}PÑ#®}Lºï¶cFñŽÎÿîK
ùº¶ú\O]îøŽeÜÆ§2n<M*ÞN[ííßqzÙRÈ×
+`ùñ~f#®:€÷R{óSvÕP&2
ت:ãmÖÖO€éÝtäËàB$ ñ
+.4ÜJ¶ô¿ùåêpHQšµaÈñ
äÚ×îÕ œk¶5²sÀÇ#ÓÔB
«K¹€óšgxú²i*ð2@ÏÉê°
ÖêGÒÛãÚ§ÐÆçs Å#³±ÔÍ÷¶Äünû~M3M"É-ÞW>æARÔkVL`"tdš;HCfÎ*é×¥ZÖÄq?7|Õž³nŽª7º9¡ULõøQ8X¥¥M*ø5Ø¢Ç)ÿð#Ú`LJ& £ ZH'ÔJ8é©¡¿å¹ÁtÜMÚ"#7\r$Ao¯
+ICXsCXùkqYñz.öù%×yà/c+ù\º\ÔæÐ1Leî×coîdûI_v»7IôJ²žG©ø'&Yj%èçÞ
+c¡bÈH7Q, hÌX<[t:šw0ZYÀ!µÅvS+t5¥@v":"M£8f(ÁûîP$f @ÒRÿê@úÛ¯Êds)DÒmciùW4n®$MuåfIáCu×Ê\hkáâþxõ#?qÓ×Ë?ŸÝYÒï·K¯G6Ïò+ôߺ[ŒÄG5¥o?ì}Üô¬ãL~böÛ2Jre¿hlŠËRÐBœ*Z
+BsòîìG
š±€Ó·ÅØé\ô õ @œÈš7*¿4Ü¥C?Î7ž{7e€$ä5ãJ AËí=kìi+©*|ã'i»»-/Bê&wÇÛç:Õ4×'ÿ3Ïö9ßtý[ö ÕdÛà£*Ñ
+íôɜĊ{ØÌåªÏikn+$$(ðU}*€×œú¶Òùݳ³ñëÊØ]3Ô
+ùát¯K9×m<M©ó¢V¯Ð^r¿Ð£HeËäØ%^ÂÉ@/ìªîr(#»\DofØÃ@i¯)Ž>Êæ¥1ªIàø!
+£~Ñ%ûs)>×`=A[ïP£Ë×6\?©ÍÊð°üàÔº¿qý,ôD6x<\ìJõË~·X¹íÍæ0/Ï@ü\8ûµHÚú=;±ÇZ{AIš®=â¶ÒdÒ"vSè~¥cÃðì×£Ï@Ê`×A`í>òÔ·Gp+Þç±üv#©o·áÑwþvÖakعIJQ·»ž§@ofòÕ-ìºlOßOÊiâ|î×1¬~Ä<phÑÜ/Õ΢Èq×å¹RÕ€áÁu|PTP4éTìÅ^¶ çz&2Hö].axžøµ«®Í?/kfª¿réµK,ŒTûú,Œ:@ŠÕkæßŸ\=i<ÖÂ9DµµdGP'yØ
+Âhg]ÝYD±*Íi·F»¶f{y÷»2ñrçMãï³ÎòsVO.ÄqûNzÝ5D2HC[Éñ¶îižkkV íi
@mÚcŠ;ð
+ï/Bý&hë¿É(=ôýüäõoÐVò»ØKf=®]=2pûñðÃwî~«XíØþÖ6ÚMh o
+N|!·€ÕÑ13€À'@Šø,cÑcà4K±úU9DÕ=~é«sÐh»ãHæ{í¥Z áGÓëÇû¢Õ¡Ô[iÜ7
®æšê9£Àl¿p÷É£eÒÛ/?2
+ã
°ë7QÐXc¯Lzâ.#öúÖDgK
+AÓºÒ¹/Ï?Xù<Wêùeîº
+Wöó>æÍcjµ53¹gåǩծœü:\¿æÏDûmâìðf&ÈæÊúÅÊ
+€mÉX'ªk/¥Ù_ða
+ÿi'5*è¢õâè|0e¹~5T¢¹?.óç^ýe=¿ÃCSÊgùûŠê§*¬uêðQèDßkèæâPýû¬±úÒÌâ
ñ®åîÄuÅ/I[û<sZ:(æ~v»Õ±ëâ,=í[cÐ8J
+ýeæ0/AÆ£Å_Þ²Žï³;+Zèç7ÎI"ºÎkYôôyô©@ËNeu5ŽO@éCÖ·ðÜ_÷+OK}ÇoÔW/©©²=](Xß±Þ±þ`²ä9EUºxÍšºuN'>»?¯'¶Ïßk>ø¯ovšÈÓxÐ<øzÎбZeèÊìýæCOm5¹³%ñåîþð¯ß!LaK¹ÑäX2rÓÎj]MÃrîüÈðôÿëI¹É_P/øŒL¡9¡8÷õDÂr¿bs©8Ÿ®Û/^1ËŽIdõŸÔà"9_wÓ>EÙ·ìÖþx}'bl
7^ö
+WéÉx¯|3OÊ~ê;œqs3áÿLDMiŠ)œVœà1:2*Ÿí&Ø4¯'W+vkÀèØøGÈ$#Î îëGš<¬7×ËØ¯<jh©þQaÙo Åö,ý-ø}-çÅqNÿõsï4ž©üïŸæYMSùºþçom·pÅ%Ùa'
+LÚ_fŸó%µ$oÄ·FzbMJT¥Ê®x ³1|yKHâù;_zº€R`'þ0[çH,~%¿Ì/'èg3A¿$ÏóU@×ÎL¥gW}9)G¯Ô¢þ
+ÄJÉ©ð²óñÅA£õìžrXZÀÛ׿S˺¬òºö¢»P7«
Œß\$A)BLÈVŒŒäHǧÛîf2ªv Ï=s§Ÿí>ÐX8<k(Ñ .IuMÆìw|sŸÉÀ,ÿNü
+äÛUfì- æÖ²WŠ¥JP²ðÄú¶sâvä»sÙd"¹9Ù:ÐóàÙ¬³T?v[ÌÜi`ŽSßl"héÌ3¹ji/LS ß
Çnj¬^ŸeùβÇO«Œ{ôß© ¢ç/×®Nß9(à Ñ98ÍFg(ÄâÅÄu_Ddh«ê2aîÍò!vÔHÉȯö¡}õ!éÒúÙÄJ*Yùz±¥D³}éØ|ÅÅKTQgÝêÕÃq¿Ô§{up#eÕz¿ý¿h:ya^$hdÄxç~¥q~AåÑqks÷»äñm[¯*
+XAró¥Cú£Î\+?*AÊ5uÉJu¬&rú³áÓs0*ìš¡ôlºtÊ©}w²pYµµ2ÑOì»ÓEÚ°N«|Ë*b>áQø,°
(i(ý~!ø3
.èAQ©îkòâÐäZØÍD}÷ÂÈÙÅqQÆ<d¥
+q,_Cb å `ªïa±¥}ŒW/4WUÚôkŸüÔÌT¬ü{wjq£^º€j!æP÷Lñ
+÷
IÁËAH»Ù°B(RÇúbÒ¯èÃpthÆo÷ß 8¬Ý0.$Kºë¯'
+s~ºÜàøLšºPÒ,tú9fÙòPßKÔÈOâN=þ`a\JÂ:-0š0¡5os¹lªfxh^¢áR°>Ñéã~¡ÿàÆxr÷£rÜ`>o2.yeZ¶ìBzÐYÿôH7ŒVÞ.š%œ¡Õ ÄUÂ3YØL7WC"Øââ àøÄk2pe{¯Z³iТ
c÷A5kzªýÔ7~tïv÷Jv÷ ·ÄNÅ,ÌìýXÜÛÈŽºqü*:κ£5ŸaÌŒ Ð2Ù
+_
.WŒ"®<@§üEÙ«"VÇٞסm4Ì=\ÛÃØ
+I¬±ðžkP¯fnÙH±&AÆLa[ŸvÅÛÙÕžïkÑÅpLGÓê
+öºe¢.Ö&Ó~ÈùÍ€å|ÀöŠIaœOKÌÕE\~Ö_®J¢MîB¡æÞåÈÚ|qúÃfþzO¿RÓFôŠN
x
ViýÈyŽtTVª<°
ÈýÃ/¶ÈŸ_\d ×Tj6Â!r#2ÌÔ
(ÂTu³r9#R3;xÞ$žçƲýÏtUC€iÔé:!$áX6'K¡g1SŒéd}ØŽ!³°¶Ý,®Ó»yN¡·V#ÆÞ¯^ýà,êà`ȱãÐÓÒÚºyJ at wÚX;}°£%_¹E!L ÂP€¹äcb¥*ão@ä12°±+€Žµd|®S.ÐcdÉû'íûõaAB1ÊKIùùË38ë&ëGô
€¬ž'ñötÞ4GëL@sUK~e~ ]P,G¿º9µ*Ì8ko«4ÂDVhí0$1%ÑÌ CZåpKŽc¹l#ÅÏβùè
+à¯5zfÁÙ^9«ÏSñÒ?ckÝ¿)¢iÊP¯¶!fîTÚ÷òwÍ)m&vZb'qðjÕ
5ÈYÿ]?¯GâÙâmÊË-D =1Oû}/¶CS#Ìç±åÏ\)DXÓ鲩ãøU³÷Èžë^]êÝÁëâ¶Æ+šó<õ'öBÝ4=ÒߎÛÌåÖeùpÃ(ö¿Q£Òý\sRlÏßÞÔòZ"ò°`,È&®7><xñ7Z8Чÿ LOªJ¯Iø@ª"Ñ/JµZFQ;x
ÉŠäÃ4%€6;ÁÉ®Sà±{I$ò p9¡¯NDÄ4ÃCŠÄP1ÅÆíJ)ù\DÜmš]$$ƺ[1ZÛïU0GdÍ<¡"
BIÜJé
+VYê¡ÊbRQèlȪ^Œkd]9[ÜîŽòŽ
+©îG:
+NËœsßÇ[©îÇÓxïGî©øÛÑ
+!YoÆ^]«#iŽŠ.aÅ&:Øa8
+ü6M@¿vx¢YÚO@±¹¬u zÝX³ÀŸæ¯odzþ6ê®]ïz¶~ÐÛfCÃ)ø]ð!Õq]9ürí©Š
+E]Z_ÞŸÖJ»ú5¯DqQBÕVÎÆµÍMÜÆê,:McÍ3q(µ#,gË3Šâ±(ÌÜÀÍ]F}©*í²ÔØs8XµÄcóE:í]£©nPKÓŽÎR>]ÔÀ6×=Ÿ©ÎÔ,6Ǫ
+b#ÇFZ'¶sUjâ¶¿â>©<ô7©ªŽÕÊM²mòÊçú]èjç6 ºùÙ~ÛTmúUÓ²A¹è4ÕÛNLlÒ³JùþïŽiWrÖÝdÓ+õªàYOæ 7ÇX>Ý". Í€IHº3GD%d'Î?çLÂ!³gÚ`
+w9¥úžâ9ýÐ×ÀõgÎm=³ø9 µB&ÓISšÿ£
Úèkþï¢jZýHXÇù
+rKrÀ¡Œ2#ÓñÙŸ;öÐÕÖqóó`â¿:c×6ùg&÷Ö9êê^¡àKüêí&$ìhJñ>>ºGrJrQŽÉ¶æMjÚ1^(BL®ÞJü?>Î(ÜS?ú×kqš<ÝšOô}è:òö¯œ¡Ûñš8F8j?|27+ù§¶2%7ýÔv¬. ÌšŒ:üÅàYs
+ãz
+%Ít9yößI ýgF@8uþ7L]b&ë>lÃUz3ûÞ3µzýt\sš|AɪM«ÑÈc5e|Ã÷@äÂyÒÐxwB¬3DÉŸÐͰï®8ž¥h®D?3JÌL¡~:ªz*Ò¶±üþŒCçù2]ÔÛCbèjdÄSs)¥¹ èÔñnº ø2®§kT]®îy±@d%€{%ÃYWhåä?R'?{&ógLþ¢NAQN>ø ¿69a¡< è,ÍþNZÊZzÄ{WÄ:â$+ׯº[ÊÕ þ-^ñ2š'ÕÍÐ
+lZhì/ЀQSÒÜR6W³»NïpAqWÞc &²S5-[3ðQŠbžbùï?nÕ²HìSÒªjzäìøR§Ržé#o¡øèç"ÖûÔ#5Ó3_g/S[a0¶dÒôÌfUþw ö]0·ímÑç٣赵԰f\-Ÿ=oË.}-Qfå-rö4×fI\?~8;¢ö0]
+~ ÔØ¬±ÐŸu¬žj«:N?ÝbIFLÙî0c~=¡Ig¿Wø5â^wç.ýrråWªß§<=úBøî:Œù¯lÁD~
+©ÑBÏfÅÕW§¡ÜçEß;68XàÕѵÅf| à·¯¿"tHÚ:ÑoSÒ OØê-ÞH¬:Ðñ~?YbJCà` V2",Çzÿ"[O¯óÇèÄÇ}ù¹AŸk¯cª µ¡mØØiîýŒ}Ó1€`X~^Xë$:;H${¢«\¥.Ç` 'e`0²ÇŒ?ŠUngûšÄ»cïôKGsÀ®ßßþº\!EŠÁ_á7tê4xplöA«zËî !¬ä¡ÒF÷°Š|OyJOúIÿÖ¯ìbN[¬Ôü¬=kAÜ)$â/(§Žmndö[£¬4Ÿc¬JQV:,ì÷PÊ ×ž6Áô}ð%úëôPàPRÀ©h6H¬º]É?(N6ÛØ(Úá32jjÚ:
+Š+JÑæTëPm&%ݶ Ž®Ú£<}1]¥¶:ßv²`¹lÚô2ã^SæüÔTe[Ä`l1q^Þ±~Žd¡rÓuËKß%õXßðmœ5¶6aRÿÒàпfSinA!r*YÄP¥_×£gê.ÒaVVs(í%ã#bæRß§$®~"n¡"zZTF+ÃÛpoeÿ?F€ŒÀô.ö]
òÐtÚq:l:¬¡ìd1#Øö'ñ˵m §§ñëU]ôúR³)¥%åDC¶í§qfÕvÈ€ìèzÁþí6³á¶±×|Ø/Hø(_äëØø_&$ÆÞ¢µ¡^/ºxéuÊ
+ÉÊMÄ&%+MU%ËÍzu:²¹(DÓ6_PŸQ§ ËúÓ[œ/"Tçv'Ý5û¡]ÞŸ, ÁP$Îq§=|¬`,jÕâf¹=*ÿèd&xá¿ÎšÙGk¬¬èã?ó)ëGô^6g\¯Ú®Z,âl{ÌêjaÉ^`;l>eÞÀAZor$Ò;/+fú÷æ<ÿýÉ»&Ȱ4ýó>ûûsb€o!råÒÑûÛ-ôí W¿Òáªõ\&à¿:橜÷nç7565» zýUH`ªÙ+äU·ñXwpó & ±j.ðÙŠ8j**)YÉæ ä!ÙæÉ¶qê§eÝY<BðR`ÊÙåDzR°-®ðQ¯Y]ö+a2LÿºäÙ*Wöy`¶³«ØöýÖúV©+*µ
ÒØòzøb/!!·5D#(ÞÍ<ÃàÒ<Ü9hQÉȲxžMÚ5¢d.Úl#+Íè/Ûû7s;û7¹úScŒmo]¿R&.ý\ŒÓPß«IPT(èÜ9©ùGyã¢Ò8!1§¬®$ ,9·ã`sgŸîóJ¿œÓKV,»Ï`Ûìëàáeú'Jp_)¢òöÂý`ûÇu)t§gøFP8ÀßÀD;r«qpL)SHm9Å>R㹩þkÑ«>e1rÕm%_YHÂuþ(T!ʺnçòbÓ¶°õÎ1š_!ÏBoù)_Õ?l%D±Oú¢,iw>·4Éé!éMq¥ë:ãäZñðÐ×ÉM1xhÚÇ6Éáž%šDË2K$IýS
+ÙAêå>¢_ÏiÏÓÅB|#+ÖP/äÖÈ.åwS
ÇÂ}=à"Ñ9à2J/åôª²²°0ÚäE,še-QWõ¡ÈqÅEO?%J>ëD¿xá?ÍÂû÷þ·8ÕÏÂýfDl¬¢Ð&éHöIeWûRž=H,9TÀ@%;ëÑU¥Û3 °Šã$[@üí«^dŠ/K(¯9(£#7S
+RW50±%Ö= ÒòbÀ@Ç- {¢~*ÆbÃIñXž^-EÃÑpÕ$\§'ÿ&y$Ä €P&U¯¢
+XÆ;f_NãHÇ7<mgbë#/uÅÇö±+¥abfBWlKÉîcVc°TüùõTÀl|Ñ"¬]0@ŸG¥aÓßãc' ÈCìú2Èž1^Ùô
+rMl*øòœ·_
bì·daHSŒ 8¿±g5È#ÃÕ2lTv×ýç~Lû¶Šµý"ýÏY/pbŽÜz
+'ÂU
+Wª!Z^ä1l\V ή«È,A'vÛûÒFŠñ;]]Õ€h8>äX,ÐÏÚªº?Šú¢¥Ž3¶ðpÿÄßFŸ]OiTÎFÒÛâ®è
+þ»\ñEKÒÀtÖå}ŽœêÍH®&¥ç
@ÈéúKq
+ZÜÉÉp!VKç }(CäbŠâ@\(0.§mâ44Ú»]4î<¶£Zýoù]
¿¢
ËX@^3 Wýe¹óciUËšùée÷ñÏùówX3aõžªbµkç8ð_޵)lê×qnÞb{û(øûÿcþóÔd%øsÑ"47Œ8-ºs~¬&©«sË`Åx»ÿQXŽr×°fŠ^À-·šÄ¯j'hÔÃÚ:òIW»ŸJWg1©
+!(Gé:a UnŽ}²ÿïÑ«ÍÚ£~jËX. ~©4[ÀÌÇ€Ê+£ãiGî\ (.C»šªJÊ®
t3,]ŠžŠÒÚÌ7ð¹?ì/X"kšÖËU'aOÀœç¥ð9Ž5eÿ÷ÞÍH§©Üª¢ÌÐLï6[ä£r63[[ð|~Ū,Ì)FéÿË«°«°«'¶[uL«\P€Ø*3â&)q©kfŠCL°ŒoªÊÍKÛ8W
+¢ÃH{J+ ^¯ïDn^aÙOäþ'߯͹:.Ã"Ôåø_Eu~ÄÅC°ljø[gû+áÞBÊj]¹þGÂK+ÿO ÃwÿIx0©O;4<
LÖª:<&H€ïð&ø¿YäzôrÅå?_SXË)Ž/`"ª7QÙìü;CïÇO'`¯60
+aBî| 9åúP5
+Wð:0ûqÐòq
yûAèÏònué-Ç-Ç·$âÏÜÔðË,záÈôSyGVŠ{P¥XXe³£ºþ÷í^¿Œ²~>n3xÌôSžp)Õrkâß )ÀMC€©éV
+Ìù
+ÔW^ŒbyžÀïwucÚüTÛÓm9ÏŠ¶<ÃåpeI¬%-}Êufàýw»$
G) «hP¥ÝÞ"ò÷ð_SÔ%ð®Tè£,Ãw¿+ ¯Yi<åÈÙêàÏ/bã'ÿ£{òôfËËð»ÿmw®€[صcÛ6ÖmÛ¶:¶ÑYQǶmwì€cvltlultþºýŸ{ïsÎ7îQsÌQ¿ªþÔU×÷¬Ji×<Bóµämí^ßè³X碟swbÙ_x«|ùYGÏaüËÉQç!Ùïö¶izêfµq+Ýo°ÅýN-ag
ËflVlÛPå:ÊPe¢PÄ5á.|=F[Û·ðõPþ)Xènh¹ßBºsDõÕ~:dþ%º6¶ýBèYnBe]u`·º±ögwôQ¡fwMé}bôD2.^@{ò~ë+ñmHJÌPŸ
%ÛJâ²q+
+ôÎÝñ¶Œýk§MÇ×Z>ÕUÙWëÓv¡g¡®iÌÝ®ÄÐ3/éå{WîÝ®«ÐF§7åñàæoûøüªÒx2ü»¥;ÅöŸ€A£oH7|ÜuÃ-ôó>Rýc³3_{Ai`&ÆääNdR+UajÒQ2DgiÜg¿ÞŸ¯F8ujbÕÂ;EMrç-ËŽi>[å 9Jš±RU^~Û\ÿ\S.dŒ(z°þ"e»£ÝDí_Nßë2»Ãìút6{i3ÌEr3Hqn³)Í8þü]3z/©EžÃò36Áåa^0bÚVõ<zÓMæL5Šwuñü>×uñRØÖ±B²Ž4wŽh)áD_|SGpöðoWtim,4"
+îà³%pHô¯±O9EìD&7¬Ê̺š~^¹%ºÏÓªk,À
[|eìäí.CiI¡O?Q"gÂr)Ê®ü8gâþ8«Øw*ê»eÅá
Ôz=ãQÏ~UX¬Ö9 at MÊÐSûªöHZ1ñQŒãçgñ>
+š"Ö{Ÿl5 JÅ×h¥?²S¯µ3e+Ê/¶T40Áq|;³À)²æìxÉæÊ[}ŽwN5Ô|q*»Ì3 PËjÅpÕ0nxÓ?'±|Û<ÚàŠT= ÑCijZ"äÂLÉÍßèåHy5*X
eAà %h±ê¥rIe×lþàÈs=}ÖZXOîýq9yfa Ê ÒêÀ0ÅÊîxOâ!fAáõâ%Wü×Zfk{mêôý?ØMÊE.ÙËå9Á
+Üyk>õíÙ-öFùÃG®ÒGŠ€G-0Lž£qà®IVl#DaùÉÉr³¢
+,2GËà¡â4edæñJá[µsmaãEm)øpÄIjÅÑ/©ÒBsÖÕHÓyXWS¹U;>ù³I0u×é+ÙŠu^53õÔwrÒ·ý}4{ÆÑœ4Âh_"Ó_
+rhóÆ»ðGA²ò:Rÿ¿pb[hAQMŒ3$°ÓÇšÿËV¡¿lþ?lÕìJRS«Ò";è+=.Š2§ëÄÐÔQ¥2d8ûÆó|]!á*4¯Qd&Õd¡)bU%g± JÙ\€ì¡ÖP>c±2šÏº6«X0P-¿Â%h>gÉ@Úþ
+ôu?ÉäJsÜæl
+'ÅÖÏð+8]¢Dn?óH+Ú³II¥<X\ã¬x9íÂnLð5tN$sÒØM®d0X°¹øîösÂ)ñwÆeöàÐÃWO8íÙ2M-=ÀEíxÚ
+_0ú)5¥bwxñè9ç)ǹr¥K§òlø!M)ž8Þ÷ºm+°Yѳ79Û¯bº
+b>·±wë_éäTåNÕ!ŽÀSKÉRð-5ªJuÄÂL ¢8±ì*ômÙ2LÒŽ%EÝJ#ÂXfjUeË!iõ|{x<*û¯3Ó]€Ì+Ù0Eû~I×Uçgœ²9ÊÇ£À¢ÐPw£þÉIú¿Bîªÿèþ~ÝYøŸô4/ßÅoÉ"ÄÆN
+*>§šS`Ežíƺè髟¥÷Çêp~ügHªuÒݬþk¿ðÑËøàrÜœµ_ýRù:]rs<îàÖÑŠ¯yª¹ž¶ÌÑ/+ãú5(7xTÄè<f#2ìØ¬Êsá&Š8ýß_P=þššÔÓüâCãKóŠÖ£¬:6'A+î®×µÂËi!׺P墚Õz8ä0U19ÎæÃ,îÚf}Kã-:~ö2wòó5=%Ž>þÑò®SÃäÍÏB}ùnVÜMÃËÑÊräâåu-CÂk¥#Ú++óoìE¹ÕKeÓ`ÔéÉ6àO%öË.H©<¥¯¶€¹aA1â£Qk¶{WÙ£[Á ÷·_¶*¥°û]rø¡ÓÇ9"úÊC³Waܬ,öAÐÖž|HÌ¡e)KŒ¥Ê°û
+ùI¹~CyX7ûÃ*ü :°0»¡÷XGW«×mš÷ìOúöi©tÍt°f_¡v"ßw¶CjT-«íþ¡¡^øœò@»:5bQ|,>ËR!ä/ú4»ßO=Š2&3'¹µšœÚ0IBg×?ËËæÓ=:yÐëfPþ.+¬1°©Iæ{ü öÔ=#ïsž²äsu
TØoNÕ^²nÁöã YÞ8Ó°®âmºk/ñÂür?œÂ}ýÔMðn\»@m
¹õ`?ÐGmÁe2
+¿æ«zððÓ9
+ÿÓP|ù"Ç'Ÿ8œ:ïš*&.¥ëdî^d±¿x~±"ª|÷
+;í\ÞP°€_÷º0[ÜäcZtN9Cà\Tã9o¯â¬Kn
Ê:
+!$~Žý`AX#'§ºû2F
l{¡÷0yZaw]b·¶Z#4mÀ.dV#,ž&.Ò"r»Ã?úÇŒWd×ÌîT×gÃ}gSôÎñ§ÁÝwí-ÿÿC÷Ê»ö¡ï.4FI#
+âñEÍen.;xÌ$µnJj!ZÂÐ]*#Á/ÛxilîÄÌ$&Dï^µ£q§@s{KŸ¿(8Þ²N
+Ÿ{¡ý(ŽY2`ŒT(JcõC
+y!EH/UŸzÁearèN 4ÕœK!Gnf§8 ž°Bô ].úØÄ·#ª\ M@Aêë³&hÿ
+cVB!êÕeÔ{"rªïx@å1ª:¿lLPXshG}j£ÚG§²ÏU"VŒ;ô:Á373¿(ÀQ®vXÁËPõÉŠææ/ÏÛ-î.yW÷ë7ÁX!÷¬là¬éÀ©
ßeãÕÀÅë
+$Ê(¢2iÜáBÎ4Tò
+XÆ*?ŠÌ{ æ
gµIbogh8±N5¬ÄŸ+ÈœJh/m;õE¬rî¹T§<çX6Þ 48©.±.EÙç-(b°·Dùm#ÊÅ?É ëÒkÐiÂcÝëïtÓñÈbEóFÕðSoܪ|å*}e:ze,z
¡$^5š(*º,Ž(¢-.ãâ:¢Ì2Éè,ï2ãpJ o
+-ä=7ðäÆö°_<<«âwµ-vw±ç£€Ò©n%Òu±}4K1^FŽF:¿¥®p¥Ì@%GÇ
+ ©â±HD$¡ªºóì7Ï!`6,@¹pã~vг£ëbû7f±ÿÅÝêœÔéôÏÆ$Vֲ➟þ¬®}¿MžxI9üoa§,
+!šo¯åB#àW= ræÅè-4NDZ£Bzgw,ÜK*xv)åRÒD!CØ 84.±é$!Ô vpóÕJ$FXndò¬£žXŽ!·Ò,,9§c©iäÒ2PXåu'©,ŠqÈ$^%ÊS!ÀØpé<hÍùFô$MpÈvñ<fuõÐ9=rq ŒÃ=\ÓÂFC0{ q:þøùM>Öª'§Ô»;zywQ-˲UõL^ПzGÝ¡0T¹-KlëÚjÎ *MÞ_Uªÿ¢õ¢\E
+ë°É\è,þ0©ÊŠJàü_Lç ;íºØÀèæ]br¬Añ¶Íô¡&.l`Û!d
+dŒBL~&ð)eýµp0
+_ß;=G~¶Pªeú~ðKol £[ým¿€ušÏÂÆp#k0,I²_XMk±8+à¹S<y_¢ÓSsè yåþBõçšLtÃÏké(&šMQOêØCCÓbbÐÉéN
+T¹/cd7wýÇÎÍþ/%Â]C*9ÏAâÑ<œ=*Œ*Œfœ»OG9Úgéhã®íßÎÝ?o1
+J"¬¯³üy=§ >¿€VÛQÉkŸÈ)uÅpÏríýÁ]aØ«¬¿ÿn4w Œ»?sÊ׎òTb*Ù»9~ykéótîÆs¢#¡ÊlVÙt{:vškÞéœÕ·ð~47m35èýOÁø_E8ÃÙÓËÍ#£÷ØÔVªYzQÄih=ZöŽÞJCEœÛüª¶)uFÃDweœ*I^²oyvdÈNŠ8Æ8? KÍÝYØÂNXññêkQN·bõØZØ[ÖÔÇ
¹l*{PÄZ[ÜLû£CœïCù_ïaÀ|E¥7[ú_ª7þ6ùj×ÕVbNsN}1Ýn4*Mj «]t&3"œœü'²3©3š¹ú1±?®SfCæ
, ÇSCŒõóÚ/6'±&±²¯?/
=КÂrkL¬Lc>ŽicÈOö}\ÅÎBÊm "ã ÜÔñÿãña2L*0*SfžOCÐÔÝ(L²{G)}Põ²2
+õ@8ESQ Z
+¥£ÍȪŠa#Þoœ×H·×.ïÒQ¡ÏíB€+Çû¯Ÿ¿ç¬K©Ê$@44àÑz
+ÉÞ{|Ê.¹µê¶íJS€^+ºÞ7ÓàŽP@@Uê}ßµH£±áæ¹ZK×`W޳ù'>·Ü+úozÄè¥9«Y^'âó¢ìÙN×3>ùr at LÙZQWøU~xÓâ50ì%I§XQ>ª¥CE {Íä˰Ƨ%D?Dëé3aœÝµÊùþE÷ì¯Rÿ[t,S˰w4¶ôÚ ªY8
+¿ûÂA\ÑÄrðpIç9 ¡MaPÑO5^ žJCtU4Êx$ZŒÅY9¹xÌ8Š.é'wÀ =
+
+ÌN*ÙB¢€æG=y»zXÄÞðËÀ~)3ßl9ØñןwŒÓÀsŽz2.î%ÿàm Ñ஢|jà÷(€Õ9P:òðJ,X1ºûIðXöºês[&ý;²õ!ÖÎm+QΪíæ1ªµ"Üõ'¶ºÅ(`â#bRu¥êsª°Á7*Óü ež#ÁsóÆ
+(bR at 5ŸÊæBlEQ:
*÷Ðx£]°#eúrä4²2ÿzǧEà)QWÇ?ŠõED?ãXoŸ¯"_KÔv8é(XC=Yo$V檊"ÛÈpgSÜ=
+¥Zh£ H %.Ã*^ÙšÃæ.eâ§bîŸûÐZD°lžT¿p©îû$±S· i
:8sxÔ¬çZ|ªÎ=J(dÿ\¿ÛŽO£¹KÆ·Å¡ºkÉâúò8Ä
+H1©èa· ä,ð·¹ä±ûá\Õ#R©>ã¶{%)Læ
+d4GØöOìV!9Á$*9à;çXô>Y÷) ðšÈݳX|5ÂÌIY óïï³
+:"ûx@»{³®1yD#ÆI!ÃîÀ{X<7nª?wlËw³ÈÈ
+0²ïN¶>kåÊ£Ó#`Æ#+ð;/Ô\|'ftU)¯/i©g÷ûpüº¹Y1³{sÄÓ/}ÚÌ#*¥SgèÀûm§¿æ;¬ÆHgZpTš*ãXrzýx¬óÿ¥Ó¡¬rBR²584|6]OªßrÞ
+~rÁ]ß°]?žvL>%,ÕÑõÝAeÐáÒ>µ>A#zu`C i¬1|.$»þÉ ©«y(oh.\íK~Cx]6¢$7€ž÷ß§MB±^aj÷SÚANÿ±¥gwú%`.sÚ/ÃgÜ·eÁÏô¿]Ÿ§¿]Ÿ!й}¿ÒgÓzÌà\Œó!cÚA±[óœä"×Úxº("
-,¬ÆóERÄ r>@³3#¯+:Ràã»Ôë ¥DqÄWÚ:$Ö¿¶uŸŸ»WuÇjÂB$Åx€ZïâŸsú|±{X$g¶£_Öª®ÑÑoh5uX*ªAâ{¶Ú,AkÇs5MѱÓÅ\?m/CSî·#çr×BXN~ÞÜœÎö\8šŽ(\i²
]Eæíÿ9¥G7œ!.6TìL8Þq±ao
+-áeìTÆö ù!¯
ñw|#úýêÍisýMKá6>ü@#Wdp®ÿøãnR|2>¥;Ïao2ïßÌÁñ²ôùÝW±¯Õȹ.ãÃ7Éñø¥wžxû¡÷Es
+åðnD.þ÷Z·zñxºz7¢íî¯7µ^_ÏyR#ÓW`ËÑlëq4=:ÎåÁçÃûc(ÏU°HCh¥e8"
+þæÃËõïè
+és€x|äRØQØÉ&sÎgPeôXÁ±ùÊuaÀßM°Ò>&h÷ÇG3G¹EXûq÷Âp,ÑŒÔJgÛ@ªÉå7e\oëûrOWËýœ%TdÍ ëg¹vrlþ(òwÏo«U¹l%¹ÚrD@ê\ÇþÌi»ÍHÃ
+ÞXàžš#ã€eŠ:€µbëCcÀ qïÕ7÷¢jÃR8Ï®ŽUÆ0éLæ$?°IF0®TwÅ(8éÂaþøqæ?®ÌôÃ\TêÇÒ 7áãÊsEæCšM|äþZ_鹚<Ïxb(Ó fýÅNïŒÂ>ð¯¶Ü(ùYÁrJ
+~*2×nêÂ4ZGnvhöa
+hŒÎMÍfx1ätLñ|àO§jBPqr ªdaó"ðxXnH%ÝsÈn ñ$/¢Bn çïþ?;ϯ>z¿KB /pœÜ·Fúnc9Ê}¬µVÁ°âã1~;GI+ݱâsönj·F$ÃûP Î0TlAÉ}íÜ#Ôc2Y;pŽd^EÎ! ÎJ"ð2)jXEt~òй2] ¯yþOëcOX1'¿¬×þÑ"¡¡!9ÚÃè[Ä~³å-dó_[Ox<~uäW]®l0»YÛymbÖ§xP¢ŠóÎlcð
òqqQ_;ÿEh¿~þyöÿãù`¶-ïUBcÍgMn¬`çýSAO±=äÔúç&úlTõTîXÐBÄßáÄ;¶$
+Ú="}ÄÇÈ]R#³à¶=¡í³,º(
+š îl?Ì<×X\þÇ̬BB{hcéx
+ŒÐ&rN &mRþÏÓ5Äã^Ö;ðj]³4t¡a3sÖ' ÅûpõtvOuÊ;OÀ×
+!ú,ú)Û³(ûââçP`ýE汬«²SíÍÃ+EÒxmâ€y¢{»ßeç.¬o|¿±{€ÐQçߊ¢H>åpÈag«¹ÎRäµ±aQí+É
+ô~ít²ïê¡ÎKî³ ÔÐà2ØG{÷-$?ïF õôuqÏgUÝØH>JQ1NMÓåhòT9kívÖhú°é8Dá0
+èWAŒ.'WSj`hdk`ÂÁ7þ(I.p¡ÆAÉèh`@àci©FYÆÃª&©(HñÒ+U*û/Ò°@óÛÃüjÛ³?õ÷,û}wKTîgCåÄÁçsÁ'z¥hÇ·ÓLø@~SŽÕP]R©4ŒJǵÞõA`*aRTB0DA0/FAÀdU=ØpNJUÆŠUÞñ8`XcDDæ|dïge}ÛB
Áæ%)j[Î
+qø[1ÍÝîÞvjq_ýRzq_-ÜO¢æÒéãŸn~®pÈx4±$¯ÈatbânlÙÙ·I%t!'vóç8s¯f];rxçu/e4pü$
Îï ##Ë.ZJýáØÖõãçSÿw-\}C{¥á¿ÔhUw,úV!$ÍÌhUÛèê6ÊTÎ¥eüÿZ»þGªµnàCPÈXé5puzr<MXóºvMæ
ó_ýoË?üDYÛ·€ñSš|èøb¿|é;eîÅT¯`ÑI(±¡
+IÞHE=ÍåíÅU¶K)hð$±N0ÁC4qBß^7:÷ÁôI§d±º€"@àñ+îÒÿHµoú¿¥:¹á]vDyr
+RÈ,K~AÁ²ã¶Ï1Ùå,ËÃ"ÂÊA
+Tã0LQ@</¥ø&xÚ\47#EP#ò#
+ñ(ªýóêØÃb:×|¶²kf[ Í4Õ4UUbôN±§ÜO4Ð×ßÏOdç¹MÜBrR;ç±ÿÉV I£æé.€êrµìBmº,JþYi~*OFÁÙiÌ4ifÕºÝÀà¿?ŒÕmW
ã`lä°HZÏô=oÈ,<Ô{Pù`æÿñMëüä
+ÛpAÄbœŠ»Nà|ëEYñz|¬SQá;Q`/ÇokÖ\,AmÂÞ²à"z¬íµ°Ó÷Ù_÷nOsp¥ ÔŽäPŽÚ¥ýJ§<dCÙ
â,š=øc%-â0G ¡;s -x`¡/eÀÛ mÔâ¯þüûšòÛz3õëžÓLÊLJ/üx94!u¢ÄóòAÄ#[òÄéR;MækOúÂÂ!Ùñ<ìx5åúhõŽtqÕÙYVÝ?ö2ŽÁì-ÎUëcÈ7Þ'h6}ûÚþûš%s|AU}޲SšÛ/]ßÕ¿7|fMèjϺ=Ç?íGscvÜ2Œ NB¬,Ñàc®(ìv¢@ày|køui×ï>Î$ÅÌ@¥JÁGëZ°åMQ+ú
»+R7@×ag<p!9«nl'УÅÓgGªåýÝ)èCݯÝQ#ï+YÍä8ÙÑ]ÿáÎYºèþïAŸ¬º°úo|
+Ëæž5³£~D=ØDMæscg̰³Ï?9Íø¬øzýùâÅJD$NCûyiKW(Ÿo§ê:tílßZÁE*^KÈQÙŠ,ÍïA:-ÒSËu3*o<:Z"XF!³ÒM¢Õ·ö«E¥e`¯$þáwUZF œ}µØ ZÜä,&×}HiçOßÁÅlÈ_ªI~¿ÞîšfBÑ`úù°[&æP1ÃÏ4Ëy÷_ÅÆx¬týS@MÕni¿ŒøtÎ<€Š{îtå
+0*ºRûárÏW÷1?CUyÊ__4ó«¿óÊñ£4ÙÄš HîÖwŒÂ5Ô^±@]ÈÂW ]ÅjÖÛ¶ëÙDõ)
+{ÒyÇvdJººÊ |[äIO.ÿïMç²Mað3,£b²ñ¢'U@'0LvÈè jºGç¢jÎ?có<Á"ß|ܧeµ^^Xo?4c%d¡îoxÝšZÑ5(ÁËW.÷þûŒÛÐð{-ô«¶é[Òúõ=ìõÏøcrMJŒ]ŸÕp&oJtZÎûÝ:0TqžÀϧ0åléeÆX0'rU"EÖ NnäAžv:YÙïª;ÈY¥·9ËFõ¬äìn׊=Áz ÛÞkX4ÛĬå,pæïN±ÆHlW€ÜÌnê§ÊîæSÖúBªYt@LÏR{úò8ÏmxÅÝÐ"°é§®ï.DÈÕ|ø\°P;ýÆþØ®bï[û2ßhY·(⪵xÂÀd®¿>È5Zr53¥ÖS}ÒùºâµZô«Ÿqn°âj!KþªI'pùz(uL×AKÈ3žAù+ÿaûGÎeãÎÍz«¡®oÇï·öòlãÆy¿mt±A5pÚb1K &R`pm.Œ+%/ßGa·
ÍùQ^ÁM¡i̹c¶ëÃf:€ns³4$33Æ¿så9Öéæ©CáT|°Ú.¶Ù`F
+VXàhÖuW)бÉN.«áë5šÒLÂHd¯[ qRtÞÅ+ÅWæÞ@(N«
ŠÒP§ié·mßÃ^¢Üü¹,ú7sÕCà{wéGô¡6L
+š>ß!«3®µ/õAï3ÕBòWejÇÙ"{cßLâtWz.K±moJLÜ-űaŸØ2Õèu4{Ìß-ôj°ÓMêÙFC,³5××ú¯}ÎÝ#æ²ÃZÔª·K¹Ä²U«Ê)RhÅ£®IÕZÃáE®:œ÷TÇOK:ñb uóa{JV>êi°Òò×!¶Íæì> <¥jüRšúaÒ éÓ<ê7ÿ5ejNîß%÷Öö}šØC .CB×ü³9ÉPa} Ra<'e¶²#wü]CËAý}šŽî;V+Ö²ÛBdw~¹$¡DÀFV@·~¹u~€ñÇú
+$®4/œón "ªhg€ý¹Å;ôièkü(ÍeާcCNש*bŒhqOŠgYœÍâÔÔ\$n^¬jÝ
+á )Äеs¬&°Š×{l9Ï3:@,Z³-ûøj_ÐDÉEAKª$· pòQšX€û8Å,h,ë·dÙÆ×þ\²clŒ
+ÔãûÃûÓ ú
+$MÖ <Qµë
ßÑëèÎ3-HÿGÝáöbºj]ÅjÑb¢N2óo!=oÛ^â=`é.^Yqækÿ2ì~)·²L¡puøi}~×°IM[eS¿_\qÒ¥[ûÌ®Pø/¢ïbZä4ŠX5[~¡Ûý¶oÛŸ¬ïgÃÛw¯®ÞàõK®q®¡¡JÜÙÀ$ÑÙå鬿ÉË+g¿NcÊT;°G4£3>ž1ßû<Þl¿Üñ
+9 Ü|}¢bÊ%ÐG¥Æ£÷E¥[üÊ{»d|ÉËÓLŒÜºT¡Ø NïRÂŒîûŒÖ>ðæÑ/ã~ÌêèÅÿâú
ÕGèýúõÍ4j·m³¡æži}ªÊTx+ðªOêú¢7Ÿi,Hx>ÂBžó#³»;O©P+Ðï+3ì39c¶3 þ®Å¶pŽòûªünõ`0{¢*÷w®ïCiÞqâÃp1Þ-:Éu³;rK)µãgCÈ-áî)"¡Y~&âU5UK"zQSu<Ckuéz?ßîÎ÷Ý·Ï&mJý·µÄÛ²ßÚu6éÓEž»Ôš{âѵìZRI,yÏ?SÇØa'õ0ŒêšUÌZïLô?Ãòtرü*+c ~p+^ù)oº{Í©1W@30:åš<ïŠlÑ.)¥ù~ù0ïQúC]>£¡ßõ Úå¬u+¹Œñ úOÜEå`ÈÓ«&-¡&%jŒ\óœ|ôò\Íýþ¿{âyO
+ñîç¥>Ù [ÃM,ñ=û a׊Å-ÜÍÇ9ªŒÞJ5¶àí<ÿÔŒµSðÍÛÎ&ÙOê9§/fôœ1¬ð0Ÿ®c4"?âç¯ðÔ±Äß»
©Iß ì©<$Š·ºÁ\êÔÑaÅC${íšÙ§RìaÎ"Bñüj~Aöoÿ&ßöoxªÕ±§ÄXáÓ@:§ifÿÔ³i0÷2m"_åc4üÀNÔvy€FuóšÛ;×Ìñ_Æîº«Ôv±®üîÊbå\HûPßëÏ)g2TÌ Üš4UȰýªyJ;Ù}ècû°xdí&j_Ôº$Í
¿ù°š
ž`ï:Û
7¥ªÇË,µ?lMrŽf3=w®(7¿æiLU»H'={€ô({{tûò«*Ú ä0Ãå{Tô
+wrt éqNo:Wæ¿ý+EVoñÁ&pG²x?¶ÿª8>]l«·Ì3!ÜHðþg¡6j·õIË
+ŒuS f¶%K¯ùx¡Bš©žºÌxd®N°|¹Là×ÂåñL`ìZ°ùf0ñÛrÚQ·
+hV~8-;C?/V!&2ì@².ÛòiÏSjKðMÎ
+ò#š
_ðÊ0r£ªeôµSÈXýÀÑâÂÑv__Á€`#6mOËXÆn(Drq*ú§V;v1~dÍÄbdÕ]#fåç8¬k²®iB9þR⵱ƻk£GŸ
+OíPf\}Ÿ¬ðë;ÂÆ3÷¬íä,ÉÔü 4. ÕîK·Ô2xòêútMBñFÛ5QÃ%²ßfø+éÙõp¹ó?¹^(s`8ìkÄÀCiÒŠBºÆf=ñ&»ö$q£àjqÁœÖÑÜaOÖkÀ4qš.EDð#u©@PJÿÑÎ1aÈâ*ãþ@AÚnOÖ|¥1(V°èQâ¥;JVWìS.iy¿]}9gf,:]²mú;>¯n@ÅTâ
+µ!8ò¡«²+ÝÆLbQµÇøOºÖsºnæo¹îtŲß"€'²áæŸæìÝõ$Ûk=MÜ}ã®Þ繯%ìÔštR=Z]ËÝ9×K±=mO߀ü=4ÞipPØ)ò%Öžiº2N3ÏÒw!Iŧ¿àÎ]ÍÑa@¡B%-k:¡Ã[BWYŽšçáõd/öÖyÌcÀáLõ[ºCSïâÁ~KðÝÈÈš©Œ@ìá,ªTt&B*NUr¿>tvjøÄœª*ÁÏš>¢¥uÆoGò?N<V³¿]-'À×NÈìß^š
+[DM`¥Ô
+ÊÚ\2÷Ø,P3MaÄ1¬;°ÚUÕW
+îÍ$«/»+ÏÝΜ¢Î°Wèkµ
+êÚ\ºoÍØdžñL~º*€fÙ€û¹òj»Š©ób±
+`Ȱ{-š8 4.rÉ_íš|m×xçSNǺnª,KKö¹ìð\e»¡4²ÑÚÙÜ |h@ªÛ.ÑÈU[Qfz{a P; <ª¡mÕ¡÷\PUŠ©Ð£W¢®tŽnâ§7M%÷€ FÐþléüû`Q+Áx_·ÐŸ&PÙE£lw!SßÖé£~WSRùO(>nY³-ÊÚË»o·-Ñ
v6¶ß *Sÿ%Æù¶vöÒØlù×°^ÌòÖ]åuÙs<â#$þ!â=ZHËMmu¬šêRºè#tÊO>ÿÃgº¿|~8'ÕÇ9çG÷¥ÖÂ/Ç¡wZQ¹)µº6ôQi=×Ù®Ï;|¿[Iñëx9ßï\}iëY{Ük#Ù t17.*¡î¶üÒpŠ»ØÖÛ&ÐĶ|±¯|J$Z»7îLbÂ!QeLá@]w?»ó'»RtÒÜõšFdn¹mKf>Æm:^@a.ÃûRÅüdë*ÔMþtNòÿø9¬'4š*µÉŸõ&
+[éô¿øL.û>ß9TwÙgu-Å$>lzõÜý!3'pŠJw.;Þ5
5à¶§«L€ÍR ïÚòÊìàÿ$ï~ïÖÌÍ?äfô\éró¢¬1`Ð}m5!·d.gÖd:d⺞').^¹&»î-G01§¢<²i20l*õb<§1öe~^vǯ5[³/ ¥³ÓÂLT|×öT2l¹#VœÊ·Àõ4õ>ŒôHz#OŠ9|îä*Ñda×â͹/pÍé=È8uéYâÉiû¯ÛE~±ÝÛgXß{÷£=_U®c×¥Éiôsce|ÿÊâ:×€BsW'ÂP¯-dzvIvæ^T?Æ«ðÒA
+g,ß;ößÀx®|$Ç\_zãòßÙs'òg>ŸeäùA:ÎXáûÉÛ`R³ýðŸßc¿²_oÐChðÀ+eôVmÖytµ_:RmÊÈ<
+:Tî>-ÁúnH¥yItÿp.>m·¹óÓèvfZÒÐÁ6 at wþ÷tÙºÛŒö6ªÑÚ€¥ýw{KF]¯&µÃUÝ oEžuB/{KnJÕ#qÏv»ã6æ{µLº5À&Ù8q&-tW\ÌJâ
+ŽeH
+ÇÈ"2ôõ +£ö
+wcÒëÀºiÕBN^ÇŸðr¥z~n&w[Q*2©óï.§üIyøz:eæwûGÔQû/oïKÃÜHwMÈùîÑ׿»kÅF2üº*0µGÏ|AÄýÒ¡Æ ržJbIè{ H°ÇÇxâEåÒzý3Éâwu;¯µÝ©F×Àc#eaÖ)ÄmÔS³oÍçÏvß_nÓýÿOnµÈá«åTéG±¥w@׬
+¬œ@š+(pÎh)ÙîLã(ê~|TòÁacµ&pË·±ÊüÚXHöäM¹S<`Xç>-Èç B¢{O%Æ\0xÆ:s«Á%Ñ(:kütŠVühyR늧"sdÌ:UáKª¬±®9ÌäW5hÅæ^×ÛñL:Ú
+€`G»'Ê£©GuvH`š{:·IÕ¢ÍÆñîiû:¥&l®¹µø {+ZµZ®8Õ+*¢><æwXǹ?Ž©D®PÃN<|âÊ&JÛŽ¥nbëg}#tü6WÎæèÞD®Uîà¿¢=8VFÆ6YÑÏœCÛ>0lßãm
+Õ;'³ùùJœæÑHO>A®ÀîÒ|o?f,W$Ô7ºŽŒa;Îq
¶ñâÚÇï[|%bÙcvj.Q²#RgQ¥kÞrXÊ
+Ù
FÝ'ÔoÔÖSbôµLÍWÍ/ìjyHxÁýw¬~ä2 žª°xFêÅJSô1Ÿ§ìÕkmË
+ÌÈ
+,bcÀR9_#°lÙ(Ã1÷·3<lkc/±Ä Ö×¥-ì;¿Íð;"Þ.+@ØGº©GoÄæôtj×ÒÂZÆCM:\CF±Óhá
œkü¢ëà·š¡ Úc«ckκËÿª÷ÿáâ1ÇWC dqh¿)¥
+®cZëØÆ6úTbâ&ú÷Â~Y€çrÒ¬ÈÐ×Xº0Ò=0uüÖÔÑŒôºRâôöiûö×AÛÛVF^=huùMÞgw+I>V_î÷ìø¡ÞLC4Æ%âqÐ1Ìð-ò@0ÞWúó:B!QþU~sÝ(ª.ì8)jÇZæ³Æõ¯Ó.n§Ró±x²{9ÎÓËÄAGiš`&pßWûŸéÀQ>Q(J.%úXª
q¶p]ªšo¢Ëê¥ú0i/D·Lar$uüz{î*LÂdMBíŠ[/_*ß)slBA=ÀO"þ¹MÉ4KÀÌÁ«
+ÉN6æ o2ÖÇÿO~
+!-i+3ÏýjþtiñO®O+ÿ\Ê£Ïûï8TÙ&ŽHÄ¥*P68:/$«òtæŸòAS\,ØWA¡ž?Ãún}Õãmè;öKÞ>ýtÅôѹŸ@í_£ÕŸåböbAUÁ!ßñ ³7â×lºmàl¡²M±(ÁÚ8;6ªýê^aûþžôîçOæ <Ÿ©A4& ìX#ê
+
+Êaq7ÌŠ>³53*ôEF^iìÒ8Ž¡îÛÙ?ZBŽÃðO54°'ÚOÓÌ3å€FùXßÒâ~ÿ¥õºÙþª`çÿ5*øªœV]%ý1NfÙïóæÞ|¡ÕÇï<Ä»á" 3ý³êŸ"€%jXÊKÅü_^&ç!<SH![£&®³9³©8R0.H¶×a€³
+µÀÕû Sbà¬ÇãÓïãÊðý9¡ÑÎËùÞÛÌLò:®7ûÌ¥[Pï»øGjÏ/ÊTfÛ^loá÷oe/éc>Öó«=VæÇoí2*ΟÍ
+m©ä±ßv"Å¥4\ÖŠcÊraV°%äæ~y.šDv*z1ÉCFSÂAU=Ñbó»ÑPglI}ÖÖ¯OêÂßN¿üÒ6câµYÎ*ïÜÐzGŠÖïšò!
`QXaí-¢$,e'ÅÏd6Œµqï|O=I!.ºeŽÔøU¯¿°@ûóg*õ*o>²(ÙõÎà£|ýMÞ·m×8Ó¹©:ØeAÅüèoì¯EÞÅ4aŸbâþBnŒEÛŠºM:Éìê9ôvû«×rÏ)<C)'X¶rùÜô0(¯=n{=V¿J®e]"°Yî|Õ)¢0$CÕ¢i/1èûWPBœHÔ£x×>¯i"í«²?13Pî
+€ãQèzëCú°ÅJ J}:û¹~òï{Bœ}÷¯Vñ+Y³UmÇu¿ûU~å2`µ9GŠÌa3¥º;ê?K:U¿÷#7_QÁÿF¶«}6"ØÆH|çÙÚÁ8;Æö©{VõUbaT\pr©;¡
+âUWû^K€|n TŒŒVìuU(¯5äDi€w9ÎÌxR
+ÝÝ\CDA}é±¢³COïÞü©íÀ8<CüëÛž§þ#ïhob2¿íeEGñQÜZ0BÆ.ÚsCi~Ðr8*KûWŽàÍ@:opý
+hxÒŸ7ªE¯:áÚB0Κ'IŒÁmúÏ
+#<mzô±Ê4ì*aàòf úÂÙfyA³í©&Æ`^5)âÉRoËãõ¹NRdæ¿Æ3§õMŽ\e4
+Æ8÷y:]èd[ñìÊSà·ByÒjáIqûútdáÉv2åkªtPsžT#€BSå5Ns{ªùéj
+«=LhÒ\ZÞºXUµŸíØÍ·€©¿X(ð~º6ÂÈÙR®©÷\<åºÄ:$ÂJVÁrµ-9^K+Q Í€¶Ÿœ]q 5ïÙP«Üø'oÍD(#ê-x~&çÙ¶hë3,E¢fa¿sYÕvV¥l¶yÐ
Ÿ[
+ÛþŠ©ÇåÁ·'À8ÜqgïãA
+#ÂÀt×=SN÷"ÒÍú;á"ºW¯ð¬4§ûÅ`ÈÿízÂ~çE_ã:T÷|~&|ë5¡Âú»& 9Õ{šxJjÌßm6§.§ê$wö)ö(¡žjË©&*àŒVg]
+ö ì 9{Ç\ª5ñf©hœ»»ë:2J¬è°Ó¬å<tmçU_Ã}òÌôo²
©Ç÷vPW_}uðôÔ1ÉÃÔ*vf}æŒÀGÊë¯×¬¹?I¢û>TpÆé°åÐ@§õAÇ€fPÒ.ãžG1,
ܧ(Åm nÔœÎçÂ[ßX÷êÔZ;XÅŠÇÑfšÕ1hh7uÞ:fËç¶
×i¶|dGgU+önb»rß}¶a]¹ï¡Ý»mo°âdÒ(DÖžéäe9®{3>VG
+€B8#Ð}_ISx,Ü¡ñgERÞ;
+×îí{¡µàvXÐEåPñå\!êük»GosåÔC©¢Ð>Æjª8:r~Rþl°¥ÈNHh»ö¯ú²D{z±(š£;ÃèRžVûÝŽ5áP?€áÏM@"uŒÂÃØö!Ý©Ê >íðCDäÔtKSš°·cZGlÛ^û¹JÆJÆÊy}ŸÇ/õ>|Ì#~ð![£x·%8e^éÿd3Œ8IwDÒRaDäßÜ1·ŠÂ4ŠWŽ(¶ç~øïŽÄÖÚÎøDUÒîÊŸ.iã=zØÛÿ>±J±ö¡õêÅàÎ>TZj<Ç~.Éy*á6¥jDÏnáVÄÛ@Žw#q³¬OÛª/ w°¹>ÇóqÛ®
+B¥hî~§/uëâþ€ðÛÛóŠF¬§'ÇÈïuÿ{«@gë,)êÉÍ¥xô5äâ85v{QÁÕtdEåATž8й6ßçuuõ»gÓS·ÁjĶwÌþ;èºgÔJX0D>>m1TÕêùΡºhšÛÒ¹«hçÇg{RuxÈj¬&[-L3ôÎÏÂ(vñµz7?3ÚKמ<+uÅ×ÇÒï¢WïNÃWqÕcz/Œ9yó7Ùÿø-ñK8 ÛÆl³1ZšÿÂtÁÔñ¿kår\
\<ÎYúÍqÂ^OnHø+^ì€ÏbWKíyÓn1ÑÊ-d@ŽE»Ë
+¶Ç§)ŠÞ/ï3/Çgc«ß³kœýê¶ÿ¢ÙF]Æo»ÉÍ»Uê]§àÉëÆZÝ˱ÊL
*q#¿åAÃÊ I÷á>\öŽ}êhÇ6µÔÇzÿ4RF6k±KŠFGÛfKÒ;}¯§
š¯Dž]ßÏzœôG¯àŠv°²ãxe5ÙR Gì¶óh_š®e#dg=ñSGeܪҥhŽ-ýdŸwî¿£êîöÜŠÎýŒ#fÐêX_|r÷0ûhûÈiDfrìJuïkžœßÿqpÝÿrðζº&hÿ€¯qÔ&i~WFjãîÄw6Ž*CÕªšµØÜf8°ŠðÎ[·v¶ïÌó1
hQXhõÎù9kŒÚ.ÊàÍØØG*ÝWÕT[ÑWšÈºÂka
+GŒ]z*RÊå¹lhÜ÷Z¬6Hâ?Ƕ&µí@"ü
åÕô)<r'ÎzîÊÎ:WI£ž*yúZÌ-¿µw4m"ö±
t°Íî±gw|㟱d>ús÷ »2UÖ ÔZº^S\ä:fÚ è=D-š*ž:ÜÕ¡s7nÚ©[94j8Â¥œ>ä=±Xó;øf$û
Í&i{>{ô^F·CrûpÇüî>t@Â^bôªF%§êÏ{§5ù²YþèÖhÂAÏ_ÌLÐï_íšB^×cÁÊ$ŸÞ³;êrÏŒtÎÌA&:Ô«[¯9zá/Ð1&5àFšŽHª±Ç-k£1§«,a<üá8òÉZµ¿VCÚà!¶Ä-pºNýúÌÞDç±Ã»ÓDÅvP!úmÐ4¡÷×4F룣Ê\
+ú%Ö .y±'ÉSЪ¥ûòAÛY,L-mtô;6Ⱥð¿wdx9ËD°{C*ð=!õ!Ù³ Rw=!sTÞ0øQBF§cŽí»v²×,UäO ým»É ,|iwãúLëÙwCÈÍ6šÑP3QQã
+D¿¿CòúÚÆÎÄLE+ÓÐhÿ±lw;§YèìíǰÑà EܱE9{ŒÅ~Ê#jvahNÊ^#æëujjìfŠŒötáXb®B?þõJP]%ÁõôTPwͰg0*ußþÀzkä<r4¬Á9SŽ'*"7JÛºÎÞ5/a¹I4UE÷ ±3]4;Àôóúab_¿Šò³*ó q4ýsqU;Bies¶5ôL×ß³L,)Q|ãøn .ÑÖR°*GÌ ä6¿(ßÍ!SRHl¿
+x ,EŸ\z·R{¥
+ÿVLc|ë.Ôé§á·ÄyOnÖÜâ9¯Œ8D\ŠzŸ[\ifñLEi1dnÄ*{zöVÇcNéãË¢~5Ëé:xNPXUÀR"¡dX3~*Òh4Iw(v3ò~HxæQ¢œ¯øÀzôŽ»7h}¯ëHu¯a|Ò-s0Ñ9žÿ+ üêÙÏ(¯®Ø])s xËÞòÅá|ÿñeN§Ûåô¿'äj1Õ¹ò¥ZÔ[¿ZGè),.Ô,€¿{â20éÔ·»ôï
+CG#ŠîÏt׳VQeð^Š^µø)¹Ýýhú'øèKÕ`5öhÍ)©æýÿÑñÑu.j÷wl[m«QcÛ¶Õ€IVlÛ¶m5¶ÕÆvF+vò¶Ýûì}ÎÿÜc}º?¬µ~æÝÊt)v9ÜZxj
+þ`¹PÕXqŒU"±¬jÕ'è²!a&?¬ùŸÀOõGßù îÄÈ8ºiι*WÂó&'>W1·-¹[Fvqq·O3ɵÌ|ÓÒA/ÚG)5£ÒõðpéÔBÓöÚÚ=ôÃýÃ<LFf·i§Zå7G¹tKÍk3ÅvzWkö3tCº!ü54Û¬fiÌ©F#ÂJüʵIN+«8ÞÖg¬@íÕú§Ûª9žú«Y5AÂíWªtŒqí«²ŸBüR,ŽÀ,x++DN²h{"ÇšÃDðÃ2
+œýß*Ô%HcÛ?0]aïÙÔ{±£«e*ÕÀÓa(þzB=òriHà NÀïÚv]êR6m꣌O2i pOÛkAŽ55Ý#'P+ò²hBp1x/°yLÒÙꊶYC«C:®Él³ßصùkÚ¶ýØì¶é×J
+% QÙÛ ã ñ`EÒ)êUð@Í
+X ñý»õeká_wkÈJK"ÁÍøQAÑFätºkU>>K ÓªÖÃ{>OO¯#˹mæDÈž«.¿4=ïÉM}
Râ̪;õþöàýÏŒd"]Öãõ€s,O=¹Óȵúú/nWFè£nÝÒ@ÇZØÂèÕÏ
+IdÞ¬]oO|§
+Š6bNœ^Ì®SWJ.ŽžV×,À|téõMVÝÿÙÃÔ¬ ix€} ]
®Q+ÞûÃëªÙÒ3Ã
+š]tYümÓx7:m¡13ê£zöS¹kO"íÊj ®\Ôö.¥<
+:NÁ$ªFü!ùßÀ&ò8ñwÕ(0.ªë24²Í"5þÞgþ³5·©=TÆxdH¯Å4ÂÚ Œé>@aý`{±vÃKËØe¬ØÃÞ[÷×n÷7ÌbM¢{}$z
+ßQ~(€(CdÄø)6# ÷4õÙ1W"yèêùS«3ÕÆ5\÷÷|+GA3á"áënR¶ÖãU¢ñ<,?œ©ŒgîŽvwQhøùõTxË€£ÐcÍn¢v=ÞÓ·yø¡¡
RtWÆet¢mhE%zêÂé æH>ãHÏÉÕ7eØ#Ùõ¶Ã:š7ØÙ!Ž4_T#Æ$@t5û·rÒ*=mÀì5?ªå»AÝd¥ÂÓUä»ãqП©U«äèÉdú66vîÕµÍÂÒÙë Ôâ(óISÏ]ù·*ÃïÀùpô"ôb1§Áë{
+ì-æÉß§j b.yØ<ëûyi«<~èªÚÏ2X7`3ï9>uvÇÞ[ÈÇ{m»Ï¯|óûùÈîeÇDäT
çŸaP7Û&°U ë)ð;ô{qñ2zæ4Öå7ævÕœTê(Hä&!í»óÀVM ÷·SSéda3;Z®ãmÿd²CYû0xû"PÔþ~WÞ£Zífž*ú®gü4Msüçjðf¡îêb`Â]eæbÞ¡º
+íœ'LPHj|oÞ"]GzÈ$c¿D8UlD,-¡¥ù3fé}!ÛÏ¡®äÔQî!(jó)òEo»>ïúùºéÊí,¯ã2Öþ²áº,?€àÍ`XËK°ž\UZ&ŠòL&}¢rŽQ[NêQÙlWÛš÷ãe±z¥ÉãeÍâÁJhÁ®cL`ÍCú~/-3gâc_×ðêØU
+:uâÔÊzU¹TžŸ¢9cZ%Æ68œñ8zºi%hxÓÌm!n[¿¬@š!£
+ð©â~J'¶ [çz8ÐzõÏÄnõxXÖEŽô³
+ªÕ®
+) géêÀQjþ²ŠOPÚÂ&š^X2(TØŠè«ÓC©Ðõ\öú6,ɲñ8ªŠOÏd8€òSÊàïeÊ"o5Ê׺E»á¢Ž#ª8ÊuT©œ]-p mòC×»c«ëãÈFwVyÞBx.ÂKb¡š ñC÷Rø»Íy?w²ÌóÁSwrKþÉædº%õX]ÛæÂ°cDLUî8c×S`Œ&-²? -y¶nw?ŠJòQŒ\Üëc±
+ÀÔµÕd¬!ícÑÄé¶X$ådÌß4"ñº;Vï÷Bôœ¢ÉÃTëÁ ŽSÖöFîŸôäÒ rÜ~O3K'NÃ1tÑËo=Y
+©AÔÃÿÊùÅîÇ*pvu
+Xxè NCºáGCâ×@kí*s ú&²Á-B]dz¹E¢À!)°_Td£&eЯ6LxýÁ
°µB÷¹Mj!Nd ùó`PfC¬ðÀ&Þ-@¡<tLþ{ÛX¿Š©g( ¹d¶M,rMiÈ[5+¡ÊÆ ý:WAô1!?Ïuœj!/RHÑþ× d-ZÉž^Z¬}ËÕËd°³¿:º%úÄ8&-LǺWrb[ÎxâÇë×j(|e/Ü{ìoômf`ËðõÂýFÒýè&ÔFb
+z1å\%ãåZ;Ç)a-IZ©6-_ý÷ì#VŸµD4A{=÷&n 8ÌÎ÷jÔŸ[šè¯W=áQk
+)ù»äBSÁÁÆjè°;*Ä¢ÂÈBpã[£Üñ¥,*PUêøšº|gKªç
+òÉÝ+ÞÅ^³F¯mëyçj8ùŸ /üª²éª±¬gäŒñëáÁ_oUfÒ¿lUIÿ¥g¥áÓrý:Ëòú 0WŸØÄÉÐçÙoþ|\gNOñࢬŸÙ Zó'&ìŸT9ØÉñYr³þ*4·ÿaýYÖú_?/»R[7Æ!sØGðª`Ï@ß5=÷u<C³ãܺI¶ÒF8_ÄdÇc÷NàEß[u]®pp^M
+ÙÀa^Iûža€Î],ºGµÖ¶$-bî[k#ít{Ö»»µ;\ð<E»CµmÄ>Âv×ÝóFTöh»^°3š³Ä¯?±J뿪ÊרŨ šÂb
ÊÑOºœjþ$!gÔÕ^·;bsãtžQŠBéç·XìVL¿|ÕÃüD¶F]ìÀÙ}ÓÂÛPµóÁ$,ôNÛAO#œÃ²zÝ% »7«7Ïß])M©uÔ<ºÅxíûBYåØ¿µÑ!)äŸkþf\Ua%³&ÁæFpÓAN{mGp¶ü
+²%)JϯÓíò xµÛÜz{{X
+óö Oéú Ä4ìÆŒ²áLÇ!I[Í)öÒÞŒê)QD,lò©éÕóïsô¡·MþhKŸShÎA)æV£ šæá¶Ÿx*Ý@;HÄtùïÑe¡m)õ{¥ï˲ŽíRÌã^3ª6§e07õŒ<Öu}
qäl(p:ÙÿqœkŽ1öÂühë+úã¿«yä×>;xƪËÁÈ¡|g<_NïðŒxzûζ Ú]Á#ÑIÕmû[2µ{ÚÄña5hVÇ5ýü¯:ÂwÍåù÷œÿÉÇ5vïÃcÌñ>ó$/Œ> =p8S# gîP[ªb gžåŸêSF1CÞ2¡<Ñâo§s}Ÿ9êa³Èªúë¯cÈ5*D}Âeh€FãDÁ»óÛ£ÓÝeÉ¥ÍEöý¯OcCiëŸ*ÓeûT1ÅÅKor{z@8n9·4²¬È\GÈèWyÐtÉ3ü=Ó©,ÓœžÕêà¡låÐÈyá,W ºNtÕóêþÿšÖÛãó¹sÈÑ;AÖáw
q£ŽªËï=ùÁÞ£œØ:±ÓÛ $ªå8U:*tÕÌIÛm¿;À÷:@ùÉMº¡ÅB'[7Âß+qß}ÉÐWG®/
+åYF·
ũìû/ç`x=K4 ^`|/ _=íÇÁaóÆÿZžaBgA}&ºW£+MøW¹í8-0NŸ9ž~8ävË";*¿(/K®žÅj}Kü,;ÿG4á*qžšóâsØO5DB9Ô SÛe<¥*Y
+ØW4¿ŽìôxýgocšM>ánXþÁF%ÞrÃ3Žd(¯œGP©J6LtÆtZÉP:ù{ ôª¬VðÍÖ=¥Ÿª¶>µ6!£êË˺a6Ü¥#¶TŽ¿ä5áéÇ÷è!Ôí$ ív²ºõ»)m!\_9><ÏV§¶Ó©£XkQŒâ.~Q®-~Óåð³})mŽùBÈÑ·i.xaß^Lø
+[ok°(^º²ãZÑ=~µIšn~µÙ.]5n(ÚšNæíeX{ú_IZµ>×€¡
+ª=îñ"LN?ĺFwPè>]Üpa_BD!kï]müÕRwsì&÷Ì$ž©z:XÌLõ?iëÌ£ŒŒÌCÓ¹7ððÞœÆ DȰÔ|/3a#ÌŒ\1'dçaÙÆÄÚÑ/·||mMŒUEBŒêÙaÏg±€ZߎvÇï3ËFëVÊ+ŠAjšSq<eÒFÖ/RËÌt'<w
+ËrJàhÍ8ýƧÖßgx&³úàNÏóÉÁ:ü:òhÂ#ª¯£%RE`»öLykfolA§T%Q,T^êé[Y?Nºq»RA
+ñ9M2í׿qswÏçajÇ^ì
Uoþ^Ö²ãm-)¶[ï=f}ÐælÄŒÈÓ(0tRuÆWtþ9iþüšý"fš»prJ̰êØÙñ&5ží ±8B
+€W)ë±.¢ÝxÚ'¶6ÍWŒï§|rÀ³XÑfÏO«±öRAáLäÒNÅÎ>² œ€È B|ióÕ"ÌÃç®Ë@×Ù÷ÜìK§¯ª ÊØþùxSEfd¹f±i4
5±rs0}s~Õ6±ÇÛÁWzvµíF>¥Ì-ÃhXýPÉ|?¹®H%èùÝV€'Ã\ê{X;§\ed?ª
+5§õxÂôb)xgözìgÞ£fí1zw>æ¶-XøÐÒ$#jnäì~)¶4תóYèCÉ}uÃh4ýÆ;REÁŠðqŽp"!øø 4~nÑ:E1þPÕ Ðp!Ü&: 3Ãu®`Ôùë_?úû~q«nûH²åâÆ{9ÙÍÆG¿Î=]Å`dJ¶séË'Èyþ».øôrUàKK`8¡|ýÃýÿ|3Ç ÚÖmKöŸ<жÇyÓ³%w.U±°œóILÊ4§ë}Aú8äÉ42h£NsEŠìî>¿A§õ~UÙè&ê³ÆQñŽv-/{ £?¯.¯€Ãwë߯öW?·éñÙËКf6eÕKaÉŸV,¢9Å€ÛIh-ò(ï0ÓlÈ3LÝàüTvª0ô®(Åqµ÷ÆOšæšc`6±^oÉ÷2"ï²ì/t³§RšDÃ;ÎófÆ}Ué/Ö@
+óŠgÆ^í"ÝßË1Ÿ=}iÖ5Þ !üÊ}矬øÑ/Mø8;T«F¿ÐÀCç¥
+ òxË4[P>'@©ÅrD@§ðÕÝìËè³&ËjÚ€ØÀŠýìb]lHbû·æ»pÆ7³Ü¥K°vh/µz8:RÊ\!Œ³k²þ©êQ|ÛyWLcK§#:8A+$cø«U^"#ëÈåH8ÁŸa(¿àŸ2ãDNYØmóé©uÿÎZÀ11Å©AŸ¯Ë¡Z7lßµ§õãd±OøÉgŒã,Ÿ|iL+¯÷PbÇŠ,¹Œ¬B0õš3/÷_ìçù[9väòïIf?(v;YD¡íáO5ïiÒ²Ôë9c7rGR·áÉŠ:\ðC± é÷šPší®¬JÑvA}å§áÒëÕÁñ×ÓÎíãSïÏÑî¬{pØJG"ÁÍüYAC°Oòb
+º7ÆJ
ĵc_cY+Ñ[ØÎ]@»èÚºUö]ðάùðûëL/³ûí¶*¹ûZ¢œð€ÊÖdœ!ØZŠB$\ÿ3âþÞûûü5M4E¿5ÇkT`>ºUúÏ&wÆÖÌ®Qmëý·ªè€|fÇ3è+£«ö*lÉ€f>òñ£&u±»Ç»ÕÙïÍÂ"Rß÷Ú@±5bŠâ
ÕfÞŽôb¯ÅØw6í×$\Î×q §8³c
mDïrì:Ì$z!=pÌ>B=RWK
+;enÉÖ@ÙœÆÇžJ<ÎnªÈÞd6©gpEõñ<>ÆwäèëÉêžjÄÀT2é@õ}¬õd¬cpÏÿã#ñN2;³1ÐLIS¥LºÀkþúnñ7êþA=DcÂj5,Ò_š/ýZÛúpÏ·B¬!"±ž,;ë¿ôQ}ÒýËûÈÔçFoõ*îAqZO )`çžÌ~w1ã¯of:bwíO!¿:*ùd+È<Cênd/ïýâŒä>°ä_ù§M;f«Ã]#·/%?£?4LÑný¢1xo%G²IÓ³Æ=íþÁ
Þ\%Aî¯Ï-¡À)ÁM£kZÉYvÿ^Û[à8¿?Ã$
+?oúºZÔ0 ÷RàŸIiŠ(õëïÖà-Ò3Œ~É îùLzöÉAñjûšÊÅÚ©Ùr²gâŽK±[Ú+ÍÆ3_)©õn|hò3˳
+ êÁÿ~íñÔçjâdå#XÔX,tX{|û¹Ì]h
+ÜOÑŠ£Žœ>(6d' AÞL¹œ·§EòXžP8ÕŒhpSû(8à85*zíøÑ¹AU]ªŒÛf¡;²·$»d³
+[_ŒE ÎÎ(ºnŸl>d©Ð*œÿ3®0fIÏ.ü©m"d*| "RQï7Ç=DéÊK!ûÅ€ÑÏÍ*ÒhyŽöaʯ\7ÐBdÔJ,`ö:UãÓª}Â8Ùæ®å"Úgó8,
cux,Ì%,ÂÚwC8ÉÊNÌñDÅ»)ÌMUc5ã¶:KvDdý"0CÌËC«°¬î@Û
+*zÊVzmŠŽ¥gqBóåsú¿ÊgÞþÃIâãõ°5êduL:RvËÉp2Q4s;&;\H±Œ
eãÀPoc°ÃNôA"ó26ÕËl±¿Ï']DUT÷éO{zHö<ëÂ~ëŠé=Ù44qŠqîIJ
+0»@gUÈp,ffuyV¶í*úD|g
+ð]ÓÖo§û9L$6Ñ,ó€ÛóBáÕŠBMW§æzuníùy[ÇG7váŒÙpK÷pýîa±Gžáå{ý£ð€.QÁ#ýOÂÙs œRšåTÔ1c ZaðoóÕ_<o«ídøCÅêéµur9ø9Ãwl©3.~{b±\BÊNµŠú®£òìPÀïWÚC$=©NYUʶê.P%¯\R#üÖEígÅŒZy¥²Fñmñ|°šªVøñÜšQrCÔkuC¡NóÿÊ,0'b#©ä×Ê©áÀSZLtR};ŸíÛ¯}3H¬Û{FõìOÜí
øfØo³«JS|%âëêäo\ÍÏOjTDª!âi]L$z€äoF$¯ÀËÂhÍBíÛ0d©0«m]«ÆdM&lVsé1¢ŠÒµò#äb1þž=õ+«Wû,@Y#¯¬t°åÌñÂ8·
+)ÀkO=ÔòͰüæÔd/Ìây3ÃÐQaFŒe³²ÿþ6jÁF`¢;óL[Á_¿õ8RSüX-bÿ}"rëech+åõáo§@äåߊ(&S/[.7Î9Ž"©ZfÔ{©k>Ÿ:GØQãéüȲ\)Mp
+¬@;ÏjsÞU£ ®P6
+h àJÙëÐóü[?õ LiàÌ*ky.4Èÿ[ \s8 aØnYüèóœ\³ÙÞ^\ßïg^Q.6=¢$:býbå{²pX
+H¶jûkÎ?6«V«ú~ÖÎEü3Nx% èŸi'¬9>ìùµÙuÕ5iÚ$ÙÞÊ8ÏAöoÉwgLæ(v
+ô€¿0ž=.ì{¹ºœ7z\ºí=Þmãü0O647ÁEcŽÐÈ¥ll]úN£:FÙä 8z#ÑoçÝ× Ól;^Ví{MËèÀX»á€U}Ûðøt©/.giM¶Fí&ð¬Cÿs`aß?æ÷ìÝÜÎdµŸç?1ï3|í|ÈèPvìèH!ªµ!Æ12ëE[
+yDFgéFÄrn6VðæeÎÉ KŽ.g"m=qµÎ1Þo¶V0ß)åé+Wfø×»Æ>tÏcïûEå튌nš{ö¢n©éòØ'úí_â\sÃ7í|zíT Í_ÔþE]$·ÐgmûÐ:¶P=Ú:ž?Ðtt0wo_žDìm]úÂŒ¬¡éíîÚT¡à+ÔlÊ$:,%º¥ò'pœï°ŒÆŒäõ,ÉWE/s.háô&y³üöîºðàt 9ç}Eœù6ÑÆ¡?Ì&åpdñ.KÕžtÔØÃXb±²~œ2ôKÕZ¹ÆðƯpdzãŒâ\ê`Jáµ£û#äí¿//;i È5°&qZJäììtPѯ¯VÆfì$pÐ'YË®žºCÞ&Ÿíûaÿ·Àî·uxzzÆu%xSÕÛ8õÌ+|ÄH ñ'o¶ÔÃIÚ¡ÎCN¶.XÏ·9O-;{VÇ£ºbzÇ€Q|xÿopì·Bs{~&Q]²*³Í/-²É:q!+"\£P0X© À¯5ÞQ£±:ªdšè¥
+LŒJÑÖ2Õðõu¹DŒ8[ ñRÚy8Çb,ÇH ©Å²ÙeØ(ËéÈÎL1æë)! Áã[Ü®å೬ÊàûjÙâCOXÕ¥"%
¬U^Üö
+¯ j:ÆèqMËCVp
+ñLgXcTÁC>WóËÜW)=[^ozhÑdØTw
±8TcÿÞLúL£Ô¢üìÊÃÉ Å%Œ»¶bVS¥Ö©'ÌaHÏŠ!ÜUŒ"ádî°ÌGdfÜJK Ï7 -óñA!ÁµcÙGÈÐã©ýÊ«Ê[h§@ïžmX béa¹ TÂ="fXϹWº¬Ù{jngû?§Fœo׳ÙÊ¥,÷®ã=/çbºØÝ7cLŽ×³ä Pq³l€xËüXfúxôôùã1ÀO8yÈ+ÒïCuËÌÎÚïŸ,-³ª*þyí.Ó}µ:eÌÀŒíúuë2níÉŽ^ÎR/ÅxŒÛ9SEÊäÖÁ$ìá«÷]ñvÔÂgþóû¶=«g~ÊŒ,æ(QÒQú{²Éd~C<åù\e5ŽTbIv1]QͶŠ4ÐÇœÃ~ÌA4ý9¥6M1ŒGÅ¿xµa šðo§ã{âÔ, "j¥œzbjQJeAØ Í]®×¡ßÜÄ£ñuH7<
+ÍŠT¥®€8 !)Ð+x
+5_üS³761sتµl³Ç÷YôL¢K·íáõ§vçAM»ìýݳý
Üû÷[@Ó6Y3nIÎkÜVÐ-tdúÂH
ØŸ£|cŸöo IßZ8²J(ðyŒÝžxf?w[Ôÿ60ÀÄÓÑÏ{ŸXm:N+Éáõa&0ÆT&w%ETbhÐÔ(ë·INÞ¥R'Žm¡-HîUº^BŽ£AØký wueVKôüT_Kô~u»÷xõù¡ÛG7U=vlU6/VÓN¶Hа «}ŠX«an]#ÿSÏ~&«Æ5,ã£M²`eÍXaIMTºÇ?ZÀ·ö5ßãmíÂÃZ[ÌVt9$3ÌkÈh)Â&{âzŽÍ5eÏYc +d=&àlp(#ß¿gæÝ¥
+§.[ùjSM©eúqö€¹v|S€ú°tÐ|JÑ»þÈôüœ H8fާ"J9á+Õ-Å»w²~ÿÇ)€+UJ{ EÆgÄûEoBå£q÷Žú¿Õ±ž·eÎZ,ÊñÎkgâ26%0gÙ¯*0Ï&ÞXÛþ èŸüùïE{4ÖáæÛþœëð#sâ"6šJÔY
+Äñ/gñ7W-G&:pŸ4£4ÿ€`ÜÿÝ;¬Mþ§wÐÞ9òÎ¥?|fjoÄŒü£¢pÓx~°w}«nŒúWØ(9økÖYÔ,ÞÞk!hnNùÆ|8ÚŲf³Ýu2Òbò¬žl©$ á`+[×véê'çJø2¥ÃbÏaøtüÿñA÷ÜdWÛ€SŽ:tAôåC$+N®·V¬üÙ¶ÂÏw&;1@âuý:µñDe2yÇO#ࣿ¢Q8ë÷qÄé8U$GFWD±0*ïeáôêdé=Ë·;'Ë»Ó
+aÙSÙ7œs$sèû/SÖýAžu.v,gþ«
+¶X@Ñ$CÖ² jfÞèLó^X€Ê Lhv(ŒC íVê4Åõåž&£µ+ì}÷,PÝó®_Ðß`Qî÷ ÃØh,g¿nŸÖ*ùzæì;÷õ
+RU[7
+k@ð~ÿwh&ñVèâ`óû*Ë¢ŽÈnzåæîÛ:ÁÈEb§RzSΊ;AŠïÉ¥Úª¡º`ôıx°à~øðüö¬·ý,Ñ8ÏÚR
+økjNøwj.Ç.æáÀqd@²zjô-I\9¹^1ÀþÞèrþãFrÄÔ{ÕsçsQ$¡^oùÂà"Ÿ©òdŸÇÖï9Zû¡»·IòY³VÈ8.ø¶³Ú
ú åÙÅ:]cÚeeOÛ
+í£ú§»@Wjn0€pN&!å*^C9#Pýwê
Wø/
ÀâŸEI§JÌ÷ë6D0ooÈoεN"1MÍæ°Þ3÷5ö>¿žNO\kéÔ¿Lá)výëì÷¿ž®?÷2Oör¶J=š}5êNÏ 'A'£×þÖ"odÞ/$#ï?Ê5v±ð©ÚºÄ'œì)'UKóÈŒt ¯âä ÆáŒnçŒ(ýPjlÉÕš¬·¢÷_è×5ÿºõtemÇZ~Ð3àïw€hÓ÷æ"!S$cùž°
+cô
Ã;?ïð¯¡ûìž5Á)§õðiK×!Þ*sü:© ѯâa ͧkЬŠ>ºÕg3éŽRÌ~
+ªµN»;ÚišÛbUУq at kõýA
+KpÐR¶ÐüCJ3x<Ì!þ'ÛCLª4?Eà4Ô±Fë@Èw5,H2}YÀ)£fŒ¹E«æü7:øœ·IOŽÍB!JÑ¡ÙmÛ2Ë6dÑžòu埮²Mb'>ÕšWÝug2K_¹mœ¬ÉP¡ûíek0ÄÜÌY®ÀRÃGœìþ*ø>z²HñråâV<ì۵*°Wî\Üw5ÛŠ5¡ØU*0¯ïm/Ï/'KS_|ýÛÿÔ#:ñµœT4œÅk:®Í)6DŠùzQ{È©äiÚŠŒ5H$éCjêmVµ«1kÊ€A$꣞³|£Tèóüz:}Y'^|šŠFXçÌ÷vÍbr\40€Á šw¬ß>¬íé åL5b¯!Õ±dò&f3RjLFÝÏ¢°ßðŠØoûm)Ÿ:®\Ÿ;Mìù§ø¶®Úà;w.ù>Žn_¶HvýÆÌj|øê2!MêèF''ùá¯È°mÚY(å7|.YU`jD±ß}|jè¹yYï-1·I¬ò{Û';«rŠ3ë bd2¥±×ÚÈG0ÊQmcoÌŠ«ùGõËÈ3mxaœPI²ŽÅc>
ëÇTÍÒ#òòÛ±oBH-_®À0"±ðCîÖæJÂAçcšŒ«+0o©§;^n
+_3Ì:cdŸŸ Rä¯êg`f€îÊ"%ôø~^2æ$Ÿ<4K×ZwS žØ?\(ÞØÄvý³KÿÏrýW·@ϧ°9
©Ò5©ó€:,é=S÷åöØ©Œáãÿè(ísj{Y>MD¹73.ÄgWâLàfç ï>ç _M\:<&ÞñÔÊ. Í×99#¶¥¡k®¿»éS=ýnŒöŸ°nZåîË8|isùi'V"8©êÅa'ØÅàä,®RÝïéNJj']©UÅxÕ¶»û4ÜQ+ÉÛ?~èãSÙ I¡bÒêÔ€V¹5FÒ¶>°;?äV%ûßÎh©œ:R ÅæÇ$ƪ`òc®Y¶Ùfþqü²7žÍ
+Ç?ºHPÌšwxöl"žlye9ù5ú ö[Qs==ÇHÉKœ¡îóÉ4ÍuNtÞjTÏ öüÓû6µ;b&ýÃ
+$énêí!KÃ1Ojð<žW±:;sŒÎOŠÿÒNÞ÷Üâ@¿\øÄ×»z voç«oAèëÙª C&þÂ~ý¿ØGYnÑÍ×NTD«05t·ïú°ŸÓUŠÜ<Ô¬É/Ä÷Üâs ÖíÅÓÆëðöa¯Ëpþÿ1§óÏ"[ùŸ0?f:ä>eJtÚ³XáËÐòý- ÃÙ÷;[àsè ñæwó±oâsÝ9¯WÖro×Ö7
¿Õày|÷.CÒá< GÅB}ù*ÿ,Ø»éýú;Y ŠâÏÖéB²JÿiÐäÔªcHF0ü{kiZy=LhÞõìZù;Óç|àAªÙ©éŠß}
±í<3(wIEܹß;_òØËŒm)ÌŒPð)Öà
+kf¡8ùšXœìÿB0Y;÷ÿœ}$æþÕl:ÕÃáÜ¢xp]éºx¯ñdNîDüõhJúcÖÁÞã¿å6¯ú¥ÜoÞ¡{}ûÀµóZM{õÿè#M£·}B{ÞQ¥Ý! =NòákËò9+û¹jµ2}Ë.i{ë}@²&:Ó²JûÐehïîfŸ°zz<{Ü!öòçêeœ?º;uš×C>Ýó|ï'jËf)jv&d¢¢Pôò+žÒ«_¡$P]BØÚm&°ßgcÜó¯YÏDX.ºùÜõÆ{`¯åcx6ÒÿÛ»ñðª_>r¥qíFg4û¡êñœáIjÎÎGÔÁ¡6<œ²Ô¢@CÃgjv©všÝ'ÆåÖcõA¿8
}e0q¿-LÚ|îóä\躌÷yÐÒžÙDŠÚzÞQO]öù6CCè€vž`lymèYà1_çÊÉÔ{¹¢y<,j2S0fúÂéÖÎfÎÛÓóõ!äþÎvÀ¢ÂÂËùJdu7ÁecLÎÂZݰ¯[ÓóŽÍroyCEV1utPÓùíÏIŒr€§èñ5N DÆÒà»ø4ž5¡âµ_ô<!{^°çŠjpš¶c]J?1^cûÔ8jë°Ï{5dt-×jÓÓycÙÂÀZ`t{¿EÞ«éÔ€ÁÅßíGÁðMkò§u
+÷ŠëXôì€^Ñgðîò
+<0°lµkâtfŠCAuÕ>Ç`]d y"öX?ê!g4£©UÚÖV8ñMB£ÒÆæ3õ!eAØÄ<âÃþŠ,\€,í÷æõ(¡SSºH
+&7¢Á¬Áæ!Âv#×èôþ9[4æ0õe,®ÀŽw³#+^ç3ºž*|-ñaœbmgµé×Nu5 áÉ!U®`ÝcøQ`Œ`¹£Ñ{BöÚ¡/Gv¯#.Zÿ©&+·@ÔÖáüy_ÄC;óá/G³Ué ÅÆò$²BMh1Hâî Þéd2 ÕýÖ§À÷< å'ã!ðaͪa&¶Ë¬¡ŸØ z€ç©ì¡áÈxîšYÚð%€ÛBM ÅJ;3¬yiÛTHm!ù,€RÕšXsÈõQÿ3<BÜ
+£¥
+0íTŠ&_|qŽ7m@Ó-¹`ÝoÙIfç5<:m
+-ŒµýŠ,LW+HgT<Å6;õ€
ÿ¢5æ{IàméwÏgîÌÀÁ[¯iµÍAÈHÚñnµ·ë
QJîçñ6ôK5õíÃWë
#Lê§GA8ôÑÍ«)Ê€tÖfLÅ¿ðÿÈB¥¡È>GÚù5Ö7Ä«Îôºô*O-Ï"þ×µxh|L\-V\¯#Š}ø3€Šc%MfÍG/ÔêêLTÁç#jpDºÍùÖÉ$©³bKGÌð£.méq÷r7$ë¹QÚq®ysÃÃGâàÐî9'ÈKØyèÆæŠð*Î úŸÀ&{)/äG{{ê
+ůù/!NöTýéRãjR&Û¢ªlg*sqy1Õ}Ø"©¬
+* ³ÃqÌEüVÔ1SÉ4,RŠðW<K²èÇKêâìF×4¬ÙÝJÑÝýšðîàá<¯0ÁÅË+MªxvN€ýrªÌh,šÿ©²gæ€/£Úú1bTÍÙbâW°Wó1ì`tÿT%m1gT=ЧçCjô·RbâBUæiâA³ÚÉH¬tÉá+
+ýÝHŠß®µÝÅ?gSõÿXŠH%Žó#ºNÐŒNnÒªûò«ÌE€Šþø
+éâÿÒ¯Qæ.ú° Ýïù?"ßl>'
+T÷ N±ºqú®ãWþëa¶cW¶ªÛöûõ9ŽnÆ%üx&§ôÅAGÁ*žmÿ³F·ø³F_{³Å<ÛûËV(ô&WÊœöšb=DG»óå<é¿ðí¡%q>§$#}Ï·ÿ¿ô=!÷-véZNôúíø.gZÿ¢g+D¢úÈ·ý7.¯ºéÁÖõ«Ñ§[Á£ÜZ*"ŒÒ[ñ.ÊÏÅrtÔÏ9.§=W;#CŽ9øýŸÑ«
+²ä÷vEºK¶átü_/Îhç;ò°Ç%°»×¿}µ9?®Îí§ýáeW®IjMJGvUÕ/PÒªkÿ5·û|Ç}?€%œõC€Â+b)ì_ágÛyŹװŸC\Y6ß\ú¿^*+
+M²EKzÃvøþ¿Xýòá-Ô¯çQCkç&lQXLôœ¬ù_â4Ì[èãÃÇdP_O f
ðið ]ÞÕübýTûÆfè¯à¯(B¹=²V1ãÓjÔP,ó÷tyóÚ_=Ùnж£ÆÈkAA{²»ÿ^³÷ë3kÉí/ãYEø,:ý·%ÑPûfŒ9œ:Ô«ROÇþ0»ºK¥nXHr7Ì:`Üâþ.Aš
+
çUí¹×kðþÉ §:8ÁTm±jªE9Æ®à Ý÷SŒ=ª"ùÓWÇrc9ÃæYEž÷D°H~à`ÄfèôêRñiÒ2íß8é#·ÿv&Lÿv&°.Új$TQe9
+úE¥Õe6gº'ìs»!éH]CqK»9øí!:þÜÁß~©¢óÏRqðs. "E!QipãÃðé U¯üi÷L_ê"ü'jmÑQòMgBÆ7|cÅMK<+1ŒTé5JAO,œßk"Nâþ;R"Ý
+¥ŽîÇç
-ßDl0ÞC€'°º ~aȺùãÍp2^,lYµ©öå1¿]²gQ1Aܵ!£âá
+»DØ*QÍÏÒAÁHþCrù `̬û++m-Ã\ýÌ7nüåEBxâ:Òž»V@%úâ²oLU$*Ío2}X],j'\òòªÜ»ó!±ÌPª²œ|_«¡²)yßûæÓgò! ©íÖ¢,æ^ÓVLCæ}m&ްÎg]µÀ¬8p±J\áûû- dõ¡¡H2ÕÇÖOH 2[{9ñGî¯phS; Ü;ÖÑ(v#œÑìÝ댳Rëê¥IÀ
+|s¹ž@8Or¯(°ÅŠÙÛA«*áŠÚ¿ÆDŸ+Ì"£Oœ-e7úõMªqÇt¢ÞÈý°>{19óe²yü1Ú
+ÐZòR>lš, ÒdÕ¡¥17žóTf at u5]UÝÚø©€ý
+}hyx`g%_Ýq#¹ÜTR¢É)O»¿
+'c'e °f×íÈtÄAÞç€ ÀÊ snäe@ÌAJ¿WªÅ
+¶î4@2Ævsô=%}7qã3¶ÄÌ¡Íf at diÓ8tªÅOlM5f€aÜtRÓìÊœÊpI·mDËò{ï3b·å¹~:X
l.e<õ«·ÓŸ· äRk9²!R@ÕÚuèý_1YTdþ¡²uõ*5åA[1Þp€ÖÚ Cuenzù× õßïDñµx€V
+ìžõgpLÞ׫þhÔòåL÷1 bÍË¢z+LøbéoØ
+MíÄ¡Pù)÷tuÌ÷Lö¢€Íp'3Sp,7É*(
+µõ²ÙY¢8ñ9ÑšùM`11€Ž`üLcø,)úµ? ôßœ"P)±âPªV5»í"NhÕ-Zx~×SAÖµé|Ò»nùx~6íæ×(÷'#rú Á£ùkâOpð:œ¥ŠqÞÚ2
Q'_ ŸÃðB²/âÆn=He45š5¶ÌäÊk+MLK\N€bÙòVëRl]æNÁ± O«ùlyÿøµš ýãßr!øù¢/¶ÂsÙ¢Ü=SEzm!FîªdøBQ]êåk i¢.H'³ý;NàiåMéØàO@î îbÁîÆ÷p,@í·çöð9㵡'EÜUêb·8A¬8Ú :üÌz§TÞá{±H{ÖaÕr.-öZ-.øÚ/ÝÆOK=v°W·7?¿ Þe¬þŽiÉ þ^MȰÓ*fdOl÷êúGŒ~=3-Ðí{Âáé#ôQùùä¥ä¹F
+&*£š¹DäÛÔW.WOÄîVímWG"°õCÏS€PX%õŽö¿Ÿ± ;wõ-£FþhÕó!
+Ðÿþíà¿U=Ú÷ý»·-à=0
+%þGÁ g¹åE¶êר%ÞÉÊãøÌ4ì±sÝ_ÿ{?ãÍéTž®ätà¿i]¡\å,põ¿öjý³¿5ìÊ¿5ìA94ìGÞú|«²9kxžRÿ`óÁ×>§M=ÿŒëÖM¥3°Ó1O~2dCl6"7ªWÈòsdJpM]xÛú3µ|Øðô&ü¬_KI9CWnþF0ú×>±ª/ҿÚ$ Ów4nÁ¯éñ?q»buU©qö*»ÔÍÿ5öö4ÏÈ©J£
¿lýs;ãxÛa#xAzñÛ
+è@h6 ÛûDJ°^ïªü7ÔœëÿõVnm²é€bñú£6AÍ»®¡£1*/ycù€nœ<«h@;îžõ,Ûȱwé ÷Ì_h?ŠJÂ+M0iêÜLy{#šgÅíôùáU¹xÞ³¶ïZ¶'€åd·>zÿ"ù'¹ŒZVRWâ;v¢Øk{ÓuÝ
+J<G*^œèÅ#aÓ2m2~LùãQÂ!««]êwªO`'ˬR©Â~Žÿoãâ¿þ"°I^¢y}QŽí5KXCRŸåY¶}"ñåjÀ§éèö ³{
ÁeÙtŒNç A|Mä»Xÿßj7àæoE¹dŒ·ZÒR|~Ù)Švßíæª-èØÄPôNNGvj_OIq4>ßòv2'e¿Y`Nœ?þ$t*&èê]¿,I#¬m at Q¿¶äQô×0hò]3éê-_|©Åy|¿³RJMŽÞþ6œMÔ('Ä4szUIc(pÊê
Æ@§ÕÓ/jàU¹jódf»CK¢wAO¥uÑÓw8κÉÉ·ñ¶89œèô,÷Zà`}£Auü÷GcÖäðRžqf<ázd.
+<éÉÉVÑÉí»ÓØ
+>ÀÖiºú9Æ"€GV§|ÈD Á!U©©z@>QÂbbÐNàeñ·òrÑÁdÆtvÃàC¿\{øÂ¬Ñ3ßgõR¹M©Ê'êií§ã#ZXÏÏÑל^Š×YÚÍ[JJD9bnÙh6ltßîÕÎSÄÖþ§?³µòË`Æ©;êæáDk5EÌE;AöËMqT¡E
ô
+¯ÁîiLáäì^^ G#8:ñ0NNÑÏ8Íá9E%#Ó«ð0&â%"ËšÚ
+`Œú:ã
+0¥ûãÛH%Ê@ ¢3×VòL{T§`[¬Ž5>Ð
+ìéàè?'¬:ïòÁàFaêçAÒËm±@·8ÅÆ"}pÊ
+mÝ`î5ª³;%Ok×Q¬ZCØ57åÃ¥ï9ìWË×Y¹¡&ŽS#Ãí.·97îéð.·° 0uodÓ5otJ¿5K±°àóšWB§³5CB¡Ë^ãÒÑlëúRsÉ
+lò£ÊÅrŽÙö ÑUžðÄóž_Š,>¡ã`š÷¶áçÙͱTaf@ÕxñxŽW ;rC{-²¬åUص͵³ØkØSqMëq»í¬;cÿó`ÿB4ÐFkÌòûòW±¢ª³nœõ¹íÿÓ@€9€àn€€hÃrn*Wîȶ.];ddòo^sI`}'4µ,ÀQWnJ/bÖ`a·i;¡NBK÷m6dkjDÏË¥ß>A÷kçØ
+Ea@ûÒÞd7g+Ò;?êÞË*-MIMH%Š\dÒNNS8ÕU%Á®o+xóæÖÂ~°_äR%ÕC®Wû\Oi{X°oªÜÁiÕ(]ø
+CHÈÔDõ¶;ŒAö'v÷ØèEmrÒ¹ý$TžµN`GJ鹿
KÓ?µÅ^v EVJP
+ꮊ$d4ßÌ@!îó$ÐÔ+2ÿdÆÕáõàù
+oä=ʯiF?d~Â;ÏlÓœ\^?7þ&÷Ôãi¿±ae¶ù9ïø'_î<hêŒ*g°âê³øÊÒHþIgSnZw©ßk«9ŠKï¯ÇnNxGøA}¹ýÈ?
+êTPA}(çlVèÔ¹_u¬ýøÍÛo-ÈÙªŒ|#AmÄ üG0JGåbÉH§³ÁBüzç¢dÒâ:µ1ÖÒ-ªóÀ=éÀûT]Ðõè&ó%m
FN)DÅ(®¿{§Od¿º=]rzŒ?ŽÖ*Þûo:ÕŠÈÎñ82®k€îÝìN|y;wâDØ0Ýh!ÚÃbX@°?.« êëíy[]»ä¶^ȱÿ|Μ>mCpQqšÌŸkPïjµžt}}±õåÕãóÕr9CÁ7Ó§7¡èÔcÑ%bâ.ÜÏQœê7Ú×S2»6¿óÛPзGëþžßç^/âr€ù¶šîdÎÇ¿`]©ütÉpC`ÇdÓòhÞ¥š žûrÜ!wí³-Sý;¹€¥,Zü¡Cá±Öÿï¶uOJÖíÔ)'kÍöºQSEä-С;[ŒçHR¢£ÐÈÒá Ðx~ñMŠÚÊ¥øb+xãΧT
à=æÝ{»§
ÏI>ß²7¬T¶ŒÖdöÅ7S_O~+·[ùãÏÔ~êk×ÑZA «HyXcùxó{œ>ÑÞþ'³×;µ%¶;Í$ðEÍ {Zá=]îÈòzÆ¢ñ;«`æËG£jýÆrîXšÊÌ~JÖLε\ÜÊ£Ýg£ßó¯ýÖ¯o Ò8Õ5##RÀûÓ©ìø¶}_ŒEÊùÞžŽä [ØåÊO²ùÈyÁŠn¬àÇ
+ã5.ó3êþj]A±Hdw8ÕBx§oŽŒVÜú"rã\7©ázœ¹~ÕOø¢€^GR
+ÙI÷ù!U+Î8èU%tydWux+Ç#¿Æ}åæâŸÞÜZ·N¢RHè;ônäovF
+Ú
+
+ª±~Š#³ûÎSýÿ±·ráÚ¿éAºié éî;€»A€WtßûÞû~þÞc}`>s3¿ë\ë<×"d1üjÂÀü.drü4k³ÕÙrôo@KWWû:Ï[TàmüåÚðSÏ[JÒ
IvdÇÓlúž¬ Ñ'òI S÷9gÛŠÈ·µ|L^õÆPâê@ÎfZ\÷û
+]b(7º$â^oŸ)5}utÕôLG¯éëêH¢}Uh«Ö:ZaòiÖ'¬Ýg ÉðfÏéK3/ñìXL 6OaïÄb£ŠÎdãjÚ¡+?ÖlŸHc`~ÜÈÎô
+Ayªqn^}þBeÚ;»åN-*ê6FœeL
+ Yçéœ
+%ë±l\6à
%Úx§
þÂØtÓ:y,
+E&$ÌtÙD ÿ7.¢îgg¹ë7çÒe±Þµi¯VÅÔn#¢hòQüh
+2gô#'¿ÌžØA.7ðrˌΪMºûNWFjßXrŽåú)?ÐsäKëØä]ûþEË&¶Æ{×ùÚ¬!°YœªšªUŠiLŒ3g`þº@·¬ µ*j4眹ºÕž@si<4G€Rg!®JPš<ø%³@®yŽ!='K8Õߊgû;Å®ÁŽœ2ýé;pÖdÞ]0ïHúWšž
+F)aÍçào¬M"°*ïôBÍ×W5/Nx"%È»º£Þ]ò `²} v'?ÁNwb$B@Šlƶe{,äWiêŸZTMÖ'aßawðΫ¢¬4ÍzÚêüÉ@ù`øJU
+]có4<N}ÏÁ©o§¿þ=b÷]©-aæØáÍ¡µ"QÈÅRB]öZsQçmkž· z%@ô"ðE£ÎŒüÿóQÉZF©
+Á=V|EªG©ßj3œ
Ó,D¯M^(OOiäzg~o,®æÐ)~Ùéc!PŽ4õÂß\Mœk|Û»XÏøao©8¹ŽËßû+Ýtfô÷ã.ö#ÃàgºìqÁU[ÝçiYíå~ýx2úqA+«õ"ÆÄüçjðâôHo[OJBdÙDlÖÿºcµ@@£ÒÐú±Ÿ(q7Ónt:ŒÇçsÑúi$lvwž{b/e
*BSCŒ$ùŠô^CðD¿`°P+hPY®{I% ß¿:šaÜ@níY®f¡{œ2üþ&¶2¡ÚMey êF§ÞëúViuy3fa»×ïj*Õ°Ô
+þ7dFàk_ Ê ²ü€b:Îq/ŠãiÚl¿eØÿ Ÿ:¶(°ày±Mÿ!6ÔÕP3]Ú(\ÎH3º-Y¬°ñÒ¡@ÿüCXÙ[Ó"Ñnú,Î|͵$Ÿ8Ýö-ß#ËýÉ_pîüûÆ
žþFm+Dü¬jH=ÄÁ¢üåÐå¢àY¶`þ7
+ËKÁÎDçÏ/ü&Œ&èò¯`9i+Nj,æz1å³¹ý'ÓÔø[a%#CÞµgÅ6Lóž¶Í$
+JòJbD_ÊqýÕ!fã`!ÿ`VG¶7`ɵœø}sßÀs/ÒcûÚqÁËÚ×hh_+¬^Ôâx³ÙïýŽýûåm;7µÈGqÀpáî+èSìèLêlÕšaµ"v1+_/ßâö«ó£ßñÕž39ŸÏŠkjêZg`ĪÝÝÕ'ÁOAÑ÷ËUŒÙ|þözË?+ðky àZ}LEj²ãðäô:XÞuòÚnœìx±eé¬ÖèìáOÔ`²®Ñšq`XÆfçíf5¢ÒÁ7ÉéE¶ )žÕe§òõæ».ðbž€
+SevvÊÏOÃÅçüI7»uóûøŽKæŸ|72Ëþû7>*'ì^u ÜÖ"ó˧d=@
+ïw¿Ÿ€%ž/ÈK}€žéRÌøRŽtgmÕÝÃOIg^±ïë
®ÜŒ:Aºá
+ûš!/÷Ø~©ù*¿Õü€£~ë@Ý66õlaÛÌãò{Ÿ¶/Ùíâ&Ãä×î¿/çÃ>ßóÆ/<nÀõÅpüô{ø6?þó>dzòY«sF¥¹8E>G©feãíxbL\LÝ5ŠÙêÝšr~Áß}Þ=»Þ×§L)šN:hýųÕÃX¶ó§þêÆ#ö\ÁO*Xë9Hd8/+·Ýó}NcàÌìC;š>}ªå°¿3u€1ÎE²jÑ.Ò#KÖ*(ÇÃ0Yº°ÎBµKîøyšö=Î1V\w+kÓÇ¥Õ1öjäñ«B*1GýÆ6«öíšœÖÂ\Š%®èáL
×+±œÂIJç<Ún/XÅÄLõTñ·òÒ%y×ÑsjÙPêû3ünÖ7~ €{>PªxqSci.°kÝ"ãXpü6Ýx'ÉQº¶_µU6ªù±\HÛµCsZ·Á³:Òß6`TOR<oË*t
+®7¡Á+ÜfÂÊA¹O~ÈÒí.y»§Û<çÄž° [8Ê5Uxq@À\užbz_ÄCwšT0dwœYÉ8ðÿŒ$±°
+Z'Ø4÷rŽšI§÷qÉÓqù&ñ)¥ÏV
+¿€K7ÓêÊÞ§±·n¶q ºsjczm)y¡Ç¬·õ×ï0ÜÒþÜKéá8]Å€Š;
+Øï5Þ¡qBO¶}XŽÜ¹«r«h`5÷ziø!³Šrz É @1Û¶RDgXóðG°ùh>6êÉÇH^&[@-|Æê
ìÜöPÎÇþ?÷±?æÉÌ€ŽÌ〧͡rnæ&qCG,·sV«?0Þ̺þ
j€UÈ.)®1¬Y϶y)ç=Fêk%8RÔÛè>ÄOøä/Äî6{G»a=ìBzÕšû[ñÃÒë%|×"ôsséÖÌ÷ßša¢!R6 îSèÙ:äj(¡nÄwfèMħ.œÂ|,ûÞRkR:²k°kæ'ZÒžT¥RcO2pÑà2[Ø£\u_;Þbsð`Ó8®ZþëØê$Ú(åô<5ÀúZ~âÅàfy)a£Ó1ðêSûÉÓ8êÓì)0ýM¡7À'»ÒÆ[1 6J0W*äjZ×iÄÿ-(0óò6ÞÂ*7MÇvnv'Îl=Á1£PKGé;J££ÍûÖÕæÍDRóî$Ø¥»÷ÇSmc²G>ÎMBæAŽ1ÄøfE7PxÊÇÿg
+zWëe¡ôÛR¬MøY{}1mÁŸæÅA²gÿiÖ}UYAõ¶Ñ€MÝáq¶8éÃKZiýi.ÞKý>÷ý4±UŒ
+ÑSfŠÓ?Óhu=JìÛ9©BIÌacƹu7Æ z£èöO-0:ã6ß4Ÿ[Ó*ï·Ç¯"ÔÚiÕçM
œ¯JÞœeö.KSVØI>ÙhÑqRgîffYùœ>íSR~DÜÃ;4ËhÔö9©LK" ÃÖi{<Õ9ô¿õ
PªA ÄçéaOÅ\¬ÔÁÑàþíõrÍÅþ¿wûeZh€3é0ªj¯52+T~ë{ÜÃUO¢ZØŒŒªPD2PO`
+£ õn/M¶OŸ žÞüÍA÷À@êâxÄi©çEqÈ©[ô k§Ãòɪ¯ïêÆÇÁ?ûøwë¢8üîç^ïU}06-Vñ'žöp%8¿üb2
»«·6B`;:¯YŽ6œ}a«xžðk¶ÉÀx€_
Ÿ§F=¿ŠtèÒcnÊàgR]Áç$Kð²oü;
+.³¯çAgVx:§/ân¿èö|*G)nzpèÕâ5aÚaàuË~ãÀüýöͬy4È÷Á¶ÆsÉÜÕM°v)?qÇf95êü.Zbf®wÆèªáš¥*]Öxû@¶Æ)Îà p1Ì$;Òœ(ÜTyëñÙô_ý\q!Ül¢yÙú¹ŠåïíEx:qc£òþÍìË׬gf³ØGÿÛ/Ç~ËíÿtÒ³ñ¬XU&¿ävñôý§Õ€ `Òp'|NYý0Êï ¹Fÿí+Ë/è]}iDÐåãÌ=/C>Y·V*ÿÑÛåöôöj¥.ÍJ5"ÉðOB*ßëÅÓßiŽK.Äèûþ²Ëð
GtߣEã7Ï ë_üm^ºwGñCͧ}À7~kvì.Ô³~|²x¯¿âÙ¯¶fþ
+
4ýÎSjäžžnÿ×S{øjösãîÙÊæyòÚŸÂä)Û¬°ò+÷±.rÝõÐý·ýv÷Û¥fD*ѲaS£!ë?_%â
3ro
ÚtËæN?ÔŸFÉÅ»KÇÓèrÞ®,#MßFÞåNu}î!/~USí§CZaåxë,tý;Æíaß*ºÞÓO!)*œý9ü#pÊ/·ª#s®2;/Ù¶r?vëÐÎ
+ëNùPíÂ_z=¡ôµª»ûHÕ îÇ/¥Np®5W¡iBé åDvûXߌŒŽž5c¢((±2¶E©YsÅsêKß±û}e¬û.ãŸÅS<Éìø3îGž,õ4Î6¢Öúó6}³çmúU\{Œmœy³ÔEýöDþþ}ý8ß~Sú3ÿpãè&tÌ[s
+iwO;Ä&õeÈ|Ø«@#LýÉ@B¬ËX¹žf6toÃŒ,GG9WgUCó²,ÊÕ_®©ìïSM=1§hÇÍÉõÏæûR}míÔbCMTYPNèÓGšüå¥T+Áó/>B'!ðÕ_žê»U@f&×éL©]yoEdDÊ,ìŽYöõ£ýg¹A %ÐèGqn"?*šŠ!€1©ad/ÈOAh mc|hJ1<œr׺
+w΀ЯçHý!'.@;"Ø#aËŠ÷¬¹Í|Æ ÿØ5!#Ò%ÈÀ§*n±€"¿~ö*ËÍž$<ž2¢ cÞ;6$WNeMÑ»þöPxÓETc0b6ì<ý/¢áî¢íýÔÉOXhî·°ÁuJ@
+G®W"Î=_¥º~Vß(§ÆŽ/Íf,ý®û¹Í÷,îZ¯ªõžU"û-?P7ÊItßÉÝEï§ãÑ\æ-XšWHqúÐSý£ÀõÉ%ÈF°F®@ÎYæ8~bÇíSc4Å b
+ŒLh;R$meUA !ÕVp\q¯i
+§imKœzs OÏDÎñÐ0ÏÓdc
+¥ù¶$8ÎDÞPÂøaô©1VFFR·3ŸL.eIêCžFÆË&ÖôeØPšØjà5ÚìäéV|ÝZBl\'* =~Æ-JrÁûº¡ùáH¥''Ø%^RîuðÃöÙàö4MvNðùuO$v²~þk
+FzÚ$ÕÿÔMrûL KT°ÎÄëÁbŸWUIrÏ`£m0qjË¿9kPs_¢3l¯Y0Lí1ÛRd^é`÷åcDsýÇ}3~oýÇòg6D[eÈÑGÒÎÔ^ñz¶¡V7ö8Rb¥fµFæ2Íó)úkìÁÑ;F
Ö:=ç,Þòàw\öÓBì»àfû÷{àS ;a2{y©C©ØWÖûmRà 8úž÷ š®ídFyyÀÊH€³?¢^"©Éã7Xȯ¡LÐ_a2ZxBœsïqÑíE?Lùµ)á/fØŒÖõ8®Oh Ýûo¹æ26©ÙÂhy÷ÔfΟeÀü3e¶8WÖà¯b;,:©Êº¹Ø÷nõûõcøW Ì@a>0h
+*J}zéÑe¹2^*h¡3#Î7ÙÔAh\H/Íœ¶È¶0Îh`>Ûâ³ð3&À;æ!nTŽüÅgøþ_|F:¯ãýÔa÷ëäñ<x9ÿ)`}ŒcÄÞZG)4F3KÎÅwçÛ|yÑ?tæUóû3èºz5svJµdT
+gKv
+ënVl2 ¹Zøï;ãmµè|Óa*ÃîÓrnç¿/ãÌc4mz8×:m »V;Gw8ÞQ¬*ZüÍÎ<
2V+<ÞÿYgåalFÆ:ºVdÓ+bqŒü»Î>|uØ'ÐK¶yñÐÝ`?V*œæµ
+{R£Þ÷Ü
+Êq§ØŠt?Þ¬'$jSÖm°Õ;ž¹¹:öSi7Ry-nèeGö¹CY|M-Ëô{KëÇ©:úµÜ(:Ï\@_Æn1<ü¡.è»Aû
W¢Ã`µ.Žà¢C`+U©Ú$u³érêRl¯OôRŠÎ5>-øF
+íªÀdKÞ~0ÒŸ4À=!ª{GÌíù¬GäÓ6Éü¹=º©q*J%kÕåÙÂÖYÕ5\ÈÔy=DTÏâéE:;w÷ñ÷mÙ«'0^Rçð¢žåϧÐ;îSóÏî±5€ÆsmÕ'Ž`u¢ãâ3%ówuCô÷ÚÇ'á?Fü
+hP¶UàǰwúynÉ-Z\*ÿ쯹ý§®Z³Œò,qÄè.¹è~ÀÛjÔSÕ^h¢%x®þg_ËÜ׊Êa=û8îæK÷ºwwçÝï¯ì"kpûxióaa6ê7ÃjÂ?¢aýŒ|Ž€%Òzôúej:éýi©EÐhYÍõèð`dC4¿žm]ŽÏ.'¬AÍ1@ÕOßȧRkC%|Þ$T7Ú³/Í ïýôøÊÃî/H»??Cú¡¯åéÒW¹ÇêŒ1_fÐnŸÖV=së² 4ÉÇ{$t20˵öç]PWG¥ŸH~Iõïšð}€OMß*÷oH>Cº6€?²Î;ÃznÏ5ZÜqÅHÂcBhÖºëÖSÄ8öõ=ö¹U,ÈÂÚDè*±=ÀV§ô§©ÒZ"TŒLE)~ÐKA8!k×åä(g-KÛÅÐ$œ:>aõ2ÉòÃ×=u"shÒðŒÖnŸ[/îBtô;Y28ÁÜŒjŸ§Ã·ëýžÌQc3Þ /Á~Âm*ðß
£áŽ
+ëqEXzUó]S°A-zZ¥_€ZÊ Ïbq[+AöÀÜË
+ù£Ñv[ØHTšìô_-|=eý·KÑê$øÝ»¹ÁÄ0(íþzhoè^ª
+#É9&<³caa×ÝNÌ S,«ŒÙµ²6tçz/üºÌ¢ÚÜÛLâÒžw)}'M
+Vó©m±Ómµ^ßJ)À}ß[6wå}Í`5ßrbËšÃ1ß:u¬Û§Âà|g¬eÿök9
+Hä**¶°§Ñ b€91B]ôbþPÐQ·Ä3ßFvå¶ŽtÜk#k]·Ö€,¢&-6tQÛ;!Š)eMéþ¢òNø9£ªÕ8dÜvÀtpÚZ@|A
=ó€óc§ÉÈ©ëûÌ\û=Ús ¯öbôyç(]³RÐM ?ÕìâD.ìc`aÝí¯¹ß~̰RULECîx×)OªnS)ÅJ÷
+aF;:6õ6x¹.}hîLbËÎ:8YÂômÅfÁ ý£?ÒC$Ãmbn\[YÄÏHÛ ÊšÁ7N³Øô%ïXòf¹MxHùõ2§igc°'%ª\œRxx
'@ ΫWûͶQo^Ÿô?¹ñ¿mëåÉÌfQ5m.£ÕÌÛòæ®5èºÓ"}JçÒ"1ÍKÓ_š+6
+\ŠóŒ?§C at må6GÖT$Ç
+|IþIÀ=BM_=°šRêímÉ0lÈS:Äê¹».{"Z:ú5 Ë kšÚ°ëãÍ*ÛÎIîþü.¡pÓÌÇÎH©\òãDõNL-
+fÌYÍ2n]Z5x|G&x'÷Ç>GõÏëÔdE/¶häÈóÒJÖzIËôæÐ³SJVò>3þ]%^lÀCaÑ*ä^ìÔÇÜœcœ/4{ÿÜï:غ ŠÜÃŽ;¹ýúÆóŸ`;LûI÷³Q¯mA(DòKTW\Õè£ðǬɺŸö-Åš^<6ÝÎQßP€#R³vøÃ)ÅØ_ZΚ¡^äàß׫õ
+¡Ëòñõ»ldëmÌ5ôŸÙì¿t'ÛN'ÅBÇêF¡DÚº0]I-I@@,4ÔŸ£ß?Ã{âìO'Ülû¯€Ø:oBÐkl€€!gšÀš/Ä)»eŽxÈ{²âìo¶XÓÆaÇô^ªaV¥áu]Óóéð8W,uµÑ|¥QÆoA'îSIu7Có}üIuDœ«]íÏÂÚyìØJ³Ð¹ÕHp:0XTfá&¶õÿÖÕÊýù:ö*8
,œ¡«9o+1«dâù)÷èCïÌ÷
+m®Ÿ¢ÝÈø2©m46Öá÷äröÓÙóvÿ²±ðý-ŽöÆêÏ©žÐO¬ZÏ»Õ¬ÙøœZãëUŸbÖÿEîIn&<*kh¢?ºÉ:Á²Ú!w«Ù|L¹8Çš¥77xVöþæ(þœ2»áÐ%M|üY^WEüU0*^Õ?á?)q± }^šB9Á²ÅM?á¶œ·¢²BKdGwþ^Séù4¡<(?ä
YÀýžíçå]¢¹[«¥Iù×ûŸeÌéBøö*àìAø)4!ÚwÀGsgÊO«vóÏåµ%#'6=¢'"õzqÃ[ÿ?sì
+¿XOgö?`¢Ã`º@ŒxDÝ ÝFÏæsMžrÅ0ªN
Dž²JŠ[:»õÖèÕ¬ûãÜy3éÍôl¯èÂð)÷èŸä®Éñ#cÂ"ëÓÃR èé¡'ª%WæYÿ=ÊÐF¥ož÷·ÒS?ž®y-Qµ5wߟŠ:û·VÜHrØYøM·U4§ñ>ij_ÔîÈŸiht5^G
+í×ÄãøPÇ)Õ3pFÁ>Z UºK"vµÍ³ )ÅfgCk§}ðU]=ôlðÝ¢uÈK³kÄ3i+ócë5"WEÔÌÃ"Ï«EZ=ÅŸÄ|©Óvà|9qYæ{yï%çÅ€ÈfýþàyGE§zïÿ±Üsf^æ<Y)+ôSlÉ48Aëå#JÜ2ËE\älphW¡TŸ\|L«ÜGe³üŒvÝŒ+DöÒm>'WO|#qC5Z
+YçðPZóÄÇ75SÀ è)hqèâ³¹õŠI}ækq+5ÒÙ¢µeõoüÞXD3DŒóûÎÄ6œ¢j&åé¯G_^ºùÃvÙË8VÑr"õL&úrÄ
+F24Ìâá4HÅ\7dŒæ"]ã3æ{³4î±{œ/*ߣcÓÈäTرûŠºß,kDÚËï.;®»M©2ÑlîV%WéØ×îHH#ÎýS¹aPŸxÔL3Ö¬~šsµî!ÈGE'Ró)ã,/±œ%ÆÕxÔPvaçåH,:¬Åh_{ÍÛÊ{Ldv×4
íÄX÷HwôÃHSZç³~M$ÃØ£#ifö«µDD°h>2s °¬ÎNÙÂÛÃëÔ`Ú/ѳŠjyÍÁ3¥
+9gæ[@ðÂÈÁj©6Æaâ+ͪµBåÚ\.Õkü»ÅÂW9dqжpä¯Ú,ŸîÆLáŽ}fÀÀÚÚÕ¹3 ¢ÿ§KÍÖ¶ãûØÊSé öÓænçwS<ŒþUï
+ªTñßžúy}6ÅÎEiŸlk=êqÜ"®hä:Y÷¡àð-š?aù€[ŽDºzuºñ9B++$>_ÍA&ï|³(÷æœ:kÃP_TnBâuvŸâöÎu{(ËNM÷Òê
+|K-$̵>çWŽGŽX€_Þ÷6Æ{ò£Ÿ¶EJÔÚ§(2Zå«©<"ÈÐ7&Û뀪¡M{žPVèAÎx0Ž
+æª&1ã€J.ãÒÂùxNóØžbê:M5ÈÅ$ý¶šf'1~ÿ×xÞn®È)õ^QÝûQ_xwÓ·H6Ð2ºäGäpK,_-»Âuó6좺ÖWVMà³nòç°gÐ"5zl¶õp¿CgÂpHs}|ÏæÁ
+io±žØÌ
N'S¥ÞÓö¡Fšèàz
+Ò®Ž±M\3ÛAîÕ?n!NpºQ}dL ¬ÉótÂ{žº^±L5âXJÛŽTC±°,*Â[û[
â[Æ]òw_
ä zvHí¥@Ëœë=-Wë:ÝòËŠŽ©P
+IaÁÌ~©€'aÞàªÆDÀ¥NÚîòŠþç¬ù&Iz[ÆL§tFìLkPŸ!s |]Êͯ൰µ"áx4ÀÈaô$]aÆ#U
+ÏPÁ V5:)}òÈ7VÚ>8ÏÿI<ö a&V^O(JlÝ¡÷*RÕPå>²öÿ·Næ/€FÌUŸñ ¡dŠà¡ËØ|w¬ÎeŽÇ&tìÃÝ3·@ýé:ª{ÀE«òW,ÍX'¶cùZÍÎàå5~šñ£hD3éËvwÒ`Òj¡³ýøûpήiœ¬×ú?üpÚy¥Uf?ÜèiD¿PA_zìúsÏÃTa]ï"Ìl2íA
+j¹ëÖ¯¯ÌÜÊì
+Tl\öR'Ø6td³ &ôŽÕÐÎEBe!<ùË ¶K@ºµ\5S²Ktp\(õ
++L*"ßÐN¹¡6€Î>J*ÜnÅ3NWäw»þ{ã~UŠT~ÇÕ(¯%ŽïçWq5¡0oêÆí*Âkä
+ ÷^»ë$á¶0éüü(ÛZÊChi€œnÎܰ8ŰßEëÖÙg.¯fçrdSúo-GåÛUŠJpYM€Ó.vk£:ò¯þÕÐùŽØ¬ùºAé)ÎFe&ùï³·±kÑôCXt>çb W2[Æói?YDçe×ÒÃöйi9ÌÞ·ëac¹«¹öå<£ï `õí¹\7êíáäÒÐX\+t«Oçïü|¯ÚŠ ýr·|hvûàbêîfËæÖìoçCmjîúÉr¹EÝÁTþŸ
+qþó eÍkÃñJ²¬VÒ¹mÞóxd€æÞË#]œ¢z*Ätñаû_hpßÖÏ÷ÜûÍ(Wd·>«ZÐ'îåñvqFyö ß»§ÕÐ79÷Ra"vÛÏ)ÈñêNqY"œ8ºãÎx-Þ.Úááz¹ºß§LÙqÀÖüõþê+)ÀA:ñðaIÃóÛuø*ïÚÃæj¥ç2¢gÕOÛUpúŽ3ĺ!2ë¿'.b5®ÙO¿'.zÒó¿ÞïSÝ0œj·y×G°ñOKõÝÔ×*\~·¬Ù0O@}ÈËZB@%ÕKÃöNl'¥Ä+GI¹ÒáÅrŸ¡±éÁu6QIr5üxþ׫¡6ŠCEÇð«µP¬RßàÞk®u^Ûo±¿Ï"VÇÉWZ¬Jbe¡ZÃÿÛäØ8ŠÀµZ¡ŠÓÓ×søËuWómB°ÁºçÏÃ*žÌUåwS¿ñÝ9Áè~§ß_ØØÚÛÅ£
+j56%*œŽvÎÉÓèçßwGÃGÉvï 7©Á +Ðð#OÖèªÒNîågmÈá_zË6uìØØVÞ)Ìx·±š¿û§sZÿ±û¶ÊË}Œú¿|_¡+1Ò2A}è§HÀYxl)ÂòGE`
+)ü0±³ @§UùvBKÖ$Ô¥ÔYµþ
+7zaC2ÁÄ%=NRÎ9f
ögûÊ24°Z@Àw¢,@§ y
+Hú yÖäÑÎ%
+€ÆfôAômxEkhÑæ!§ÜKͱügyåÞz_ÙÕÄBÞÒ¢[¥)éK.Ô/Î,_ŠkC³³Óžœ?œU$òdâ°Ø+Bó²ðÄWßxÕHçhŸZ|þ?ÌÑç4èD\^jϹzžŒßªc>?GÏœÙøœUðÖ4OÄwrT!f²R[ã°öJ|!æÍÄbui>æï3yÒyzv߯F/Ÿ¬")¹ÑLtÄcðB§ïXÕVYɧݳ0}Óž\}à¯ÛÎ8puxÖ8k-){Mªlå5ZºÞcáÂ<EìV>CÒÇhyBÛtÒĬL'lŸ5±ËÛÀ!kH
+àGöÌ.ù/H·Œñ^éJ\æ¹³Æ ÝÚ>-®ð3 ÈŠª\ò¶ËøT%Dôª¥)T®§ŽÇ!»È0uìT4]ZZNì ŠäÔ«fbÐÄ+c9×
+ƶûÒȺh¢tYÖJì²\}uVW
+X,€œæÛŠ)<ÃÑϯ/ØÀ(Õ)î:f28Òm³ªlþ©>Mc0ÔÊxÎXÙN)ÀæÔs£³
+ª¿F}ÉôJY:ÞOOô:Z®Wª*µBT`é5ÆÃ£cç{®TŽoŽ v `lT
+}ÈÀÈ€Ÿyf"¹c<ÕipÒèBD
+õ"ÈUwß>]ŸZ@
©}ÄÀ»0wtm /4ÿŠo<
+>"æŒúq¡ïǯ7rroÚÄsð§Ãàà'Û³Ç Øâbàz-iÒôÂV? XX
÷óXÙ¯z
+Ä·7^eLòþ:Mà ¬!^{)òBGIí.;¹Ü Kq3Ä9àg?ülQÆh.ýèBm)ŒbóÂØ~y²Óævä?šš0+×ã,ÁOäfóü'
+a{ÉŠÌÁÖ"çþ<üìÀ®|ÑRÅÕâNRÍ@XüÕÔS}§×Ã@JqŒèË;Šòè<144iô!0"ËèJl¶0ðš»wWåïKÔ=€ÑzzúŠúãÕ<ËÄÛâSucoÙÝÔTm=?#ðgY*µ
+ªæß§öFŒ0Š<Ww(§ÚÝ^âÃðÌÃb;o|Urô$ÎTHÌó%XØüäµäÃã?íEÞ3nôÐ+ÌxŒ`Ía0ó¯ÓýÐ{~åŽÕÙZÙ.ù!ä ¢«¢û:§Ö;ÈAœlZMr:§naäÑ©Á+öql¶œÑï «Ó?ÈÁÜ[£AᵎÂ@£,$*J¶":¯&7$)ÝVMTv>5#ž ïÿPœ°KÂ.LI
rµp~[à]mqíS«ªKù»ŠùÀµüiŒºžñtäE
+¯î5$œÒWhV¬xx×(Ñàû$(Å©ãù{w¥lšH\Yñ'S}EP;º^çuß-P®f±³"÷+HÝl[avUHã~ŠîRµÎ'âÚŽÁ}ð|XPžÏñõÏ5h@éø{éørE¡ß¹áVŽÿ>{ð5ñ¿ÌíÕ# øú5åÒ5m _ÈR¶öhŒòþØWsYtñøßÏ [ësgG€£ï4Ö[ö<£ŽÍžÜ,:ªLæ°ìíùÖlØŠí
+6ì¢FÇR Sj-ðó;7ÏS!?wÁ,ÉdZ·Å8 ê.ÖçÔTØtC»Ê65³€üÆ]BÛ[4Ñc±Á_ÿšUØþ:õ¬Nø/Èž#!Êè'*þôø060;Ž¿ÿù =.&æyf£5£á&z ŽøŒP0jVÜ>shÃ
VÙEFG0wã9ÁP(Œd.äÄ4ÉýÃÅRDI>%ÀñÀ
+ÂlAÂaC,Äx{Ö
õãSŽæ\ÁµÍAçÈ$èrÍ&[GóQÞdŽôlIÙë3ùµ$c$HªŸKm
ÚhÐLØÂöYëG£÷Ä94d±>ymà÷+j ¥èR9$C'vŽª+á×î÷ÇšOÑ~Å\ðLäþ7ÿõ3VüÃÏÈváÀîïDµ³Ôàû³ã|_Œ`æã2këÒw#æä@R}pÒÂËetÆaðÙÐñäøCír.®W:nOïÂ`ObrŒBµ¡í,Ú±0Óx%¿ÃOKÕªîeΫuiª~»Ï¶;¶÷
+(!Rxå2¡êsøO
wwš!ø^{þsžu÷Ò<©×gV\§/$S , at 5E24(ýóì*©\pþçš_Šðp
+ÂYYîjÑ¿ÿEhwÔcÓ_^fmkOH±4Ë/ä$4awlYÎ$ÄÚ'âØ=gù8:wèæZáô YzÌ+€ÆÕlÁÒvØìQ
z>'+9×Ãþ±Ÿ&P©œõBv0}/±C¡ù8õt¯·ßŠÕŵ}\vW¥Øá?G€ÿSŒ1úâÂ->ÍÜÐb|
^"enpÂñö£îe$5 ¢N²d6ùÖ'/WÄìæÖ[4'Uí$ÀòPè.(! °cõnW¡;£ ÉJ#§(@Û¶ä]MݺÚKm×ÿBH4`q(«ÿ)ž"±ÕÔ®'* ±à#¹I'Bzjýóá}²ÓO;wzBµÃo×&#Lû0¥1k#å±õ¢¯¢7ý1#É8(Í,ËfJóÓÔì;¬ü%(S?m~JåDGCë5í³'7WU
À[D0Oïyœ¹ŽÕVÚsÒ^ún€>ø ]EÆ~Þ!Þ¬ÖNÕjZ9¡¹ 6Á#R·÷YF$øÎSú³åÚU_DÝÚ_-Õu Êlk¢ÄâíÍØSî§[ÒFÒÃ1KxSWOèÏDÆ;aœMM7Ê7ÈZIÉ€²BÄMé2.®B)Ö1ÁèŠKݶÁ~f.®@`Þ+ºBâdy°A4Ö€ÇÍ2>Ç.Øà-ç
à€1-n*è<íðÚÄvâÄn|¡m$ÇFãÔŽ*9î%~+ÆŒ
+jAuêÈDJÅ"bN>L5øFZl\O]2XY¶Tç%ËåX}Ñ÷À~Þw+ýßÝÝ/á
+ðÀ9þ[ÄCŒ©¶²5"Ðû§QøÖÅŒ0&àUÊÇ÷¶x³o
+d1Ä=Œ
+Oo«ÍÉ©µÊëgÎ*èåVG×t¢|Óñ±_ýŒXbÈÍR0ןÑešM¶cÙ)Ví×ü
ö·ETjô-r)pen÷H.¡é0¶;ݲr\ζW)¶39àRû<®btÿÂr}Y§Ò"¿ÔÄ'¿3 :5Gxº€·õ'ñ!a¬"æëTšºýRE)Õpž]EÅ(Hz#éÍÄÕ:*kN!a,"§kë\z\÷$rØÈÞñ/ Lú2H÷tŒÚä/î%Ê?¥r#sŸT^8
+¥y%9RmHJoÚÈi«zWŒÔ€)üÁ]!{âñ©=«.µn&é[UÀ¢æåU/ÉW^ç2}±hœ!µQÕÿÖIÉÎ'¬¥ñxE[!ŽÆ BßžÌ ¹.G&¶ØÁ
+SŒEÆEÏ6ÎGqoŸ»ûÇQp¹é+z Eß¿Eõ7š³q{š2!áÝ¢74óbóhÁwAæ¶ud3BîŽM$ÎñSËXîRKè@þ-Õœ²í^SŽHäú°(H±ÀP¥!ø9weA{ªêoaÆÌ ÌwÞVh2ûä[HÑÂw4r¯C
+Ég£ÄÆa€>µ`dš%öæeÓìGÊshùÙÇôÿa0õyίü 5±â÷{О5;N*ÔðÝY+Jeú{ßO§¿-ÌópÏn²;sUQùB-|Œ
¿·ôçû}¿û{2ÕŒõçpñ1ìA=NaÏ{ÏÔR»}ç¶È³ßº{ÆéîîØm;"Ö3OŽ]W°æJ>þËIqewøùµîÝE<}¬Z¿®ñŹìYòSþvRØ*òýMX³Ž÷Á9³Da²#W<d°KÞ6Öý@=lHé,åâ€["4?WG±äeËrxÙXeµsàûÆhÔu]H<^|Â=ùÏÌ¥¥Ô»²Ÿ%>UqØ,ýÞdLá!7P×DÉ44ttmTe@ÿMe&úð;óé&ùŠ*'žLcUþ1IU,Dilá
+OSŒüMeJ£4§_TÆxx+æ¿òRº,Y=<%ÇïvÌNÈ'ÃO,ë£tcÒÍüVUÕTVü[ßXÂuò\_rµ7BFÄ
î)÷Š1K|7R`£DŒ{ÎaÂöºŠÜ×'9'ÆT§X\r>mXBoFNf;fgÅ/ Ð#èBÚå;éü©iEHéiß¡Ûù¥õóº²%þüÛ=Ñû)çS >×4ÄuÎKétÁûiÆDYÂþòUvçóuÇîw#øÕòµ§2OüûªÀ·ååŽÒ¥(Ô'íCÏänµüEî@ÞgrwsèlÂÛ¶+²XÿÈæ~€R^hDr,.úÒþMsÚ!éz©:6ë9"0bšPÄÔhKGÑxÒµ€ÈmNTÂEŸèK¡»ñ{<ÐËÿú× r¿WÃ0¶Í
+n!._q(Õš+uqý°V"²¬C𝶲(]+öÄdÚð@Ð8ÙòX׿û^(É"hwîa ôñsk±¹¹1 `ôæAVó^6f",}Aîq0l.'A9¿ïÆJÄO÷ón¹Y·v:;:(¶#í»]Õñy<Ý{1a># ÈDŸÏK\vtŸè êð}êb
+6aŠà 11Å²Ì [UÖfÚù¿(qÂñc|èå2c¿Èsáš-èÊÆb9A°'3Þi-HÖÐy%ÔD9~w0?ßnÿ)Ù±ínTܯó}W¬Wæ€Z0%qê#ŒÝ7XÊ€ºgkHþô0÷Ú'Áéà|øbÉ
+'à©î!¢D
+FoÔ«ÍþãMM>Gs1Ö¹¥åŽ>Dœ"sï
+MV·ÔÈÕPFì<ÉDŽ?`Ð<éÝ·©³Sàfû€E/P5&P¯(ÿ°ÎKZÓKBL1³ûëÏ^h¯«9l|jà ¯Í*+Ïz6°b?mØã ÇQeH7Ý'»=<ù>p Ên^@UOß3t>€=+äв¹r3KsHní·'ç;d³®L_×ÅPÇýXðÁ ã3ëþâKéNcõ¡ '"yÓÖræÂ
ŠSž[ìä£2¯ÝüJ#güJí÷ÙÍ\¹!fKn|(ìÏØ xgêœü
+M+{K«Ë</0<BÃôDŸmä§ÊÛ¢ÈrhÍí ïXë d¯¯Ûì%mÜf;Š1³«7)36ž{,"ðÒ+*ÌMòHSœÜ»ö
+&ZÒ±ýEd Ãì×ýœ5ÀŽo^JK«R¥àÒ>HÅEí®AÝê¬è¥7I¯MÞÆæÑÝXË1ÐÐKí@#ætD(êÒ0FÒ;£0¡©4lŽ@2ãÆXS÷bE%©žIÝípÇfWHoùœUÐ8^ô»=*ý'¢ÀKSòùïî§ŽR;&|À4øîµµ¢èãaÔü òë»>CÅ
+S_UMÛÃÒ¶£¡¢{
·¡àße_Àâå¢õ@¢«°hÔ^9ŸÁñŽ~ îWßAK¢gNh©|öâ±+PÞô+d¢4]ßãû^Û]Þ<̯ÎwŒÝN·ã(ôQ7ù8qb*¡ñê€ÔÂ@£ºÕ§;6ÉSãOJ[wÝo_Øê»ý±7FSþϱW_;ïš%¯±¬?fâÒ4 Îæ;øJ5ÌÁ³!
+Éï à6ã ×®íÚ~cÃWçèA4R©"úðÔÏo
+x'·öÎ|~w×Î|_¯õ
+g§îÝÎÿ\Â9œÃaɱ9Iкî+2Ž]sìhÉ¡Tä[÷¹ãö]q:ŒéQÈß2Éǰ:\â.ëíÐIzhÍ€lû}Çq7[ýMÞJÆÈ·Âª]sþ>ý> àxŒËB¯Â+ìiáê
xîoe¥8°¿[šåÙܰ)Pø%Fø^¯×Á·£Ð+^Æú1}Áí/1ÿŽÂÓþrIÔw}%²ØèÂ*Š
+ÝDvýÇ|¡¯«·8í%>xÏpŸÿæý
+'@Yx 0üqï=JS×õ/.ãB bôþ¢MæCµG²µÑ··¯9Vþn÷}ð»ú}Nl|UË_G!â/ë¹èaÒk&8N¶çõeœ!¯¥_Úlq{;ÿþÑûÉOž
+ÆáŒnàíÛÏü¶øúy~¹<m€Ã+¬¹¢\úÒ|Åï7îí3?qÖrZÞÓ4Ç Np2q!2¥$ù¯@Á1:mÇõÏü8Œ~HÔk€®Jé1é
+}š€œWñêàlÒ;žs$«Ó*5?ãZè5;š²žC.Ø9@ã$E /dþi(g$t=wiÏ tp²KÚŠXß§2G§ê"iJÇk§x¡~1¯a«.®×kèŸÓømë_'øœû;9éà«Rì¥@¥ÓbÖú驿
²hžÓ4F¡#CÕø8ŸÎô(Ì~eÔäQ!£:Ô'ŒZŸÂ$|§íá8Æïœs
áïkÇz×h1$ã%pRiµè;ùjdqX³y[ª¡[nÓ3É|3\
+ßûöÑUðÎÊ/ìÅhaÌŸå¹gßïëuÏ+vÑKæ'kFìRòT[Ó/ªœ^à °×Ð6Èós±#u¡Ã£ð^q±'ëó·ÃÝD]3\äÈŠbhúfÒªªòCVè
>,ÍœUÌ£S4Üühá/
+mÙË\oÚ®ßPW÷3ZÉC¶¡¯à£vEX~wÐLºÎ=ŽJÇtœ)Ô«¹ÃóPknÛ
+yJ"îÑÀxøÈPfMd¬æ0|اky¬xY7;W[}Ž|v²·"êåúPÎ3MXR¡¹µI,9¬
+LÄáîÄçXl kTaÞä8"ÔÙÃjêÝc)pBbBih¬3*ýò÷úLvŸS÷®4iî®ôî¿KÜŸæäuÎrSçÙ«Ø ó#ÖŒbq÷AÚÄršÒáY{w]îb«^ÿZÎ=@1~€lö0œž?t£œ _ni}{«HI
ó3ÎmAÌTíRbª"é¶öUšzÔ4á(Ìf.@
¿.àŒÿPÉ
+
+c®š(5©³4#Øb|#96°GþÑ2-âE7 yÞÀêIÓaà,9?žcýô,¢c€Ì+ŠHÉfæØZ =EæQóéVüädD=ÀÝhjbB :ZÙ# Ìèíb5ªÛ1Õò-?ÎÝr(ì>%fNÀ÷EêP
,{ìþDyÊ|iè'ªÁÈHSüÿI*jä¬cÂúQ¢¬©3î^
+.°Ï<Óõ°âÿÒuéVckà²6/œ|Gûêý²J¿ÁÂÀONkÒö~w<ѲW@$Ó_ÖÝÉÖCÌÄjõJâͲÒìoESª{ŒQ)ul©AŸÊ`§DZº`ÒA®
ŸIÀ8®-_ÕèÊ.{³CùP°gÄŸ`QŠ1ÓDvJàÞäÃÀåŒ`æw(cŒ%-¯6Œ7!&ú|ªc ¡ÛfõE<SèÐ %ë4¥dzºãQÂ3è×/j·³·³n ±À]pkÚT#Åû)Q£îqilþ[ßÅðŠQ³e£Ø¹*B6ÌöËLëÙÞ,'°¬ýó\F%ãçj[§G[DÁ4¶êø³6|žK^Ñ¡u%.¡v3ó_»îÜkë¹±ÙkÞ§yÿ׿8ú¬ŒuàìŠ
+ew0Ï!pHd2ÚÄÂzÃY{ÉçhÁbFK*ÛÛg==*ð·Æêø è»[_óIÿ91øYGÞ²ö×
+ýØßQ2qž·ûE¿Ö9±"5MãÛgÝ%_á.
+ø.¶& {«ñªÑÒrðÆÿqNÞŸf8Ï
+õ-w:þ}$vñbqŽÇ)×T ÌŸîüw;åïýº>K]€/?5L($Ôº
+€ýï0ÐñûB¬÷[Æ× Qœ©ÂcNwoÚZýîÉ*ï$u[«fÙØ:Õ¶KÆANý/ŸURZ鬸9¡ÍÔ§D!7æÌ>yú>>Üå&U¥MMœµ§üÿÊ:§èŸ·
+ǶÕXÿØm5¶mÓØjl4¶m4¶mÛùÚî³Ï>{|ãYë*¹Èx~ï;×sEóõ¯Ú¶ÐÊ]ÙÉjáYÛ7:ôtk
(ÒtТj°êÝâ·q6×MhM'ÖGXñÝlŸ²o ò0X<Ã8qø,qÇ
+@qhÂŽLÚþ]Cê¢MAç©uÈ02JjËðz«|ÛÀÂ?í
+§ÝµF±X)Z
+¬ÐºíuO¿øò§³þÖDä.ñ²;µIºHÇ5,øxv+°¢96Ò)ªãýO^Ýö? øÏ©Æ
+·Vá>ïöøÿ<|\9þïÃG&ò
+sÙzráÔgßuì
+]Û¿»=SÐÈêôŸPcbø+Uñ'_cûylpünNPxÌ_޲Æ^¯Ræ®;[f]0?¹@¡®íN~HÁÑÑMÄ:ChO:§È7ÜÖg
+CØ"N/± ?¡ß_ËÙZ€©£
×<÷wùTö*TAe·°ßÀÞ ) |¥ÂYÞÕØó{
+û:̪öæ75I±»Xõ6A³-è<¿ò8üÈÓÌCßx°wß¶ªImoΣ[sÉRô=>öû/ýw?¿ímŒ upš
+á I7ÂW²èž3ÑÐ"F
+g÷°zÎÖ¶ë¥ou©ð;ùŸÔ'
+åD*I1©**%ëÁR/s3æD6D+ö§E)õäâ)W!ÍíÙê
+Úõ§øð6¯d>4ºXD\µº3u
+£ l7n
+ý
~cJ¹4ü8è[«bY&RÙ*
+
+³RÜäW£Ó$ÒDoŸÐ ²ÂV1Óýýlà7ŒZâ ß@rÆœa?àqÀ²Y×3COÀ )öcûÂ?6ÀÜŽª
+ " =ʬ¡©>Þ²Æ 4,^ÀM© fY¿tQâÕß
+/LSW¶òç6º 4
+åg[õ3ÝÁ£uöÅ7§Ä/ßJØ¢EºüÉÛç>cíó`Jl
+±Ë
+!zÏJMù?ۮ蜮ûyC4©EOpK3¥3
©I¢Ú¯P=ôp{ '=¶-à3s·ëíç yê<ÊäFâ;=Ø®u:Ì¿ìÜÛt©ÔŒG}lïú XS²0B_òŠ4Ø
+ÕWAŒVb.ýEÁ{D.ÉaÅŒhÒíúôè
+)5°y¹ø(Ò°{}¥,ß~{-µ÷÷+:Ú~òœÀ<Œ`
rÇh
+ëŸÝ"¯ŠËOiÑñEVåeµM+pÛd¹Gýª*ÍšŠYbnôî£ Q/ûë3ŸÜo-štØkgA°ŽüʲýÊÒùÖò[ÍñBMóšv&;>*Qðs¹1eU%ëÞÈc7 8oXWr°hÕbeÞâ&
+Lüã»&ø:x¬í±uGìâ
Ã9G8d³ÁG8]íïi~¿ïAЩ6Å(šÅ ì·mÑRF=VWÑúæòÿá>M¯ðÃÙ%_.$6žN{^T
<)YûK×
+÷Íî°¿
+n¿n @ê|IßrÝ÷é€ÁæMZrrµ¯ÖŠ+ h|ªP^^&òq?©`ðh]é¡öA¹â}_KÄÂ~I±òÌŒâìtâÓ ÂÇ÷LïwjÅßÛÝKÙoÍ·ªa¢ÝÊzÑñK/Õú{Ã®çØŽ€"sazûŸ¿²:Ù»NÃvËÅéÀ÷žö#¥UÑ#6ðýÁ
+ùÒ!õa©>ýuàÈ~þò ^7([JÖ5Ôßëê\ûŒ2ÊÓÿ«ÚÁŽQa4èâÙÏÇÔºQ>¿7Ò$í°.Du³Íϧ-¯..üØÂîYoOdR^JvèßVðŠÉÑè°G»\©-$Qå$IGýÓùø\3ÓÓ·õñz0¶ð?÷ŒÑÙ £å:DC÷ól%œŒ9ÞÕþŒGû1ý|¥mßF°9=øÍNêg^7ŽÁú>V¬§õ?Þy«Ö<<?åcâj¶LGzüb8db8£/Íð¡jóæ¿¢ñàcÐÎßåiKÞÎÁ+/Èw^ß,M7^õ-ùü¿§ñHÔ@®DÛûru=ÛEØÁ»¯§&(ªT^ýîTÈrý»û`-:bF èôÍ¿8ŒFž2Ôx©e¡(îœP[Q«Ý0öêXívº3UØŒju$ÌfÜÚÜTèÌP°nÔUô!³ð{É,Ú0O¬KÍÊ$c!|Ë=Çf¿tìÖÚùõêç?}ôÿé4ÓRì*Nüš&[&{8œúk€Â©!Bp*ÖÕä[rJqeþÜÊHÑÔÇôÖ¹Ýîª#4ãe©wt;]Ã+WÎ~
+ß/ŸÞÒ@.4œiè:²éRºÆÿa¿ÿ-C'±Iâ1«ô]Ë'vdhý'ïöµÿ+ïÆ¿Þ tŠÍø ì_)_®/ê`^ñþïÜSCY9)ÿ,ÍÍê¹i3ÏýŸÙÙßMüµ=ŠýŒ.
+êH,bRbå€
+÷ª6ù-uhÔSðÇ
+h1ÜXJ?Qí~ÁìëÕ˵ì£)TE¡Þ¡wzW¶tW}ÚUùèæl©ÙsZ Bk}
+=: (O|Ù[øÍa+ŠH at xÛX}róû/3-èì?ÿâðšç÷8+ÐM2èÇÎ0@ë÷^Zç_pù=,±ÏwýHöU¬ßôRGpŒHœ=JŠV|xº¿FÁÊÆ%^mì*¢jã©PzGòCNùðgêBÄmjlçÁòÞsA³ ôàOßú§{ØF;éL ¬-÷×;¿Õ¹Ö MyŠÐ5â«_Å%q×ÜjH³ÙSwähäv#¡ÌRð2*QQ"7ÂhCÍ1Iµ§*Ù[ÃáÅÚNÑå.
+ØbRUF.õ°0UÅÎ.œtP¬ç®€taRÄCÊâà÷" £@m#m°,"œÑÛeo§ vŽüª(ÿëÏD#Çm5z)ñµqáU.FÁ²q3hëðÂIÕ
+À-ï"@èkgv27ú€ß0z WNµ
+kPŒ3/£Î±#ªèï°óÃ¥&o,ÄŠ2Õå.Z¿*\"qq~ò3/e-·Yø|6èm(«uýþè{ßèê¬9¯š$Aò)l®r]]ÜOÛâ£2'ã):mü{Ræþ¶¹0þžZ®z;RÚz{Pô`³)œ,R}k°Ê±.®P4C¢fñôC.šëO/ûìU t<_µ[@8.iÁû*udEcû
+Ë«ÊŪã€RÅØä«Wyn
+>ïÏoäÉËp
|ÅèÇDÄ|Y±}Ä ØÄòpÀè Õ!6îÔ|ådH,džúd)BeWqcÑõVðóî_²W4 SyÄwÅÅX$5Írªèå|ÛU|ã,3*ž
«+·º>Ò>~s&ôºAÍí+HÆå©¹ûL3%å€RUõîO3ö
+!èCrœh,+þFåHé<ýñx »$ÍY[4ÆþâÚGŽ'-\¶ÉtÚ
+-VÎKÇ5sÆ¥£*Éå\! *Ð5!sUåÀ¥åVg
+{Q²ÿ^÷ËBóA%¥«YTÕË×ÓRWiv#Ä·HœâW>Ð?ŸQtúøÉBŠ2?V×€MÛrÍAQ÷-±fýrКâT ¶€;ŸÕ
+ LíËKðòŒzÔ$kNÓsÙxµ!®É_ìçžé(xZìv®º#wÌp¿áî€$YéF(vyn,€$wÂÑè»wÖï¹»ËPõÙ5ús-x"a©öàcdyn×G3O^2M/:ü[@*±ËXE-õØþtÞËæØUÿdVÉš
+4\eü*e;÷ÖüQ-G=í :&è.5x8Ö«€¶aî>l:Ùªø¶ÈVH7(_Êê9mç±qÚùÿÖÑÐêðKtɱ¢á>ÏVÖs;
+$ÿﳩ3É8l[ÅzšF±Æß
n
+§VI©þ~_œKðŽåé6èÝÊËÑÿôúwÝ¥Ý,õ'³Ÿ\ü="äZX£ŠÞ²Löy~h7=»Ð¥ÑxñÝ.ÿËn¿üg¬Ýež/g`xd=Sô€¯{rñ¿Zýõ¹«^m!.iþlÙ%VÒ°hb*õ$|ÿW[EK^YÿtŠÂò»[Ph#§ñPìFUj>ЬØI/T{ï¢ð¿WÊñ®o¡#~²lxÀk®YÔ8={êO=7hvHàyK§ëkÐ0ŠªqÌU¯ÞükèíyÝŒäšwÚ×®6¹ßÅiÛt&5/#þÎ¥:i9xŸ^`"íØ·Ìú®4c~ºÛéù]¬/¶þâ?êÔâ5óÞ¡f-NŒ-"û
ôXœY©?Ë\jGøÑ7}Z
+ô6øf
)œÆFz<2Ú;`y»ñÏpÄL_ Òí/ÝŸõYÿz5îîV
+ÌY$<ñbpÑsãÙ9òüàœÔšHé_ô}ŽYy8sxû¬šó\^ðöN]n@>Ó¶CÄJVñÂO7êÿ5Oá¿SðÌ¥ûºØÃ»ŽZdMQcïþÞ[ý#¶2§LVÏ8,œlí>ëK òëºé6Æ~íD¹0VÁéÄ/8ý¿0®2UŸÍ[f@]ck<×$šôõšì1PÍD°*wÒ@
B¶^ŠÓ"×gø!)~ÙÅ<颺«ŽðœÅªÇ9eŠ!ÞÚòÍဪ ÑöÁ!ôðL§mmô¢¹¥ÑóÊ
Ÿó8lý|ïp¥=¢Ô8±¬ÿ§«üB££
VFE
+ÕZT'ê0
+
^lw/€
+/6äx,RFs±Äì{þ<;Í
+»p8ÞßOƶ?ÛéägÄ€ªHQ@ ê,íì WñÀåmô<Š
+rÇ/ŽNøËœº¹øùuÞ.@]1G°ËEu®ï6ܰŸn^$#¢ ¿8%8áKÏBŠ-nXÀÅ¢9C»T(žŸ«JÙ Ìåk5[0YxÊËxM×J
+Öj0h'úL²ìlÒtMÞ+Ó]aì@H-ÒîjV«dû
+ %ý-hõÆÅŒ¥€o§VÜÙääWžòšRBå]ÍÐÌå%X³ÜÁ9?V.-ŸÑ¡u_ðKoÝmiJ6Añ9TWåûÊ
h\ÎgÆÒÄu!Löp6]IfÂM
+R±L¢k±`Ú|!Ðånã<d¬·Ó®Æsg?l/VbO_Ÿmx|Îm å2È¢UàGá©Y¥ÿdÖŸUWG:qp!f¬£€fZX|úýšz*}ÈEÜÈï,ÅþYûnPE4àE÷G^÷zÉhŒÄÏœì"o]ÂU?2;{UO1Ò€6·SØy17ÂGô>fvñAzî#Z??/©ùmyžËÅîéVIݰPp «ûëêÝŽ2çšn`gpàc}?žÑºF¥±.šÐOí
+°bšcæþ@šÍ
°çÔéÍî³Ä.1QúA¬ö=1
+mk:`Y:ªFÿy©Ï7!qµð]Õ#tÌ®²#Ÿ¹²€ÉQ)SÊcI¶:Cþ3i/T0yu
+¡&uÊc¹sŒ{21#{Àš¡>±ÅÒø~õTÚb¡TZÈ)éfJý©DÊ@Œ*5Gájícÿ)3¹õàQ-YuMr,1±pX2XA8?D XRºNMkF*+hÁ1Æ8¯ÂnÁÚcÀä|vt!
+ÄÊòÚMGŠìcÜÍʯ?lnêÊŸoØŽ0ß@tÜÐC4ÊØn$?Ž}ÇOMÇüCø©/<)¥ p;Þy0SUF€Jè
Èš=»<ZÅ9ÝJ[ã»YÃZ;ouîj}Âén]2zÁ?Çãp)·-,Rb+ùr€ñ=å°§!õŒVõŒÅXVøÁV&£<Ä©f2(ïÆ**\ªŸ^iÓðíÛV2"2&ðú?,AÉúA8GO9;9lè*¢<ã&fÕQP<îiÈ$¿q
+6á>6Ir\]Šó±N'Èý£YQÏv"ú®s^*ÇÄ¥ã5KÍvÖ+7ï× I"cÆC{¿GE?ö¶ñÚEX6rÁ§T5C¡ŒÖjâôštøm§"ÙoìZ{TßQ\µ·)WñüvF좮Fw¢1}nöÇæSU»JGÊZ$IbŠëÂÚ(ÇÊvõÙ£s÷øRà^1ßPŽ ÃD,»?çM4Ãoöö¹q=¯>[]Ž<šGL¿qÛA~;w¡ÃÁan.åb]¿<o⯢]\hxêqÐøa ÖlVœîYbÇnïæ
+ÒÁÑkI%øøt8zé0ÛÉ÷I'jêÃëüÎ%}Uù\SÔóéÎßKà-æ¢Vµr3B$êò6<¯é%5}#bÌÚì¢Cj¢GšáÌ®µ?)Á±í%=b=K[@÷Ýó¶~§Ž%v€Ñï:E5q:Vë:]§ãÔW:râ²ã]ŒâQ°DŠ|{udÊÍÑÏà
û2~xn¡Òo# üÃ!ò>ÏÕ¬ÔzÐgµ0-w- Ñ'ýÌ>È«Š5ÇULKéû«SÔvÝÕ-{«+®Ap©}_!üzæâ·p"®NºæèV)òœõîm?DÉž{Ø3ëÏOÕü\7tÕÎOb,8ÕðzÐÄE<TòÎ*ÝãÇ¿®€â¥
+q{@#qž«Ê§,¶L&kì0lAÏ9)*ýÆ$ìü@Ð
+%Ð9øJåVõ®ZDL|Ç|Ç\j¯'_é
+Ô¬Î'ÄvŠÎ~nSU$dw>"wúúànNlAáíúyšÖÓÀÔè 5llÌû;v?±Ù;&Éá}f -aiÁwDÅÏlíîì¹ÙÁî"P$÷vòF'µÒŸÍšèM×¢äµ9åã€ÉÉ\$©ÕÀÖöÜÔtÞ;JÜu
:ÂxéXîÓfúŠbÞ¶Îá )À>å9påÎBõ¶°!=6rŸ¶ (+*n¿·?âÈ·ôü'ô8&ó29- úŬ茟ÑIa¹Ã,{Jµ efÒèÜkë®çfù?I;U®~³«±êÒÆeÁß<&&fªÊ¯u?.þÊvdeÀ¯ä«še©³M§±ióe~«éÜ.
+v.ÚÐC"â_äü×ýCÐSû âŠGáÆP³Î<rr·7ëaí <}Ä£ÈA|tK?ïä!Ö?Ò!$®Aö]¯PKr×JÄL¥«cNQ§Ìïà#Ê~»(4ükê£yôqÑ9~¥¬~Q€,²C/\ðüÃR"8ö+;]ÔÀÞc¿k
+9ÚEàha4HN¯}ËŽÆÍÝ&'ú¥çGÍÓ×ÄçÏêÏF;ôVýµ<EOÈRT
+n~Ã!nÁë5€Qô}Ë>8}ͣЬAI`Éi=uãë^Ô<Éa÷+56'Û/vÁÌûpZÈCr¢fL6"`ÑM«o¡££VÂð<ØœªÍ
+ŠS÷p*ws,W a8$ºÆ£ÚJ¹q€v³§ÜÂä÷R§ôúÅÈÃoò<¹#£ôºßïb[Ä5õ"w[ÎoxU:©GnuŠþÒCÚ3xÊ¡÷ åUÒŰWbµÑÉefJA»~4äØ(œþWž>þ"7²ÛCŠ¢þ1B6¡2Ö(9^-zÊÏà±õ7çvû7¢îË^²Û}éEW*8ånŒ±]ÕÒ)0&ZEHzflypA~¡ð©³nËÝ@f"ÛT·8ÒôCÁ¶ûçµ8^§5-l«(iF:ÞŠî"Zp Á«Ö OzO6ll˪TOHJÈ?µÑš¹U'ßí9ZxŠ#ê&Û±ÎrI¥ïÀŸqí°TÖ×pcó|1CvçÆ=o+W°q.±6w+ô".Q¯ÂЧ%G$S!vÌ¥š²+{nØïSQ*
+E$Æa 3C¢ÌÎ+ËOÉfGGc þt $,ièŸcSR;^
+
LC¬&\¢ÜMì/6êÝw
+<?D&GkºØP u}2 =_ÉBm$CÛ
+é©åËeš7U
+2x³+\6;Bæ0!ä2E^(+UìwÔ':$ÕÇÜÌÛw5Ÿ Ø®FÇ«ø]E(»Tà3P7eŸ_ö¹»¢lC"xecyÉ÷i³0}¬Áþs(ì±A$9à ÇÙ¥kUÆØú3Çiöùl¡íZÌO±/dÃ)úâäéœÖrøXýQ{gþ<*BËdAA
Ìü]9w¢ý³Vï?ïªQgœx)®8¶ 0ç±P®§íÂèç-rBšÖå/â£M)Rÿ#ÎEª"ëF^ÇYè_ymåVRÛüIæÑLA»X
ªüÂÜ=ëî&œ×=îo.üÎCOíÒêf_^¯¶¯m×Ó9Úqt}<Œ;ýgÝŽžëåÂÀÀÜ¡ô«œûÛv2?ÇZÍFÅWwj¢uØ{1?§ÙBÐ÷®€GïâïrU"w] l2¶Ÿ@^µm ¬É3¥84Ìe,Až¹j.bXÙ®4aÎõõuJ+Ý¡ÐBùà@Mö>ŠÇE¥Šo%RSùÿð@^=Û¿Oc"ÿbpþòfÍÏy:IjŬ@áf÷fÎÂÑ#¹<¹îIš
ÔxÀ<°ÛN¿iµ¯uwq^Ápäp4yQq~ÂàÏü¢qÒEaØÔâëÌØ¿!]ÑñõÍðñÉå4iû]HÊZêødÞå0êqÇêBa¿?>Ò¡i?Ì îIlxîwÜæaMŽqË¢ñ·,ì7Œm8e:¢[ü¶¬¬~.ÕçlPj$Y€m`.Y¯4CÀ
0Ô±ä8ÞÙV@]ÁÛþL3BÂ[ÀÛä11ìÞ¥é;§Ö¬âÁÕÆ\~£?ó¿·ÎÉPòËO=U÷zG²³exŽ\#Få'ï çíGÛ#Ù&·vB¡ëòâŶ±ÅTuÿT
+öÞï
+õþ¶Âï#KÝÝÝ3ìL$÷}#ý/j¿üMíqdQ;ÛÈEkmŠ3<<åÚîKïšL
+×tÝõ;D"#¢Ç
ñ3Æ*Ce¢5}x6gB©ìúF0ËÍÄJfgBP¡Ž Ü"Ò«ç7ùD,·Ï!ò ·MS,Mó>Ô8©-@úG|°
+n\>R?"óÆšC€%ÐÃ`}¯ðìò[9ÉŠÑbÃ!®ÿâ¢.qZâ}Í^.õç£<÷®ôfR&OaIëÝ@áÐÄši Nrޝ?BÙÝ{Õóº¶E¯F1®ÖhÞÝά>«32!BUmw]HnÄjÒÕà·öûDÞŸÁÐÆ¬³Bm»×MK+pYV¬ub1aàÜÜÌ¥('6cT.ðûØ_À¹dÙÿfy¯Gã?Hy¥êX.Ý9~²õã-¿ÀüÃðn2€ÂáÏ|Lý¹ ªÔ±NòMgq:E+Øëó$(ß7µCW-(&ðÁî4€'s
+º-D/¬qä
+êC«ÊÌô®{»`xäøVµ°Ö#Ö
+ÙŠ\AÛM>è`uíM
ýþ= àRð¯+1 ¬¯šM«mõf©¡òþøWw£œäË^sÛº:áÁ]£ÈÑpéDM|{±mÉ&ómýÜÐîïŸA9öXŽ£*VnDºq'è'É+Èb¡n(ÒBËbŠ2Ñ)ßE¶o+žuš«'Q50ÿhÃV£ÊWH;b»©?»j_O«ØÊXß°;·÷=[rÿ`Ð
+ý RÉíAM§ÀA" ìœJ}8ü>Ž(œìøñØt7šÙ©º :?Ù×æÛ»¿+@«Èå¹:Q~áWë9ð©3L
+ž<EØ
+ðuA"ÐÊŠ%Ãgîìñ/äY0¡Ùøi4^zÃÐï5æ"¹šM|:ZzadcIU¹1âø&ºÓçLǺµ¬Fæ5}µ Ì7Ÿ0(þxÄCsmtmU墟Kfp×T1ÑÕ>duq(d6
+GÉžësN
+Žàv¯ë)0ÓËSR*F%F!
+G¥$Î-#wð8éz1É4EäsÂÒBD*ëŽ9Tþ/RÃ3ö\
+YOÛxÌY/¥S'eÿz)¹ÿp¬"BHVgh8ÜÔçÚÀb²xÛ×Júí
+rx-Úq Xà|+{ÕŠ òíkÊËŒ
+ܧõF?Ñ·Úï7ÎÝŸ¡ÄÚû=kàŽiœO)lÁpýXç!ÌVÊpÊâÄb¢/EWWÛÄkæï\¥[Zd«CdÁ[_Sxꢎ%XT±ØÑ9ÒÄ27æªFíÅcÒŸª
+*
+*NdîÖ9¯Žî Í)l7·¬ppŠzäþQCÂÁ4ÂÄ!%«äÍXBäK9$RÊu¬Wíx*ë?WÜ¥6+÷òþ
+Q5âùè]EáRŠË°²9®>šþrüZß >úšÄ""l2^µ<
+lÇÿÊ»Ç- ßoçmP÷kT¡
+z|çØN3N #B?¶1JBHÅã×§ÿ`Öûfo.ô¿+«BºBÞ ûIâËâOV7fY-ÒâIBaõ·~ýÍXØ-8^-éàÆŒ ß6ÑÍ.»,pò.V{ÌütÙCßÃÿ/²?]@;žèì`ÏO=<Újɺ8íˬiÂ1_h|pí Þ²ö9Ñ^œnÝ8"7²è}xEpdÏGhóÚ_=:}4óý÷ÁF¢ÊœïÏ3f_ñ
ërÚ_pœp¡0UDZúK>GðhÖm_ïÏØ1yøž8{{=]Lœ°ÅT¶HêÑ1l@Ašzâo÷OÀP_/lw£ëR¢5²¬ê§SË
+SÁÌj3RÄVê~`}íÀç.}ßãÑœTXÁiqmj9ÃgDb~4"i<GÑD¢(nøMá^)šéáËUð¬~< CöœÏòÛ$ëãÄæ©q€§ú€ªÒ aµ>x$@íÎSF+`ºXC÷Çã2í<:{À*Œ gKÅü!¶H/ë€üû]lûüŒrûhtzfº»[°Ö_ý]^0&mSùÝÃò¥¥ö+@ìºuO0Ÿ170/nÓÝkPÎ(cHàû>y±à¯GÐU\[ÈB¿_ ÝÂ>7úœ?÷+Ê^oÀ
ô§·WBÒmTŽÉù1³mAÝ!y±/ßå{Ç1Ò»¯Ì8ÓœÚðmüV·vŠÖ~x7ÿŠ3 °8§<oV
+ ô
Ùï8.ùÍg¡¶Å¶âR
+
CpI7ç)¹ætÊ$+$[h$W(C4cø¹Š
+UœÚÂÜÛ7Ÿ,ÌyáÚ5å%A4xÀDùDo9!ÒzäÒ
cö)õÝ»¯(ä# f#-Ç£ÔZ¶Z¡Î]ûµ€}Ùö¶!I3\0€Ž)JNnaûÏýÛÚEÁvO¹Œ?€«0¯FÔùÃÜh©â÷hâý
€x¿Õæ%%ÅÔ%(oF¢ç#Òº€GÕ×6}/]o=ÕX¡§ÍîDžüÙq+hØ×*°ÇØ`škŒ©Þ>6?ÙßóÝѯH%œuH#à÷ÑWÁºiö
+y¯ð^¯8YSUš\³Ê
+]^/ÕÅß)»/ÆžiÂFÔš<ÝåÑñ@Òl'ªW¡\YÂÛ}šŠ<ÆÊ÷?*",²×ª.œN\QÆ%{e%'Û]¹¹âŸNFbÔàõ²q»Q:s®3Á€ â5«ë}~³n§5ÔÎÓ_a¯ÎÛëØtaÄ·EœU,ûe«eZ²|ÕjÄZ*pÜ®ÐfåIR$í1[RØpÕñòiê!)EÓâÇ(¬2LÕV7»Eó,*-§²#ŸL]Wc.!©¿¡;·ÉîÊÔZ÷ãHPŸ4@œÓg,êóšboLÿè6-m×l¢D]èrZûÉvÙECmEGr#ÿxOR|0PTA£ !YI V²>³<ô#tTj£§,nBW-ºV!þæ3¶ŠÊE~ã3çruÿò1îOWN÷+3~uÁé4œœ€plßßmêYRütßÒ€ß ÍHÑØIºöªªÈ Ü&®BÑ9è¡qµ_ý·hû:T˶vÉ Ï"B'ëX÷ÈZøR98O}»ÂS]k*
+·'Å2évÄ©ººnŸ
Töâ4ø«=wÝi`ìzÒ]8
+,èînèfÕbþ£[&]×aÆÙµ]~áššz?o)®¥deÏv62ð[ÙívLèdïÏàÖCßÈá`!øÆË7×'¢.ÕÀÔñ ®hªÚ1¢§ßíç¿rXg[ ¡;÷U§Ž§zR×VÒÐMYr5»ÑOYæÖþþðØæÊ]ÈìPÙb%Ž®ò§R1ÖQ÷,#Súÿ+Ic&·ç¶õGµÇ»}ºV¹z
+±B¶B»eÄ·ãU¡§NLÛ§ »*èKH¯œÑÕØÞFN\D]Å·A>IÏZïaWnw<Ì_Íaæ¢d-Ì*CŒo³vü\*æòÐüMìw¿
+êEÇ÷µEÇR=÷C=}ñ.(µýãÊLÇÔÏØt³üLéðf窡{³s·|0·Bh£«Ã%z| I_
ÂðZe_šáœ}Êyœ(I(Áÿh9$Ç"8Åw)¿ÍãŸÐ,<Ïûª1¶H¥ì Fú¿r¶b¶ÊÝîù;1lî$Zg5ħàa{ÜËnÅÄy$.àVJÄIäåóU00ÎK3KºÊ
+ZPò}BåE¹àÄfP€~µiêÎþ
+ªJ ^ÇX|ÞïnöOmû3t"+ùÚ;t%Læý×xääÁÁyÒ¹W?éÛÊO¬'ú/?wUû¢n¡ûœÜr0ßüÉÆÓBþ1ϱX/öëk#ôYSæs"VàõOP
+à+œl£[eT?òG¯Ãî0ù~ÜzšÚýÃþ¥øÞq€¯ŒÏLmé·_Ÿ%Þòùò`ÃSBwZÙµêÆtF¢³%í§Ds×
+jB.dÆß€]aåæÃ-@õoð³bVÂqr¢ã]T'ÒgikŠA€¯$lÔ%#ıÞeÃ,ßIÒò}qgj~~ŸÞ:HÚìÛ×¥c3ŸE //©ô\`©)ð$Þ®Žøù
-ï\
+ÀKù;ôŠs`R×cÏw÷Î2@`dpó$DºuÁ0t6C³(E øÙÏo&²]aýµÒÖšÑú`ÿ
yS vz·/.ZûPið}ŸMbßwÌÏz̯m°ûçÑ8º9âIßïÌû8YàÙfz¡nøãPïŒý&4z³ŸŒÇ. ÿ²»;7}p+Aý¬ÞƯ®FrÁéôþ!6
+ôó/b_Â>6ÇOØÌbÂ|°cznØ*<WN?Xéâ@ŽsÀ`[Wd§Ãè×ûßÌ{óïÌÛ
ªþwæÃQÉK-3¿Ù€S'!bc9+CÑ_è:Z£^€Ÿ¥h&OÐE0Àßb4ðÕ1U-Þ¡Â"Í·jY}ÂÔúÉÍ)þïŒãÕÏ~¡.NýDúLkÄ?Öù+©[2
+¶Ï2Š2²HBÔÉÀµ<
+šEº`â{ôÃÕ»
§þ©ÇØ?nÜB€:9Ùi?zŠåÏ8ÏŒñâŽ]àŽ÷9©6p|©Œfeyýãáüù#æ¹`Yýë
+pAõÇší(á¢G^¶]Û1z FÁÃöí0±+ÊAB¯ìÊ»â§$/·*ÈKf€¡ÛV°úÝ{vçãñÙ(ÏýpSãÐcØòA
+ÛÐïûØ ºÜ J¬ŠªVO1O"ñ
+,uȳåÔªSöD4
+®IãKsSUáPývVÌ€]€V!q÷Õ
+Ãÿgž&xÉhcoêc`\ô2õw]ÝE*þ7o°7?Ý`Sz°íÚ>EîŽòÄžËá1E7xS£ÓAã¯_@ØBö@Ý61ö;£ýéèá{d¯áSÀŠ ã&')b/Ëâî§âbá.
+ëÞmìþ¹Øã¢vÍšè5ÛåØ[cgA$8by;nEÒ~íÊ2|"nÞa
§7oúRŽAOšöÀIß³{¯!4 çxÌ\º mŒ~ö*ñÐwþ£»7çKö<Ùw=žÌÜÓe3M`0(;Nõ}NDü`dÇ{ÚzHT«®£lT»ªô%šâ+GhqºrÀµ©I/n¶s*³ìÁüpcËø¿
+>ç8mDÒV-®iSq3tþÔ`а¥ÖE<hÕ
+)ôp³ø>ßð¶*³®-BÛðõÂØ.ŽèK7VhJçå@@ª~ÔøU RŒ»óà~u¡Ý=q"n22Û¶÷dÙøuœ+º%lé>rCÏ(U6IJÙÞ}:×+ÔÀµZ[y¥ëÚÓxXJá4f¢aèJ$T©tPiþ²Òö#ÃW¢W%UÿØïj±#Ü_ì<®íjýö? ŒuêzfZ5ÃÈÑešRXJÌŠòs%Dâ+Øñ"ÛÀÍòºG9+а¥š
+ªœ\UÔå5ÑÂ)1äirÕ«CûÃö2
+ ÛÊ«FPk#«,vé²PÕáú3ž>];ú»ì&ø§+žÝ¡BÐ*Êù"dO=Márß,í€y)ѹçhŒ,©ÁÝà' V7)ßyøwQ.ÝøâÊDUP;HoÞÔ=Ù z(çåÊrÔz?UQÈhʯ,0s8f{£ë]2Hl·f1ð3aÁa±;Ÿ#-A{ø+T¡E1ÅSiû<Ú±«Å¿«\tõÌÖ
âš/¥É±{²
+X¿fØëm¿t¿sIÿå)üí{ײã¿CçŒæ4"ÝÑÁ®ÎMµÅPùçüI"\ͬÔßÊ>;Ñmçn¬ðÏæÚÒ Où_GbÀ¹uÎR j-±wNó{ªÈC¢Žü£ãlê"µôíU!@²±·g%Ças¹-Wr¯¬·Bž~|"µÑàãÖèÕ`øh§ûÖó
×ÛÑݧ`iÊØÂŸ_(eØõ$Döö~nú«bêP«:ŒÖcxeïÕg{£¿ïóËurùfõ_ôݵv
àeùR±ü2ãð®ÿ5ãà6WñÆÓ¶al}^°=Y=ŒEu~qDØÆÿbvÇofKš}]ÚôèîÐóÁ- mªt䵎,qéŒußMíŸpÓx>°þ®ó7ÔØrà¢C°sG\çäy]8Ü×·i4.Wþ)fû^§$OŽ@
+PUèêú_ÿ«Xm<ãPð§X]bîœÖZèÙœ
+ìn}6ÔæVÖåº .ÁÖIXol
+aÍÍ3n²¹Æ}Å«0æîÒÔa=Ÿ1(So
NÁí^áå÷ñ¥¢LÐì/£µòËhò&,j
$à%ol%| <BÜ5îË0A!X"ì*º¶ m?q\§?×N9çü€oV€3ÛXv<ŠØŠÑñHï}UðªûŒøRoü
+ûÞèçãR²ê
+£
3]`0
ðé2oìeÞþ_Ù%®cíG¢8€E7VÑü«[Œqùø9G
ô+ãŠsÌB]/¹SÓ(è4 ]ÙñÞïÜU§¬¯?·©Ie¡I w6 ç*àø,L%g ªÙòýrÓhKqpO at HßÅç¯?4£1éy4ÒRe.0ž.ž.Lá©ú»±üùhFÎ÷×)K#âéíÞ&Dst.RÅwaq,ì[ XYé'1 œ4 Iu*89óÀ¯¯Baé
Ýíž3cºŽp8>®ÿüÙèg÷ôù?w1FÁìDGòór·S:\_|AqXþQ.úžÊ\¡©ÐóI\$Dð±19å±ð
ú/W|o>íXéŽW3§5œë[oyíªMŠÏg¥ëà'»^÷wksÙ 7œ¿~øR~~|œÃ£~ÈA'Ó*¹3Ã~=<õôÒ²©ÌgÏÅËÝÃs>ó@
+Âö
+«³ã0cìÝëùúTùãtwûa¢ýCûy×ÎÎcYl§òrsÆôÍùÜ#Ó'ŽQSÇÌïlt"Àë<ôÿî
yOHµÒZ,Ymå£pÛ6/cáæãÇ`é-
+þZèÖðŽ¥ídüp`TMO5)D>žÆûªXü¯Þ3Ëý*-úJZœdA>M·×ÑŽèq8ÑÁá>»3Úµmb³žòùyìÐÙòµèj¯7 ®/ï¹ÂP¹]µy'LÒëx¹fÈšŽxÅGúÍÓ-lŽŠ3ÛÀ<Ò{º ]pе9=ÃÞÔçØ:ðvXïT
FöîvÁ9Õ6sø°µ¯×¡ŒGRKÌtUKWI"1íæÉ"×ÈØÖ¥ÜþlØÐxY¿kÐ=ݵOXìÛãÚŽ4žŽ©ºõDWB
ÍXº.ûFÙêZbû/ÝÑOD=#p{:Ú¯÷¿}ç{TL+l=hyèüÈ{8Îõy÷®G4\çâL}ÉÁü0ÌÞ"ŽÉ=l»Ùûž;Dßg}{S|
+ðZå»Èút¿Ñ¶žió>øTÊ÷ak7ß¹áOá=«Ê+â@±Œ©ùëQc¹é0#ë~œí £/èaù讜@=l¿HGÍÌÔcAPqfBC#ín'ëà÷Š«ãg¥[þlìþÚŽ;l{¿VKëõÓý3ÅÅá€÷ùÕü\wu^o@?÷L'ÞÇÏMáÅõAÚÓísûçÚdÓÁŸÃ¯¹_ßñßW«œïÆßŒâŸùŽe_75œTíAËŸ`Òë;t4®.8z%ò:fÍnËÑŸêVŸÎt/õ_Ю!œMÉÐÓv[{|lCIóYYÖ~ü@T|
+fäóàóN>œ4€x[z°$aFc&òÙ×áû.4zoýmwñ¹`ÏàÁÎù²B
+ÂÌîâ3Z€øÙ#Wôsž¶ër«gÂD¡ãÑÞrĵ¿§ÏÓó¶nåÏŒöØ §Â «®Ùëy/ÿ_è8sK ó±µ×Á¡n)Ú§ &ÏÊ(~ÃNæG)Wö¶]P{©74v^'1òÛ¯n©Émᣜ;Æ5©-2pnœí èõ<çŽ2OëK|Wôø-Å'BìšãºøAï6ìÇ»ÍKÝÝúÙ@f:thŒÑÁdí§kSòôhd}RÆ}~ý_Gª6õð©Ä,4äôÿL}vÄ¥ÕÀPÀ _ò$=Ñ n¥ä0Õ1kùúa oÕ{²ýØkl|¹ÿSêuMv¯M[Ðhœ)ÏÍ©=íëK¢³4 éH\ÙK"oB
+èÃiôÏIY¬(OHD3ÆËoÚlbæãº
¶:ï;Ö>S0¶¹5Þ®Ò°_žP}`'ž_Üö"²·sä!em%Æ~Þ¥ŽTµ!Ó+Ž`>37u<4¹ºù!ú±%·ðMYð)Ìô×¶ø±~Â{Jºÿ<3ld2y5êRÝ</8É©³8±ø9
+óS.þèÿPK
+ÜvqÒ@KPK,6TestNonRegression7/scripts/PKPK,6(TestNonRegression7/scripts/SiMatrix.javaí=ÛrÛ8²ïù
+vN
+%+Ž¥Lv²öxj_WŲÍf§Š\°É¥H
+/NÝüëyÍ7íÆ
A¢d'3³{ø `w£Ñ74@ÞîÞþô?HDË»Øß€Ä9èáÎα¯ÈcäUúa<gá/táä"ÊÄÁ&7~Bq4éÀí,f$Ñ,}Gc¶Gî¢LiHbæùIû×YÊzÛQçÏî°,=ôÅD3þðâì5yÁBÓ\d×?%¯ü)èjÇÂäyäúc#cÉ90Mý(Ü#Ì÷1¹eqÏdd5fD1qhÇ$Z"^Øœ#MT·ŠùE+=²BÂ7ÑZt$¡ïü ×d eAI0ys2yyþzBFgoÉÑååèlòvÓÞ²[&HùeàehWLÃôxG
+§G/eôüäÕÉä-¶àødrv4ãóK2"£ËÉÉÁëW£Krñúòâ||ä2fÈbœÉ-"£ÇRêjø[Plܹ¡·<eþ-ðFÉì©¥ò(ófp!È=âÏH¥}ò.öÁ^ÒšªVD/4Û''áÔí§!Bbä" SFq<ÙAOGìÁãÁïúäõxoèm?zŽÝ
+û§TùÞý
ÞRÙèx»d8 4ú¿;<Ý}údwg ~€š-&ËÜOÈÊàŸŸd·>Þí;Ø!_KW4û_BcØ.ùúÿÚßmï¶wþBßí~ûl÷éSV@#^Ë.¹õðwÀÿNÿAçàÓØ_ŠÉÞ£G`5QlŸž#°»W`©{ÕwQ°)÷êË4¹3Ú øM£ØòJT€Ê£xîRàñ¹Óh±ÂÄ
+¢ùÜçî«hŸ×ìN¡®»ôbU¡Ê]ÐôPyBëÂWZ³
+áì°4>u'ø{
){®<z?eˬ|j`øg¡{?WmëB³Øõ!X/üMüdÔ=cž©r`faê§>KÜí fOÒC&³u/ÛA2ø³ìÑ$
+OÂYÔë"ZfmÏ{ÿ"²åºHë²7fÜ}oýô®-Bz>û+K$-1Rp6oK_BùߎoÇߣ5B&þEÅîXܰL³á¥wK !¶gz;
Ð.c®èÙŠMŒã ÿ|ô(ÀÅz|!ÌèÔ@;}òKA ý;om Ëî"ëëºîÖt€o/cÿ'9œ}RDwÎRxròŸsÔÝãøüzØìúéÔ zñw:t^aÄ».A©vò¿0Mö°éÀU!^YE3 Ð~\RL£Š?À¥YDr#ò¢x*úk{uBªRuRž9&°¬îZIuAÅD^9fÌ,@!æZèJpÔÎ_i1C?X~FÌéJMá%[(šâº
H¶o#ß#Iû£bOk
â4YÅi¿@¯0§BföTöU²7"BÎP@bI¥çò4t~$l
+HE©Ã
+L(9šÈÈåJW
cp(È£./VEÒ8zrMl¶ÕÆìÔ
+Å`ËÜÂA§*ÐÞs¯Ôíð¹£Yn¹5 ^£¥«mÐlÌûŸ/:²Ð§ÇÄÁL0ã]Ýú
+©eA{GòVÓ1À)Þ! H£§+UÉ !Zººëà¥OKEI×»vg~è=¿ãÍ<ñà)ªGÝû¹\êyPÔ >BWú|`]ªkR>@WÝFÛÛ[ÐNã}ÑtMeuéÀŠs Ç×µz6ÑŽÖ¢ñÊéKU«çª¢&EsçÌ+³èZh³aE÷vIõºòD²ËU'n7ÐÛB Ú+NÕÃ:ïMÉe.dšÆ6ª.+·Ðª@-ó%ItJMéoÌ
+óJ+cÂx 0ÄD¬,ñ:`JàV.ðRfÀ d%QeFiDÆmGP©/©ÜN÷c¥ôc{«µÔE£KBÒBV®Ìe jóÍ>ÁIosMÿåÏ·Ú(?±Œ3~*#SjIR3AqŽ" AþÖóg³O13ÇÈNM¢v`f$P=V¥Å×tíÍóŽÒ(hFiŸçoxI)¬šY ÌßèHÛ<iµ
+Ît*G`Õ<]éÇå®¶<Bü}ÎëË@$Ÿ{C3Êð`«ïâE¹ìÜ/òè.ùjìØ,Ýô(Gt}áÞ
+ãÌirE±ç Fð¬v~®:h}œ£F_1ÿrê.¬ÿá.IOþÈA#+Áàn !8%óqðøkÆp+d1u@ÓéÍs;ci¹åœ2fD&Š8Ï)]á
¶/®ãÜõ<A~*ºÞ÷JÑïÉPÜ|Biù¹Æ·ÏHð
+œBSK Á.°f! (Äh^ÐûÙ ÉVëø°"ÏÊ_W&߬XîÙµJsr³>)'ŒýíæQšo¥z oÊkòŸ
õÚÜOAhÄ?dlè~Ï àtÐ\V$|89X5pÑÉìÆólaÔûkæv<ì~ÀÞi
+Á`Ytjí,5ŸÇT¿/Ÿ%Fç¶UÒM_òGŒuOGË¿]&/¯..¯ÆËÑäèÅÛ«Ó£.%°{ÇŒÐ&Q\CflÍN2lJ0Šf×rl9ìÜ>Ts55ÅõUpuv-Á[«DÔ¿åJô9vµŒŒ|
[êYÑ]H¶ÑóÊ\€ž÷ô«Û2òœäãÚï+&YÀEdÕø£E\©&ZF<©SŽdÍðÅ#X5<Ÿe!öI€ØÁxUÌt:£®
+*¡¡_Aǹÿéçî+©IGOK%íø ?
ðÊéjétûK€ÐÕ#^þRFÐ$y²¿³Gòœ>xNü(Flm¡«4HÜ×@Nbž»Õ0xònXG¥²ŽÔKñ³šòÃl€©
+
+9ZÔ
+<±¢9V4òzæözð²ú}E«×ój?`µ Z®ðŒÖõµâUÄü}}Ä«RÙ3$64\OB}á4Ç~u}ªè1ÐÖðú¢ÒÇÉÅ]Ø&/
+»ì&`ð²®17æ-caYÉâv*ÕÚrÕ)B1G®vøµðxúîõ[O¿¢aFë»ÒGK¹YÖ87Ò2ÔÎBFºyQÄba«>o6 ?JIÖ)¯<R²ÇŸ>&±Z]¿&e
+·4Ji0Ð3F1<øéµÜ±YXNÑ95ÔpjÂÔ9üënrÈ®³ùQHOb±
NF,8,±Åa;q:dK:áéô >rÛêt;Ýœrè·£:0Å1«JÂ,jSuç© m^PjßÞdCÖ5ò+5¹f©žc¯`Ågöo
+
£Vgb^TY?ëH1æÙ_¥íŠ{uM~ëM¢(²²µQ䱯ÃVF6òèÑo«?IJìS@OãÐ4B*.xajð Z÷ìõésȞϯNÏÏ&/÷t³>µ
è?Â(^Ðñ?žpS?%wÞF~̧/(®Ïäl3",XeÖTøÍµnœ §s!¢ý© ÍÐ.ÉP²Öq]Ý«€ÜîwJrã/ù׿ØWUåhäxÛ9Þ:í9òO7.{¿tóân×?·|n×Þ
}î~uíÑx1"ZÕ]ŠªÏW~lLuÜÕ 21.y??<'KËŽÓáT;vàØ©R_,c..8¿ášhb¡Ž
+TŠ7øt=Õ«øÖ}zhaÖÅÝ#9]Ï
+*Òyð޳ÉxÀØ¿ûÄøNW(ÂX¢u%Å×Á!Óbªa±Ž4u€%v¿ÏqËä5X¥¶}ÎkÈZh&^ÕWö%æ[þ]RN çí1.GÃ~Õ Ã¿pµûŸ¢ÄZÐ~ÅDcë¢J¶µ¶ÚWIeŠ®%c|Š^û2Ôþj5`Äf3·*€Ìa±?õ!A_€œZ¿VÚèÊEjÑÖþ.&mñD$-6ÖC$çV®ô«£ÂŒHŽ1òo5V9šÞMÐÒr8ž²¢FxMk«€â&\Mgë² C([kø¶§>zÏ௷²'IÚF_ž+šûÖ ^1ѶA=ÞÔ]?NbŽiüa_©É}EO6ÇS>ë^ã|r$å~Îm55Î¥ Z·H³ÞºwUg~žquaµ-ݵœ«v8 V\]Ã5ªŸ,ѲÌίVø=ÁàÜèAkžiíÜfG©®aJ~Ó&³µzZrO?þ%Æx8b"Z}¿(9Þl8õ¡ øáâF¯G
+±ËV3ã£ìÕGá7w|µÂ-Ò5
+¹ãøbÔ~ÀW2ïŸTÎßòÅsŒ¶ÍÑX'WÆkà±ÎÓ·:ä7:Â8€ŽÖqÇp"ÒlV6ÏûB!Šýÿ/Šq-biùoN£X Y·¿×Ô2Ì×,¶RÑS÷±1Ö5\ÞŸ _Ó;ØÀTÇ©è¯Þ˺âkä:)ê*ZéreJ#{%ö{:g=³Ÿßw(Ìò÷+áçØç«|€o*æÅÓNÁo6ø-F«4Ô;R{ùÃ~¥È±mÔÿGðl)\éBÐu°$õn\Îu8ŠÐ$ëåÂz¿Twµþ©xîžéUªX×_'âð1ÅSÜÈOÒ(Rï?˪ŸUSVÆûûuVëžaÝaæ4ÄìÓ+óp»E.|Ü5>ŒñU亯Î"Îa9,ÞŽïQRÐÝafÈÕe,CNîr÷ÛD%<ÐX>ìY²@FžâAp¶Èd.0©Äãc®¡ð=Ù!÷ÓÊʶ:uJ\ûz3ªÐªQV=®Bm4
+¯VO»± ªfsó\¿v;$MS|4%Fèàj§\
+£ãóU£SvRÔ/k`Úú<~yô£
±mcÃ$©šÊŒŒÞ5£{ûŒG_HkÊÊ!šáÿüH?p¬€:éQÎ
+8ùcÍy4]žç,ÈšðÓŽÐn1FaÚ$líºö
F×Î×:²
+RTm<»:åÛïléJnNqr7ÛÄÆÖÕil6Ç95ó Ø5]
ôÅÐâÆžÇó3t??ùîûäÙ³êà^ílóµ!'m²f}Xc¡_Ê?ø,Ѐg\%àpà à}·€
órX\§y9lGŽFôŒ][ú»aþnXy<+ŒRwØ\ŸWêLÂ{?«4¯<ÿöjÉ%OÛK»(ša
+r¢ÓB;-j(¡î#?A¢€^¥7¬+ÚPH×N¯W<7RÔ«²È¹@±£[7Žã
+ðŠQb«ëãxÕú8^©Ÿ
+ÕfÈAdl¶Lø¡ŸFF»åဟÑÞŸ(kR«$,àjáGÖ,]|^üX7ÍŹ²~]õPQ at RÌãœ}ôešÎ
+Ó3f
²ÑÕÕЯSªI
+VŒ5uÓáãRÇŠÁÞö8ôŠÓõccÒbuBP«IJ3-3h˱>P)ÇQÁŒZþTNÚÔÄ
+pnYÀ%&:hèÑr>Kì+ÄN¬<"º\öyŸdj¿Â:1{ òÒ ÌR"@Ý>-%ÛÃo÷0µ~Knnlmcù vÅX%£ØÇAãVÍÑüeåè'ë>€jÓñšA€¶ãoó°ÑRz¡mÝ]møúrºAwýU#DÜçoOGò¢ã O¢ñžàPIR|3
)EúÐBã;Qóça+©13ãy£ÛµË`×9ÏËØ±=ºÎÄqMgG<Ä~íÿ]Ô£ç¯ÏGgG{Š×ÞœÆîç5vo°ówÿ÷ßékìðM²ø_`ß2VöChüð`QK¢Zõ¹QŽ~°mÃKyïªŽæØº2ªNK¹ÀJaUñ±×pHF£"U{fíû`7J¿ÀfMv€äþ
v°Ön¥²)O¿ÆzÏvkö
+Râ±_(a©:çYgÍnÛjŸpÅ73ÏÑmZíÆÜ}ÿ9yò:9BSÿÜ4IÚvðûí³ÒjÎNsm@ŸDWýüäüt4ÿvÔjÆÑð
+ãÿÄEóÑÓŒÔzlæúýûZœ«Ñ`¯ÕáÞ¯£]CzÒC×ô³d~ÓN÷ÃÜoK7>ÿª)ÙVŒ®{õg=·ê³GÔ£ããóËÉœúدŠÿëõÿ§BÉËŽâtì§6j?ðiFëfT
+Åm¥TNmX¶Ìyu/Uµ:ÿ
îJ{ù9!¢_m>°dÞ+NF5OEUŒñÄo<Žñ4ÐgŸ9:yñ²žZ¥P
îqèFykq>gä>²ÎÂCÙÙ¡Liì= ¥I_ÚÖ¬Õ®km'ãÑåáØ0žÿ[ÃMsÿPKÔ$:8asPK,6*TestNonRegression7/scripts/ResultName.javaµX]SÛF}÷¯ž€CÂ8ÃÐ4Ðv"dÙhÆ<lB^4ŽÆÊ»êjeÂtúù
+}露øJø°Màdk÷sÏýXMØ|ýúlò-ΊÞÚï`g{ûWú~lrèFÈ&Ø©
ä¬lÂ!_ÙLHª²(Ä-Ž+rÎ4^N4çPš9gÀ
*!a4OEaŽ8-
+aÉtKi©TL.è»RŠ\r0\Ï
+PêCÏAK®YÃò4CM}pYpÚΟ,Š<
ÓjG4µè*fF(y\à}
+s®ü;PÓÔMPÞ2CÊ5šöœC¹1s³µõ@ø7QŠ^ðTåÑ!1ÆsepÊ¡,ø€ÌáØüQwÇVX^trÍTá]>ç(1Ë3ÈfÒ\ vB8}[¬C·ïF'A×<'¡ë`ÁÐ
+"×õ£`èN ä$«2ñaa`3
6ŠÜ0W`bT¥0es Nž£6 ×ÉË<«ÂÄÅ7FTŠ çZ`œõcZiûMfàÊ€Õœq4Ã0c ÷°»»¬
+CKÀöN»Ý~ßÞÝþÐQhQTØ[ÆÖæ"Àef<6ã¯lÎê°mͱÒ}ØÙŠþ3U÷@{oûãþîzÑ'Vbâ4ä×®JîMÀç®ö¡Ýúoê-}V`ä
+ß7êAoµ··Ú;xèû{{Õz*s\dU$ûpZÓT÷0%±3lÂDÜÒ
+^%Xgû<£6oöo²åÒ/Pô04KÙåjvQìKºÀp+
+Ì<ÅLÑ>àå7È.þ.9nWUøs^RãþrÓôåbp;Ý`_±Ì±¹Jɱz$
+4&Ñ÷ Åbójd €*«ÄRÝÅÓU!Ôg»0áVø=ÿ³
+'r,Œb+A|jU
+A±ªI3Ìé»ï¿]\®'²ÏÈ(lü\IAk1¡ÑjÄHyå+'/ (Ý@WÐwô1ÉXQT`))BsÖ[ ¹NÔyÎí¢ò³
+»õ£²I&µv,1+³
HwÊðWó/¹-"§Xµíd"£tË
+ZOl5j
ü~
+:ê8&Bâðž
+¶pžãÚVÐ ãcÇíEñÐ â0
+âÁ ã·¯ªBøÖEÂtZs:õ\#ÌWï°*ÕSwÑÂî[^Çõzô÷°}<)q)¢ÖKb:]ý×XÓ;ùÛàt¯íÀsv±ê0êÄ<vúK
&4ÙóXoQ}ñ='úÃûcú¢$ª|ydÛì£Ô?ÍL2
+Pùº!,æxþÝxævS¬NfŒåÙÎ`ëNf/˺þÀÂ'Û0BÍp6¬Pö]7<¢VÜÁ"ßfñyÈéßÁïâc#nÄ9ÀáJŠ9N»lyåݶíQûÝ«x±äÏ!
?YtÃ|×TWÁ>ÀUóÔA>/°§ÂY=pÄ8ûâåzãQÅ=Ç
+'
+xζd:`t Iª³gz]!~tDÁÈóÈÌG©}z}J)qûºtá8Øó#LàgŒz1âÃnê)ÓßxúLÎûùî=wŒ÷ÞDËQ÷?ã±Õ9T³õYW£CÇvðñ!ÕÓª(Æ,+¹?©OÃêÍñëÎGe*å%<TOkY£N<ä[ÑäÈräùñ5ÝÏ£€È_4Ñ*z|ñ<RU3=[8Ç+À×ÕóïÉ×Ç+è¹^ìË
+\ë°ïÜ&ËèñÏ%ŠÏôñxÌŽ`øp5açO=Í~ÌóKé\ÍÍç9ùÒòÖÑôb}f6_ŒäÖRµÂïçǹcúàQ€¬Ä¹0°ÆÿPKßEŸ@PK,6*TestNonRegression7/scripts/TestAspect.javaQKoÔ0ŸçWª=ì®Àûª
+JuUÄ©'Úâ0q&Ù)ìñõsaFŽ\>įÏß#_ö6Ñî%YÆ]ïÁíõ]ç]4ov¹õMñ°OhÅáoVë+j°3ÊiüþaÖÏ :®u€säXs<=Y1÷-ÿŠ8nÖëÖpOQOxF=Oo¡PÃþ
+ÐÿØo·WóÝ5&9ùèŒ:"Œû³Œn±Ô\zjúÀFû0==Sì,>ÓÇU;³{û£@ê+ÏañqFéÍöíf »C~8äûÝr'79œêGvÓÝ&ëSÙ²Ûb/BÂÏ,ÄCÚ Ôh¹e^ÁCR}PŠÁ§c%ù2ìj¿Œ0Æ\¬Qbä¢2ó¬fA{øÞÃsÊ!ÑÝòÅ\'+³Óéì¹Ù-ïŽ{×À¯¡+uó6ªéän|
¿':ºêŠ%K%QÙcöPKS{ŸÃPK,6,TestNonRegression7/scripts/GravityModel.javaí]ýrÚȲÿßOÑ'goÆvvsv×^ç,ÁØŠ
+àääŠRœ q%Aâò»øõò§{ô5£ø&Få2 ÍôôôtOÿŠG3sÜßÿþ?{>|0Ô»{2¥,Œ><üÝ¥«€w\,UËCé{×P;PW5Šòði)Uº>2MUÃ,«u¯04ô;C~í©÷¬/ÁNàAAGÑÀ`]ÕŽõvd1P-PŽînÞU{to€uÖ=ôÿqQœŠ1CéC}tÛG®ÔÓLFÙ,n÷¬·<Ç9ñÐtxs +ªk'ÀT|nÀ&þ×DÁ)Æ¡ÝbçèCÊEv ¯X~ÖBLõýZveEïõ!ÖèIb¿šý>Ü2¬7êç&ÖeíŠÅêGøPl4ÕÖÇLlÝëøMJû*RÆzf= ïDáºÜ(]bâ»ÊU¥õjp^iUËÍ&×Pz±Ñªn®
+šß4êµf¹ÐdÄbŒ¡Ä:±Ë,EínÅ?bÃÈ]¿÷Êaw:FÞè z%lŒŸ®Ýñjbb_' ö@Ó<|1TÔK7+e÷[6SÈÃß¡ÅPHê}¥Ã`#¢ðóÏšÁºiQÒë"Àá룣£ý£ÍÃM³HµBãÈìíäì
+^ÊXµ®Ñ"ú
¿±âTŒd0Tî1ü&Z8üœ9þå÷ãÃß$*#l8¥À®ÊýÔ`cŸÃQá7øÉÉr¥hC¬
+;Îøæ¯G¿Ãѯǿüvüæ
+OOjŒcžuáϰC¥óÊaÇPy²·j£ÊªÚqWèPÈÌêÑoZ¡BÿÚ' jm& ŠÏû
Þï³7³ðÃ+4?VÍ{ô]3}ýîNÕî
+WúÝI²dçJÇÒ)µÏí@±îé¡~-\óŽé«g1I-}š*
ý/éÅŸZÓ¿vØÐ¶gTì,?MÕìaVÀæG=@k+49ê[MüMy,Z(kB6ŠYª¥2³Pî¡[gÌVÄÙ®~ÉÒÖõᚯ$§í§¿0ôÑ0YŠ&³jœ÷Ì4YßLÃ2ÐÎî¥þ_]ÜŠ: ®u£ÐŽ¿!ÿAÊg=<|d×Hð>Aº:`7JF=ZL¯äôv·Üé+Š)õzðmo@æ§.] ýAOéš}L¿FØi
+ÑAaçÃÝ%éþ1%*šZOÏŒ(
+/²'T
+Ñqº¡¡±²6ÌéoÍ
;fá¯Ôùrβ'ÿn®MHÒÈýy
+Úšß? €º·1©ªÝé~N')z@úuhøÃðržää«6BÙ%¡b}eóätM¯jnÖ?
+¡N Š
+fM&$#ÛµÊ:¶K.Ön;GI&rcÄߨ6É¢BsIlɡȀvÏ:ÙH'Þ+ýÐ
+zVU,uô.§ö6Uûö£š<¶ú9UëjyÂ*äUÙjçrn&á</ 1,Ê?)!
+Î"2ô/&ÈîS_ Bdß:nW&=ç6$4ÔÙ»L6$hBj¿,Ýì*DO0J÷«"ØD(«'[Û(r9€3Ò!Ýâõ4íÂ÷E¶,Æ¿£ë@`En£ÎîeðÓv§¯£Ì.ÎÁT2äÐq"ûjKPó×µ¿E3çßÐúÂuÏ{átOd
+6ŸyþÌl?õrzYœ*y]>)kEÃGëªÛýnÆËí^¶þSïPž.¶·Ï+ÍËJõ¢Ýª\Ûõr£}]«¶.ù·÷8Ì+_åCD4ö
×äÓçoŸòn}£3 P° 0ÖÎŒð%ô;)ºãTûEöQ¬4¹ª¡':=<þÖú2a0_œ{HºÜF¢ä$_?)c
+-B×äÀÌyŽ£ÄÛx o±A1Þ<u³k@!tuuTjcêî1yo2sfmLÓe+ïAšéò6ù@êÇœð·=4l_IÒÇ€³ßé€,ç£Rd»ŽHºrâEÈ+L1$11+89Û£ðûÑWèHrQ4ë;#ša]œ3àp®)¢ÕR°z?׿«¿~³øë>ÅÙ
+È%0©¿ûDÌ#ïùÝþS·p¬HSœ¥ŠKÊ~Êì$> ܱ¥žI J:@ÊiÉ-(*`^¶<}»`ð`õé1×Dú-B·xËšŒœØ&[uÚKÅ2OñÀË®ÐÀsÅ¡Ju4žeFÇe/ñå(ÈWÎ!í€BZ?wéõKºiÄ2fý{óXœ/¿)_µKµf«Ù®·[â{üœóäëÉãyy~|ëÜw:!ýÎ;¶ÂL},žå§Ó§xϳóJN]Ê£^š¬Ocë³ÃÈj\{|ëŠwì ýúÜØ£äOLüA1Ü·ðüïõŸ}4bêZ,åÙBkÕÎjÇ4šöš²ÿ`yÍÌŽàVeàß=,ÅâHhJ¬ÿn1À6±z¥žÆ'+ŽÔ+!Na%ª§ÀºCTbÃÜøÖÃÐ Êèê$gÇðFËÜç€R
±±£«d^5ò)ý¹Ãñž±äÙTÈÓÑàÞEBÛvbzŽ@"£Ci|«Þ:ékCfðIHgÊ>ù¹pÿÙŒþåÑåp%0(®ÑÓc pÈdG.4
ßäÞëºiªÈk+6íóÚiFb 8BS©œÃÈßìéЬÜUÉäí€Ä[P/2#ªX?÷Mð©=l;b#ä #1(
+ 3·^ž¬Ý4ž;+~\æÜR ¢²@#M3ÆÅrv`&ÃÙÁM
1œ°ÚîLJál?x w^+±dàU
+BÖžŽf~Fа9ä§=¶^è,Ýó6ØPQ¢ÖœV°c¹ŠëñÆÉžyîºQ®+v±zÖŸ.VªrµX-Ûåbcçž7ÜqÉ4|çÌ °íwðÉúÃw~:}JóþEnZ!bØâ z{ü:·W*±2i!](ÂËãÇ&5¹Rp¿¡Wþ}]'^ª}è)#gR[5CÃ'yì#`šÐ}i990á0}X:ªÑº¹ÆHÓ£õÀx;Ô©µ.Q7Õ*M«ìÀÍf=^wfF!m?ïݳ,ipK.¬U`}XeBÿØøWܰ€À(R>§ÛxõØD`l]ø€y¯¬[Õsõ+뮡Lâá¹cæe±Q>kWk6ª!~ÛÁÍ)æ$eÞÅŽýPeR7+Sg_^=%Æ>+A'vþ¹Ú(õ<åTø?Çεø4_M Éy[ºshBul¡l§û÷X6VââWåš£ŽœôŽÜJè¬Óúè58åÈî<ŸãŒt³zºÙ}Û<Ê"=MØÃ¬É£ÄÖ§R*g=
>Š;Šä_bgòñrèazRÇ,Ç*C}~Ï+²ècûe9÷^xù ÏNH Fuü~±KÍr:KÁ]È×ËZïJѺØECÖA£ oîêE÷øºü4LmøOÊéï°ôú0ÕŒ:ÇsÑš5í÷Å«2ž*VÏ*ÕÛû4ëåR¥ì|o5òÅÇ~È4æyeç:Ú?Å9®!9®!:.*ÔsYðËòiQR(Ï@îj7LééJçémÄ*ñvÔÊ5,åÈ®ŒKc·"FÑÇÖ®èaí0zdK×ã^ô/ìJe@Ðc®ÙobîÁkrA׬Ãd·ŽTC奵KtQÇÑ<{ô`Ún
+`§q:Þ*èœÚ` ±
øVSÌlwúŽ!ç§:mQþu¡ô~¬l2%ÅêÜ`Ž%¬L$úÞŽÿóL5;Ñ5fÚß³~€ŒË®ßþ,õËÎ @bóÔTÆ51!wE1!à[5Ÿ%&FO`FJð"FíõuÅòa0"w<£M»»ÀÔ#!ßëÔNÃK§Áå##Y®þuy£ûö2âc;s6ìÉÜw`}ÕÃh³Œ2ú:Οœ~7Ö9ä»RÕ¥»3áÍuÙ@¡Í€UÏ(jäà€£ô;£>pÚöÕ©Ó2h¢<öì'ØØ(QÎîž$÷H,scLC'Ž;Açóà©[ÜzaÐÂß6Üãþ?çH>/ØW-X°[l.ÛÊËVyÇŠû#]µ!âÞ¹rr`Ç8-ÕÜ&u3ËíѳJ³Tl5J±ú° h$Y,+PÁõ*Ubk¢ë
+/ÌRØÍC/w:ÔÆõlôÂZÂŽûm:ÞÃ];%jôtÌ49%
+Á=nàDFªªHGísJÜQteœ€9×E ~±Q¶Íõâ+,K;¿Ì¯ï^5Ûb¿{ólñRÛþÑRô¡Õ 2ó|ªú°zëNÏÓcSgsÞ-iö-måô/žMC:éGœàÎ c¿ÛÞaŠ}gâït8jbÚ®¢ÍDõ:p;Ó;Ù`L7øéâÞËõÈç¯uhÎÞ!
+áEU9iÔ; }æsAf¿¯QÕéoÖCÆÇsGZUQ»øÉ¶+mVïÕ\¢Ú~5ßï;eöôra¹)>?e7 $MÕ¥!£ùÐR¶tøìûä"`;GLK1cÚKEZHŠœdM]uV"*p$ÎM\)RØE
+úfÆì€ L°È5£¥3ŽJI Ò.$µµšiZŽÌV£èÿêÁÔýšÒâ°mG%×c®iÏ;jÚE¢Ü£@Š zÓâP
+бñµtŸ"mýh+?;°Õj7ÊÕò{[œuµ¶
+k%ÓóÔZÈ~sÆöäê§ÇX±Y÷&m{Üû;GÉf€ÛYØ_êŒg¯"mµk»!P-Ÿ-©%*wa#¶Ì³7N²ä3îC `ÁŠë%¢Oͣ¡{Y"Ú6i{UÇ}'nýÉÍy<ïO«ø€HÜRO3ØMÀÓøxîX°Ô(Ø!ÀmCiZœC~sj=oá°oZç ÷f9¯${ŠÒÙ,ugSõ`ÙHlÞQÈrf-lwÄL·Ûj0«?³(iÇ*v[
+?'³·ìÈÚdôZ1îT5z¯*Y«ÐÖf`í¹€Ú*mãVl\TªíÚ{EÅF¥øîª,lø¶N[ôÔŠ-œ
+Xóâ«ÌÐOÒ54·Ýí'9øg/"c¢£sïfQÌMG|úw<õg§-=ìö¹ì»uòd"Î[سå³hoÞ;Üs¶îÝáœïg1à[žø¶u®ô)bï%o«[ÞfR²-Co?
+ÚAXkÝÑŽM
+¥XmX4,52ÚŸ3=¶+Vy(Â\L/åú¿p§ÖD
×h[`}0`X¶>¢M|·XÍÿ ºçÄ^x-Ñ8g»Š?¹AØl64ÓõÖTNstFCü~¹r;£vìì/®+°Ð^PD¯k7šV°a>ùºâçî·ÉínáD
+Ov°óžçÜ2sÅßÎîfgô믜ª*µTriWY-Ñœ&:mìÌÂ6úM99ð¿I£w5þëí§6SÉAÃäðL!ñ
+§WeŒß
ÏÊMý¢ÝÝ=oW~ÎøÙ{àrŒ[8Nj|Mí ì°EàÄ
+?ï(8µg_Ýìqpz¹€/á];Ççqz®ïEXp¯#þÔ°ùí}`ŸÓÉnB&Æ
+ï sa(cÕz@ãe}jº{Å`ð¿LuqÌþYìýP°7j«æ=ºxÍ÷§ûsRqBèÒâZÈÜÇÒ5ÿQ©A6ÉQn)I4óCüŒ]+u€¡P{. ,ö@CºâÎ$Ž«ãI}ÂQŸþœ%lÈœmò(`ò8iÚ)ênÜ)iÂüß#`Å &¡óåÀájùëÕVsÈÏAD¿'/ÁT'è
¡|ùüŒÖHyl¢ØþsrU ³ëé»ö¹ ÇÄ&?ÂúþÆïZ«œ|Àn¶º`
+NèœãMLfs6tÍçpÂl't:nÆ€~Dhåù¡%úº|éJ¢3>îÆù¡œùk§ÀÑPK3· ÒPK,63TestNonRegression7/scripts/TestSaisieViaScript.javaUßoÓ0~Ï_qöNàµ4A»MCI$ZñxpÒKjHìÈŸFhÿ;ç$k,ø!±ã»ïûîBÆ¿dàb«
+ró Pya,ÁO¹¢${åhÿÝØTÈBÆk±És£ÈL*{ÎÿÏìÉØªfÌšE.iíVmÅÉ|ØL¡€XúçÑ[ú·áûm)£÷Ä*±#¿rrkqÇ<¹}÷å#fÚùKÖ+IÒq4(ŸbÊØsFÿÓ§µ>PöjR€Ðù€§''À-$à7%u
¯ïùíp5spÌydŠãñy»-KZR]åŠtp±^g2â²)vyÍÔ«
+NïUíºAëX2Åò³LÄä
+·Ø÷#38Ÿ_útüöt<ÉÙl:Mk{*`£wµDó;¥ëœÓ (£LÅgÒ¹¡áOÎ Ò!p·A"c)ª^ÁÏ¥%CVŠŽàûcæÒ G£¹çò8$1Ç»aÕÀ[ã]ŸwEÄ«p(ÿµÎÑŒÑÔjo!7F JnoÂ÷ mêF at kk~;è7Ä+è¶.
+íèôžö}Ùýîu6£ҲX£Kç£Þ& -C¹=HDÄpzi¥v
+|A¶:Pè?Ih«FØæ5 ²cÒöÔ]pΞiuŬc®×l
C~K.˲*ðõ5³®óã~ßùñûΜvÞ1÷<:Vø(ÌKæ÷ÂGœ=ï×`}ÇÉæÊÕ
°QîúÐî,=çgŒ!~?&ÈŸÓŸ®>8·²òägO9jóBóºjn
+~.ó//wGpgçý">~õKèãOru°kÇ
+wtWŽu9~ìK×î6"öóŽš_ÙÂ$ø.Òñ!~ÏÿÔV|ÃIÈÍÐÌ#éðšGǬɲò/bâ~AaìÂ3²¥eõ¹=3ÛËãa€ Y>PK;V¥ÃJuPK,6*TestNonRegression7/scripts/StackTrace.javaSÁnÛ0œû+£;k€Õé[vY7M±vÔÉ!Ñi¢ÿ>ÊÉéÑÒÓã{$ÓÈü¬|îTC~Eªn¬#xk)ZRZ\9';ŸÙ»ø.-ÞºJÈFæ+¹kkŒÐ¶ª©Äµfÿû*s²®ÛeÍmQKZ
§Äh*P¥Ãy÷ÊʯR€Ð÷žñhÁÄfoÌQ|N?;E§ðØÖKü1ù°\ÊVÖ4Ötµm=¿Z.Ùâ''ÒaãGÁ²/ú§kt^YG7žV!Ê`*ŠgpŽáŸ m
+VÁÑ~©Ç³ñô#LßgÓI69íñ°ìAWœ
+ç÷ÊôwãšiZåkéý§ðEÀKd¡õ\o(e®Ž¢îZVÐŽÌÔÙÖA(w@BÒ&±"Ng!Eàñ$Ó°Í5îYÏ÷ ¶Ý%oÊÝ«JgÒ
+ÓÚªj©ãÜÝtOVÎ>z?åÜPÄgndŽ;§NÜÌ
+ÏöÛ,vdðÀ:ûÔ%AÍAÂ|-uÓù W49€l9*,+E(*ùÒÇéæèç¶%ÁU1€MYï àk.[o:¬(á?ó€tç·+ŒâøM³æØÐÝý ·zr^iœEù$
+ãíºRŠÏ¯üaR3ðd4a ûì??dL1Û¡P%$`;æÈÿVŽJâ
ª[-C[ö8MaWÉÆï; ¶Öóÿº
+é÷þËH8&HŠeO<ÀKt(¢è%úPKDíH·òPK,6(TestNonRegression7/scripts/RuleUtil.javaT[oÓ0~ϯ8L{H»áŠ4A³MMÀÃhð캧©!±-_Ê:ŽÿÎq¶kW¡rÅ·sŸïÜlÃÅ/^ 8a¥ñ.OYm=üäsÎ%»Î¯÷µ-7\Ì ]UZ9Vꢪ`7ºÈ÷SûÀ
×v±*ôKbT¬â~V>°îZijZ¬F'ÝTºCå¥èØWmBÉœÔ*ÿOýV³ÑÈ ñÊNVX[6jfDq¥ÇÅ^·@®f\x[øJjÂbÆé¬>¶È=Np
+ÇjlYvÚ_òàgÚWZ-*Š%S²%Œ&Ç-+2ÊðEm:GëÈ%8ŒÃ¹³!ôYÿ
+¶Ø7ÜyfBáðº"u/{ÛËúÐ?ÃAãÒ»Ú!
+ñ;©ê³^bžDÉ»Pâ7j'ø$@B¯!8jr!KéÇð3¿ g¡
ØÃšÄ€êô1vÐÉ#AÄq2,«@ÍUãúÍXVéÒV{ÔÉWÔcÌáWDXWkµkÑ«ÚeÃÚÖO4-æ^{^^q/f÷ÔòéXbCÛJà±CyVZ8."ÉòÕÑ®[6T#ƹ>K;Ï1£4íöùèjlëÊŠÕVrvâö']Nê`Râéä`rÌ«sÊr(JÃAº×fnYojžP}¡¶ŒUQe{= ÐŽ#o©¬E·}ËŸBºžvOã-ãGvðÆ÷ðlëùž"®Å€Ü°âôlö\êBJE
+qå Îsz<râèhWR£l17ÄÄÛ"u*vd;JÛX¿Q3¿4·ÈÕzwW¡¢ŽÍxŽï;/ŠÙ1Ð'èß¡Ò÷ eË^"=%»WëYs×Zºà©ÉÞ³ßSòPKÐåWà·PK,6)TestNonRegression7/scripts/SiMatrix.classÍ{ |TÕõÿ¹÷ÍÌ{3ó²°I6k$aa $Ãd#ÉLÌLPp·T,Ö}Ck+VE[ µZmUZ»Xkmµ.]µÖ®Ö¶.EøÏ}o^& j¿÷ÎÜ{îö=çåÞçsG¿õMÖèâK>qø²O|EÜÉÝ>zFìñwñc/Ýíu.Ÿê#ØÃ%û|â^qO|MÜï§éâ¿øºxéâa?åý~ñxëŸÁ\ßÔÅ?
+ûuqÐGAtqI»_|K<æßèâq?O0Z}G<ÉOùÅwÅ÷üâiñ_<Ë£<+óãûüø.ãñ~È1לâ'âyŠ~ªøý3]ŒÈïóã%ù>ñKñ23Ÿ¢_éâUCŒæ¯7ñkCüÆ¿eßñôÏ?p£7ùñ÷ñGŠÞfxþäï?ëâ/>Z,öâ¯üþ?þnâ]&ÿÉLïqñãßø¿oñ¡&Œâ¿â³}l£ü>æ$ê€ôSÔüÒ%ÝLyüRV+œ~é~¿4eºÌ2d¶!2ǹȬy\7
+0dÉ!Êï9Ìó9È|`-GrÍ(C6äÌS5äÉÇU\UÈ"C²Äã
+9Á¥\;Ñ/'ÉÉ>9ENei,3ä)Üït¿,¹dýõ3ž|Š_γu9Kær!+=sœ®{ÿ'¯xæ.œçµ!á§>0ä|?Ý$«ø±À
+¹È
+YmÈ%<ÕK
+YÃxÕòc!ò4C®0d!ë¹l¥!Wñx«ÆÓ¡dr
+?ÖzæN·fä§Ér$-ÏË3:ê!×óÄÎÌeøæM©ühäÇ&Êst¹YÖo¿4ÞÚXj
7EJÃñææx,QÆh¬±tiŒq =%#ç'MZº±µ4º±5ÒÁ;Ml&6&¢ÍmM¡dŒµŽÎ¢¢ñØ|« ZË
+F©QÂñHS[2+MÆ[¢¡Òz~vpú#ɺhM(Ù=_Ьpi"ÜmI&JSÝ W×|*(ki4©mkÞimhBIÎÒx8ÔŽ*Ôåßv¡§5hkJrm}ùé3\xâ3ìÞiá*AFÂéÓ33&gú ®\ÉMÑ ßóîLè²IP& ]o±arÏÝ'·¶D¥U¡d`Ú*
žJF, -ÙÜ"š°ÇX2¢qÇ0Ü¢%2:FÐÀŽþªV^§±ö1ߟìîÓÔY hkuFÞý^ÁltQ
7×ZTole³ o]Ž1J¶µ¢ÿ3OÌo$4¢VО㷶Y·2þd+Ž!ÖžüÄŠâtÆY÷Y/ŽSï>,³&òVLÓÓ¬(AcßÕ=ãØ¹ß`b«X;ÑVÓD| â>æI.Ûž*HDlSSÍM[óâPbQÊ!a¯qšèÞ_#tA£Ë 5µ¬ÒfØKßÝÅú
+*êâ.CÉMü,µ,eºÆ6Æû{jJ50ªÑ-Ý-ñpLÃÕVÚ/é2®Ë]«K(æ¥ÿ+ú/ 5Éù¡dxÓòH«³Æ¶ÁÁþ¬ªßvš¯Eôg°Âþ0a''Ú6à?lË-!ø.QoÇ`hGºkÁ€v37v7¶ÆÛà|&ôw°Vа4`W`y]ÁõšÎ¡:nÞs?©·FeaN;±.ÔbyÇ?BCŒ
<iöSRnš
+rÛðW?ÎQ$òî
+¿'?ÕÞéºúÔÍE?`/Jæ%ãÉPÓBT"R®K 5E[lìV©XeÔÖ§mþ̧\Ås5ø[((ù?>ïµ\fÇ$:[m¥¥ýq]$Çl»£B»åcNéï;õµ mZrã#ðnf7!häqpRýOc$ÔÚ§mZ&+hÑ-jž¢Ÿ"ûüE]&uÙŠË-º<OH²!V0ÜðÿÑÆrä®oKMOQJêÒ¬ÝüxZšÅÜQd3À3à,.5gó#MMãù¶ýŽrkßò³E!ÐÍk<±
+Ö
+t[€ne
+šlRÒcO(QlCÚ/bH¶*î,§«^ÐpLUê±
+õ¹OÛlÕG±¯²É©vãmGN
+¹ ® ¥
+©`-&«?þªŸO±{ÖFÓg«J<Í¡hSSßÑ#ý~ê)ôOÑxFüx(ÆäfôŒ~ÌYYî0MXé_TWgzIÿVÕÏéV÷²bìg_²y?&CGaCp¡
+Ñ6¬_ް«ÎïÉö{R+"ÿæ·_Õ¯onYß¿&wúÅŒéu¿²ÑØúNmôöYáx¢*Içió€z^ßµ)±\!0ér ºRÍþ&ÆÏµFtñ8tYö|K
+zÑɲ²ÖO£4'à8ê·Ìeµå>ÙrÐÿPí1²¬yÞ¶Xµíoü¿ÍÂú·l
+3ÑÖº%Þ
+I3,®ÊhŒ9`¯Ò ÅVG¢°XztPœø¬F€%]ÖÈ]ºñ³Ëp>Ã|u€UTMC
+=Ï|h'®µÆÌp}î«ð1®¯>7Ye¿:,À
+ÌιË!².·òy¡./2åÅòS^*/3ébIß§ôýÐËÏô"ý\PnÇF×ÚÚÊ{ÒÛåçuy
)wÈ+uù^;Myü¢.MyµŒÆ×Êëë§Ly=ÏèSÞ(o2åÍòþ*w
+Û¯ÐñC·S0t@¯òV¹Kèÿ6y»æ&Øy7ä£SÞ!¿lʯÈ;uÙbÊÝr.ÏåߥËV^ì5æ^SÞ-ïApÑskʯ2fûøq/ww)¿&ï7åòëJN$¥2åò!šVvçø°)÷ËGLz^Ó壊üüŠ)Èûyv6ŒÐUÐ52ÒçX×Óa]4å!ÙÀ°ã vQêšKò[ò1S~[>nÊ'äw0šŠ(ŬtO¢DL6éY:¬Ë§Lù]y Á]¬l65°EÝJä7Dò{Ì€ó[°òLù=ù4?+Éí*4å³òBSß7Åx,&RÓs7³žíŸæwÍËgüÎ9?DeʱŠü1ÏÔrkÍvÃïÝoüÃ
šIVäò'òûº|Þ?/ògòESþ\ŸlÍ¿¿4åËò$mŠü|Õ¯Éןò
+ù*9SþZþÆÄb"ß>©çÉùVºÒogŒ ³òÓsV.ÉÈOK*UC+äÇj~+o7Åâ&2ÿåjŸJ®À3$¿·ôj)>/®@Z>?ÔnkÊo×ä§Ù|ôá|.á<?%òøÛõ<o9mÛ}LéwŒ¥~Ïê³[þÁkžQN~×$G-+-ÍQb|^+¿#ÛÏü.ùøÞBßâL±ÜgË;;ÇQ]Š%1³xÜ®yÎ,>T&ì5Z+D-üY, õ3SþQŸË?òùg]þÅÅÊÄÙ:3?=/ÅÓîH0ſɿëòŠ|WþÓE£)ßÿÒå¿Mù¹·¯]Ïèr«fÛº®T3mšQÅ×n¬ïËLù¡üå®âÔYìPZÆñèù
+ ŽÖú=¹Ëï`6Uïü6åG¬þÿ/°dºÐ³²É˺ÑeøFç÷JCs/á¡=ùQÏb;ijŸe};Æwa5ÒÜ£&MM¥¹`£Å50\òbÍ
+;ŠyLM×Só¢Bó¡ÍÏÉy¿®eZÝÉ.Ûpö ÌE¯7ÝÎ,¯û]š Â~ÿ?ŒéË)v»
+é6ïbdýœéÅÍW`Å>NØúÚÔé[AÒ?¡ãFANø`QÐÀR
+Øîu߀ÂlÙXmKØiR§DpYz_X Þ*ë\þäî]ŠbéìþÁi3®6ÝpêÆ@UÆt
+{üŒc úŒ#5Ý:Ì^áN)èùP2S€Ž[£Þ`9N`þ"Ô
+¬U69a{Öi6£m8n#ìö2j#êlAêÓ®6õM¡D*ÒµHåcêGgUqÈ÷ç
+ój€ûù}IÆ{c4ÖP¹Õi2¯Gmé©DXEmÚx;šB
+è)¯ Áü³X:Ù±ñœ¡·[÷õ!üóŠ¢:á×é4y\_ý;ßð¶±
+Îè^u>÷ØñUFºíå'œm_Kîáª:×È
+:ú<¹ÛÎë%E-écÞAÛ`ì+i50¯pb~<ÞÚEàË·y
ëzÒÀN-².`t*\«.r]áxLqN*]¡ÂË«W¿¢úôõóçÕÏ_Œ~ùëëêWÌ«_°hÍúõüeVfRO€ìh^OZŒÊÚÿumRZUTw_Au?á×~÷ ñU|uñ';Uýí»/®
¡0€ŽÕú^®::`.îíŠeT'Þܹ¿è€é±Òj<ÅÖ÷í]áxÂÑCu]M㺟P/йÑm¥œÕx6òÉJ^Auϯ ÿT±b?þ棪ȶÆ1þæÍjiÄØzõ;ßÑ
?¥%Çá7ñTînà)ôbZ±XÁzï)WÅ66UAö=ôÉ}§ulÖ®¬©~,[žŸfYm=RÕhbuš5æ`â:¿Rj
+l©9ÏžÔýsF'S`élÿ?&äXÉöÆöÕΟm
+t¯Sž²ÿG}zš[Zèî1äOízžgoZjÅÓÚ×Núœ(ëÞ>eå{bW}êI÷rëÍW/ÞùÕù|÷
+GÑ\Ð%òš÷~«voÂêfy«`'çÛ9ag}VVXÐÇäÓF9©³êºo³ÓºOÝÔ²ØAò®HûÚ
+)Ö}ŒvôeÐq±{òq#">ÕX²]Õ7
¬u©¬+åã¯6ûÜÒÌ6£¯dÐêK·¯žúÑ«})ÌÉ
@©yF_GâéýrY×aÉb\
+xm
+ÏZhÅ(Kã±ÆTa"
+ìµpR_ÝO:ñ_*
+ÅBðJà){ÂÆÌ>P]ÖI)ÃÛ',Å\Ýìšô ÇÐ{»\\{:82ok$ÆTÙv2¯remÕŒÚùàážyßx
+l÷mŠG©²³ÒL»£Êêe5óêê,×€Ýp
+·,\žlE}±ÐNÓêÕ÷Ä«ªªëæÏ[QU×
Ób{üà ð<J9GN3êäÀóÿmÐHôiäãyP.Ÿ
+Rïçèx /ý~Ÿà×bø(»(ÄH{ÄÒâQ&éyõÿÄpýjÊ€Óé§ Yüv¯øõýœùøÉîµ
+ã3i÷Z|\û»ôxùéÌŽM»GŠ^R=
+úýuÜc³=ÏEÉ]$ŸI~èEÅL¡{?·cá€ãÙ
×bÉË0ÕMKQJçP>mNz$œIQ< A¯(Àý
+¯ÒkXOâmp{ð^ñùÖ$MÑ7ÈsÌq2Û)KPíøvÊt èIÊ©pMºÚ)WP;
+ªÐ]t·S€Õûý€äa5Ïz¡JP)%eÕÐZNç©ÏF}Öó:œAnp§_raUÓè7ô[ÌósÖ³~G¿ÇZB 71ÿ·À©?¢ämKÓPþ€Ó;ÑÔŽõÿYáùÐízÁapÁ}àp)æyVy9Öü9à°8\Ñ¿Ù8üTpøG7þAïö~/
8%>_Âá1
+â=€5ršÂ¡ÂÅVHÉ
+
}ª=AO;
+c<ãÔmæñL)æFÐh§|T{Çœhämdœ)ÐßwìÎ4Ü&`[]
u}ôjL×кÖÓuÐÿëé\º¶ÑMtÝtoUXnÄ*6Qýþ
+D×ÃÿÐûè¡0:zš€èC`>NUH»é$jPµ.FÀAúrémôB:Úü:ýœeï8«îS÷1êÞV»Ï}NRè
RNÇtžvzgâ$?B.l%ÞÒ²bêKКv-"a9Ø2ôÃØô'3ØwËï8[o;ö&Ó
pÄ€"ÆÍ±.èîÀ»HiÀ^ ~7¬ËWÊœÐÆûèúͧûé4zÖÑ×é,zHaœ<
+mkÆR¹ÐKézÈÁ0€b4%z_%ÜÂr©VèÂÀè'ÑÞ7!.[%GPb¡)a]^£O~]¯È `ºa& %²m_F×Ù(¿œ€ïpo)é#4¡J%±³+
+UzÛÀÒÛÞ îzÑj*|'óú~wSwr
ôyŠÍQôÍv¢Qyf0#Ó:Ucäï;¶+šw_FXüO
+ïgUT¢vàêøŠëáng¹^
±²P7Hàð£Ñb È §ÓL¥à~ôµ@=¯EÛ€.kYßnwDw»Oš26ÌRQ,DMÕQ¢3è1T.v@y0÷ËèÔêiÛ\bXK×ÛjÕ®cÞË
<Å%[%X-wR±.ò_ÐÔÞñàý+(3eI\>1s ù`vÍÐZ~N«pÛâ/¶ÅÊ¡SôÇiúm|ÝØµº50cuk°êP\ŸFË©8D3P3SœÝ9³ÔÛ3ßhN
®y¶ä\AwÑœãó -ó,Gà-
+z1re
K+óåùXÛÓEAWÏæ*ªðkefÉz§*×ÝyŠ]9±"C+ËÌËdES§=yvåä,ôô3Yi~yvPÏ3ò|yf^f »ªtÚ)öûÞvÏÝÛ}x^ŽÝÀ³.]áVQoBiÞ¯?Ò0ú
±_ÏÅ®œŸdŒÉ-ðwÃS<}þvúOaQßMý+¬èQú7vü{ÂGïbÓý
+åU
+ù
+OŸRŸ,p£¡Ùô4V3F
j>EóòeÐ>
+QfbÊøi']!Æ¡ÌYÜ ,u,ÞbÕ²ì#±_Ô(CÊn»(Ožl%FGl%
+Ó4%-Õò]§åTK¥žª¥£žóÉ8)Y«ŽÖRÙâbFÓh+ñ1Ü(Ž^ùâCó!¹ñßGè2]%bÛ(ÍdÆ]A÷AZPî x2oœf<BÛi £ÅpÕ9KЩA×ZSéZPhY;-ùPQqÝ×iåÕmÀsVû:zÖ#TüÔ¡úLLbÊ*ÕmÀxâßær3`>€"uÇÁäHrÄZèžÕb5`¥qìÖ;Å8ºO:.U&ewp\ÆJ€¢Rvç¥6.E±z¹¡.{D DçAd¿ReÀ/@ùàŸ49êõ¶r-ÚZ¬AõÖÿ ¢ÔÆßLÔEK°œWKzNßO P¶ØZ=¿Ta³ØžÊÌrÕÆ0à)ÀY8¥^ç¢37Ç×ÞÉÐte)NîcUÐ1æ9T)æÒr16*ÇÿbpQ;^¥@b4E1H.(Ö:1QÁ5Ä$W%S ù:@¡}L5-/-Lüq
+ÑjŽâè¬YÅ.ÿtd¥å1ezQP/fš,óy9ðS|cR|EŸÁî«ÁôAa¡¬á늻÷{yß±¯£ü!ÇxRf`9ébŒ]=¢4Y¬¢ÓÄÀ³µò±Lò4;ô!ô+V~ÎÐoª3`P!ÍRúŠ#Y¥j=*GKÚìÚìÚlªCwÿ¡æä1É`ØãY#!Ãæz\o«TÎura$€
+Çq<£bôšš«güyíÙÊÑ÷ Ôœ4á ÁÉB³¬°
£ºõžBíÞgéþÿlAùCÊ3-J7 4+Å¥afà A_
+.*ÏQÆŠ"R>°Ã:,KSöPöb62¶ÖçlbÛÁV"ÊT6Sç0ÃÔfŠŠ[@öæ@ÆæÀÀ.ú_É8¶x3€-r[¡ Ä^Ør6ûVø(&.¢âbzFì J_SÅ4èóºQA¿3!])NÓáVÒE¢\y¥0LRšL
+ôPhG^rÒKAzÉ1H/9é%Û yèy1CÌÄ;û'Ób
+uE9ØÉ^ާíºÓ9Æ}€bÜB
+!ì§Jåcæë¢JÓÅü-Ô`Ÿèæï=Û;X)Ô"±Ø:Ø5(ã³M)»BYÚ©÷pQ*vËõ"µcåÞUq\U³°u{SÞt±{úærÀßu'ßßw+·!oùMwÐfq7µ{ÒŒD#6G(mPÚ¡Žjž
áÍÙb8%#,ì:PšåEêfy ¿Xüµ¶»Ï'qA²·3ØÒËX¶öÈöjÚ=
+ZW1o3äo²«Èé\âí(×:»!î%dN«ò&?Hþ!é¡'1Ä;a2;<ñÄð0lò~ádHßÀ~Cïâ*ŸMõâ Z/ŸC·ÃØY?HËG,{±ìqIJǟ€ÁIÙõâ4änãrDU,ñ+Xê!:%¯tÅËÒ!µ7:¥ReË qNÕ zG4çaô,ŽÜÝU4È
+¶*÷«Ãv:OPäñ|H¯ÿÖr
+â6'ºTšs.J "çbŠüé"ñä;6ŒþÍå®áÔÌÏ!_P@üÖðe*¯Ðtñ*âè×èZñ}YŒíž<¬ÏÈnG"»ìv$r»#ël`!Wªø`,] V©»Î«DŠÓ&qºÈmÙd(Ià
+r-ùºKBöþXãa
œ?vvÛ KŒá>@²õQò(9H¥«þãb9#îaÄ?çlí]7AgOmôìû=Àý/
+Ãýp@ß/vHWòït Þé@œÓz§õvêm6ÔAÀº{`7uJùK¡ Þá(¿7à»Z ØÂ×ÅÛøÞiã{žûôVA¿mo
+Ò@ý|
+Ë+R©E*°eíàr¥@õGDAŸ³%àmdH3wÝA;:?Ÿ±ºÊÓ;Éé4+¥Ne6yäÊ94B€12êåPÈ(!Ó6OÉôŽ,HÒaGH!vtØÒS:ê^øu¶PÚ ÎRBJÀ®WBÚF5Ý,ó§,Ô@G©Þ±IG)ÎÛÅYÛ×7ªh`ŒqœFPí@º¶
+ÎõQzÞ((^î
+ž:45=áSBZìTt®ÅSGŒØqb!1Å¡",Ðv_.gêW-ž¬ÓŽþ6F;ä?}s±+sIQ1üµ]á»zwZ©Cµà$'%ž©B/D }sxÉŸc¿éØÜãÓTåšC!ëÅ*±Uãac§6q¡]Ž#Ÿ€°3sHJY²rå.R\LEòTªKi\x9]%ëèY¯Ð[ÑV#Ø|tB£|`è.客¢àãóÚ[ÔáZ®oŠe-øUZ·î©@CäešúQSmÔêÍÖ^Ö¶(CLâùŽkÉ@ºœÜÝÔ4 îà}ãN³oP/ºº3ExQò&ü%6ÑÑլޮît6ãnÇaíI9¬»RŸãºô;^
¯?¿rüÊëyœÜEwv7Sº©\ŠŸÊT^úYh_ùàÀ~ùלåCùלåÃzà>îb0wö5ŠLÝÏÔPŠ`jXú¹ŒFînDÏØ~Ho08ܶ90bsø=X>²çqËi-#7îØÆàqII.yõl(7P¹S¥l Se¶n1Ú-ãŽO¶Ðò\úŠLÐGròaÈEŒHuò
+W/Ê«Äò&ñ¬ŒEüHîRÊýg5âyçäìyú
+EÅ"»ÄE¥ÈâYq.(7[D«²yâjP6ïT±]$Í«6ì¥bš,Ú'
+Äy Ðb€8T.}S[Aå (µØj°0è0ZçÂÁfÑâBPCÅ jÓsžÔ8³âP#Ål5Zm¡3Éó1MÔn²á.ÅúS£³)£KiGÍj¬Ú#èòsÐxžÌŸ~^eøD³3cï<l
*ÏR¡|·Ó~6FÀmfâQ&ʱ€p }öOZGÎ#÷À>ÝE~¹®ìn&ï¡)ò«T&ï¥òk=.WáØÒÔ¹>ÛàÙ=íXøÙ¶;4Ó¶G~dQ£÷mã%ñ1!yÜÅ}^\aû§ñf§Qºù+VxÎçñÎÍKÅxÅÕõÑi·u9ËÉ!ØxŠÊG42Uṉ÷XçN³ÌYDmT
+xø;MËÙTÕÁŠÝnf¥n7ÇØŠsþ®_°Wv?FQîP¹«Z^\ê!ŸÇ,±ÑeØÇó;:äc-å1ßlïx¢gïª2JËorŸÉWÉ#Ð@Š×ÕÙÐ[*Ôl~^âÂRl.P.{;Š_%Ÿh{Ü NVöÛ÷W.ûþÊ.0ŸåV|yá
+ºëÜÖœÅ,ûÞ¹§ðhezîÜAD®<ݹf0Ž2o×¹šºóŒÎ5¯h|ÐúÒcåþâ<kŸ² QsÐÃe;=îŠí^±ïØ¡í:7=ZQÁÙò§Ðå4KŸLKå+ŽVþ¢òU:OŸFË×éùÝ,Mw¡ü^ð<(ÿ¬ ßÛrÏÚã£Ë)_Ý$øé{ÄçLØ#ŸSðÒZªUg1Í¥ºSà¯&ö;âÚï\híw.ŽöÛA÷©üöš7Í¢€º!ð€]cݧnl.1ÜÞZ%|5×ÊCk¬NWöáÿîÇþ×€ÎTéVÛ̵Íå®.çÏ.ûÐ
+k«LÓÖ÷á<> ÁòC%ÿëXtæ,¬s9Ö9ÉkdzÁOR±à`lUëxxmn.·m×B?<ãiÀ÷«{µvzVÑUì²KC¿ó4teg
+åãâ'a_œZ?Ïïšj!k€ßÒH3`r©4ÒÏw¬¬~èâJ#ïI×HuѪùÉ«£eÒ-jµtGm%µÁt© ZnÂïÛQ¿[ëh㥶æHÐ26ò×8úémë`Šë¿¬Hiã^G{mÜëhã^[œÈË-mÌ¡ëmmC
+]ŽQq)mT\6gm¬ì]ÒXh£v«£×l³äã;Ô±~
+?§Õ*Y>eɲd§;R€K+sçñÑê<·s'Ê]|þ_«º60ÞuQ
ÁF±:åžóJZ¢d!þx»Ï»®®¢JmÚ)t6h³h
6Öjsh6ÚŽyg%]ß7¢þ6ÖIÛz±Ï4 TK^2uõšÓ
+§REØzuõÈÖÿGwØûÉøßúÇ€ëÔ
£F§@ü/šûñ°,®w®#ö"'³°*È£ÕÅhâûÃiZÊhØqÅMöáQòZo_q»Æ[6 <yŸk}ØÐíZf²Mä¯AÜAÝþXA]!šœ4zëK
Nßšãí,2޳)[Ñ-h©jZŠm€5Z#vRÔx!åªÏ
+ZÄÊÚ|«Å{DG\Pî€Xë`×§îtAYwº Dza;œÚ±ÓËÄîŽïVÛûÀ÷hç3þFDûÜ÷þgÈ%\ÛäÎr[Ü6 w»È]ü?@îO!n
m°¢áQj"_.Côô£Ž?TjU·HߊâÛÿPKGËmY&_PK,6-TestNonRegression7/scripts/GravityModel.classÕ |TÕœÇÿçι³Ü¬d] YA& Y [:I .ÔµŸê£ÕºV[¥*µîŽ"QŸÒjÕꫵØÖÖœ{ß«ZÖVÉûýÏœss'ë$ï=ü zçÜ{Ïùsþÿïÿ¶Ï}ìÍU
+51Ý+fœbŠÈåË,/]$ò<$D>_
+øRÈÙü¶/sŒâ$1×góŒâdQÌù^qXàAQ¢
Xä§zÅbq[,áW¥>ÊKùRŠr.Q¡e,£Ò'*¯X!Vòãj5>Q+êXÚ*βÚGDœO4F~»óõubœOl§sŸ38ßüì,EÅÙ|ir-Y@òÎñÎâÔFN5sM|æÛŸmåÛÍ|áÔ9ÚÂÍkcÁ[ùÒÎuGùm[«NÎã<]>*ÛžÛ}â<±/;5qŸVøÝ
>qØ®]\ä|¹ß]ÂÂ.õËÄns9ß^Á+9Ë8u§þ»þenÃÕüì~öïÜê=|ûŸý*§®åÔu¬À¯ñíõ|{ç»ooâÛ9u§ŸÎ©[9uKþ&ŸÉYoçÇwðãœú§îäÔ]º/ûøöÛÜì{žÙßñ{Å}ÌÉýx@£-Ú*hJu޳µ(ÔjÞ.jnÝmáMk€œµš:ÚºPÖmï
+ïètRuKgQ€¥3Œ5ßX$Öm.E¶nkuE;T$Ú^fAieÓFASe-ÍÑMá¶m]ö¢®hG$TÔÈ×ÞîX€&ÔÕÙ!(³:ÖÜéèA€ñïS:ñmm]5¡öPkžSPáÙê
+ÅÐpQœÌÞ4ò£|Zkž«²3Ž=Òµ³["š*wÄeµÌ.
+ÒÕ2$PIu€=\»mëÆpgchc[ûmµ
+uFøÞ|è2ú"({0yi±Ÿ]1òÖ,|ÖZAzkl×¢H{€k± eÿJ,[qj׿HL·bGsž³Ç4ñ &[e®eÈ#[ëÂ5¶¿kñ7hvtíìÇÊC]aX")HÝ\d.2ÚQ[=º¶»"ËÛ»"x+ªÙPÀ¹=Ô¶
+&åøo+þ«¯Äº aæÐº:Ñ®Ö!Ðs$ÙÁét3JB ôêsBÛCEèR[Qu$Æ¡]ÀËéÉõ9;9Ôebì#|Q=Z¡§¬¬©O.ÒÐjÞRêÀxŠåŽ_c%OhèÀ$ôodRí*4ȹ è!2ËV¢oŸ.£ÕpÀÖŸÑHL1ßn+ƺbu-ð·p_ãZx©m³!{u^mk7³'12]²«ŸŒ
+Ÿ¯JÐÂ
+c®ÓQ4ÖD£åfÃL'µµ,§y°7>¡pKKŽÍ3tÅ2[yØ"Fï|íë:Â2ÊÊàîq{¬J1/Á0(ÈßG˶Æd¶ðÐc=ØA°úpG(ÒYÚŸ©&A|kµ7+áΟ²NìL2£ËÈh1Q×µ9ÜY¿œµöÍ;.:ÄK¯|i6ߢ
+CáMµÑ®eáM}KL
+ùz]Æ9ØÃ°àäØp9ôÑ>îçE·ÊFb8±?ŽXÿ¶okô¯²3å ^×RjßÕr:ÂÍÄ)³u²£#
+ÿ5tí«¢æ ÈÁùU%º^1Ò&f1Â!)hQcoúÿ56+úC]Í×
#ÑÐÔMXsšsS,þ`ZáÇÈtAcmJêâ°ãtGg€ÆÉ¡Õm)f'ÛJÎÏ3YÄ2AKFkACñ»XRhâ{põjÁ0ŽÛSÝ&&¡ø€ŒÎ
.'ÖÖËÜ¡ýÏòÔÁž·g,Aisù÷åÎîèv`HÂìA3òv9·=9ÑhLmžkOi6··p6#1 %W³«Ïw¶%œ>ÜÞŸ-Ü# rÛΪ±.xîlªª¬3|ÞÐEŠ4%£_0ÇŽÕËiwÐlÏkÇêÄr¶n;$Sâø(6°üyÑÑòX-TbÔnŒ© ·ªØüõØVpNݵÛÕÜÁf²ÙÎÇqó,éGÔ¬Èl:V/#³¯'%kþ>lmð©d+ëS<Zó~cöZaεœrÐ5;>æ#§oØoFå¹5·\^Õ{¢Û:ÃË"ŒÌ°ï*Ìf0XŽã ºxTÔD·.ëâ ñ}®'èt1]¢Ó¥tN»ér® +uqH<©§Ähâº8,~šÓú&~€§Å3ºø±xFÏêâ9ñŒ&~¢Äa$ÛXHËè^+§rïm°ÚøO]üTŒQ4ŠuñsqD¯_`zÔÍÍù%æ3IÔ:í'Lös÷
5°.^¿ÖÅo軺xMŒ®7tñ&WÿxQ§n~ü¶xG¿ÕÅïÄïuññG]üIü®¢¿ÿÒÄëâ¯â]]ŒÇâï¿éâò!¿ø_<Ë/>æÔú;¿øßþo?áÛòíË|û/N¡Wžêâ3~{åõ@õ
+±ª}œS
+°53ÉÙNoÓ;ª]Q®š%]q)®žf¿#ÈèmS|CN¶NvZ£Óô¡Nã¢èJ®€5%MWÒ`©dêÊt^Ëøt¡dqê_Êæªr ÅÏÏzøYÃpðíxN995Aš+øÖÍ·9ߟÕùöN¥qj*§2XÕïß#h,f¢2MWгlQfpÊÏ©95Oâzfr¯Ò\îä,MÉÓ|¥@§]ôÅ/©Ûx¢7æbîÕZ{y4¶wïÕÜuµ4ô²_µmmaYß)3ÐIPÒHÌízÕPÖáYâ±¹³ªûÆ,FžOhÚjÎÊ0Êí/Ò^a¹)n9@þE8J;yVŸTÐôÜŸ€nŒEöÞæŠÃ4(wàU°ÍÊ}
+Š!ÁVÎÙöê!dتûnî§÷ÝÆ»eÛYÄr¿œW/ÔÄ·_gè²P3ZAÚbUí±.Þ€-*3ã]1úh@[SÚX_µŸiYUÃòªÚʊƪŠUõM5uµËejmECCE58@kNbýŽUá5v{Óð<Zr\åJw=sgôÕßIMj[EÎËYo¿·òT%+·j@Ùð¶ùÔßü®Üªªrv)öÝc[xÚ p&ng&îjÛÂc{Ü)3Vµ·D5EŠ!p
+©~B7ÐvÄZsËíån»5ÕMeu
+
+MuËëK×âÞÝËO¡XŽÝXÿ¿îX_èWá
+üt¹îÏ5Ø:&
y°-ÈÞ-yËÞåái1pÓx¯
#Ïrx2€ÜÞÌ Ùåò2aí,!~0!ýíjÒ`F áBVEc±V/Vä\7"̬aº5ÐYg®ZlgcÍ$Ðg{Óç¯ë+VVÕ7Ö7ÕVÕ6VÔÖU4UVÖPj²¿?ÀJÂ[מåê×ÔÖ²ÒúKâŸô=è
+ý
+ËKë+Êjë¡÷õHõPuàlưQÑyB®ÜR€{7ÐÇpðígÃTiXÛÌ¡Y[e}]CCÓÚÒê5E5ôþU6¬ª(«ª0ÓÊ5V£úÌÁÆ6nfîáØ±&}Ù ïmûÂÚæP¬VηíéIÚåMâ,®w~ÅuÉ Í0"FJ³$</ád`zÜ_JË7«šª\Þ8&òG0ÕäáHkNq.vJüþhGê¹ýõ:º'öS^ÕPVZ_ÞÐGkÂ/AÅ%#,àUÉÈÀ¶1³wè0k«
dZÇOuï/$,Öb+Z_Q[±
ë0tÉ1 ý¬1¿ÈM2t÷ö»¬Ÿb]2ò£,qß¶,*×Õr*¯¬ªmª[Ë
Jë«JVWØâÙ ËM)fÀÓFÕ»ÃÅë³GS %£ë©œÅ£œY®bÙ²ºúâÚúá£ÓhÎÌ€39cèïÛ¬}¿g-7ÌF
+ñ@.""'yy_)w6åï¥tüÝMËß+èJüÎ#}®B¹ÃÝrRð(=o€ ÇS$ªóÂ3
Ÿ«WŸo Tj€«Ê6òµ€âîúwHóò^©)µ2nJÍ?@êÃ}$®'m°IÔMúª(èZºïXâøuàwaÞ£äÌ/_Ü|ñäåó3TäåÇøõ G~ÞAJémÀlTMt&T²ÊšB'VÐZI~:&ÒÙ4h})D%ŽQ6rQ=}
+M#âæ
+b+t=Ò.üÞ@7âùMt³Ñtqi²Ÿ»òŸ Ô3V{Ò÷Sóû¹ÁQаA-l at zÌGæØ
ûÌlþ=@9%ªcŸ3ËYÐM~A{éô,g7zÆžX\Àãkóµ,ÐÌ5»0K3sM(qç\wþ£41è šYÎ,ÍïéŠINÚ}=/ìvâzG@}HÂJO)žn
Ú):èTÚmÝΣfÚAçÒNw>Hº]ÞA·âý^ÆÊj4úéú:¹#oo€Hý}
+YFnU]Ž
+ÞgNV¥Þ»è[t'ÔèAÉ»ènš2,ìCÊlsßF;ï1é1r}ÇÊu/rÝw'Ú
+\ݯÑ=(ÿ}Vûfhô°øÿ¯œèÂ[å&ŷ࿹
hr*Vô 3? vÓ
+uÓTAó5?Ôyå-À2QÐ$gBê @âjém˳z+u du¥È÷ܲSé{ô$e¢ ?'ähôšÔ I6íØ6}DÝãÝ.~fý6»h|ÝÀîD÷ Â{aâo£Îîã°n°÷ñ
+·Ú,*gßÎàÛ1FÈPnP3nºi_ò=YÎ+ýÚ¿GèJ=ë3EÏÒtzaí'TI/JE®¡ZV[D®¶\m¹Ò$2IWHÑãxWLè Al/}_ãÍ
ër z2inó-·#âötï áW åu(æ
+÷&ž}ÜŸ
+6ß¿
œß9¯£Îw{n²ž}óâwiâ!(ªÁ"¬PšU(;5Í?MYW7ÍæÉ"@êö«~÷±4'juªµ¢ÅG)zhÚ2Q`]&Ê:Yž€ëeŸ¥>ZÀ.µ]jë¡ ýô«Bb>ý£Ýã`(5=ãüðÖ-52DLn©5zzqhôàa_Њvî±¥vÞHš©äi)2èTM+E~j:W£]b<]%&Ð
+ž¿ï÷Ç=µÏZÔ^hç~ÚéAÕH]~ÕïjîŸSy®'N®¡«S€Ë@ê·zä·žó[Üù-îÒè9É]&J=Ÿ$ÐÉÇ¡â!tÔ²ÿƪBËPZV¡j TV¡J ŽþžGè¡'ðÇ˹ŸÔ ÆQOç`7ÁNXt}Fd[)GDèΡÉbåvÛq®Õï¹hs-ÐæZ ͲÜx+Àù1¶ó8Ìýõ8J¹ÈñI#xʱEpÁÜåwÁ]@ð@ðb x Œ^wÁKà. žçžGð§£B08$·Bß·Á;à^ x×ÿ/
+àÏF°äØ"žpDÞå=Á@ðQ xvÁÇàã@ð |>}Ü#øò`éŒø@º`ôeèêçÐÕ+£HµÒéÏ-\зä,!IÎ"Õ$GµQZ¥ÆaU¥Z°8óN at pjÐU
>tÓbv«°ýÏ
+{M/çšâutçMžÜïšXü?Àü€5ž?CŒkùÏR#;æÄÚÀ+Íì¢<:I7βpeÒFÓ€3Òa- wlH6_)G)ÏŽÙ?iN`ibØé
+<cGdDZð"ß%ÃXY®+£}v-Ä¿HRø¡¡Çf±IV'Y$® ,~§áϯÌp Ñ«è,[ì×q)Óñ4%ßéïôf¢ŽDF\ê²¹ÿg at mp
+683Ëâ±ÀéïÊrñªYÚ÷bž³Ë4pyæïÎrÇmvAÛ²œG
+(ŒYÞx [åµ
//à ø(©êg;ËåòëÝŽÌE»œ@åÙÝn\oÛíÂõü³e®»É£x(SñÒE§F%L:WC_TÆÒÕJÝšdÓ]JíWüô€ qÿsŒyßTr¥1v#hìÇR]ÅÅtdKÇ}!^äZ.
+ä¡.æÍ5i~C¯Aùëv^f,Ÿc1øªV^2ÃÊz«Û»ÑFÚ#¹tJ.§H}Õ
+0/ÆÈÿ&ò3«óÈÕJµÄPcE œ%¬ ü}ãÎÛhäÎæF5D{`JñÁ·À@Œ_Ž@H¯à¬S+l¶²Ä«ykEjÍðuS-z at 7óÊ)¿®$,à€ÔGiU0Õv·:ãºÆïñ§úÓ[·4ek_Ïûz®ÆÃ-;Ï
H [)!²òE4O9*étå4Ú¬,¡íÊRº\)£/)åôe¥BÚô&Xq3Ö£¿
%Si;î~T:Uëcô{XŒþ@üyŽþ$
TCŠÇAAM¡ÿzÆÒy2»ý˺{,Ýc
Ø=L±í9€_Iÿ
+;;!q7ìüW0Hºáë]äbë6zÆÂFïõPé¶õó[ÁùFïcð7€kû²e¶-Ñ?åyÄô¡5ÝqÊéN!|ÔpÂõüÃß¹NùBöû5Nðhœ3l>Õ4V©§¥×«¬µí$ZZ*ŽŽThi©PêÕ!Sl UŠX_Nè:@Á\uÙÐW|Ÿã!èü|<\OÖš'ÑfôdzFOZUOý=éÛºc;q[?Eî@î€Sóh¥²Ö+;ÏG$Ÿv)ÒUÊEtîoÅûœÊûÛ?0q3Ñþv2¥¬àB9ÔŠRÅÖš9ºÔ¬QÓíwÊ Ù]EsÐ)U{Äïì
+y8Ô(×Wù¥(×ËåŽéÅÊÍylpÜk³é©24ÄRO©
l©
l©9ôÒ)æB'K<ÖÄÈxlRxb80-*ŽiA °$ïcïé#Âú²øÞ |ïŸßŸ÷ßûïýÀ÷àû ðœøÞ|;îñý
ï-æ¶s®±ÜX/Ÿg`twÅBÎt%ï0û]~÷Ÿ3[åÇÐÝs¡<OF|ç¡Ép%Ùf L~*'ôñô3¹
lGíhÒšulQ;{Dšº^j¿j¯µ×Ú@íM öP{šœÔÞj¯µ¿÷šõXšœ`ÌÛQ³í²€ãu_k4 j57Z¿§wÐ6¢ã§P$VSMã0þNvÊwš4×áŽ
+ÞÅV÷---ðÂX]M²6[Æ!ì¹ÈqT¶µíol»ØèJÒt~áØÒ ò8R)ÓN§:²h¥#Ö;ršÙá§sÚåGW9ÆÓ
+ž¿ï÷:N<Þéä¿ì5p <{ÐQÝB±dT°'@(Ô€QÛxlQkjK¡®2 VÔVµ@šÕµZ VÔVµ ¶šqÜ£æŽP{ãýEj¡ø^ß +/¿7ÌÜùüõüpŠÙ€PÐ+¹óniõ»[º_ïÅOn<;Î>·@m[©À¥ £Ãö5Â"K,Y.²0v{yô²ÄpM¥#ÃJ.€Œ4£¢Š4ácfËÐÜUî*/ÍKæ¥@ó2 ¹h^4¯ÍæW{4ÝÍÙÍCŽZ'!}NA·C{)Çq'`ŒñðnÊuÜc³>϶`mÁ8Ûqðs50ÞOAì úqó±12"÷ÄïÄnø@| >¿Ä'â± >wÜš[ v£u:~F¢
c$''{€ÜåqŒ
+eþÊü
+wŒF
7lÅ Õõ ÅcÐâ1hñ8Çä1."ãxL_Á±t38ÚILMÄs-[FD⡌?AyïÄ÷Aâß@â ñCøHü$~ߣœª8îIL³HüŠ91,ìCb1f}Ï[ûÌÕ4òšé©fÐtu-·¿'oºEÞxÉŠGò8;Lî¯mÔÇx[?ÆSÇ£iŠ:ÕiŽTN+ÕŽ÷gšû1ÿïLíLD<Îê=ÆkT¢ú8y×O3\<ÆÉÓ<NÉÓšq&Ò×îç5yùw¢zóW8¡<y°B€©%Š.íÓIêišc U©¥T.µŠgÈa:ÉIpé4Øù$yêÀgJ«,
¬²(YeVYÇ¥",g
+œ[zòcnéM&¥hñ41V£¿ÅOæ$ 5Rç©Î$Z€ªÔj U€T#Z
+€ÎøüÊ#R3à-+Ìå£3aùšÍò;1aêûY»ºDÀÉ94Qm³Ï°Ú=òüËò@ômÒòÙrÍè€ÐÙgr~d7aÎp&Ú]I°&Ü^^^î / /ÿüMèÿÿ
+[
+×ÂÚ×ÁÚ×#*ÜšpêžQáD
¯Q!0RÛFÔö$ºHÝ
+€îR÷©ûÔ@ê^ õÈçÔžA¢B×È¢ÂÀÉapòCD
§GüIE
ññ)²ï³ðæHÂ#øÀMÖgåÆgüÅü7à1
+ÈdM2¿_ðw)¯áKi43_Sæ÷é|8ŠÒùsÞÕÁ1ÐR?Ã?ŠuKs®ux_ÏMûz6åÉ¿@tíŠÞxyÐô}äeFNû¹Z-p õ%òª/Sz
+ÔWÏ/Ù/é,õWÔ¢ŸJ«¿ŠkÕßÐ7Õ×è>õuzP}ö«oÒ#êÛtHý-ýHý=¯þ~ŠþYäLu- Þ` rê¹ñp:E1õdMÃŒ·J~fÜêåѱNŽEŸõQ1]$?ðÀÈ]ò#/Ðæ _6dÇ?B8bÿeþ#Ö€ñuÂ÷ŒuÂ÷cóï\H3ñMZßµj=rFÉøù_ÜG)ÏÿäçsÈgÿß|.¿8x0þ5ÂQi|ðÞ?èŽr"ò»O)ËáJ rõIÜ7Ð<îî4>Ü/ÜO;ÐŅ)5 æ#ï žmGúê°ïG®~LYêßiúÍyŠYÚfio¥œiŠöR é#¹ºH5
+íYÇ÷Sã{1Ùò MÍtž×âX:SAŠ3õÆéîžGyØS$øWsÊô(/ûE¥ô¯áQ:»H €ÖsÊôšTöšDGß×Ríj9&Ýš9šíëyz_Ïûz:ðÈaøËRôÔÏà/=4jÍv*4Ñé EN*Nªuºh«S£«nºÙé¡»^zÈé£ÎêvŠÒSΩ÷ûà7Sé#w×ô«±1|d;Vsl¥eÒ3Ri5Ég)TAçJÏðÁ7KÏÐi/=ÃÕÝu2GÙÃm[¶=lÙö°åÝŠg¡€?8aíûÍ4âaÔú®Uë!Ôj{FŽTïî·Ãü$gNÂ;Ö«D_ù&ÁWü±«"
+Ÿb÷·"N0ýdªì&wtÁwéBþ[¹BÐ%ß-«SylÓþPKé~fPK,6+TestNonRegression7/scripts/ResultName.classYxUÇÏ Â£àUpc·(ŠÉ$
+$3qf.ã4¹mÓIÜqß÷}÷}_pý|ôóÉG}ôÑGüŒçÎ
+€EÛŸÌ/9çΜ÷Ó;ͯÿ|÷lçBBÑ\hÂèÐà CÈ ÜŒÀ-È[ ÜŒÀaäîDÞEànä=îEÞGà~äD>Dàaä#E>FàqäD>Eàiä3E>Gàyä^DŸDàeä+^EŸFàò(×oxù·ïxù÷øùøùÏ_øù¯ßÌc³á[TÛ,ìu²+£YËéÓ
+ùÛ)kŠcÙŠSÒlhñ;êŠë®?¶¢Àó·)pNgd[Èé-ªz¶ ç
S8Î-3Ìãëš¶ßVKegîšhÅkO¶ßÐ5§lÇQíLad8¯M4Þ¿¢Íß^lŸ©ÝœzVÕ3§ISwÁ(©¥@4ä
+VÄ.âÝ×®h¥XÕöòÓg˶#תFRxü-M+yRtîølI÷Fé6µ²Z0Þ0§€t[Óñ N^SÍ ¢VÊ(ÃîáV³W×qÙñºÖ©ÕÔ²nØ|{ù§ñÒ5íÒecŽMÊóŠaYNE-öjX9qrËZŠ Yt,=è¶Sh;ÛZ¬sûdÛ2%}ÛR¡ŠŠklqU'·É©õMFiÍ@MQÍ|Aw
+*T³ vµDûN%+³ÈþN7ÍÎim&áÒédP`×ôö\yÓŽRð¹ÕjÃQ3v¡R°¹qÖvÏ÷¢
+Ôµº¢ÀÌL£ÆWô|Š7ûY`»ýu·z£êÖ+nàáwi
+y¡gÃjàDaÚda³éî0ãw>Ù^ËäsF3š²QóÆTëðUðËuØåoCY/¬ºA-ìcÞàPTfX4ŸKÁ÷ðC
+òУÀÙíâã²Ð}Fì.º~¿žWžv£kqìÒLïFlðF¡Øå±Âjvà²úÄÒ"Jt$ÛßðY¹1zå2nT2ydg
+E¢NdQÆdeÍejÓ¯¹~¥àJ4»œÆ°)0Ñž,6æŒpÇöqk¥á*,Y=*HeÕ30
+ž& <j¬¢^-ìHðWп&ölÄõÕ¯\ϧÉ37èéKlÐX`6}/Û©Û8²5䬊7¢wÕ:ûP¹2©@ÖŠý(ÞóA#+nœÉ9tb&GXÕcag¿®ÂÈ®ÿLê¯FýúÉêç¹WÅ:þgkQ:±aëÌg£Mf7DOu]â/-°êÔEéå²Ï}^~7ô|cKä}ÔêÐÄkõcqØ6ÕUÌpÙ¶®aôÚ)E§aÐæ©m:±æ@¢+
+OÁ FÍœlšÕÈõ"nB;ËsñØ?ûFÿVøÝÜÓUþ©7#ÏO{ë·øé(0Ãwø<vÿ°zŒ ò_9þl),Â;Z»ànÉ=EÉ€.iH%¯4%-I[²W²"Ù'¹Wrä~É«$¯ŒFòZIGò:IW²_²*YdC3@ÁW%^Ï¿¥9Î/úϻγq#óg*
+N#`åšð2Î8'}3éɳèlABçÎ¥§Šè©§Ñyóéé!x&=Kp=[p!]$ž#x.=Oð|zàºTp].ž®\E/좫/¢®¡k×ÑŽà%tœàºQðRºIð2ºYpœ\p+Ý&ž^!žîÜEUÁnÌbQÀ{ùÄlâåÚóa,°¶AlKà
+nÙ»`'ïÈ.>W*ïo÷HãÎÁ!>¹÷~>óI}Oé>¡ïòéüOæ1>?óÈ_ø4þÆ'ñw>
ð üOß_|òþ>Þ}|77ŠÿPK¡]PK,6TestNonRegression7/simulators/PKPK,63TestNonRegression7/simulators/DefaultSimulator.javaÝisÛÆõ»~ÅI§Ã@Ë;IHf+²ãt:%°€ÖHVýàþ~é{Å
+ð-Ù GCÀŸûÜOÈÏ>ûëyBzÁê6ä«hœ}r|xø5ÞÅÏ`²%»0Äeä<ž×ÿuCîî3wÉæ¿¥Kî ûà+.È*!]žL`ÝÐÛ &õIÈ\.¢Ïâê»AËç·x/ö]è
KA¹üqf]3æ³zä"yÀÓ9w/S 7ÅsÉìVB"cÅ9
+1xàÆáyH®Y(à79FÂÙ%AH4!ç! V·ìÞF9šÞ"~.¥K at Wø*XDWdŒáGfÄÍc¯(`0y=Œ]Naœ!¯
+Û6¬É]ð]³_®<A®úÑ-ðŠÝ{ ÆÁù`ò%8L,s<&§#ä°'Þå¹aKûb46uBÆÙJlW1²ejtYD¹'RÁßapç¹ä^30°Ãø5ðF~¶¥ñŒÀ_H1ap®ÈÂçÄ¢.¹ 9øKÔÍà¹e»dà;z|õ0P#uùcÄðôé!xp ":49<>::úòèéá7]r96P*'{{OûlNc/óeBý-œŠJø^ÈÀÜgäøÐà&rtøì«oýýk5èùB²Êâ
ü:Þç6»æxõéGÇässNÄÁ
+bÏÈç}ùpspxtpø9ôß>ûê+9œÊ32Stä3cEéb1@ìíaDDZsÀOºïaÀëüè[_à×ôdËþ4ÇêÑá¹§Cä÷3WP,/t/X,ž¿ÐÏÅÉvÃN©ÜFç-it
_!§å¿]Ç[ý¡Q°âTàw/ð#ö.Ú<Ð|ç07
+
+wBŸ~ÒkÝì€úÐf΢KV{4æ Ùyšó$iëàGbùOÀÅ)\è¯
+>Îèáüe-ó#q&ô!ávc/:à&~Æ?ðçÁZÈ0ö@øZ;*Åü0ð9üÚ&gj78dk7pRÕávogž
+¹EìZÜ Yt»£b*Ûbš*º:Á$ÜBUnK*ãQ!jZVI@îGä7ÛÃFG~r,)P €2§÷ (»ämÙw²š,ÿÞÏpÎÁ µ®ëýdñšäž
+ù5HG MI|ÏI°ôàV+&õ}T1$ÿce¡42šâþߢŽE|áÓ(ÆÚ''\(]\ÜMs=ÓjN¢ÈÿûPIÃàF,If|ðið²Â+J!@òa*ihûx;Ñ@°:JåþoA©Eûta"zÃhà3¶âå
£9Þ/ÒNÇ£óÁø:&ô3ݺŸ0íéèt:Y9 p(Å.ÒÁÛEüé#²cçÂÒwZJ²02»(åZhÀ«p+ëqgedýZ'iI§QÏÏn²ûZê19l±zEñGZ|w3üMLÔÒ*zõNI@Q¶Rb'ËÒ¯ÒÀ"Bº&aáº]T-Ê
]³óRA¯j¢,ÐÐÓö÷UÊQ ±\]eÚÄB?ÄîAË }hLìÁSãÅ¥Õ7¬Y©i[â@ä]bÆÞÕMwpPžx
+Na.&16ÄÖð{û©^Q
+oðêµQ¡Ò)HKN9(\Òš*V¶€ÁÃ7ÊG&äz0jÓ°+Ô¥Uó¬AŸÏRQ¡š¢ÓšN!T !r36Ç©""·ÉÖ¡ZªA. i¬rÞmöKÌD€Õ?3Üü\v»Ò¯Ò€ n9ñU€i²¢viø©Ö1
+>ØtÈ$v¶@!ý&Båô(M.®EòQ`)k@®!Ts*¬*ªA»ÔZRdþiXýŠQÕõð{4r®ªTïöjtóò6}:Ö¡!øÑÔèM¯f.²LS"Ȳ0çqÌìMÖMÀPbÏk""u+ñfhàC'Í9rb5B§µv×bÂôïÿüVÌÅã(ª|$vK:)êÑÝf
+f@¿ÍQw-ÞQè:ûw
+Z*é_ÔôßE=6ÀÞÕîüºn¢·VkbŒ d
0
pŒĮ©~\-MV×3t¢Sam»ŒL4¬ôX)»%c¶ùé, }BQíØÎ!Y³µ¢ð¶~2²èdæÍ²äªÅîùhyËÎX?rÒ"^ÓÐOC«žéAn@ëô(N;UÖskÏq¹ ³0ÞïJf9Ü7ËÔx·Ðq¡Wõ2ÅõÕUêm¡ZPÖ^h]MQBÚì²!wšÔväxÇ0êÈ$>vÉêT°æBY³ÝkœSFÈh8»GÏŽê |4#š.²c%¯^oŽª%v
+6{¿9DBy¹$ô&µIYªÃútb'Å®KD°3Z(2žx_hn ÛZ1ߥ@{'Ç®`yõ=yz:²'Óî'¶11ÏÞLæd}?Äæ`è
ªßïC.ÏL,!
+£T£Djž×ä&jkmRoD·TÆxÒ^ç÷ÓÜ Lõ×$úÃ)h-Ùíœ÷~^óÓÈ2§£-=æ'kÏGðE©*Tî!Í $%wDÕA-ŸÿÒ-TGMæ±=*Mÿ'tñ
+*ZêÒ:@;ž³ßײEájÊÀ*-U©R)»[ZÜzï>yÀtýu=ývòA*{Õ.
+]<|@<øiYâÿáJ;ŽPs¹â]PºTçz3õÛýJzÅq*Ò%¿>kÌrW
+ÿŒaYWjÇZ[¿¹¢Ðü%Y ¿ÿN*+aÏCy
8¹æP=žÑ?硊7jäùt÷Uh·ºg&ÇúÅüä"o³*Q¯ýÁžgØýqZ?±t®_ À϶«µFïfP°_ÙÝΠ^i÷Ä€mZIåÞvq$ù)Ê~!¡dÝ€Â.sÍöÒ*W¿kŽäöÜž]c9ÎkspörRôµù²¬¯çÚÔõÛ'KýÜÈÍâí µ&JYŒ!oñ
,·$
ÀÌtnXýu&ͳÎ4YRn¶ZålL³ÉÚ/Š×5Ë»ÎcrÔŸä~,ŽõþÝ3)ö}ŠªÂ±oò"EgãgÂW~È®YšöϹCÓÕ+ÈDï"9ß©³ÏQçgµuå\QQïÈܪ0[ñEÒH¬ÝCš3G xÔäÔì!kÌ6£wâ2E(z§'üÜ_³`;«=wÙ0 @Lbûä[~ bŽJ ºõïnŸßß%åî,;.Q;[Õ%å³^
y¡kÁäT±ßÝüÏÐ6n¢Ãå.;ç¥Íf -w~*ÛÌÙEŸÂ§³ZWó3Ï?$ÙÖë$zäÒ!_Êel¿èf(ù©zvNÊJ§7n_KY²]ñ`G²Õ«nº×ÚÔM¬
}!<èÆØ×G×(®Éz$Ûp/ixË*õb0ãqû TŒZcð"y Yiù®oïmÊÕ
+w£²k*±©ûçÙŽ@m48t~ qç,{s>DªFÑpl)Uî®»Ï II=)¢yS¢#!×ýDãCJüWVëœÔ$œuQ¹y5ÑFý I¬'åSyªj)MÍâ#ÑðKŸËaimX ?LKß®á,&ŽÒl
+I³HÓ\Þš©še²|¹î Hw°l%¬GX+W(Ó*(âa1êÁAWxðûU
+ÀõØrÊÚ{0Äžk4aú|ÔoÈãG},ÖqÀOÍjf©yÔ/²¡«CÀõ%ÉA£0T{YÒiqÐ1B .jø4xiG²,
Zœ$ò fW&#\DÚÝ!gU}Ùúÿ%Î*ºXy<:îk
+w#'U>¬²mæÐŠàùÔºÜvÁ»l
+;~ÝDÙNèÙ-BÓ·ø.Ç2QmHŸw#"æ×\=Åêh²WTDOÃ_©·BNçžãk)z : QŠX>Ú
+×iI>ä>,µ+v~¿qª «
+µßØPAAQß*IŽUÔGUrºZy·%C*àÛ¶Î
+=Í>ßÌQ§ÉŸöÄÉ.j{±áihN3íÒŸUE«Þ/é£jÇPê}ñMd<6I>s4ŒM^%÷å$·Œ<PçCz°áùŠå^ó@©¥ÙÔÎŽÝEÄZ£_ÛKÎp,É«aòdAÔ[I\¶hurT<4ãMËåo
ÙJ{Ð÷ém{Æ€÷²²JÖŸKYÖâvcœ¶¡ZUUÁÊÞt³aalMë\û,@Ï~¶€Ò1¶k¯VC^Vg}8H¶L߀ô8æ}foÕ}áE÷såV®èìAÛ$TGTæìê±zBœÇŒIQÝ#,,ŽMã»íäïµ°CÆ/qÝm2ÉâŸÐ ¯^ã±yÞ*É¡Ì"³*0MÓNø€ÁÿWéÔéP>nxWqÒ]œ4ϧœÑx2Æ×6Ô!÷3f^/ÍÓ_ÈLŸÔ¬ï% NóãKW0áÍp¶yaì©aõ§Cc`MLß¹ý!$FòÐðÝ!ÅÃì>&ì3</ZøøÒ&/A:ûÒ²Ðg?Œ#|Yß}üöqüÒ°ÍþÔM 8« æøÌµè¿cî§%h³bÛ
+Û )Ö£P!ï=§¯óK3¯ÚÈR;ûfo`wè?[Å?!ä9§Ñü<ÙæBWÌáLlq,ì£ëâaäÿIý~ÁŸY?ö-òA¬o±èÓŽýv¿å7 ÿiØÝ6-óèa2JJÀWÍ|v³I KÁ§ŠmŸ~É{!»y@ïÕ°œ¶°öÙÀ^¡t=0^
ÿá40ºñ¡ÆÓpÁýÑ5MC¥mÀ:¥<âçõ¯©G3@¢ÓûYàñg;9çc8æL'§&ÿó(ÁòñrÕNê¯=BÆz@jy··{ÿPKe"QPK,64TestNonRegression7/simulators/DefaultSimulator.classÅ[`TUÖ>çÎKÞdòR =,ÉFÓ%Xâ$$#ÉLPÔµ®umXAEK,ØP±¢+šØl¬e{ùwíòóÞ7É€±ìÿ³»÷}ïŒsÏ=÷ÜsÏ9÷NvÇ?ÓÄ&x3ááx Ä9l&E)XvÎÃnæóW=JÆ£M¥2
+ËXÁM%7Çð7g*U©èÂÜ,qË\Õž$ÅãLx<ÀŽ#Èže¬M
±ÎõèaJ7Ü4Éè5Á<Ì'ñs)7ÍÜŽÐ~¶âÉÜ/ÀJMÔx6o ã
+fYiÂSðTOcÿÂÍé2aÄ3YÈYF<¿Ãå>çñ<Ïg¥.ñÂØ¥âßðb#^ÂÏKMx^Ϋx¿\ÉŒWñjñ^cÄkyüÕ<ÐF×qsœoày¯5â©x®3ÁL\oÄ
+Üçf#ÞÂ2n5âm<vîq{*äâÜÜiÄ»žŒ¿ÜâïetsßÏúobó>`ÄSñ!ì0âf^-üÒÉzaõ5âcF|ÜOðÛV#>ÉbçÁæf7ÛYî3©ø,>gÄÌý<¿Œ`Äùù_æç+<ò«F|ûŒnÄ7ø}'7oñ-&ŸmÄwsße=Þãæ}#~ÀÏžÿ7qó1?a>å×ñ3#~Îï{ØñŸ`ô%£¯}ÍèFßró¿~ÏèF?2úFÿbôoF?1úÑ/~eô£ßýÁèOF{ $`d`$1JbÌHfddÂÈÄ(Â(Q:£FÉÂlY"[9²ÈE04ûòJýÆBw«»®ÉSXçoiñû
ô¥Ñëk,,õ7ÎFH>Ìëó ù"HEþzBF©×ç)ok©õ\îÚf¢Kýuîæ
îßÃD)Ôä
+"/
+z[ÚÝ! XXìip·5ª"ÃþL=Î/mz=Þ`7ØTí_îçõûüŸgEh6«
åcÔÉÔ~Ím!¯¯°Åjâ&à]QXŠ>Êi0C«¿aBÂa<Ÿ7äõ+ýáQšðAÈ.=ÉœÌ]H!O ¬ºhãH(¿:©áaIj=âÎÑd5»ÉÊöuÖð@Éîºw1àziñ*±œ«ZвQïlOC?ªôªB€§q%}"ãCõ®{§Ùð{fŽÛ¿ÏSÉÆVï
+Ö¹õ<ÞÆŠndÒ»PLZ0ªËü^w¡ÛÈZQ:
+"LðJ#$µºîéýî[É<!ÕBêØó@ÇŠ.ì¥Íî`šÚãŠ%AGøµXuZ©^}ä%ZÙJ«Ä$ÃðËÜ>w#/lAB~EýòO7
+aâg?¬¯U÷æÌŒåuok(Hêj4bRiœ¡eŒ¹QøµF]ŒÌO;ÜèÛ*]»4ÍM£2O*&£LÏNýSyD{Oꣷ3ÆÌÞÀ})Ÿdêöf©7Èh
+Â!ijÞÃúعGð«BeîVU
RYÅYXd1TÃdqÕ*TŠÈbž,ÅYäQúÅH*6(µSV§Ê?ºÛIk
nk[çjBžlà¯ûú÷åýzTåZ¯¿Å$U-uîP]SâpLDS ÕhÑ&2²%Ô¹rØôúü=mãúTyÜA¿ÏAxÙh°sã ÆP>µÓMKëAÚcªöŠ=Š¿}ÍShóZhwm¯Þí«#¯¬NÐI³ê:œ,õK<U£d1Zcd1Œ/HÁµ$n×5$^ËŸ¢§xó«kçgS¿-Pççe/Ïée§°×+ð<Œ@Ÿ«qbŒ,ò1ALTÄ$1ŒYb
+ÍL
ð¹¶"S1MLWÄÁâEÌ3y²]\eŸNÉ'ôMÌRġªÙâ0E.PÄb"lb.íEbEØÅ<ñýtEù²p(â(q4í0E
+Þx(šÇ6Œuyl¯»Ùwt
+ráœîwETÁ뎫yöSábõ
X$ÈÇò6¹åÀ¹mÞæz婵*ò!O+Íj±šæf"ÇÉâxE j(2(âDxAnQ«:$S×±i<ah^E$Ê¢Y-öUz|ÀR
+Ø*æÐjtÕÝ@óS2"N5޵K¯AMHŽ)bhCb_æŠLíÉÓ¬EɱÞM£ûQr(b¹ , Qà9Ø!8EП]äöåyx8Ò-.Ê+íTAs"þ"NWÄâL]ìÏk
+xòž,">UME%ÎVÄ9â¯ÃîíÉ£Ê%O
+?
+ÃÉ0¶úúŒ ¿
ÆRwu;WóÄREÏèq4
¬wsVàBqÅO_Ûw²ø".(âRá¥ÍÄÂè£ÏßâF%âLE®Æ:ú¡.J^Æú
++Ò"|^žNÊ£Â)/\=)âr±JW°.Wcq;nrIÀßÖJÄÅXêjE\ÃL×ÕXÃè:1×òzEÜ ®§Tçô77×RRíJëØDká RRRÄZxÔhñbŠžQÌTÄMìuvÞâëXÞz^šá'ü§97
ÙŒjÈKÌŠþSpŽØÀôfV÷q«"níž·ÔÜÜ)ân>SØù±A÷ûšs¿ßÏP²«xžOàP ñÌ(êóKÛb3S2çn r/¯ÅÛÈß¶09<Ø©âdø0ø±tÙ¿<*cáêG&?ÎÓyBlUÄâ)EüÎÓ<Ïmb5ÅhR±¥õ`Où"¶s¯gØ#eô£gô£¹y__fô
+£WœÆèuFo0ÚÉèMFo1zÑ;v1zÑ{Þgô£ífôF1úÑ'>eôOF1úÑF_0úÑWŸfôXJSíå'oñø>.`UÔä©õ÷»U=\°>¢boÀ§¢&ì=×SU;dOÇŸNQ}êØNïA
ªr:÷»
+§ Üý\LGÁŸâthî£Nìaýz-éžšÀ<ÑÕMEuLÙPlÅ£K4=?ñýAlM»uÝêõÒ
sÎ5éa؟Μñ³úmO³èýAÂŽí4lÈààH¹ l®ÝYS1¯Š¬¢Ü5
+âÔ6ÀšF;§i²#¥):#Se!å;žÆÍ$1]¶HaöïzvNb]æ"¡ýž¥·?c¬<>ÁvìÛôÎÚl.;µ'Kô|àNgsê7pA"âOÝéqS¢ZeZ§ ÝèFo4XäæOH|¹&7¹åjÀ#[BáS_²#üº<Â7 :ÇDšH¬T³nÿ.ÍÖ|«¶-IÍåt,®±Í]P^l+/²óµLת§BÎõÈÉïþ]œYeÊþëݵÕCbxÅi©Ìù us©øÄDÇovNkÌÇÛ<ÁƪméÑ}/:
+ªÛÓ|¿ÙÚJ¥»\t#
W³»ðŒ7~cÈ9Å;Kt=ÇÛÎ;u¯ÐA
+Òi\¿ôã°R׬@6q8gî5ÖE.@ä£lålÎj2
+ÙN!]#2Iòz:F_CÐýŒ¢ÆVär,tžHD7h÷ñÕT}îERÒxwøm|ÁLÇó#\ÜŠí×¶ß×<:ù+µ
+êðCÚË€nžÇ®³5õc'[2J4ÒðÑ%×<ªgÀÇvõúc-p¿æ7dIßw=ýܧ)îúz-¶VîC2úîÃ?)°ÛØûDdop;àúŽÞ&&pfÅÕð/çêÄsÉ€vír@Cdæ}»Gë:%<HYW]5SýÉfîŸÉÝ³ÐÆ°æ]¿çHi
+xluÿÏ@S=0yìóæU8]5TêU¹6œ€ºŠÌîBªùtâ_&{W¹kš×B{i/ºŽ€¢Ü^SYQ©»q!ÙqP\>+s·ò#PíÐÈ
+ë#
DËL-;}TG¹4/x"kÀ§8ò»ÿ?\çW!ÃÂÆ)vTÙÅUûiŠ3ÇÕfêe)ÈKûOñþ·Q]5_dwÌwÅO`€Ö³ž· ¯@Ž?Bsÿ&7<œR[y±£ŒD:%®
+ÂÙûšüý8`R××FÙ/+ŸÿsÜŸ ;슌Ok#édPzÇ!5ª'p>8'. "
/=<¿¹2[Uÿò§ê27ò#ÑýÜ~[º~Zipóë/
+ö¶Ž:ß%÷ûTVÐ{§Û.4ÇSµmhÔvÝÇÓi·Sâ3¥*ŽHœéüÜk!Oÿ<«ÞSÛÖšE2oc@;YÚ÷0ûÑɳ8Á¶tÕ-àhéFN ±S°öpŒïçÆòiÅ.¿öûaºYT)ðQ§µÙV¬%y§§5à¯o«Ó§ÏÖúßÒ§ye\gJîfµr<#*mÀMw[ìWËᥚ§ß.{ÈNÿÅÝfÑiÔUÍÿ·ña?:aJ¿¹>ÂÇÃ`ÍU4¿K
+ÓÕ0#tHÅòÃæ9ªæsŸp9ÊìZÒàÛ3-ŽWUÙK)sjÂøên·
WZÝjô\HGkþÍy\DÞª*ª\U|®µôÒòÂÒÚ<ÍET×+Ž?ÒÉ€êšz9ïÓdÓ 9 »BúîÓÃöJÃYCY³ŠÌæ(wÙËù¥ŠÄns&è5YvÛ°ùêËÜ^ªs}ŒJøÌÊèt€Â58ó,º
+Û€"Ôä 8Û|>IWQõªosÚéî"«,&Ô]ZxœªÜO}¹?4Ï»ÂSßUÞäxyeŪ±z ²G°[Í-qVTUÕ,Ž.°ó«p¹Xi/rØ«ží4mÊ.Á ZbW4j¿WòHU:Ú
]=¹°?CÆ
+ßû0záÖ
+[©ýG·.Õ¹ÓÆ(÷úɬ GaÿÆÐÍbŠn0§œÜŸsUhÎÖûXS¢c9=>ϲ6˯:]+rÚõg°Áåœ.lÞEåŒlÎGyMÅBes:lsKíºýÒãp·öríw Ñë«XFcÿ2,²kPÖ Œ÷U«Š&u :¹OVÐ?c@Ð
+}ðŸM1 ñæìõS90ëæxÈ>
+Ý&ýxï7iÑ[Òdª!ÕµéúXQ3±ÂõJ/¯
+#a<ÏÒÿLüW8DøyxÚéÈÔï' à%jUâ<xZEcWàUz"Œ¯uN¹dÈ~Ô¢eôÊ'w@Ò)GÚÉM3
+:@¶&ä$uQcK±ÊLVã#Z=i3(ÖG z%e3€[Mô-ÃJmŠU¡v5ÍbIîs'dÑæI·€wB6Â(`°r-0ØiÉÜC:Á"ÀjɰdvÀÐöœ/Jìéæ:`8÷bA° ¡TA²I0B@ûÞxÔŒ€
+ÒpÄÈ5Ü.e0qÚæuÀèG`Lõfk×ãß¶ÀDGéILŒ šÿ5`Ž€v@¡EÞuÀÔ5°Ä¢ð÷i¬Ê3PŽŠÓ€Çààj6åCªª%
+Íš"úÌjyÖ8šf+?;`6õ%!<ùÃ,²/0p«âæ©ÉÕxY
yNb€òi5fd9H*Ù~3²Úa5{Ìí"fI0bb6@ŠfKv'Ø
+`Iã®9Y0/'k
+(ªÄRÒŸ÷öœKÌóªyL?ÔšWS§k #ªïQ-ákí{ï*0ÍÃè}(6ÖðèX¹ÖÌ5,mßûa¹ûÑj««£š ÞCóÇÊÞ>ÓÓG³\²ÊìêÙ¯¬ó"r"ñÈÓfX\`®þ/ZhIÌBÇöl¡ô¢=¥Úç8èHU·ÁuäXôrê¿ÇË=øou%³N@šªNfTCHNàÓÕIæÕg²ÙññAçXu at -µN5ë0It¢ÖÓ5sÅ£²Ì$HgÒž¡iÐvH·Ù4MèÝLZŽuoßT`ö²Ep%0óRz¡PÔ¬¥
¶4%5¹ý·ïÄ]ø9~ 68tâ5à¡0Y F8ÒÀ YPÃÀE±xEp,°æÀ±P
+ÇÇ D©¡Ö
+gC-\upÔÃZ³NÛ`)lfÙ-ð&a7,Ï`|§ÂwpüÁl8-p6sp23á| .ÄÓà<.ÃKájŒ
+®ÁàZ|Vã.ž?Hóëñkžµ"Ö°^
+¢nÀb6Ü%ÀFq:Ü-.{Ä
+Ð!6Àf±¶7àq±ÂVñ
+<)~§
+¶Ra»!3|xÞ0^3Àë2xðvw
+§Á{uðŸa#|`x>1<
+>=á àK) ŸN¥¥ð/iü[:~.
œÒévDénÒ€§0IzeéT€71MzÍÒÇ%íÁlé;ŽH?áPéWÆ©_)dß,xvB&Y{Yô-È ëoÃ;NV6Â.xŸ>D+ÆŽ²d9ŒG=2ÈNà}øvÆ.ZÍi-²ÈáðñI8Yí1l|&×ÂjM
+ÙoÆ'`ªÆGv=RãÅ$EãÛ©ªVâ>Š})ð1k@MOTOèSH6\LÖ
+K64D$SáÔÃ,ÝcɵwÁçí?ÕÆ5Œ{ì!ì!OËà$.} _Q!`~¯á*Ò€oà[òFdIÃ÷ðí
aÒnøPvÁÿÀ¿šš8Hzþ
+?QÙ0CÚ?d#%GÈ¥ÙJ÷Âoð;U*NéøŽH
ÅÒͰ¹9AZ4Ü&-@JIáòD£$Eæ
+Æï¥%ÍÑ(c&SeTdL1]Fú)ã Í2fÉŽ{høé@¶9ôö+äeý¶ßa±¹¿ñw .ÙÀhØK>Ý_Ñ,Oë&㪎dŽLüüâW]DšYª£GpÀØÞXþ¿AMÁï0ÐÏ@ÅòvZ&2Å$þh\KºÖÂ`°Fê°$µÖJŠÈ'uß*«œ£ŸCÙOŠÌNLŸ9À)^b$DyŸBtmÌ k5úÍT`RkIÚËÔ<d2ÅZ.·µïFúNïé]â»Bs
+ZMjrÎ1\ê*ùq
+BSj5µS$OaöÓÝ€Óâ/¬
)¢Å週YäN8ÃÖTãÌñ,bTtg3£ñtÂ_)_ŠéžÏeî4=·ÄŒçé:¶ó-]Ïn1u³oªEÑRT&±R®%.äÄ¥sË1ÇGYüoÄ&ëØ.[Ý.¡Éfé/eÆ,=c2/Q.SQ\®ÖþUÌÇÏLWÐ*gkÚêÕž²«ožÊ3YW[s5·È%·ÐŸ2ŒÆ:[wÀµÚ÷Áa·Zq+b$Úëíûú®ù:9§LªcºŸ_§.|@2š€7á4# GR^CpƱPãÀ p:N¡ü[Wâ4XÓáíïÁYð,Záu<Ÿ¥ìò;Ú(8áX,&4«°ýxGã5Xë±7bnÆJ|
+ø.À=žH$áaÆcŬ³°VÌÅ:q66Vô±Y\~±[Å1$¶bØËÅN\!vãJñfHÆ3xáP<GÍÉ0.HyÁ(vAhGH €åFœ
8ÊTÄDÊüï(KMÂ<èÉ0Ä0JÍ¿2¬ëq$ÙÎHÆ58,íâJ²âNÊ¿#È;!ǪlvBùó ¥m¶âBéd58QÍÎñR²<ev²×AÕÈ^+h%(Ó¥òi=vB?Óªìlq-ÜÊëšJ(WlŠj¡ÁKšöJúŒjt§ ;áO8XÆé2RkÚKÓH*ÈP³ÀÐ(kÿ%ÃSOÞ!Gü(Ñ·4J©¡£ä
+ª·* МÖ*MÄNz8ÑoÑoÒÓ×Åèëõô
+=ðߣߢ§ß£ßЧ·Çè·ëéwÄèwêéwÅèõô»cô{ôô{côûôôûcôMzú1úzúC1zŸ9Fߢ§wÆèëéÄèêéÅèëéOÄè[õô'cô§ôô¿ÇèOGéÑžCõÏj/Š=y y÷¥w.Qž
+&àpÕ÷VŒlt«Ák ¯ñ:Ǭ
ñFXëè°âÒžo!¯¿Öãmp;ÞðèÄ;a+nx7Œ÷ÀÛx|÷ÃÜßáð+>DUXq±-ø0æá£8éø8΢}9DíŒJ|à6tãvlÂg1ÏáJÜgâxŸ«ð%\¯à|ïÀ×ð>|€í€Þo÷ÛDyþ³wã{øŸßSäûw«R¿S%3b×åUdd¢ê(:9.¢õQÔE¯FÑB"KM"G¹£he¢;¢èÉ(z'ŸK[<a q4Eq*âúØ FŠÁ3dpqQÄF¯úF©÷xŠ,ض¶?sïWïób÷}:ÌZùgÿ/PK·Fü¥ªEPK,6TestNonRegression7/formules/PKPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.java}MkÃ0@ïù:6c$MÝv¥§QÆÁ;ÏQ3ÇÎüA£ÿ}N6,géYžcüÕ6hwh;mTÊ`![a+aÊ 'лk65áºDéP€e®é§Ÿ§óRpàYÅ(,.Ââ",_9¡UŠ+Ó4£)ͳ")ÖÉj³Ý¬sºÞÒÍ.!Œ+D9{{ÅQD^uçåPŸ Sï(êÆÁ÷e¥RÀuÛy[&+Ú^
+yûêQ+'æ|ÿÿ/M+<í;šûk>Z88výeØJT°na¿å¥Á óFABlÙ£pŒ{Hî¹\ÄqàÌ"$ûGÎqB¯<óô·-ùOÕO:£¢Äyé&ŒÎQÎ9úPKèÈæ-=|PK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.hashCode³4577ް0PKHž%Å
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.classSKOQþ.-3òê[ñmZ`ZP#/E %uÙLË-\lgêÌÔM\é/Ðþ4®cÜü®ý.çÎuÁ|ç{æŒîwç~ÿýù+4ÝÀu%÷öù
È0nàŠÛ~ã~ÙzùKÉœòÝJngwõçëá]%·÷N®÷Jnß7TÜRUcPŠ)Üi@4VdÎXë¡?/LþšY/s{Í(×È3·*FhØBîÛÎ »)Õ|Õ²ëÍwŽª]U×9iG8Uálžé
+Wp§4÷ŽižÂ2K©Ôž>ЧÒzJKFJñìD63Šg&ôìš>:É V¬z£éRr4_µµvUí ªæêhž|
+ÏXŠË·ÝÉCÆÐV¬F;~Á¶Éج×ÎKeH¹Cç,Ä<ZcÞkT,6¡ÝsÛÞ8íVÓ®ðy!?><r[Æ3£Rq» ÜaX>æd]ŽanhËå-^ÌJN»ää,qÃ|ÌÅÆ&åý+óÄQh×ÃÝÅuï_ÄôÓëa8AO©4ñ@2B;4#ÝÿöÑû|€â98E²ÇÀi!Ípç(J&ï.&ŸA £ØCá¹0)8!éœb@'Ü%LîË: jË·C0¡·Õ×¢7MÝ^¥.šÈB÷È70Ð|yôb}X£cÊ/ûSµ'Öy\ðNQÄEÓÔÈ#Ô¥üE)òžbžêÑpíPKî'¢@]{PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.javaÁÓ0ïy96%2Én·íRºXqa+T$\"ãN[ñJW}wì6¡Uäiþ|óÏØNªor°¶Ô~éÆYbXÐkÂcôÚ¯µß
+lY³F/d6BÙÀºäm:HïÆ
/F+PFzu¬{`ÝëÇïA²¶m]UwãÑøv:NF÷uYWåýž¬&Õ讌N&Õ
+ÄÆ&RZö=v$ñÁº`éÙUP)ïÁsïnecDP¶qqpéuPÄÇSolËžãøß1W6ñt·°(®¯õluÅüËEåSìº
&E?£4g_å)¢ #Þkϯ?Û`ÏåÅú¹é;²Á=À&
ãÿkXBçÀ[²?=<îºnóa¶s(E9˲øþ©ì ^ÝæÏYÍ£$=QüãT'm¿+俯})ãÕæÃÓTþ$MÀ¢bOùËdYçZøŸŸ§"1óYvÈ9PÉî!~¿PK52*;PK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.hashCodeÓµ06260514PK}Ý¢ß
+PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.classÕV]sZE~¯Cà@°üš&jÌ@1FCZ«$¡¢öOèNçÐóáÄþÿÎxßKÇ+/¯þÎÔúîB0MCŽ7r±ûìò~>ûŸ»ç·?þÀŸ!µ0Xã]lðá= Þ#ÂØB)°þ¯¶%\pCÂuÝÐ
+o2Ueðmw5ɲnh»nç@³n«mÚ¹T6ëj»ªZ:_6}NK·öË
+ÓêžmÍVVMoXZG£ÙÖín·jáè®Ùµíû®êèŠQËdVrÙÜòjv5-ÔÒµLºKgòìJzy5Ï,€ºÙéºyy,7,e`V96«Ø:¹TÓR*}D·LÃÑbÙŽJRi»n(ÕiñÁÒ1í#ǪìÝÍÑÎ×]Ú!b©|OýJUÈU[)ë6¹?o=Fx©§n1,è
+Ët»ÄGg>áóŠ£Y(þß²xå-Þ1
+LÌ
ùg`»óãäI×5»©±ÏÁßáŒ3Ì{4Tà]KëZ&EDN< ÜöûëØéS!Ù&§*ÚÏåhXí¶¯cÒ8ólA#¬²µ>Ãäpóbz§ÏTµ~ž£vE(nRë3¶êZKÚ>¢Ä+zÓP×Ò»ÿë§ñØü¯Tþ;§cvršbºV]»®ój)?§[rG,c1 Ë(c_Æ.nÉØÃ'ÔçŠÀ°pdì£"á¶OQñ>gØ{Þ?µŠ8¶j4[÷Ž:µ^qd'ÂÍ}×s|ì^¯³!ÃÔß^ÝÂ}¶úPc&}J-ÕÞw%=£wèa4ÄbúXþD*$=ÕÔqî«ü#M*¹óB"UµíÖÕäYgwžå =T¡TJU1Ÿ%úPðÐLEãŽRhf4û¯ýö£øû±éÃr_ÓxfràåÊìHÂ-RµH"Òá;|ÉáWø×¢\"ØLL$Ò ÀZ,NÄzâþÃ
D,í!èÅá4&Ìz!üðé£D({ûððé÷ÑD<ØËÙ æ07B>4ÊÙŠ\yßÒ\"É8û"òx¯ÐÞuÕ«xÑ{Ð Y.ãuA7G@sžBÞ8'o>ÞÂU"£$R""×zÐ@d%DÚÞ!0Ųìh*CÍôPS!Íá8|O {%,=Á¬e ÷;E\Ðs
8Â<áU
+PKÝÅ/O
+PK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.java=OÃ0÷ü¬|4iCÔ *Äl,I.
šÿ§4i
+|g=zïñÉïŽAš
ê,G{¬BšaµÂ]×L×L·{ÃCM®ŠP
+)E
ÜÖv(íŽoPrªµ'a1
+QXl?,5LôE&é2
+£hf«"(Òu¯²4ÊÂ4N²lî]î$œÑW<ȯÔXEùºå©A8UÂuRtÒ\\òiÖ
+¡ÈËÏÍ oEopoÜܱ_ÿþWçE@
+ùïðœVB3Ô?f^EðéŠUb§a»/Q_<x¬ÅÑ
+ôsºé!rOï)ÛS4hª
ï»1jàfLÇùÈÂ$h4£ËÆ3z6,g4h2£áDÓ
+WXSËÍçÞç¹óå}PKÒSÎPK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.hashCode3471Ž0µ045PKúe-Ý
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.classTKSAþ<6ŒUâû-š!K²!B%¥Båà%5 ,&»ë>,Ê¢ÿ@Š<YxðjéÕOþËÉF=P%T1UßtOooÏ7Ý3ýõ×ÇO²0ºÄh|njtcéø\¢µÏþÌ©ýþJ×ñÙom˶e¿Œi)t
+ã2ñiÓ2ýÈðH!:oo þi ±)Ü
+ŸY'Ë©]åõ2wM¹QÇôj¶ÛêÂÓknŬ¹¢!HzŠW3œ°|Ó7
WY|pߎJ&7&L6;iñ1ÏF¶1rùb±0Å UíøŽÉ»áRÍÕÚz;ªîŽ#÷mW_oixÞ¶|±çOøCŸf;¡ÿ¡ï»vàüÇû©m©E]Ñ`È9ÕÁ±C!¶-Ù1€v*ßK¢Ì0xs1ô®ûŒúìwÂÚw-îU
#Ãy²Ž^··*LùñáñÜô.Á{pg5äz0<Ãê1ß5rœÎm}usWT©p
3ü'+Ü\^_ÜßyÂåmøìOFRYQá/o©7¹ë Àp{IÊÍçh¥d$c©`ïÕçó²'(chîi9à".dž+ä%þA2F²<öZͱ}DÞÊ®²°»RŽjDAžK!ÜK"ÖLB#tº œ~ÂÉf_<"M
+]*R&iF'æÈ¶@ìñ+¡kèÃú㫱Ԯâ:ERqXKmC_j7qÎz[uÆÎi
+«ÐC"€TjîüPKNÑèRPK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.java
OkÃ0Åïý>n£&ý³K7vº{p]%1K,OYÆØwº$;Ã{¶ÑûI(ûf*P%RÛk«Ž+ Z..Ö<;võÝ_R¥- IìŒn
+×g!×kB:6Î*ÛXÀb#°Ø¿'Ã}eËÕf¹Èg¢ëb&ïÕbÏæùr~¯òl£€q#ÏñòI¿ª¬4èÆ2ÒØK}PÅ6$KØèd=FÒúÐß°CÏбä~}úÿÎ^0¹GÂTuÖ+az{¿RýbtÑ?ùé?§êØñ*k
+}îÛúVqMøÕŸ³p"¯²íä[ÎPK^Q` PK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.hashCodeÓµ42371·0·PK>¿e
+PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.classSÉnA}íØ0gaßsAIi{DFŸ!pCXí¡ÇîÈzzPø*Ä Äà£5AB¥º^Uu-¯zùùëû.V+XÀ}<tð¡üLÊvÖÖ]ý^2Ôz*¯ãéPC1g¹§=19F%vî,Ú±Þö|mŠñDFÜ7å9|2°Ê*
+ö>ÄÂ*fk·¹íÖIîêd·¶wÜúÛÜzê¶ÜÆnÁñô4-uù¶Öó
+ÏËòYY)j)¬6ŒiT¹«+OmûÌ~ Ã<þ
ÑqxNt?á9Q¯$éKéàeàëöñúótCcîJ£Ãæ|ãPÛ(ãÌðäÿfcš("
+ÁÀç¡5æSWXoÌÀ©âÞ©'ÃVäà1Ù}Oî«äåô.è¡l¢Êý
+ò|"3<]dçÌ£ÉkòCaFÒæÇû£ueXù[óÏ aúô£èi Y6Ÿ}I·/,§Î".¬fšà
+!]®RTü°äÔ>ÿYN3;Ùnh×PK÷XÄÉD[Æ
+KŽëžSŒ[ÔñvÊứÿÞoPK}ì$ôkPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.java]KÃ0ï÷+ÎÕØDB²v0'¯a? Ô쎶MLNt"þw³ÚúeÀyp'6WyPW
+ýr€kkAá.ÖÓk_h¿cØ&}µW2e¶XÒ
+«sÚÓûC
+V ªÜû(PöBÙåú)ä€M#
gi.ħ\r\ð¹Èžq±Èæ"xn%
+ùá+v"¶Á
+égM¯œÞúmMLej'C"¯ãädÛ|΢àÆ4{\çÇ?éÞØkìÉÍ·Îå¡þÃÜauS 3/Ö{
¶{®.`ÒXt]âd
+«ð)8€ààË`åþ6^Çð{órö
cèlMNC4ý¶ä÷rôÇPKêz"$0ÆPK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.hashCode343377±0PKëü·
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.classTÛnÓ@=ÛÄqIŠr)áV RÛm.HAš(-<RPP_-×lÒ-Il|©ÊÿxBðÀðÂ!Æ"U"jÉÙ3gvvüó÷÷V°F7§p·SkÔÚäP2îÈžËz(úÂ{Ä(¶
+ë5gÈ5E?÷{;Üyeìti%ߎL£»m8"°ãÅ€·+\Ͷåôü.w¶£¶Ã{€+ܶpwuÞ÷'ž«oŒõ
+OX}]Ó*Õrµ\ÓjjYÕU}õZѪª¶¢jµjE[3ÈŠÕ³}|.6Û£*CTÅÑð,GiE7¬ŸÇŒú4ÇøÔ±|û?ÑS/äC"ÚØÜ©¶e3F.AêüÇ«ºßI3,TC¶åæMÃo at zãÀävéÊ(ݲ|ÇäODà|v:·ayÏØ72È +£Á"î1lòc ²(]£ßQ¶vöžIÍSO<Riñ.E}ᜊa8÷åèdÆiu¥ÃœÇÎä:æqfaw$}§ÉRH2ÒâW°/¡;yžD0ì(g'Iü0KQÁæ_!4îÃá~4=ÜáGä#u÷ åGæqô¯O:î#_n at I!±aÂñ§_&Ñ Êtª- ZÈÄDí<ųP»KD:Ðæp°+TÀÕ/+p-,á:œ7ÂÃÿPKgÔÝGPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.java}Qkà Çßû)|LJkµËÒ²§QöÐ
+Æö$K/ÌšÓs+}÷iÛe
+wÇß»ÔÖÍ{Ýi¿ÈÁ€uT¶ÙKßJßSÐ(Q§ÓKqmÌT@©éPcÔcÃ
+iTí}3P@1Åö#Ô(ßEÉyÁË[&š8¯Ö¬\WË¢*JïU¢Ñ_·xÑgc:Î|aÿà<ïÑÕÞÄ€1
+Ù5CbG_OU€ÝpÀ8w̳£@wØÏþ·?Š%]9Á>Zôd{hÀŠÃhòL}º%w€š(ÛÚ.
+òâ"
+O&Y6G6ϲ(.vùô)}2ÝQg'«ÄÎÓò%eyþûPKHN¥/PK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.hashCodeÓ547162±050PKlh;ð
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.classSÝNAþº]»VµJEѪ[4lKiS£$%¡á¶ÙÖi;°Ý©»[à|_Ãx%ñÂÄ[_EÁxf[ &ܰs~öï;óÍ̯¿ßXÄîÅWÖ}ñ?9Úúcà>rñsÖñ@ÇCâÏ'Âçãf~!¶*?pT]xüÍ ×äþ{§éR&]-ÇÝq|¡âQ2vEÀ°UoK¿7py`µýhûŒÇÉ"h Ûà^(BÁÆÚÇ
+é5l{©T,ÙvÑ.-
FÙ¶ËBi¹²ŒøŽX.ªzKöúHZfœí[#TëÕ
+1:¡ôí¡GÀ«ÒùaXÙq<õVöG
+¯|9èWóµ/êe°ÏMG*ºÜë]FPZG¡2,o
+ToÆÃXX`0Ö[Œ¯*&ÅÛrà·øK¡Žßž©v}'$®èÈ'1Ç|År¯cm6wyd.)ÎòqÂî;ŸÏý¶}íéDÓìkGÞ+;$šYË×0=
+ËtóÇÈÒ^i È"ËÈjóßÀŸF¿SêÕDÉ&iMpi²ÄU©æÏª sšhÄ*zªÈ&RY]ŠÌ¬&;Gïu2Ð÷Ÿ`§ W1hô
+\¢QgbÂñ(ï:nDÜ9L!KÝÊ»iê×0[Óšw·ÉÓ g
+wÈK`&Q
+ÃÝwîPK¿ºøÕ4PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.java}AKÄ0
ïû+æØªÄŠ¶]a²Aðà1ÄtÚÛ$&,ÿÝŽnõ²H`ÞÀŒ|ó'Õì:ë§8b8ìôä¬'è<ÓÇ :4iìâ×f}Ïmq€
+$
+Kñz^<.ŸZe (N@±ÅÇ÷(I[#8¯ª©ømYóJ¢š=¿©ëeSåÒâ1Q
óO$öd]×ö¥yAÝ[ŠÖ&EPvr0;G
+zZÖ³ç.¡î¬!)ý[õêÿ3ýEž÷6:è
+Þ~8Î
+Ý2L©<Rô²ÕÁz€6Ëáçp
+Œ(XqØ}¥÷
+PKçhš®PK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.hashCode372552437PKIxy° PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.classSÛnÓ@=Û$vPÚå^à¥EU8E
+BH¥ J*x2wlxœFý>ñàèG!ÆêK€ZòÎÎìÌ9ö_?~ðp¿×æq7¬§ïa7mܲqÁz,©0TÖÖªÛêP0\d"^å£HßòÞ"øð§²ðË`UdÆð&U:Ê"sâ4q*Fl&³XfP$Zj)²pçcεTIèº~§Ýi»<ßm°å·¶ÜŸï¹×ñ=o«Ë`Gj4Î5±ôÖ8uJXçÖÉ$QrRg²#ämhq¬»g~³§ÆeþTåãîú3CgJÜ©Ùjýas:búÎq$ÆE$³qü}§x.ysRsóâ
+ÌbÎÆjwqaïŒ[ưPÐ8Côל#Z)Gù/OÞ ÙPÍÒ_?â0lL#lÑ¡wÍÞ¥®ÑPéêÏ%!hçedkŸ}5ÇóŽZ&XEÖÆ$Ð$K£Ê*Êšmn|Ç
+ÃÏËšš/ÿ¡XeuY¢»KX4çM,a*.F+ô^5+¿PK¯Ï0œÔÄPK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.javaÁÓ0ïy96%2énÚîRºXqa+T$\"ãN[ñJW}wì6¡Uäiþ|óÏØNªor°¶Ô~éÆYbXÐkÂcôÚ¯µß
+lY³F/d6BÙÀºäm:HïÆ
/F+PFzu¬{`ÝëÇïA²¶m='Õ€ªÆÕô~Zõ]UÝÞM'ñÍýšŒ-§ûiÙ_¶ØÄë9ŠKtdWA¥ŒïÏœ¹AÙÆÆÁ%Š×MBYOYŒ±-ããÇX\YÄÓ1,Þ¢žŸÕ³epÖ]ó/O±ëtýÒ|?€&x¯=¿þl[|}<ëçŠïÈ÷üÿ¯a }0oÉþôðžSèºÍwÙ2Ì¡å,Ëâó€°'xuv?gI6ôBað[PI~rŽIüb®HlÿŸö¥WO+.Rù4=å/o 8dkáûúÄÌgÙ!#ä@-$»øýPKºp:PK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.hashCodeÓµ06260514PK}Ý¢ß
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.classÕV]sZE~¯Cà@°üš&jÌ@1FCZkIÒÚ<9=ÀiCÏûü:ã}/¯ŒpŒvü?ÎÔúîB0MCŽ7r±ûìò~>ûŸ»ç?ü À>!µ0Xã]lðá= Þ#ÂØB)°þ¯¶%\pCÂu£c8ÞdªÊàÛ2ïëe££ïºíݺ«ŽhçRÙÔÔVUµŸlúŠa3Ü)×M«í¶t[©[5£némfÛ°ëݬéÇpÝ®m?tUÇ0;µLf%Íe³+Ù|!_K×V³ÙåÕ|.·²TÈ€Óù"€í®ëß庥¬*ÇVÛ ªcZJ¥ÈðÙqô#§X6¢Q&-×1:J[u|°#eGL»¥âH£Ç¡*·ÍîÀæhAçË.Ií¿f±T~ ~¡*䪥
+Ü·#ŒTÁ£YãzÃ2Ý.1ç1æŠOøŒéè'ÿ÷,^ùg÷ÌÞ?A&CæÂü3°]ùqò€Âë]ÔØçÁàosÞfÏ=ªï®¥w-""B'Qnûýuìô©lSHíçr4,Ýv[D×1iy¶ÈÏ VNÙZá
+ržy1œÓgÍMD*ªîš]Ôù¡í#MïrI[ÂGxÅhtTǵtÆþßúi<6ÿ+ÿÎ骮¥é×
+^-·Ï%¹È1[2ÊØ¡Ó±=·qÚãÜ.Â}T$Üñ1ª2>Á§{Ïùê§ÆÑR;
+eïà®QãGF90y"JÑÚ÷]ãcôtœ
+Šþö2ìè³EÀ43ÉÔèKUjªö®ž)é
+œG¯bG,ŠåO€BÒS
+Ý9çŸÊ9Ò€2;¿($2PU[.i]Mõpv[ÚC¥J¥T³éC8 ¯ÍTX4Ÿ@+
fF³ÿÚ`ß¿/Ñ>LÑ(÷0i&'x ^®ÌŸ$žÑB8!õàaX$"=xŸÁçù~-Ê%}ÉÄä@"ͬÅâáD¬!î?\HÄÑ^NcÂÔ
+áÇOMÑxž°~ýNÈœLaðœbx!èkH§mÊ'ñ5Í%#A¹/"ñ
+íÍQSœ×
+±á
+åè2^žxxô4+ä£yòæè-\%8J"%"rqPP · MŽ@VB€máÒS, ËÞŠ2ÔL5ÒÌÃ÷²WÂÒÌJX&ðr¿SÄYÁ=VÈ#Ì^šðPK(L
+PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.javaMO0ïü9.Æ4tÝìI7Æ1zóB*ÐXhíGvãfÿ»Yä°Q2Ó<ŒótRÅwV#TR·N YŒUR[š4áÆ}7ÜTÜ4;Ë-GC.ŠÔ5)dÂYÞÙŠ/ïûroPfæ£0? ó0ß~8f¹ìrJÓ,Ézµ«<Êã4Š×]bJ³,Yeà/ÞÒYs~ÇÑD€rb8>2ë4wè·{fápÚ¬Ÿ#²UÎââÏð¶×HM^ŸO^x+;{ëç~ùûcý,Jªïµt
+êŸþ1ó*;O_B°;Û}jžñð
+6è!hôÒHŽÌÛ¢3€FûP.ÂÐÌ D7§ü²N"M8ãdÂË9'Ì1p:ÇQÚó+æ~øEÿÁPK`á7QÁPK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.hashCode375Ž46440PKEÈ5> PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.classTKOAþ}̲Œ×÷Ddz@%YWM³ôÂàîÌ8Cü'úôàÆÁW£'¯ýÆêÞ]õ@"ÐIuUuUW]Õ]ß~}ú 3~%W¡FÆ1\I5ŽäòÏi5Ë?^Ëñ&¹üµ%··
+AÀ!¹h;vžÄÍî0ÄWÝ=ÁÐW°Qj»ÂÊw«ŽÒ_pËŒºÃ}[êÍÅxx`[
ë×¢ªô_²+Ÿš âTìà $ÐmÖ_D<Ž]§d3iÆìtÞ-Mò3ycÎ2æçóaY挵À Ý
tÊûÑBÅ×aõVX=°éHºŸŸÝ(òªëâ(\8qCŸézMÿS;>ôÝÈû÷3×Ù5]Á`0ÚFN
ð\!{ê+0$ö%:\{·¡úœ"ÈC§žCÏvÈËÏs¯YüôúQYx2\ aôm7òËâ-
3z¹Cþw#núÓgýÚÎÉcô*wöõ'»¢L¥=1'Íÿä²ÈÃÈçÕ5ÁÃ-.ßë
¿Áþ€a¢ÚÈpcO}Ë
+â<}}Lœ8¥æK€éÄñÄØG°Ê|YvµÇ»žkÄ®ãyÉÍß''¿@Ë £>y8Ã;ÙOmEÙGÆrª
+Ñýõ4¢N¢.¢¢Ÿzo¬1
b
+K
+LçH_D+Ô»Ö×#ô ^
Òl i¢ÒMÜRÈÀmB*¥AÜ¡ØRÂ0Ýï.Éi€Rã15Ò8íºG4ª²ý
+PK¹8¿w?PK,6gTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.java}ÁjÃ0ï}
+n8ëÒBéi±[a`2WIÄÛ³e{÷9i»]Ê0H?Ò¯OŸÑïMк0$q· Á»ÀÐAmÀs[œ@ËÄQ¬~m.tB»ÄdÅÐp?
@ãäñéÍm3P]ê
+TW :|€ÉY%åcœ®eUoײT¥Ú®ri[U%ëMœŒ×dåxûÄHOfÇ@áëzÍÉå Ýàãò$Ò0ͺ ^Ï*Se9ÏÍùþÿúÛþ\òÐM±îûp5ú©¯¢sö{°Ér
+ÊÝâ¢ÎÑ!¿Ü,`2ßùýPK×^ÄPK,6kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.hashCode³Ž433°°42PKÝ-
+ PK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.classSËnÓ@=Ó<nÚ÷«-«Eu)M)š"Т .1;nŠ$3£þS±B°`ÄG!î8.°hºðÜÇÜ{Îõ_¿¿ÿÐÆeÜÅ-ܶpÇÂ]÷ªOD,ôSÒêÚCySîs
Ÿùël2äêm0Sf±/Ã`Œ(aâ"YÖ#2ŒéGRM²1OHù"R|ÂÉŠ"D:òy¬
<õ·>f2ö]÷±×ñܶ×íž-¿åw;(Õm·Úm×Ûð6zV('IŠdžÚS :'šN*1ÐR9©GÀ2ÖüH÷Nm8ÃÙIQÿBÉ,é=ËéòV÷Ülİ~>b¹Â¯€ÔÞ:
+yb*R÷)ÈL
ü¹0//FÜõÃàSPC
¥±Â°sÁÈP7,Î8á!IÙæ©âÿ³«DH¿ÛøðW³@ÎPØ×ÛûùíÞÆ
+Jô(Iïa,I@ë%²låáW°/ùöeZ«y²ÖÚŽ³äü9ÌSi~G¶D¶ÑüÊüqófèiŒ¯Û£ÏÇ.åP6@Ãià§-ñPÏ)žEªn䜬«ù×è»ÏvãPK2¿áÕPK,6hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.java}ÏjÃ0Æï}
+·1L5J£ìZØÌUSÛòdÆÞ}N×l2ú~úPèõ¹AH.YûqÅ@Ò²F'
+òáwiO`/]ÏÓÈÌËLHoÖh¡mcª+P@µÕá=õlЫ²¬m³-»§]ÛšBUmUm«]QŽu×ÕMÕ|ØfçxÛã$œG2ÄçjçYAht!1ÜÝDã]$ùúSeÊ3zóÞEÿÿÐßõÂÄžä{ÁáGYCXÙ'ò¢ØoŸr|PKɱe=ëPK,6lTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.hashCodeÓµ42371·4°PKXÛ;\
+PK,6iTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.classRMOÛ@}ž
+ïœAU±É
+BöbAT*®ã®aQâM×kÄ¿B8ðøQñÆŽâÄÁ3;³óÞÏÃãÝ=kaÑÁe+å]K³Ç0¶±yÊPÜW¿ÃŽ'cqzBÿ
+z}ÊÌz*ú§Y'æ\&?œHéAÚ Ž/#-|"H&çŸ4R$þá40RÅ~ÖhÖõZ{{§Õô«ŸÛrݺ»S¶ív£é¶:NšÃÔJoÃ4Ïiù3-O$IFi~2:óŸž2WÏ}ð®æõ?ŽJÍ+g¡µ7«1Î2"· 3T¯B1Ì2UOTªCñ]fãõÞi[Áe0ÊÝ÷þU3=ïñ?î]føõÕ1äÿ¡«eHûÇðwøí*--n<µOÖ¡gäK_nÁnìõ²e,bìäšLg€ªüÍÒfêú²lë£ÛŠ0mïÁ'²³V
ºŠoÞæPK÷8Å¡`PK,6TestNonRegression7/PK,6i©ž(CTestNonRegression7/parameters.propertiesPKð
,6
+ÜvqÒ@K%,TestNonRegression7/data-backup.sql.gzPK,6QDTestNonRegression7/scripts/PK,6Ô$:8as(DTestNonRegression7/scripts/SiMatrix.javaPK,6ßEŸ@**ZTestNonRegression7/scripts/ResultName.javaPK,6S{ŸÃ*Â`TestNonRegression7/scripts/TestAspect.javaPK,63· Ò,¶bTestNonRegression7/scripts/GravityModel.javaPK,6;V¥ÃJu3wTestNonRegression7/scripts/TestSaisieViaScript.javaPK,6DíH·ò*ÄzTestNonRegression7/scripts/StackTrace.javaPK,6ÐåWà·( }TestNonRegression7/scripts/RuleUtil.javaPK,6GËmY&_)ÖTestNonRegression7/scripts/SiMatrix.classPK,6é~f-§TestNonRegression7/scripts/GravityModel.classPK,6¡]+_ÇTestNonRegression7/scripts/ResultName.classPK,6ÎTestNonRegression7/simulators/PK,6e"Q3cÎTestNonRegression7/simulators/DefaultSimulator.javaPK,6·Fü¥ªE4XßTestNonRegression7/simulators/DefaultSimulator.classPK,6_ûTestNonRegression7/formules/PK,6èÈæ-=|g«ûTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.javaPK,6Hž%Å
+k}ýTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.hashCodePK,6î'¢@]{h þTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461261642_0_7058987467968363.classPK,652*;hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.javaPK,6}Ý¢ß
+l<TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.hashCodePK,6ÝÅ/O
+iâTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156463848749_0_10960171450387712.classPK,6ÒSÎgzTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.javaPK,6úe-Ý
+kb
+TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.hashCodePK,6NÑèRhTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461228697_0_6853796291635997.classPK,6^Q` hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.javaPK,6>¿e
+lÍTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.hashCodePK,6}ì$ôkisTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156954206958_0_11648203253726219.classPK,6êz"$0ÆgþTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.javaPK,6ëü·
+kÃTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.hashCodePK,6gÔÝGhfTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464717040_0_3805160120176513.classPK,6HN¥/gCTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.javaPK,6lh;ð
+kTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.hashCodePK,6¿ºøÕ4hTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461141650_0_8118906797234846.classPK,6çhš®hwTestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.javaPK,6Ixy° l
+TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.hashCodePK,6¯Ï0œÔÄi²TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464182514_0_05071355212265227.classPK,6ºp:g"TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.javaPK,6}Ý¢ß
+kD$TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.hashCodePK,6(L
+hé$TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464454797_0_8443876652910307.classPK,6`á7QÁh)TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.javaPK,6EÈ5> lf+TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.hashCodePK,6¹8¿w?i,TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464173247_0_25218619921166496.classPK,6×^Äg/TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.javaPK,6Ý-
+ k¶0TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.hashCodePK,62¿áÕhZ1TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156461268410_0_8431158202216767.classPK,6ɱe=ëhÑ3TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.javaPK,6XÛ;\
+lR5TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.hashCodePK,6÷8Å¡`iø5TestNonRegression7/formules/fr_ifremer_isisfish_entities_Equation_1156464183976_0_27224290075885627.classPK3308
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/Simulator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/Simulator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulatorServerBadIdException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/EditorPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/EditorPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/HidablePanelPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/HidablePanelPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/LayoutConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/LayoutConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelEvents.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelEvents.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/MatrixPanelPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapEvents.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapEvents.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapToolSetPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/OpenMapToolSetPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/SeasonIntervalPanelPropertySetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/SeasonIntervalPanelPropertySetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/TopiaEntityEvents.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/TopiaEntityEvents.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/action/ExitCommand.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/swix/action/ExitCommand.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Date.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Date.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Month.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/Month.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/RangeOfValues.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/RangeOfValues.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/TimeUnit.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/TimeUnit.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/DateType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/DateType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MatrixType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MatrixType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MonthType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/MonthType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/RangeOfValuesType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/types/hibernate/TimeUnitType.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Help.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Help.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/SwixATFileTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/SwixATFileTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/UIHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/UIHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Welcome.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/Welcome.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/Input.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/Input.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputGear.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputGear.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputMetier.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputMetier.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputSpecies.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/InputSpecies.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/WizardGroupCreation.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/WizardGroupCreation.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResult.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResult.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultTableRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResult.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResult.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/DataResultUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBean.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBean.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphEvent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphEvent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphMatrixNDDataset.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/GraphMatrixNDDataset.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItem.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItem.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateListRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateListRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoItemUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoPanelable.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/InfoPanelable.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic$1.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic$1.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendGraphic.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendPanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/LegendPanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/MatrixInfoTableModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/MatrixInfoTableModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit$ExportActionListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit$ExportActionListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultEditUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultView.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultView.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResultViewUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUICallback.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUICallback.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptFileFilter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptFileFilter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptMapping.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action$ScriptMapping.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/Action.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/BackupAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/BackupAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/CancelAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/CancelAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SensWizard.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SensWizard.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterDialog.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IDialog.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IDialog.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisAction.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisAction.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/IsisActionWithBackup.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/JaxxUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/util/JaxxUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfItemSelectedInList.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfItemSelectedInList.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfListNotEmpty.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/EnabledIfListNotEmpty.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval$Quitter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval$Quitter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/FormInterval.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/HidablePanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/HidablePanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval$IntervalIterator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval$IntervalIterator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/Interval.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$1.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$1.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseClick.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseClick.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseMove.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic$MouseMove.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalGraphic.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalLabel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalLabel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalPanel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/IntervalPanel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$DateComponent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$DateComponent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$TypeClassMapping.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor$TypeClassMapping.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/editor/ParameterColumnEditor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/Acceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/Acceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$AbstractAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$AbstractAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$BooleanAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$BooleanAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DateIntervalAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DateIntervalAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DoubleAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$DoubleAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$FloatAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$FloatAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$IntegerAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$IntegerAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$LongAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$LongAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$ShortAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$ShortAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$StringAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory$StringAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/AcceptorFactory.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/CompositeFilterAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/DateInterval.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/DateInterval.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterAcceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialog.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$1.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$1.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$2.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$2.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$3.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$3.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$4.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor$4.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$Acceptor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$ModelMock.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock$ModelMock.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogModelMock.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$ResultState.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$ResultState.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$State.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel$State.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/FilterParamModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/ValueGetter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/filter/ValueGetter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipListRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipListRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipComboBoxRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipComboBoxRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipListRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipTableColumnRenderer.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/ToolTipTableColumnRenderer.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/WithToolTipListModel.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/renderer/WithToolTipListModel.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/ParameterColumnEditorPS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/ParameterColumnEditorPS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/WithToolTipListModelPS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/ui/widget/setter/WithToolTipListModelPS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ArgTypes.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ArgTypes.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Args.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Args.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CellPointcomparator.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CellPointcomparator.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper$CompilerClassLoader.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper$CompilerClassLoader.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelperTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/CompileHelperTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ConverterUtil.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/ConverterUtil.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DateConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DateConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Doc.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Doc.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DocHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/DocHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Docable.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Docable.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileChangeListener.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileChangeListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileEvent.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileEvent.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor$FileMonitorTask.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor$FileMonitorTask.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/FileMonitor.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MethodTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MethodTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MonthConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/MonthConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/RangeOfValuesConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/RangeOfValuesConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/StringConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/StringConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TimeUnitConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TimeUnitConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TopiaEntityConverter.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/TopiaEntityConverter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Trace.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/util/Trace.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCS.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCS.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSException.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSException.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSFactory.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSFactory.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSNone.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSNone.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVN.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVN.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVNTest.class
===================================================================
(Binary files differ)
Property changes on: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/vcs/VCSSVNTest.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip
===================================================================
--- branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip (rev 0)
+++ branches/isis-fish-3.2.1/src/java/isis-database-3_cvs.zip 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,1079 @@
+PK
+¥]7isis-database-3_cvs/UT 5$YG}$YGUxèèPK
+]7!isis-database-3_cvs/analyseplans/UT $YG}$YGUxèèPK
+]7%isis-database-3_cvs/analyseplans/CVS/UT $YG}$YGUxèèPK]7ÉVâL\,isis-database-3_cvs/analyseplans/CVS/EntriesUT $YG2$YGUxèèsáÒwNÌÉL*J,ÉÌÏÓËJ,KÔ7Ô3Òw+ÊTðË/S00R04·21¶24Q0200××çÒ÷M¬@UèX€``©`hjednedSPK
+]7·þÍt/isis-database-3_cvs/analyseplans/CVS/RepositoryUT $YG2$YGUxèèisis-fish-data/analyseplansPK
+]7.à)isis-database-3_cvs/analyseplans/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7-isis-database-3_cvs/analyseplans/CVS/TemplateUT $YG$YGUxèèPKgb7šYª
+s.1isis-database-3_cvs/analyseplans/Calibration.javaUT ²a+G$YGUxèèíZqoÛ¶ÿÛùD0¬rë(±œ
+qS,KÚ-IZŽÙ°¡Ú¢mv²€RÚ¬Ë~ßâý€$Jcw+ðØxŒ;ï~w$òÉï|&yt§DñX¶¶ä"M²©çrÂlæOPDE.c_¿ý3úº©)§|2 \,XùQ2Éxæ'³Ñfd/ø$O²;Gþ$i®ü×BQ~É¢n{Ço¹/ÿñšñ*FôÌXëŸàùŸ2ùq5Q€£yw¥IÑ×m"3F¬¥8[|ì
+XųIh&Å8^¿Õì¯s-ÙN3_N3±øURM¥;VèjÍïR¡ÖÐ(¹("ûûoÌLâ$ÎÅÇ|Þ§<8¹ü-GŸG~~Mïð+ÁÉr=Ø3ä9Wè(op@Ú°qèªÏÖîãÇ[ì1;ágßÍXIìO£E7fFÙwlÁ3ÅœœomÓ÷Œãd±§ÏôýȰ¯^[IWlèì+K5XBqÈŸ:Õ?Äng8ÜÙØðÛÃýÃáŠgã;¢c-áá·JÉX·ín¥ðM Ä$âJ¹ê3!Âèã\1g^ا-hÉ0^'¬P!þÙOùÝœ+ YZäî(L(~Èñ4ñ¶}ßßîH4ñ±fò`ÀÍïÕhâÏD;ÏQÎ×êöGFDõÿôæêøêùÍÙåÙÕëœòbX^åÅ~yqp?Òèc·GÊbg6yÛGÔK2ŒøÈBVÄÔcÑM
`fbMû*I1ÍôÆypÄâ"F.¹Kz1ÉöPì|3Â×?¶ |BxŠ
äVJ²°`ýÐÀ&Õ,bŸŸù«yî[5Ÿ)Wåп»8YLåd.Ev1ÏÞÖ·!ø£=aHkø-ØZbx/p(æiOp»&c þ-CeI
+à-¡Èbô§ŒÒrY œ`Mn/-³QôBçºËSfÞ©ÓǶèM(ý}dîü:(ÚÜLE»N0
+á\Ã/Å·Õë;ÒJ01ŽÊD^d1ËçÂåbwÝIq"®-eV¥òF{gÜ©~{
+µAŠxvg©Ò§.Düã«×g¿Þ_]þxóêùëçWFšÃ×Á_6¬Ôº¥H©yÛt¯DWfá#>%Çq=2%ŠÎTÄp" RäYB;Œß¶üù#MÆ÷LÙEc#€k*¬Ñ0ŠÓºÆÏ³äÂLMá±4ÀoûA<±Ý_gtÇi* 2/ RåJM
+ØDäpÖ²tJKÕ¥UÉ#c·<YTeß?äF÷΀@ÈD·¶X³231DmPØ
ãœåÄ`ÂÇ|¥¥zrÊŒaçèpýù'ÐÇr<Rkzôûy¯6àè*ºâÄÒ5Ríc¢n·l»3uËÔ¿HöG£Gåöî`uR4÷5ê\·ÝÚ&ÐxüT$MuÁæõéò²XEörJD%Þô®š/-Wv~-fÚ}éÚežãi|aMZB·[¶nRNRpõê'ýpìOeþp§
^;o²_²ÜrÆù#epo©º«n©ÔXut2ïT?g1ðøMt
+éÑ,@ÒÛëOVÖ=8ZKK?m |fò²*é5²ýÿN$Ja÷MË,óõM©}òæ¯t«×#uzÞרaè?íUÜ1[(QÂ:÷ "¡ØXLQÃ3e¬-D±nf
+{Ó"ñš^@0eÜâAnïPæ¬XñàGUsŽ{PXSP¢ÒóÔ
rö}}ºpl$þfĵ®Àjâöš5ÐÕÀWKâx€hs©âÍ 6aïõ+: §¥{ÊöÝüÚ«óŒ.ËÙW)Þöš³6qPk÷kâýnâP/èøýPYÎbÿYîήø/o÷®o~öñã°¡Ã)XÃih8
+
+§aÉ©g£«çI~£²²ÆìûZÙ÷÷æþzŽyGÒí}PwŽ='sÏÄéÞZ¶µN¯WZUk¹7ræIcž¶
+ëÀü$9ÚGl;CB+¢|Ôd4#±L,##/ÐÖ{ÂVµ©œÏvYàïµëk-ÆMþLåÃÖà]{€Ûš£S°ŠSPMŽý¡ÈŽ+å¥E¿*zH$À)9z@q·"h
ÒKª We·®EK5èÞIEB'qå+d.V1ÑÓ^&1¯;ÖFucP6ecP6Z\9ÔœãüÆÉoÅD©ïÙûBâ*qH)ÔœÚÚ(×® H¬ëÒO Òû&~º
+86mmϵ «|ËPeŽU<×8¬å®6Swž¡ºAKÝ'©ûäK«4Õµl:56ËjN·L,[áí÷ÛÊ|bzW£rfJIçáÏÖë)Ö©yPÉ7¶]Åqß"]WÜ{?ÔŠ¢#šz÷F×°]îF t¥žL[~su
Íi[G³giÜ\еqöëÅsBU€i&ùxA=$B³«>ÒûYzHêI
òõALp:®DX¯Óå`}÷[5H]Ø¢M×vL[»ýf³Šþÿ<ýWÏÓÁçÏÓþjþŠ1+Šª¬{zQW;Kj[aéN_ ¶õ]_GYµóšWÂ|©k/X-Ò*§V¯fÉ!þGËÚ,yµLÚ`µLf'Ú«ë
+ÏôiN²¬Ü oêe6ÍBÏÁ:®òGÞ6Ì{ȶ×Ýñ`Û²6ÍæÚáQ\C¶i%æñÒÚ`ýÖŒÃXûªXŒŒÙ©\P|ÉñÀn+¶H€À9¥ù»ÜvÏQhyC$$ÚøŒ'Y,`Ò²>®Q«åäš6Sgò¡^ûËÚ©å.K]þHâ%Ú1M쀯P.tÞ1ÒWtp&ÌnÅ£º°«B
+÷z©M
+KÏÎäbNÛ>õ¥œ%á3ÎÕ¥Ù|ë7\f~ìlʹÎüöZ+Üâ$I²PÆ0¥j[í1m_vì"¢÷/<*vÝ]5DèíëYMÝ"Õ¢w:ç~|ð oÇv°À¡Ÿ¯®Öã|
GZÀhÙöõEÊé]Aéu1à}ù6NxÒnI3¿¿xô oÕÙ¡>#©V=vô7{ÛýÍnk·÷wwâ6£×râ:'ÑÐLHk-óÞ>ØÝíõxA%¢Jè¥!pa¹/èxOÄ¡Ýe§OÍæôø%I§#vŠ€z!Õw?Vmn×㱫íú&#v)RUoô<±ÚŠvª® 7ù#lQ!ö€>'8á)üõë:ËôzZ Éà @ee
t÷rüD0 ÁÔs+<ÎåDµð çÎ9]Ù3¯Õл·{×>oWI|OQèËfϺYw^u©¬Ì©µpª9|Oןóÿùóùo}öõ×F'}<`ÏßõiO¹w#
+uí«(XßatÜþ¶[C°-[ÌÒ? ÉŒuÒÕ{øl€¡Æ;@î }
+åôŸ
'g.+AýÎaN
+Lé°öËŠEÒ\[àèÕÈ¡Ošj9Ï-Öíñ¢ÞønÓžpÝPÊØ)²Å&"çêÏ»5"5eÌ®Ù"Šóþåë4ïV×ÖÎKºÀ_~2ݯ8ÙA¿R`Yw%¢UÙî}2:
+W0ÉjiâÛŽPñ£ ËedÎøÌ}÷iÃ&§HwêMì2#S'¯¥Nl*?bÞ #ÍOMî2îìÝ[zá€ùŸG%¬·»&ªßØ0 ZÛëÃ\ fœKUU×%e¿µä^&oŸ_ãÕÛ¶RA.Ëj_V¥4kn4^jnµKZkÿÆïPhW?õÔïB€š0T^PÄWuM2íZ²Ù×í«]K6Øžï`ù g¢ÊíSc2iÎ*ÃMN ëî4«cÖãrrUÑK:(aä$Z/WZcÅI95£ÈxôÈH«TZé¢4ª²žJ<y6ÛëôÎ$k§p*®>Wþ
+nãCßr÷4ú«zÿfŽláïßPKki6_m*éŽ
+)isis-database-3_cvs/analyseplans/Max.javaUT Ù|ñE$YGUxèèåUmo"7þίEB(qUu-ÜU¡ wDžèªjevgÁW¯œµœèt?8ÿ¢ã}ÉBí×òawgÆÏóÌSþÅ\q¹±J®l¿ÑIªëž!h³`¡PfN(&:ß+vçAméMxÊÃ%eheÔ
P6ÒþqfïyèŽÙl:Ë&h3éÆ<Ázï_q&4ûÕæ9lÂÝÒ?X³Vm&b ÒÛ
+»dV$äM/¡ÕV×®ÈÏmRŽì;<hÊ 'ȲuЬF1(Rò@)ù÷ÇßGøR9ôgÄ·ä[SZS%éWdôɧqÙj5 ÷|Í|béÛ/o¬Qºpc¡{uõŠÜºæ[jóTgÖ
+o«¯kÉçTVbnðD7aQ]ü;®ÐX§\ ÿÕëÂixD!K *öàô6ùs/®Ÿœžú:ßõºozÝNnó
+Ñ Ò«±øœËFÍ%uO(¹µ2QÎÂVªàK£ô# ÀiÈ,õÄ<RžM>e(ÍPäÎøòîy#&T¬'±óŸ?ÒÇ)X¯<P_åñÞAÝalVM/wïŒ_`(!EúJý:WŽ¿m0¥RøãOP¢µÜlñÍeyµÂ0Šä¹¥°`2®¹×šÕuç³ûÁlr÷[ðÓÝÇûÁtÚ~Ýb<¿F?ïÑ`|{7þ0
+`:fÿ÷ÃYàk/¢E3kÌüÏ ËÊñ³úEܧ>-x at CÑcAÐyFCJ
+Ky¢Žf€¥
DðÃUî×壳ÜDg 9DXLH_ÎQ;ö{²EnkâãF¶0\XÄxA0hxÜÂùÊŽ)"ÞP+®©ë°Oœ*KæÔVT
%{Ø¥?HSÀ3©}Û|O¢ÓlòHýDi%P4:9
ŠGÔaÅ%éf$ÊKvÖh;:€:×õï%вË3
+.Ê2Üo¥E@óåx¥NÌߥ|Mßs€>@@º· î0*OÉó[-vLýUÏb°Å`õÃ$Ê;Íïï; *d!>ø~ÚDz×£MIZŸN·k
+®wÙïÓq®µDÂ_0®±µ
+/®¢ÇÔ°çöZSæ9à1Ýwÿ§äÿsèŸ86ÕŠºÊ°þþç#ŠÐ7зõuÓßÍy>V¿6þPK
+]7isis-database-3_cvs/exports/UT $YG}$YGUxèèPKÄ[ž6RÄD©
+Ñ+isis-database-3_cvs/exports/Abundances.javaUT [UF$YGUxèèVmoÛ6þýÐr2Nº]
+ufÐzE³7¬+Z¢mf2)[§ðß)Krì1I$ï;Þ=wdɳù\øZjãì(äŸ@9ã%Ïez¹ÔʲBÏçRÍÙ;==MìgNuzÇWIÍþ4Ò ÓÎ[ÇÌ<ZŠsQTN*&Ï~Tì·;öZ%wzùwÐ2#KgÙGa«ÂMøRŽk3ÃäÌ¥À·v&í å€ÂÆcb>Fì=*éÖ%¢]r'˹ã$Ø\V@«cBšvØèD§ÇÇÃxZ©«L0
+8ÎÐä
èP>3°¢tb95Îêõ׌rm+ÖK]YxÕ|Ÿ.ø3+Qå9FËÒH+fãg¯ºÆ¢óðì£XIúB+ì<«¡ß¡»Pè·Â³KÿBË/Ÿ~þ~Ÿ/œ<L×BcïÌŠ%·RùµÓš¬Š%+žµí6-`Ž
+rB~à[þ0"à4TVf<
t랫Ч²rØk] Z
+II5ÓIÌ{#2J85Cqß+tÜ/
æl.Ö-æýì+¥ÑNdžAƪ9|úJ åf2xߌìö×Rœÿöñú¯Ûñß'ãÉÅ[/·ùWÀ± àîLvá^ÞWn!-{àFÝDû°|%¡Ð¯CñxªëÄ[¬Ãn<'æQHÙÕÀ.Eš~;sÄ5?
+d
+oÜ¡@i_OÁ+à+AK
+|ºÉ|t¯GAHr \+-óº«&{Õ
+¶9ÐAW®É0úQ8~
+̰4º¬õȬØ÷¢%=?l€mÒë=`Ö{ß6'ýi·ŽÓWXOÐìÉc¬¬±ãuPœF¿8"LÑ$õ0ÁlÁíD|EúI?õ{+¿Nï°€š¬XZÜ$_oÄcOÏì
Ö&
+³eiS'Ê%*&4èʧÁç}Ñ6¿]0÷ÏŽ¿Î üÄbiÑ ÝÈ5²JÀÛ-þÁJÚò}!JQªHr*ªâ~pf¯óf|Ú€šÐ$E¥$ûýø?°»Ú¯ÓãÈ/Tçb
+6TA§ØH}Å·S%ŸÀp±þÐbxÀ,XÒH%äIa_Ü!AèÅc®Œ0©6Î,P³MèÕâ~ÈÂgÒzÔ£®Mfë2"ÅéiëYÚ,îÕ_-KÎ¥ëÓ]é|Z_Œ€ñ5Æq=IE5y×:nð`
+1js
òŸêHI"Òݪ£µnÝ}H
4üÒ¶äm÷û[véeB±:jmRÓÁÈ¿_¥µßaØï£mòCÚœÛ~|«þRÝÝÖ-$O|jÏ¢TÐ|Ãs*.Ö;ý 9k䌢gÞØŸ~'K¶]t®ÿA#¹{ZÖWÖE3ó>õÆwÛåýŒk÷).4Yë`di
+Ÿí¡xZLÖ:
+Yè§Ýûm[Ýï.ÓW'L¡oe'÷=ßH<þ&òÿhÓV+Òæpã¶žoêËJ}EÃxýPKÄ[ž6l#«*isis-database-3_cvs/exports/Biomasses.javaUT [UF$YGUxèèVmoÛ6þýÐr²Nº]
+ÍË:HÓ¢¶a]QÐ2m3H€ØÿûîHYc/H|yîáñøÜQ%ÏŸóq_jãì(dA-°;63éÈ+'Ç?+vIo- ŒäÙ\ ²(޲,׳T3v¥g£çÁÞóÌi³lYoù3©Ù_F:a¶Wk*žÓÃÈ{vØq>3²t}¶ÊÝ5/D;75LN(ŸŽSiçL('8ù ±ßüëI€[ÈvÁx6á[Ü·`7²šržV7ØÇyŠ]Øacœ:<à΀.žµèÅGhðÜth2× ôBc#àd0ø©Ç+7מÒjYèÊÂÛŠù.çc<0&/1ZFFZÁð4~õŠa,:/>
€ÖÙkxQS_¡»Pè·ÂÿÂߌüøòäü2|=Þx< SïÌÆ%.o¥òs¯¢²çšË,ÇíµÛV1RÎB8x"ÀÊ
+@¹Ág2ny·ºTVz©+€ª!TSıž7¢5§ÎÜöœ¬çK¡/ œ€
+Ÿ÷²7
+F;áÀ
+êUÍàËWP"Ör³çt»ùµfNÿø|ù÷·³ËNon<j=ò¯Àâš}¹Þ&Ozr#\ež¹ŽìtíÒiî{
^íãýǪý^:'éåIFÙÅ3È.DH|€ÛGó-kmäšq£Çǹàð
È`¹)|ºÉÉh¥rGJSÊ (öDh¡å€®¢ÉN2mF T4ÐëaüŸ#Éf»Ýqz|ÒemGÞ`ZŽD€¶OÜ`È-éùn¶I¯÷HJ|ŒŸ,š³m¢2È>Áeþ_u(¶|èG>).ÈdÝM0£$s{-îQ£Ç^ÒO¢"ýäÎÌÇñ-f%
Å]HòôFxfϵ6©ðšì>k*;@ uzÄòeðuÚFòw£«fþvÄOã=ÿ j€CVÔ Ð=ÐFM Xð|³Å?y^}{B±;!¯CõãQÜnÓèå€#v€š4Ž~?þWÅÖ]Gm«i6WÑš¥iDJëhÕømxD«ÖŽÜq%Çå?V,ëÜJOÆõEKÀ©T€ìÔxÅrü ¢·OØY»G,ÊÞ ÓËc®x"Æx/dnêD\»B¡
+S©wÐøä?Xð£$gŒ?Ú üšL
+»p:§«ï.2zïÁdÚž2GK-ý¡OCû-#Í€õšç·å³šŽÍnÒ\7¢2!?µIÁÖI#ÿ~ÖÝ~6ñ ñqðÓÄã'ý§Z&¶§®4<òå&®aõE7æg|B©dÓ°ýÉqó Øq@§ÆðåŽ.ÙvW8Ïýµ°AÜÀ³Fõyt@
+]¥~ñíâžzt*aµUÍt8²Ž&ßfÉvX<MF%ë£è§ú¡€çó?Ûß[mOS§V'L¡JeG«/ùÿuŽnEÒÙ]ÑæºûŠþ©?Ÿ°Î¬£ÿPK
+]7 isis-database-3_cvs/exports/CVS/UT $YG}$YGUxèèPK]7A¬Æ!»Â'isis-database-3_cvs/exports/CVS/EntriesUT $YG+$YGUxèèÒA0Ð=§àŽKÐãÂ]Á@kÚñöbÆÄý?R$E/®\ œø^@N·ÞÍøÓe¡K×q at c¹ÒlPv\kÛøßM¯@ç²+Ì&Ž2WmI mu
+
+4(ÅØ_Ž«*©ÎÀ (»:Sö"Øås)ÒàÆìTÆU¡ÿVÿRþHV1cª³hI,äãŽKªŒÏºtÄPK
+]7ÿ1*isis-database-3_cvs/exports/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/exportsPK
+]7.à$isis-database-3_cvs/exports/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7(isis-database-3_cvs/exports/CVS/TemplateUT $YG$YGUxèèPKÄ[ž6kû§§/isis-database-3_cvs/exports/CapturesNombre.javaUT [UF$YGUxèèVmoÛ6þ\ý
+Vè9N7éÖÍ®IÚhÒ öÖ-Ó6;HÊ[ä¿ïî(Y²K"ï>wŒ{ÄRdÿdòki¬w£(R>1ç
W3vÆ33yåæêÅ/ãß]k&¢Ù\eQíxnf3¥güœgöVdÞØeúY,Wÿiv}µP!üÿ¬úÊ÷:ä3«JïøµtUî/E!Û¹©åjje!áî*7çR{åt±ËÄÏè¶ÓÒ/K@;^î4/Ä-ù*ª2nô
+ŒÃ<Ò/Džòöö"¶ÇNDé++Ý¥)Æ`
Éa±XMìði³8Ïëù7¢òscÐF/S9özõø&cØ5.Ï!eVV9ÉaK~#×
Ž"`Ï®åBáÓœà/Ù³ú=pfU äå=;¥¬üêùà§ç/Ùà×áÑ`8xEölŒd`tLdl\ÂòNi;ÊjCqf¹pn#ViË![Ú;6}"€yÃ*'LåÊ/÷Ùç
+xg¿4eX_C4âJOMsÎãÞFº3 öÀ x /emóôðllñíÒ/3Ø
+vå«gìã'Še&v¶0¿msµõÌ/o¯Ïÿº;9Ÿ=ùýîêìúîæöúøöìÝßwg·ät?¢[X,$,¬¿Ëõµ^g-+¶f~®ßà@ï£mX
+«r©äCñzNâïaªÓKÕŽgnñ°SŽà¹KâºhréXVSeRC¯PuM xs«nåÌq.EÅJS
+ *bGj2úfŽ(r¶0jR«n²ÕüöYP at f*ß±æv&)NØOÀÍyzH»!î5HzT µmRó[%
+¯)H at reÊ£~\ÇŒvžŒÖÚ%œÞFå1zZ~!ÊÉ:ë)r1E¬&®MiR˯X£žx]þ_2ø<&ð` ì>¶ÿèŸêdª¹Ô%žîS©ÊsàÇ r4KASÄ%ôýXBV±¥¶c¶µ^!<øç®*>تÒwpÀ·Ôlù ;mAý- %L¥§êWšŠø\žKJöè¡d¯â®wd;#Íõaüô
+eÍÉÂs
É¿
¯mæN±¥¯Û
rA-ÅBgHzùñŧ;¶åøÎªd3úO»UMépÒ?ÐËœñ%ž}ªü¡kb Í%[Œ üWrW€Ðàüöz5Aëúñ(î× ØŠšpô|²Cª[ÔD(Ôñõ ÒëÇÿêøŽî·F×GÚ·öé`/Z at -×â`e
+UÝQK9 V/ÒÕäÔ¶H¬è°êxçL€Íd\ŽÈ²ÖìtÀÁÕRo§1|"Jo®x"Çðœ4çÞVé[ÉF_LZ°HQ¯VëÓá 9o¡Á Œ¬l·usíÇ<8 Ó[2Fש9xÒØ
+YÜoyxLZFœfU¥Q7Ò§Sï¶·{ñ K;yîJÎuEà{ô]ЊŸÒ¢!«t0¢ûëŽf^û}xÒd3äÑ4âÐ$â3¹FW©IšãÚìDøl~%íM-x
+ñ
+ÊË¢LkÃ
+©UºA/~ÌkËà߯2xk ZM5¹ iíUÍh-¥K;v;¯vývüIÝØµÃvâÛÚÄQhz`ÀJÀ"d¹6Jc€GÐÕXÖèœ}[LfaUÒ\ä>ß}§é .°º7XQÔãâŸQ}ÜûèPKÄ[ž6¯² .isis-database-3_cvs/exports/CapturesPoids.javaUT [UF$YGUxèèVaoÛ6ý\ÿ«Ðr2nÒ]
+
+Ž
+ЀA¬Ûº" eÚf+I¹uü÷Ý%Å© %wïwO,xú
Ïo
6Î{=ÓXÇLA9KõTd¥Ég¿)vJ7%ð§y®eÏ¥³wz>~Ùk:mV
+êgŸäLjöÁH'LwµPÎÝþüÆvZäS#gÙ¥°eæÎy.¹arfD.ðn¥I»`B9逰±ÍÌ'øÛVK·*í;±ÕlÊ··`W2/3ÌžVWø;ò@¿áÚ§··³Ó8â
+°ZN-£\âš0IMG°J/E>1öÃ_«ùWŒtm+V¹.-Œ\?ŸÊø7M¢ËSÌ
V0Ü?ŒëRÀK±ô4gì9<© ß!e(ä.FðäØßpåO¿<ÝÃßGÃÑð
·É
+ÐèÐÁ€ÀåT~n¯Wk3ÍžµÝPa®³¶ ~ôz&Ò
+À²Oe&Ýj>H«( üJšºFdÄ€é8bEý1K8U_`èK°t=^M³¹pøw7Á³íÂh'RÜžÂÚUsøø H
µÜ¬Â"äo[_M1³³ÃëËÓ¿n¯ÞÞ|89}óöúæâäòæêúòðúäÍß7g'×Þ÷vìoa͵° ®,Ï»KÆýÖF yn!-»C-Þö6a 4äýµÌB®÷aFÌD5ÜýL€*j+*Kíò`Ç"ÈÂÝsGUådÂBZ1¡ ð6Åâ`×ýÊÀñI&xóÅ8š#f,§ãïZ±ÒÔ`X>÷dlpîÆíßZ`.]÷Ãè¯TÜ©ð!Ž BnÖù€ÍÃî(EÜ÷EZÙÆuYÒ5Ãî/tQ¹RTØ]¬npSÀi¬mÜïß)[çM-%Ÿzªñ»ê1
+2>#¬:WŠ~RoTwqé:óÊ~ø xHÀÁ>&Ø]
+l÷ÿ6UµíKÎ Šåcde!MØÛúQ0~,f -j.
+ìýÀä-àŠe¶±]!Jüg¶ÌߣÜËÜgqoÁ3Û|u¯»ßSÌ7ÇÌLNV¯X ÙÛsóñ}9_Ç]mÌfFêëýä3jI¹EæöàJä?·©=ÒÚL¥BŸvÊï(
qèæÇg~îØTå£Ëæþ?i·Hû[þÁVêgòŠàrð©Õ6w¯©Æ.°äYø<+ŶH±¿ÙWjõK<ÎÒ
+¢q4š°1죢ÑÓézšnú^"ùó
+_
+œAô¯~BëvcŽ;ÒŒÝâÑ£·Ä®ŽÁ«¹%ÆÇî-¹HÖ:RÙ]Žò§TËZ!¥§êå-+¥Nl\oí$ÂOÏjŠâh*&ø¥ÖçÝFÞœ¶GÕ¢ª`XW÷gR<wf¬VM²Æ¶Âr¢4AÛºæNwx,!§×Þ\×è)'7hÐ ²ð7úõªRZ$!JÝ 7;éñON+ie¹Ýø4×nýœGäB~ªîöG
+±JcTÂë`@êl<zB~pü€?»§¢F[ŠœJGÙwéâó
»æª;h
+èD^$ùDuÒQ+9}Ç+ËàßDòB[Jx4§êø@ýÚ))VJŽì¶^åz;iù{e«a;ûÍÄ÷ÎÄAšû K`->hr=HjÑyÜ÷rÐõXZkûÞ[íͪ^KhÛþðŒ³N8VÕx÷ä|êÃ[40ÕÙ²WŽÑû¶÷PKÄ[ž6îòË
+ß0isis-database-3_cvs/exports/CellsDefinition.javaUT [UF$YGUxèèT]o1|ϯXEHJë*$$EÒð%@'ç²¹ûdûB#Ôÿή/éµ%TõÏgdz³kç2ý%3ŒÈŸS«©%ÀºLÈ\Š©].ñBÛ,S&uî;i°n]±þ+)
+è:7Š Ž(*ž2š4Új¡=3â»ä
+±aÁSb¿b;¡æH_¯ü\ù
@TPèw,Ú#úñs'2¬sbëÉwÂf2HOÞ «e¡)LkÆôO¹žçŸúB«=µ£ýýìÃ[ÔÚ÷p®bNÁÖÒ|\rH²fmxtBBÇÖÉfùµ,ÂÂ:æ¶ð^x±œÖrJyUSdÃÜ)L7®Ðy:öFžR<¢#Ä1ìm€€cözñÃç¶?ÖóöãV»uñ0]ºQJ»ÒÂkGµŒjªTKïoG
+ä&³LðPæ þÔj@`¡ðT0©Ò*¬àgAÂò"°¶
.¡62sÛš!êÍÌ<j€àWP}GŸPUºÈ0Ð_ãv¢âf§Ô³bLõi2øöŠèœtë2§Äø§~Õ-Ð!H+ž8§t
òà
+Û-x!Ù6l'JÖ¡\¢8ïNFg_7gïÏ»ãñÁÿÃþ$ùÔ|ì'ïOAwØ;Ÿ'ú£d<u'ýw_óþ€$žÜ
E^oFÖhn"ãæ0ÎDýâw]DZf÷Ti4€xgý\*±J@}ËÈýÿX.Þ;EêW÷ ë¡OÊùè]4I£Ÿ)Ñ
+åÜúš³¡ÉT(ñÀ&Uà;VVÍ6¯vã'üÕÌo-Ø"4ÉlgóýH1»&_Þ\·¯¢(OUX±p]Òû¡,FÅSolä]Á3^ÈE7:R^wI¿Y]#¢BœS§Êœq&þYîlŸú5[».kPKÄ[ž6qr
ùú
+.isis-database-3_cvs/exports/EffortsMetier.javaUT [UF$YGUxèèVmoÛ6þýr²n²]-d(Ѐì]ÐòÙf'I¹1ü÷ݲe;A$òî¹wÏSÉü?9GÀ»ÊXïI¢J~ç¥W9;¹bQ{¥
zó«øÏmkÉ&²ùɲ,v¢0ó¹ÒsñÙÌ/3»¹7vÕ¢~K)YåÑîFk Ò/øUwâh|nUå¡«%Kl÷fVšÅéé)·šœò
+c<g$ÎÃãYK¿ªíLz|Öl*œttncUÖeÜè1}SE^èOžñI^%pç³óéTVp.i7>Z$RÓ>6K,'á€×û¥Ù/k¿0€6zUÚÁ»ÍëûBNšh\^QÆ,VV9Tßë£ÀáßúðFÂaý(C]wìÃáYxPä·¯z?¿:ù z¿õO{ýÞÛ`Ñ@ŠÂ;¥ÃÞ뀪'i3/€s»GJZA¹Ò6Bà>I~ðj@²ÌU¡üêŸ×D«ª=üÊÔX]}6JÏL
+!ÒÎã2NÓtô%HºoÅ=}e»El;ÈŠ²ÆcN
1iWÏáë7УsÒ®bM ò>Ø®Ååѧ¿oÏ/.Ÿnn¯ÏG·ãÑó?þ¹œ<¿ ^ðÑbŸb(Dü®ve`}m5ø
rbT}HÃ2hÌø
*P˧0Ó€kž§FHµô,ªÈÝò`gÁ=s¥ôFÐ5_N
+5UÜR¥ç
+e`=`0ñDFFM=jlpcÓ
+Lí;ok~°ls·^ wu4êH-Kmgd^öÙÓt*È¢ÿ'¢& Ôâ
+Õ|fÔJ,€»Â;Î ³§SE¢ ;«_&ßIð¬s¥£C(&:ÆRÒìÍÝGcìTiʬÛ÷äIsrÊø£Ã_{ßvÍÆ±L+®[®¿£õ=ëf\IJy\Æ'{Æ;SCEFXÊb}?eQã>k*©øÁÕÍ[]EñvÓAÚmâ>ZæSò"r³Èºé¿:Ýð°¡öú(YJ×ì2Œ·¹[6ÓIs>
ÎÒ)NhàM××>Žbf,f7À4\Étí"òÖäIêðXÛ!<6÷$ŸÜh*³ÓE0f×
+y"s €úv[D_³Q'(µAÛÃ4mŸgJs[㺀˧0]9kU²g'ÅÀÃÞ <ß
+øÙívîu>b&BØ%°þ÷Èq7lÓ~lwic'ß5Úµ0IqñM&šå%r6[ª±ý8ÍËj»Ûuç1ó@/ç¶2Z#ºáÙ3ý¢>[î¡âf;{œ°Ëæ(îÚtÇÁALRwZñou)µX~k CÒCBw7*ë'&ž¹Y(ÞúrH»¶¹»æ'çäPKÄ[ž6ÇÜs«+isis-database-3_cvs/exports/MetierZone.javaUT [UF$YGUxèèU]OÛ0}ﯞT<€LaØÚuAF`ÚŠ}¹émkØí:ÄßœNÚ€¬«ðCâësÏM2ÿ|Èõ®Ûhš{`ìDÈLÆS±IS£HÌd¢ôD|2îËÂÎeìWšwr&
2â«Um5ïŒô*h±a{¥
:x§Å?nWòU©ôS~Xõ vjh±Uwâ]øL±Z[¡ÆS€·Sn¬ÜT öÊ+t±),h$úáµ1ÒÏ3B;7€Bq£Ò<! Ÿ¡1]È÷'\îiìïì4`.c¿§)=µHF88¢Ð3
+Ãvûš\>¹ÃÌäÎ)
+œãDé^ÕÐâie1³Ê¡ »ø6ÎÐ:¢Û×8SÜ£â5lÀ,䱯l
çÝk¿Ý;|í÷×íNû(ÄÃptšt*.Œ¶ßÈòaB6é\í@Z%$öÛÇFšà
+äl c«Dùù.ÜåÄ)Ë=öÜäØTJMÔB4[]NÊ8¥?éÜ3¢dí×ÊäbFQMûÀ³Õ-šÜoȬz?~Æv^\"=ÀE«Ü+.O>__|»œìŸè_ß~¿ôwCèÓ:l&*UôšUC·ès«ÁOÏXtÜu Ž÷\%šÖ:ÌfuüæÿÃóšÙ0!Eìf/;âî nÌmÔ,œñ-C±ÙÒÀFyqË:€Ë_#ÅÌšQùþ©ÙÚî](Ÿp`rß"¡¹gkÆèÕÈq5ÙÄN¯Á~Z)ïš,VÆFd΢-±1UqGªÆû)jÓ®-rLô¢Ef.CâÆvLë#/ÃvpôÉ} ×">bÈÝÍv.Å^45slõ<IìïC,51ÌpD£
+5YÆWtúBR£Žµ°K
+€$î zXšrÈ*+1né>WdIž¬»~£X/2ÉÙãœüÛÕðc¿ðfÂæL%ýšbwj)Mªºšõ£ýk}ÒN0üf
+(äaqÏvJB¯ ÙmÒ3à.Á8\Á<ýsYDÏÛÓ?³«3ÕèiQO¿PKÄ[ž6&ó),isis-database-3_cvs/exports/NonActivite.javaUT [UF$YGUxèèVQoÛ6~¶ÅA觬nëfWC€4nÑÝ®hùl3H€ÜEþûîHÙ²À"ŒûîãÝwÇT2ÿOÎðŸ2Ö»Q·«J~ç¥W9;¹bQ{¥
:ù]+þsÛZ²¬dŸ@²,K£(Ì|®ô\|0óÑóÌ.eî]µšwr)
2â/«<ÚÝh-¡Rúÿ±ê^mϪŒÑÕ
ËÛœjf±Dz:åfÊ-j¯ŒBÇÌBÄûð8héW¡]HÍŠÒKGçFq£Êº }CßTgúÅn|º¯ºpc£Ïr¯;Á€5^>·HŠC8}
+Ú,±XÓÁà·fÿ¬ýÂXÚèUijo7¯ï
+9¡)ryIù²XYåPP=þ®KŽèÃÏžTü6ñ^4Ð0Ô1Ç!Œžüæåà×§¿ÀàáëÁpð&ØÃddtÈaRQx§tØ{ÕêIAÊÌéÜöAVPŽwK?»] %ŒÚ!ä`&sU(¿:»HUµ_Ú+kÈFBéI!DÒqTÆizŸ$þ@²
+xŽsôôn 0í"Ê9nHµzߟÆv«I?íú×ÊX\}ù|õ÷íøãíÙù«¯W_þ £ðb~"<¡£ñnŽ·À¢¯¿PNì Ýǰs|©
+ÔÄì)Ìd+ÉìiУfåĹ[>ìã ž§`nÓޚ䡊ÓËI²Š
+[ªì\ášDvÄzQÍøšEbx"'K£ŠÍM52žÍÊ1ÄiŠö=Êž5?Xª9[$¯ÃD_6RCÀòÚiùŽÇKÑ>=š9ÿfÔâiô¹": @eKšæ3%Ñ+±n÷$QoO€6vV?NîHÚ¬h¥#âÉÝ`)iŸæîÜ;U2êö=yçRþè1·Á÷]³X×-×ßÑúdÏú:b%Ù<.DãÓ=ã©¡Â",e±>ÄWYÔžÏÊ(~pESâÃVã(Ú~2JúMÜGË|J^äSn9R?ùw£¯š±WGÝ¥ŽðM³OñŠvbëBÐf:inÀ£Ði2Å
+ŽéúJ§9ßö ¡3 S»Æ°Aw.Ý«
ä¢5©
€á±¶<6÷€Ÿœhô²Óe0f×
+¡y"
+Ìô[D_ÓQ%µAÌY4ß3¥¹²ž.évçQK·JäÚŠìÀÙI1p6
çÛ¬Áý~ïg·³ÎGÌD@»öÂ?9îmúí!ÙËpGÍ ]»eº.
+ÓY¯Dßõu9}
+œ%4èïá(k at A³Á;²¡µn§=zìe.DzÚnívkÝÆ!{åÜ£FkDmhãèÅm¹vaªîì
+Â^.+ÆžhÓjNLK?m'
Ùj/S6k±®üÖ@
+¡œQ$ÉõžW·õômsû5×>¹>tÿPKÄ[ž6xܵ
+,isis-database-3_cvs/exports/OwnerMargin.javaUT [UF$YGUxèèVmO#7þÌþÑŸŽœ6¹B8!A%(×êznìÈö"ÿÞ{óñ¡+]Û3Ï<3fγøDxkãl#äŸÀ:îdÚLXŠG"/TL~üU±kúl-ÉÏy6h9ieY®'©&ìFOï3»âÓf¹Eœç΀fßtÂìï¶%4ãnJ?F>²£òsgYWØ"w->Ûµ±arlÄLàÛJ;vÊrÒIa ã-3$Öô¯7-ÝrhÜ7ÍFÜqç¬'gEתcÌÈ;ý 7>Ñ££ ý ¹åÃË(8GÓF ¥QNÏ@é
+ÓZírý/ÜTàJ«åL>o>¿ä|)èrñ2bn€óñ»w]c>vÅBÒW>²38,¡o0sd.êpxé_žó§ÚÏ'§?Aí·úY^ûäíaž4:÷dê0ãöV*¿ö!ÃåÜÚÝ,Ç8)g!€¢ðÁ ÓPX(9óLæÒ-áŸ@RóÂz/uaU'#&ÕX'1c,®4hWÂ)kŸ@þ²õx)lÌ&Âá(ÙMgZi.s£È0 ÐCÕª |ÿJdÂZn!øäm×ÏVÆìöü®{ýç ýÕìnÏ»_¯[v¿ûçÝëó?nvï®7èàTï®{~×üúôœ^óÆÃ®þè`.Hé·öÙ$6FžÂ(pSiÙ3Ötœ%Ð+
Çx
+3î`kÕ1z,]ŒF{h at tBÎÞe]ŒìRp¯Á8[XÐõE¹,€äÆç
@
Œrö
£²&/ªìfæB#ô
+FÖèÒo&<.·ŸÍµ.ûJd@ÛëI
Š}òÿ§<&=clIØà¹sÜdÄ, dSn[â5Ôš<ÓŽDýø
œÙöðjÂÅSJ:IOÌ8vèÌ^hmFRaäísOê(@9A§Bø^û±oÖ+ÓGy$Ëõ8X|fœ7iL¬LùW²ÿŠ=PFܬZAÕžW=C$I¬Æ«xj
<Zpnûm'×Ííì-,íܲCéѰŒ
Èp,©&5^/HêVØ-/ìUÞ!Š1V?R®x$XAØ ©ÍÍ|K6t°*ñZþBÇK;gë=<%î΀ðÒÜ¡DèjÄŸNNWÞ\7lŠèy§?€UžºEdá3Ù2ªøyñÒæVÒZÿ?§ex°Z<Eë
£xâ~qüÿ×#û-ì!.Mv.6^}n$G9]hëlGµñ³]UäÎdª¢(pûu¶Y^q÷3ª6Ý1{£šj7ÝñõutpYM÷í5bæ¿öv)KÄ«VÑj;÷è(Z·ïžjÊË¥Œ±Ç®¢PK«`ž634€Í1isis-database-3_cvs/exports/RegionDefinition.javaUT bcUF$YGUxèèTÛn1}ç+F(CÒF© ©BEœ©Vf§œ²œåß;ÞKB©ví3gÎ\Ö÷ÿðçÒÖ4J%1u;P:`<âþ¯ŠS%
+U°¶
+ÛÁ®žo^¬÷|ÆPìuñÝXn
°ùjal
dâèd7îá=W ŠÜNÜC9Û-ØÆ±Æ)ÒÛ3fÂPZaÛKêÀZÉk#rÄ-7²ŸÆ!éW²Ogªæ~=4qh>¥ÃÝÝìB¢ºÄ±Â2W428Û
FnqT£Sª¥ Ôp\«fæsÛÒ0Tlð1ß|HCT
+óSâ8Cm(ìôp&ÜB°w°·I2ÄiÇ:ì\&/÷ vrpüjõÚIýø8ÁÃpj&Rê
g;,Eñ0€Nû!7æUª@u©\ÒH[¥Ð¢ÚU/s_Â.öá>&eQl",T¬ÁMGÝcU)3ÆÊÕíx²A£ìgÐ&|gPL+ÐÒ©òªæj#åѧÙüü
+}4ëEÚV¢|L&ò&šx8Ð)pL
+³a(a)xn--!-4fab.xn--8u?-ogai21bla3034e]>EÖiz7ßœÏ7·f¿¿ÿ6¢Ûx_í/-ïöÊk7»7ÝëŸw×êyýA¯9h]ÿð:AJðŽ./JÑ}Y¥eæFkèg/*ÐHy×HÓö^%)^ÇY~ÙrÎèo±Zn|73ß̶ »Dãk¹ÐëhŒJ9Q
Q§[ýLQvÓV^]`_ö!œAŶJµÕêÁý>&Ü+Jšë]5MëDÿ(Ýp±ÅÈ÷#ìð9M¶Ò3,d¹ã&&ûܶ俢]?Yg+JÝ¿òTÉwÔ³H%õtànÚ=(7ÊK`Ÿö Ø\Ûvx>ÈÞÒBŒôØèpaØFØÉÿI[ñ[÷ʧükuÐJPKÄ[ž6UYÇ--isis-database-3_cvs/exports/RejetsNombre.javaUT [UF$YGUxèèVmoÛ6þÿ
+Vè9N7éÖÍ®u;hÒ")¶a]Ð2í0H€Üº
ÿûîz#ú òî¹Þ=ºB€_ÄJ2ù0Ö»é` r|cίRfì§f!³Ò+ÍÕÓß4?ÃÛu+"¢éÉ<7Úñ̬VJ¯ø;³>LìHœ±õV¬Wÿm¶ou(þoV}ãçS«
+ïø¥teæ/D.Ûœ¥åjie.áé[*wÃ¥öÊ+éc%¿¡Ç^I¿)m&ŒÜ+¶^8[ò+dÜè+øy ^°ÑØ!»·Ò»ÏAS žþÚJði1a'§LµÄ}v2ÿZí¿¥¿1 mô&7¥c/×Ã)Py ³²°ÊIò©®¥uà?{|)×
+ß&ì)ÆWÐïÀcVະÇ3zåçOÆ¿<9yÆÆ¿ONÇñsgó
+¡WäÌÍ0ãAQÎ3(Í4Îõ"e²2¥œcáØÁÁiaÞ°ÒIEÇ"Uò#v[WEé oLiÖÖ
žÒKGóh8E³SuDŸ.á%¬-aŸŸâÞ¯ÃipаÆË]AáêûôiJçÝÄ$[_m%óóW/Ïþ¹]œ~u9»ºþðæòúêãåõù€²Ò#
+©
+vÀøvÑ·;¬ô¥ÕÌß(Çò(n»°²ýVeRwaFÝ|D5ÚÝD/5VÑ^PºõÀf20ÀÝsGU¹dÒÁ":Ê€¡ªZ@ÑæåÌy&EÉ
+SLs Ìa§j1ýnŽb}O"ÔÍI[µšè6Þéú#šÒáH¬ùUJ
+£¶8è<œ$]G!ôAÄCªÎJ6ºWÕŒ,⊚0RèÈ>ôaá\ÀÅÛJ»x8ü©~ \/µüJÇcðâ.r±D¬:X®DiSËoX«?ãâuNü1cð#xHüA>FØ#ìèÝUg÷RK£ÕGPeà;>f©Ðl.i%Zr@!Š( ÷çrm€°±3x
ààÎ]¿²©w|À·Òjs§:@üÒ, !L%§ªO,Åo» TOïJuwu»©¯÷ó[à8€6's+LýÌükS÷Ú»PüuûPΩ¹Xè1ÃÂ1?=ý|¿b[ZSlE÷€[ÓŽNö ý]ͰµQ?Êé{78@²µÈêü%²RîËt?ÿDC¥¢ÆEàÂQ4FUbv)Z\=[4k µ$ÑAµî¢ÿtt[ÛÕþJûµ
yd°Ú®šÂʪŒÃb'=fsV*Yt€htuŒ3!i³WcIŠ¢Éª¥NO"øiPV3G9`QÁõ %qTÄL
ý©«1Ns*Ì¢¯(€¡Û µŒ,m`ºŸžÞÁTzKšڞtôã!ß&,µ<ŒÆGÃÚªÒH"IRÀÜcûö !;Äš€ ®N»|{]Fø18@Ô Z4ô*Oéù"©<
+£ÔÙy$hqhæùTöÃè6þÂ@Á
+QÓCD#@B6ê¥Sj)Ãñ]ZçÆÃ{
+Å}{Û*/ó"©úÄ
+Íy{2*ÉJÔp$XM×;¡f«>/?r¬ÑZJtäöÐp¥ÂK:úĵ5loã€ÝøÞÛ8
+uöhh$BöGIÍo&DDrkÖÒÕèë{3T«ÄbÕql05 ÂÄöê
+¥àN=WF#[MœÕàºÛÁÿPKÄ[ž6äpÔ,isis-database-3_cvs/exports/RejetsPoids.javaUT [UF$YGUxèèVmoÛ6þÿ
+Vè9N7éÖÍ®MÚhÒ Öa]aÐ2í0H€Üº
ÿûî%×®é^È»Ïï±ég1L~-õnØéšßó«;ç©Ê¬ôJsõô7Í/ð6n,ÑD"œ`çF;ù\é9gæÃœ©7vÙ Þ
àÊðVyi7WkåÂßáͪ¯ü°E>µªðßHWfþJä²Y®fVæN¹rw\j¯Œ1öQø9=öZúehgÂËœfSá
ž%©ŒÌ ãFàvä~!µOçøð°ÃÙŒÞ]5u3 c8üÚJ 4°SŠÍBæ+ÙI¿ÿk5ÿRþÎX&ŽÑËÜœX¿ŸÌĶLËÈ
UNrØ?Èu!úìñ\(|°§ü{\A¿Â¬,¹°Çgô?éÿòääëÿ>8íúÏÉM^°ŒSæ;E9É 2ÓL8×AÂ2Èö
-bß;$
yÃJ'TeÊ/Ø} €Ò3_Ò2¬¬q¥g&8çQw«"NÕøø3([ÂKXSÀ|.=|Åí
+ ŠÝaàRXãe
+ÀFPµzÎ>~bZŠÒ9aa7ð;ÙÖWSÆüòÕíÍÅßã³ÑëW7g£ñó·Þ¯ÏoÆ£Ûñåù-y®ô+|
å`5`xµ¹`Üm-h¥/fþN9þ±ºêlÃ"hÈùI
+LwaF¬D5ØnÐKާnñ°3DàvÁ㚪L:DLjVPeM¡psëåÌI&E óÅ0 všŠÃoFË!øPì-š)[f%žñVß·V9bAü)}6Ä/XÙ©€(Z1`7Açé%i
È7$"îR
V¶1ÔvžÖXëè@|m
+ #
ŠÜŸ¶(ØÆÚÅÝîELxDpXjù
Ç}`ñ¹!V WŠ4©åW¬Ôqñº€?ÀÕ_ÁCâö1Âa`Gÿ¯Åª]m_jÆb\üÄUfdÇÇ,M$ EÃ)jbt`"!5aÿØR
+Û2ÛZ¯#ܹ+ó÷ »g*§Ãpç-D6_ît§} žlÈS ©ê«Bñ;á®(ãÃ]_Ç]mËvFêëýäôeÎÉÜs
;0¹nê^c§J_·åz
V8tóãÓO?wljò5eÁætOÚ¥MédÒ?ÐÜ;œñ#ž~ª}×55Ðò-DVþÈJ¹/Rhvþû>ÂD« |œhõªl
+ST8z1]!Õ-Cê$Cêþjéõ¢uôZ«ÑÍækÎjžR+šæTX,±HÖ[*RÙ"]°¢³ªã#6ÓIuÎ"ËT ç2éó~pµÔØI¿ÊjŠãh*'ðÏÖ§ÞZîIë£jILTNPšÖkӹί¬¡© Œ,mеMs-'<8 Ó2F×5£;ðÈš
+XÔkyxFÝzU¥Q+£ï¶7ûÉ¡¶G'eŽrÜn{k7þ÷κ MÕœ~Ð !«€?€ç€b>{=8š³òHhqhÎï©Üc[¢Ãé¢*å%Ž=šN}:KéïZ©a×ïáÏîhÇŽbÍAŠœCé
ÁUyÔ
+MÞBÖ±`ÐccÖSuŸCDTÞšFk)]Ò²Û#šc iùjÖ°'ÍÄ·Ó0Q÷Ø&JØÓÐÃÐJf)uÅ!dŒÔfòžKâÓŽõXZ+}}Û¥Ef)Wµ«µÖ]Õ=Õ>uúàõluª÷àºêüPKÄ[ž6ÉæÉ
+-isis-database-3_cvs/exports/VesselMargin.javaUT [UF$YGUxèèVmO#7þÌþÑ&@ÛkÛê8'$Þ ŽÕõ9'1ÝØí
+D(ÿœ3öæe">t
²k{üøgÆÌxöO3mmEÒXÇÌ@1ËôPä
É£_»€þÆLøgÓ©Våz<jÌ®ôžõ1³9mÔ>çLjöNêiBSî&ôcäÛÛ"9su-rwçb³62L
+|[iGÒNPN:),aŒgæÄÚþõ®¥[Ìí;ñ®Ù;nÑoÁºrZäqº8Æ|p_ðpœ':ÜÛ`zÂZ_sñeJ€ù3#Ó° Ç' ô\LFÀq£ñK¹þ
n¢
+p¥Õbª×_r>ÀIÜr3bf€ò»ß:Æ"Øí¹€¯&±Ø-¡¯13€.°{î_xò§ÆÏÇ?Aã·æI£Ùøäía°4:õd0áñV*¿vÍAÒÌrnmÅSÀå)å,$Ás>p
++E#É\ºÅ><ÈjV8ÀÝ] m5ÉI5ÒIÌk-:pʪ@Ïçè p=^
+ ³±p8J*)ð\k@ffŽŠº(\5ï?@í¹Y"â³·]=%³ëÓûÎåý^»Ûm_õ¯O;ß.oú·œv§ß;í\~œj÷Ïn»÷ÝþNuï;§÷íoùAØâq-ÿ
+|B<äÜTé$µ-:FžÂ(piÙÚtœ%Ð
~Œ
ÅšòâÎètñ
+ím¢Ñ ER{evþ°sÚœÓOâlnAÔ
+ò/Z$æÖç
@Œáû\ËaÙZWv=³¡Íz
+#kô#)8ÍkßênÎ{jd@ª«ô€FSÁ>ùÕSúIÏENžDò"3&Ëa#ÙÛñ"jÕ^šZ¢üBeövðåAUaÅÔ¢\é)Ç6Ù3ÍP*œ}¹º
+PRpSB!|oüšuËüQ"Ér5ÖG/¬+¡ÆÌ
+À¯xõ(ý/`Ù#¥4Á#Èê&³·âºgHÄp=IõøooA-+ {ÑžãÁ°ÿŠ~YOoAÀé]žÚ-ÛºAÊkGRRãõÁñÆ€æ
:0ÛpÄÎå7Ã4Æròîå*b5TsßõŠŸëÅ%r7,§J<¿âñÏÙêÏI
Iáµ¹CœÐe}6]xcÚºŠ3Á(úC^MëD>
+£wÍ+Ž6Zþý9-ãõzí9ÚY9\ñÄý*âø5ÿÏH&ª!-Ëìö!.M¶/[Œ<{ÜHâ:ÓÖÙ;aVªÄÏ`JñÜAªiš1
+SWºõòªÄŒgQýh¥°éÙ;%ö¡ÓœŸªvvõŽ¢s¯è4ÿU9¥,¯uDXFËMò0àÿ¥€hÕÎãº)/òRÆ»þPKÄ[ž6:6íN¿0isis-database-3_cvs/exports/ZonesDefinition.javaUT [UF$YGUxèèTmoÛ6þ®_q3LÎÆM7dµ»¢^íw°œŸì-e¶2)¯Èß%Ûëá¢>÷Üs'2ý"3Œ-õ®EjÉ+06²éEjK£ÈM)É:O]ÊÔ»Þ±~+)¬òh;¶K¯r1PÎïàÎK¯Ò$53Ì ¢
zö«W<%dìKé<Yu+wls+ÔÜâéé+·šœò
+ã{D?<EúuAl=éñQØLzéÈcµ,sJÓè1œS-xn®ÌýöLtv|Á1üe4ºÎVÌ)ØZÚçOo,¬Y]ãz¥ÐÂy«uQ~-K¿0Š
)S^nV¯s9¥ºª©ÅS2ÌbaCAŠ¿
+WhÅ£®¯(8£x@¡,H:¶áš÷ŽõËéùÏÐzÑ~Þj·.Šk P7HiïŽð·³š(§9õCKçö3r-'³ŽwPÕ ŸFÐ gÀ(õ&Ìeªrå×'ð¹$aEé¬Mi[šÍ ¡ôÜÄ
+!D£ÙáÈÌSw#%¿¢ú;ðý»Nzz÷«7;:1õ§ÎàïAcÎI»®jJ_+ágAÝ-ÌólS¹üB9°e#x+Ù6l6*Ö¡\¢žîNFW߯Þ]wÇãï#ýIòŸ;ø³Œ»LÝaïjøvüÑ%ãÉš;é¿ý\÷'ÁÝ¡Œ(-òbø0³žYgÆÃ¢/úÅ÷]DZU÷RåšIñ!ÎÆÿ
+!Ïß#õš¹wå©[=¬.µªàÐhžQwhyþ£ÿH.5vtApó+£fõMsmÛî@u¿)}¶æÿ¢{zø¶}É^œ
+uÞ
{ùîäªd!Þbx\ËãÁÿ3P{û°Ø'xpKUK$5Åk»àÆá¬bÕx"Å-:õo
+9§ãMdÚ®¡á£Æ[î¶ûæoy9Êòvö>j|Cå 5ª,÷âæ¡#<ÈqqÃæÇ!ÀOÐè4h »$ÀÛÿl~ÜEßî6qýPK
+]7isis-database-3_cvs/formules/UT $YG}$YGUxèèPK
+]7!isis-database-3_cvs/formules/CVS/UT $YG}$YGUxèèPK]7NIÓw5g(isis-database-3_cvs/formules/CVS/EntriesUT $YG+$YGUxèèsÑwÍÍL/J,ÉÌÏÓ.}÷¢üòNPjYjQq*TÌ3]/?(µ (?¥4.PK
+]7c9Ÿ+isis-database-3_cvs/formules/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formulesPK
+]7.à%isis-database-3_cvs/formules/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7)isis-database-3_cvs/formules/CVS/TemplateUT $YG$YGUxèèPK
+]7(isis-database-3_cvs/formules/Emigration/UT $YG}$YGUxèèPK
+]7,isis-database-3_cvs/formules/Emigration/CVS/UT $YG}$YGUxèèPK
+]7j³£3isis-database-3_cvs/formules/Emigration/CVS/EntriesUT $YG+$YGUxèèDPK
+]7¹áu""6isis-database-3_cvs/formules/Emigration/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/EmigrationPK
+]7.à0isis-database-3_cvs/formules/Emigration/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]74isis-database-3_cvs/formules/Emigration/CVS/TemplateUT $YG$YGUxèèPK
+]7$isis-database-3_cvs/formules/Growth/UT $YG}$YGUxèèPK
+]7(isis-database-3_cvs/formules/Growth/CVS/UT $YG}$YGUxèèPK
+]7j³£/isis-database-3_cvs/formules/Growth/CVS/EntriesUT $YG+$YGUxèèDPK
+]7œT¡Ô2isis-database-3_cvs/formules/Growth/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/GrowthPK
+]7.à,isis-database-3_cvs/formules/Growth/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]70isis-database-3_cvs/formules/Growth/CVS/TemplateUT $YG$YGUxèèPK
+]7+isis-database-3_cvs/formules/GrowthReverse/UT $YG}$YGUxèèPK
+]7/isis-database-3_cvs/formules/GrowthReverse/CVS/UT $YG}$YGUxèèPK
+]7j³£6isis-database-3_cvs/formules/GrowthReverse/CVS/EntriesUT $YG+$YGUxèèDPK
+]7âTW%%9isis-database-3_cvs/formules/GrowthReverse/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/GrowthReversePK
+]7.à3isis-database-3_cvs/formules/GrowthReverse/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]77isis-database-3_cvs/formules/GrowthReverse/CVS/TemplateUT $YG$YGUxèèPK
+]7)isis-database-3_cvs/formules/Immigration/UT $YG}$YGUxèèPK
+]7-isis-database-3_cvs/formules/Immigration/CVS/UT $YG}$YGUxèèPK
+]7j³£4isis-database-3_cvs/formules/Immigration/CVS/EntriesUT $YG+$YGUxèèDPK
+]7ýký/##7isis-database-3_cvs/formules/Immigration/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/ImmigrationPK
+]7.à1isis-database-3_cvs/formules/Immigration/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]75isis-database-3_cvs/formules/Immigration/CVS/TemplateUT $YG$YGUxèèPK
+]7'isis-database-3_cvs/formules/Migration/UT $YG}$YGUxèèPK
+]7+isis-database-3_cvs/formules/Migration/CVS/UT $YG}$YGUxèèPK
+]7j³£2isis-database-3_cvs/formules/Migration/CVS/EntriesUT $YG+$YGUxèèDPK
+]7Ñüº'!!5isis-database-3_cvs/formules/Migration/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/MigrationPK
+]7.à/isis-database-3_cvs/formules/Migration/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]73isis-database-3_cvs/formules/Migration/CVS/TemplateUT $YG$YGUxèèPK
+]7*isis-database-3_cvs/formules/Reproduction/UT $YG}$YGUxèèPK
+]7.isis-database-3_cvs/formules/Reproduction/CVS/UT $YG}$YGUxèèPK
+]7j³£5isis-database-3_cvs/formules/Reproduction/CVS/EntriesUT $YG+$YGUxèèDPK
+]7ŽÕ.¢$$8isis-database-3_cvs/formules/Reproduction/CVS/RepositoryUT $YG+$YGUxèèisis-fish-data/formules/ReproductionPK
+]7.à2isis-database-3_cvs/formules/Reproduction/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]76isis-database-3_cvs/formules/Reproduction/CVS/TemplateUT $YG$YGUxèèPK
+]7isis-database-3_cvs/regions/UT $YG}$YGUxèèPK
+]7 isis-database-3_cvs/regions/CVS/UT $YG}$YGUxèèPK
+]7Û`6ð'isis-database-3_cvs/regions/CVS/EntriesUT $YG,$YGUxèèD/DemoRegion////
+PK
+]7.isis-database-3_cvs/regions/CVS/Entries.StaticUT $YG$YGUxèèPK
+]7LæxÈ*isis-database-3_cvs/regions/CVS/RepositoryUT $YG,$YGUxèèisis-fish-data/regionsPK
+]7.à$isis-database-3_cvs/regions/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7'isis-database-3_cvs/regions/DemoRegion/UT $YG}$YGUxèèPK
+]7+isis-database-3_cvs/regions/DemoRegion/CVS/UT $YG}$YGUxèèPK
+]7ëZ
+P882isis-database-3_cvs/regions/DemoRegion/CVS/EntriesUT $YG,$YGUxèèD
+/data-backup.sql.gz/1.2/Fri Sep 15 14:56:26 2006/-kb/
+PK]7ŸÌt!5isis-database-3_cvs/regions/DemoRegion/CVS/RepositoryUT $YG,$YGUxèèË,Î,ÖMË,ÎÐMI,IÔ/JMÏÌÏ+ÖwIÍͳPK
+]7.à/isis-database-3_cvs/regions/DemoRegion/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]73isis-database-3_cvs/regions/DemoRegion/CVS/TemplateUT $YG$YGUxèèPK
+/50ÿbéa+z+9isis-database-3_cvs/regions/DemoRegion/data-backup.sql.gzUT ¿
+E$YGUxèè-XeTMÓ]îÁÝ]²8àî°ž»{p'hpwwwwŸž»ûŒÏ7g~ÌT×éºÕ÷vÕé&ü÷éz9H8}|B+cÇÇf<PÄš Øù
+ÈŽÍ;T9¡Ge(?t?*?eßwåJJ3J`D.§eûŸágYà»,
+\r{¯
+ <Ý+pxŒž
Ôxm±z,ÄŒÕòeNç;¬ðpÿz×sKX.^sn÷%Œzbõ$Šžtœ=¶Ñ>q}{¿³EäcÍû #oz\û^ÕäÍX3ÖÚžè×õM5²oŸñ!ÑNÿýÚÃ-u9ÒÇîjñ
+â
µgêlEë9önÍÂí;;v€.ÅÁ?®³/M:èÑëÁœ
+û¬Öߩȷ
XÍŸœíñmÀÐWWQŠRðªkÆ ó,èD§fÇãwZÈ@-²JŸFØÌ®
+gVJ_ãy*1;ÝO
KÐÏ{æLã/ÄýçwEø^TrÆ¥§Jg|¹ùÑeïT&¯Û³cù}êïërnsqº$ÛfoÉ1¹e[üDĺÄúݺÌ,àõœõÕñÍÜ¥ñ
œísæV-Jf¿·+¬VfpNN¬ù,\cñ¥Ìã÷ËÊo9<Û|°Qhw©²ýs×ÔýïÝímSó5dâÕØ&L5G.ÝkóäÈÁß2
}Oö¿Ê-ñvŽœ9ì¹+D£+Š¡§k1GªrTöó§[m{ü
+-ôJæ®)W[ĺ!ã'BH$z¡Äÿ°À¢Â3.@ÞÃx÷¹26)9LÆz|Å€[å3ún<8êkÜhéÏwAEe[ y;¯ú`lT0VžkÐLÎ?Âá¶ŠðùBxT1õ°U:yµDåµõ3ëÜÿS
+ÔÀËÇ€å³aËñæ3}.þþQ
+PÙ9ñÂO/6:ûmm/Œ2RrÂãºõÈé zùÝ
+GDß3Çedõ'kÞõÄy/qÐnÉ*ì^klq{°ß=5T*¶>Ê~ÀãÖlïBS ÄóÊ\Å1þSºK\?ŠON6óð*hϧҊÏ|~£1CÒÙ*8äªéÏ1¡¬(̯4vé}Ó¡µV¥'^ú5küÛ*TørU¹#ÎÅ¥Iî"-Œâ.ÈÏX°ßÙâ'YtlÖN
œœàßõp?<:ŠváE)ÐoiQ4Ïö"ág,{òÂ(Rz¯:èŸ4׿GjôàBVlQäb3 b*Œ$H¡¬f÷
+{"^Ø1AÀAAj¹|Ü-^yWžß<ßl}àýfÙ&44,¢û-,!@eOGlŽÄIý[¿¡Œpx+°ñ9áÏ0±Ïø³Ø(²µÚW³wt¯ëìŒó®Þ
él36Aµ6âêÇäÈd#·VùÖ)$ã§³°kkCyñ%+_#<]Ù°NÕÿsi)dŸûÒ*2h¥¢.êSU*R
+²BvÕDÏÌB#Ô.cNä
+%ô9ë\3g°¢BWÕN-WJ|a]¢
©
+×§{?yGS_$»9Dõþ¡PÐçÙÀ{ ù¹e¡¢ ^6è°é/Ø<šUjÂÍÁoìp(r¢ŠG}?«µ£+¿
)À«-aGLö+±ÆÀ¬; ÛÆ2ºŽJêÔST§EÏf¶þdÙChß,«öw²b³Z€±O5hß,l¯d,ØŽåíÙð¹¯æ'üß1)°[r{`n7Í¢'Õ¢ÚA9pH&FF&kÎXQDë^(Ãà@KPÑJlsY|êºñ¥š "íÍA¿ýKDÇšs8`§ÖUýdS9(,ÕT=clÓkähiK·ðÃF¶ºŽV]µ[OmêÔT°©mj
E°kuéåÿÌuxÁ e-ÌFæ #¶|r-¥§±¡ì²"åÁÀ\I4l]Zúzì€uU0MšpãB±ªvÁgãüü¿®bCUúlãyZåmyêêÝz ÃþlºTœ€ŽtÉXsÒcKt4ãé±hÒ}â6:r1¥þœ?:.Á|"JŠ¡¹ßg²??K]Q
+Z6œ¶^Ä2ÁŽÔ¹XÒªcIµïå$®ŒZø@£üº S"ås:`hWÅK2y¡7)ËicŸyZ×±g0Ç'oÔ¯i=cfUNÙÂp¡Þ¢(VôÃWCãÄ
+ÎèûÎ âm-3\Ä5
ëM2îþ×),&öuÚ#)JC¹cÔveö£¹§ÑQL
+ä.*0'üþÕÊÙ(i9
œ5j}/nËºŽ¹þQÆ:33øAð±(YÅ_
7ñ£ÁìíàØrÌx=ôuÖ30ävÔ]sýÉ9!qE»Jg.U-$ëÆ?ŒøŠVd\yN165;t¢\aM$vÐD«6ËtýÊÍU°Œö\¡|wzÐÔ=ßvÜöWQ
²ð5oÆéf³ýòù|bÌ¡÷]ݵé tuf[kz-3ÆnšfBÇÒ6ñ÷WÍÁV¢!"$VVRÃb<1ÊõZXkÞ6Å¡§õÉ;CõD¥3ôÚ`~šs^ôxm$
+'Ø6|ËÔÓŽºÊÊÁ}R ÏòÉæü»_
+Ë
+øÂç[ö µÈs³·O{ì¬Åò ËcÖ)Ï|å'öÀ¥H&Ñ-uøc·:ÔCd±¥YóíümÒ©áwÖgzìhC5¶õÏZ&jjûgÁR?î8-º1l|Ê×áÃã°&èqÙýË¡÷¥Úûd{ô»A(N3sn]p°ÀßÓyÓl9žÅ£ZÒø 0À=MÇùéwW-/â ì8"JzëËgÈm¶E'SÕ_ñO?ärâ!+ÜÞsl$æî©NcÆŽµ`B#á*ël
+ç¬kZxºÖîmæ2Òk
pW^Ä·ýuÞzWéäÌ?WMåZãYje!g÷'Û?Ñê%ÛjÌW«¡dœÜ§;rÝyIDò\
+¿ÛJûdrðyqœ€7J$ŠæÍìâ9ZÓTU5á3Ü¡iöwÞ7?2'yŒ¬ÆÍ±'U4;
+jäïÒÌìp~Ûv÷Üz\xYÈšß_œ±¡
7ÍrÉKTaBJ§é4
Ýõ>GøìNoQ³ágVi:ìI"-åpG1ÒUÈÃÆ\Ê 18L]xUšWO:ÉyÖ§°ÝÛeG`ðŠqÆÜZdå7öxsTV1 ã¶jËý$Úû$Mqn»WÏ#%g4àWÇT°ZÁS·D@Öã¡çRÙ+.ûMH%5
+z*ŠYJÆ"HÅ(·Dèf£eC75ËëÅÂ*óøB÷œÌÎ9òàÈŠ:}cPH7!ëØR.BÇAȲ®Ð)äÆÉV€Ö¹oÑÒ{89[ë<[[Ïþx»~&êÍ9d9_ÊÑmÿµ³£ Žçêt7Â$\»FÆóLÅ,õs¥ã.ÉcòŒ×§ Çõ¶ý\Hèäõ»ÊÍäõúÕÐdÆöíþ³«³×w_ïM¡»¡mî~²ë錺ÞëRì©DàÎt+^8aKkš€=F&ìPnkMV&ÚÓðuž€:V#n%QËrÛÐaŒê~oN±2àW&bPê9Â<CAæRÇ¥>ÂÄmC£Ð|ò+!9©âDUip±ôM~¶«5vZ£FcÅHj,"ªñ×h]YUv]Ú»<ÑmœÑ<ÉôXäºM(æM&" ÿ5?8527·¥U@¿Z÷LÅOšÇ*@ĺGëeA4Wáù5vw1r_H/R,rI$ŒÊzéR¥íÛ`/ÍÌïhwÎÕáÐyçÝVªœÇÉ@ÀŒ¡ŠÉûlõQßUäêT×êÊêâFóý}ÁÙY÷jºÐ¶]]·n}Ê6A'=Êù0Lk"C#ãÚÈNÔÎuÓãÓ°Jí¢©f4{§øg¥šJ%ñÚëD6®±?øŠŽe*?ì:U"$û~~QʺfJþpªó®°šÊoX€V¥®dÎ Á¯]ôçöoRêù¢ÏccËAµ"ŸÖ"ø?Ô³çÿþÿlnj©êúoø¯çdâ£
+;ýÕ<¢=23)º0©DC
+Oi~Ýk`d}U4ýÔÙcäœ,8 n¶špË£Cáa2ö)ŸÔÚ!BxÊCŠKC7žRñgýkÑZ¡pdcVçmF`B?¥[Iõýž^u£I%®ûcæÉ^¬íÞZ&"%Õ³ÈqEü=š5ÛíÞœÿÄ-W¶M]n€Þºý K"SÙÆn€_+¿<(ï'!Z åii¶jTþR~-ÆÕž8Õ!E§6Š5ú#NG«/¿³¬'vdO²>v//eÖdôËýl~5«`iEtW#u!YŒ¥1KBËß©Œþ~ÛEwñ[aXÍüA6%óÀQÝ
+/!8ÖëKayÄà0YaCüå¿æ¿j©
ùhÃtõml;µGø¹]ýL=Ú²n-,õž¬.õ%jDë ÓòÚúÎÕÚH«Š]Ù¡ÈÍ7ÐMûã.âËþöm
+ïeÓc¹*ûܯ:3_Æ€tÂŒYË[8Mn.êêæÇê_p¬#'¢Ir/2äóìÝ!^ä ÜBh÷Bß%È:ÓŒáBhÀñî#°;sßÒËÁBA)>Üg°ëµ§gºI2Hªîë}º%nDR\z*Pï±óÌ}ðI(Þý¡e¬Kô:Ø¡õrç$SïFÞšöoÝCšþ®ïÝÏÈÏÓ7ÓTß×(%ûq3úx©ùÎîAd¹ªh"b§:7g¯ëïý!iW,§ò[[}š=zLŒã'-YŒþÈï÷'ws[èü€ó^8èíFBú5m~?.üár~NiüŸùhà÷~
ýÞ¿ùAèóm§ÿ£ÏVBNѲžIAѱj7±ØÅ1{ß®ðÚÄ«ýðŽœáœÚ¹tïH
³(÷³
+òB&rÍBNiöÆp
+£Œ§4Ž}õt6yF€}@2>Õãöá'Û2Qðñö/ãVÄ«XêreŸq<ÈbúØëÜ»ê[žÚNÎήÁ Ø\cŸZ¿>ï=-
+m
+]/%KøVÓd}}°àºT«žg`|h
+h)¹¿ÛW8HùR<Ä"~Ü!¿ZM»ýØ{\dNÂhö «þ
Š×}FØ®têý {ð<°° d>i?þk}E·§
+qëyÈu-V?swWhéA»3âò,wÍñÑöGààݹÙùõÀåAçy:ÜE¿Ô)¿âûÍhÔq]0Lâ@£Ï*qÔëlqDñHÃøöïQ©Iì:ÝÐŽzg@à"7 Ë/O"«§&iªÆOS§ûÅÖuØZŽÖ^àj€1SÌSôÂÓÚ°·7äSÈæ[Cö¡lQ±©ìO¡Bê³H$Q×Ògµþ'e{Øàù[%-V"Ÿ$ÜN?M²U`&W5.5âIÙY©ñóÀÃõ+Ú×7ýn¡çáç÷óŸ¿í¬cÁÞ¯ïšò'/Æ®&¶Nž|SR6tDUk#öŠ=Öžðhv,%j,8[$æ;1Ÿ?ÖÀ=kÄ5qÊ·ÄâBÅâR€iòYÍÔwÅPw<£`ìsÉ |{"\ð~$æšXË¥Îbe(¿n)±e o9÷ÐÞXÕR-ÐYH$Ž{ý)
+ëË9ûºYͯÛûyÛ^?{@l*AªEAÌ&3_tŸLpÒ1~2u#ôr¥dîèÞѪéŸQ2}ŽlnÕ<?œ9ÝIØ¢x]p"qHV`ã}OAÀ¥ÓQÅ
+q|PŸ(nl~ŒÄ<§LøŠÔØþÄÑôMÁæ÷ðóº#¹±Œ~u9 ŠŒØèôCœð~°/eøx?%B{râ)!šûó>ÙÙÓöÐòžBüMŠyÂh¬òók-ß?}þõÄÅ)
+WÕ« 3æèsùI'nW]Õ£EmWRØ+ÂüDkúC)Ý:$Au<²€p žôÕcP§\=ÔHœ/Cáùm§#Ç©¢ÁA¿+ëöÜg}
¶FÔá䌡?[Å;Ìg
+a÷Øú}Äžœ?åð}»ÝDϺŠ::÷;øtã<º}Þ×4yQT)uÃJÊFéÁ8Ê ±X
É8;*¿_]Ê9#w9¯{ÒÄo®H
"YRïa8ôñº,ØÏn©7Š@¬!éª78æ3Õk&_zõíþ`ôÍÐ&AÇÆKä r:JÈCÀuŒÉ¹º¬¶€_{¶sëÛÙd/ÓíA-ñÍÓK°ê%ú~^lT!:
z:ÛµlîkìŠ4âäØÁ)œÌyØ`OŠðô<þ#;[ÝÁdÆT
+ü »~cn«çÓy/ü=~d9ðéP."U7Á¹
+*qÛ[(2Pfèhü±J +Ô-ðX"=ræq±5ì7>ð`$F`° ºéÉKHÍŠ°ºæ
<jÈíf/;pîBR-èB_WHBîºüQÞPjaÏZ®?k»# ïÙQ× çžvÒdOùºÎ5þF=%:ùQM¹õ')4èPÒFYãŠyj
+àižc§¹-[ò
9sÏÓr°7
ì-õéóMk¢š^89}ârëWM©ž€¡¡Ï?}n"8òG6rÔŽJKîb+fÒQaÒ6:ÆÞb±ÊZŸrÓJ?ÂéRùÑYnèqJ
WvÍoÕØÓqÚ2=WÕïfÞ1MDf
'É,5ZÛæòøÙ )Êbhµ³øf¿¶ŸOûÂ:1zYrÔ^EiüCö¥×Ã&êUaDsì§ÍüÖÍÖýú\®_ׯl:;}Ý íi7ýXy{ºBR>Gí|Žjúþ8ùc{rÓéàÃàÒÖ¯xtqùrÚ"ho÷!xœ¹œrX¢q"%x<±ŠÖº{&þËbw€¥{dHôç·wbs8!lÊìr:ãwÙþ}ÍAØ!ŠßLÑn
+mò.Œ9ŽÖödl?`«hŠ»\»³ª2kµÑ9ÃÍîFOôÕæK€ó
üq[Ø8[ì3W«IQØxo'lô^ÇÏà Gø©.·ð¥Ž-ßx,Yvíþ÷ú/c·Z^q·¡ÉiŠà{žš7ÌI;Öa5·o[iškZd¥ÐIw
"ö%
+W&ðH?~&1oaZ\Îá¿ZGKîv»åMIñ/«?y\.}ߺB£ŒóÄ Q'fó°/WÖEs7âS(÷M)Úpœ)?^ò8nòSÓ;Ïž}j³¶Ð{Ë;»öLÅ&±"H}rg,ÏíRE$8ŽÛºŽàlŒâݳ4ËADSæô¢}6šÆby·ïvj3Úb.Dß«É+>âi:\å~-ÿ-~ËùsÒVoõ¢ç<üE»Úþ¿KX>*ºQr 2SßNA€fŠ|JsÇÐñþÙE5=ÔC!XgÛ3,IC»u>š«.^3ÊѺ@5#Øš>_ÈÀÛ VaŠ^3B|ÄNM>4
+JN%áÿÛW³7¡ßLNkqtÄX;=[&âD}¹ÊRn>Ño¡N.SO?NÜ€Ràzq]0jâ×gÚx«C'Lͳ$ÞQŒlDû{p³}&ì^Ñ4Np·ë+dËŒEqÒîîÁÓ×ìœYÄuT'`SÌ¡{;ÆêwµÁL7Þ}«¡sôžö¬µg6nììK¥98ê'ôÿl>)ßšU"çðØÒút\5ÊÌÚNŠÀ1§ÿåô6,0Û#+7ÜÅm\çüf·Dž.÷¢7îñbíîèÚÜÕÛjhÈ
+%Åú :©q«`«uÄÉãfxÇüõ²2cäÉoê6¶ºÃd9ðœZpš+[«7x[ùó
+ÚyñV×0á\&z²E!$çÁ 0¥9zäLÜ7HÓÊöpº8¯hÝ PCölêmçùtjd
é?Û_+±ÜfMÜ6HÓÂ6@ ñRhê×ÊéR~¿,ßGªßth·np±ä=©×Û[MœâÂå<q`÷x/ŸÆê%Ñ_ÎŒrO-ÓdæŠZD³ºÞÛA#ÞnØJÖ:w«|£
!WʧJH×FZÖ2%XÂc nåÁlgí³¿W`Mp4`Ów¥>BÍü?{TBÚ!-`dFò~²y
°CDöì»Ã¯ÀŠ©3h>ª¹iátJ±dSå÷©ËÖÞöò ýµsÉ\¢A|c¶²d4l£ìþl2Õ¢¢-`Hbë#ÙÚÏe<ŸGÒõwnÃÅn#w
+ް}btô¯âÒâ°êX6LÖö,êü
+RþÜìtŽû£P/
+ª7$!«l,Ã7Ìÿ\4D0Qns±XvÕšÜhAaæjWU{
+â5H§ËÉ+ßžm5 #Û¹¿Bð¬úÃí Æç¥<Þ~1ó^å$ÿêú¹ÊŒ3ÒÚÏ ž®2RÔ:]Ï
+à¢jÈxd\i]Ðm 5TEÓBomð%ÿÂÍrÌPÁtaÊËþEÌÌãàöTê
+Þ>FPæQ_k>7GàŸ]_üc£T:ÎÑÄÞ€6!!À4áË_#cžŸœßË8¬ëì0
+=ÔXW-Æ|5j;ñ8|cð·zËn£Ò©EëÍY¿nÙ¢ü2°ådC²wPÁªqù.s¢®à`óg'îygQ®±\Í?öh#ÛDl¹<
+ZIu[n1r6£ì;÷Ý38ƺn+É{šAêÞaf0Ó1~þÁõ:+t¥u[dÅÓGºÁÑ?ßäèü^Œ?}€4"&i
aã¹<h>·Ï¿¹Ê_^]O¥sHsÁÔ±ENUŠz unYþ_í{JüÙËÛŽ"äÿ _
µü²J&ÅÐe#¹ÿ4ŸyDQÝ!ÓÿDŽs2Õ±Õú5FŠ7à£Æ¬ùWcZZí¬ÂÂûÝg0ÃPùöWàÃÛ°XaŠüQæÆöÞ¹ºÆH6÷
ÏÝá÷AíDAàdÏp{ãᥪh5}dÙpìœvíØ÷Ç/°)lÖ3oÒ» Tª$t8ãâºÖAtÒŒ^á$
+¢!ë`1¡m»N2uöpËBBû
R «£¿ÔY5óxh+q£ 3lkÎÿ4 ªkIÇ&ïCHKj#ð&ªâsØþLÀx[o1 Zk
+&Aç×ö±ìwjüKåWÒñ,ÒÔÄ ðœx§zΪ}krôô
+íPAîåTç?njØP¬¡ùä²ÖËk
z'!@W ÍLéÉ>jŠF#uILGÆFîdóLÅzCb®(zk®Ú[CõHP?âeÎŽ]ðç`ÈUâ"_ÚÈ/TkNµµ0š©âåØœÃ$à¿âE¿HÆÆšqWJÞúV9k%EbÆÅLµ-3\«È/ì1§æ+õÌZªcÜ¥§Ò»çÀ êà²ùßzFF~Äj"5jÀOdW}œþ+]aD³îtÆ£³m,±jÒ$\©Tk_i×jû¡Ï»0{SÿªQŧi
nç+x뺶>tõº/ë~iöd¿&£+·ŠŸ %i¿³úË¢kA>ëwšÌÝ3)î'-å_×D
++z¥Øe|3Kìâ8Š4ÆimÌUa2(fXTÙÒ@qÛo¯Ãµ±§OH
+ÕME8(Œ%ÞN®¡ùBô/B+-~MÇTâž·q¹ØvpŽ*Î|°':t
+wÃüSfq.cáo¢iT³mª?IuAïÆ\`·Þ~ÏJ;cfcO׿pbßûlå=ðá«iépVjR+ªÿ6ºŸîcaú&Q·[Wâ0AóZ"ëLH¯š±añÿÃýo¢DèÝa)nÃí5é"µò©K|?¿¥«¯¡_Q±ž/^ÝPúè[%µX}¬uø(Ï@ŒWXý»ÁE%5tœ¿nÛÀÌ¿Š»a^¥H⬊ Y×ùÓd©á0=?Ϫ|`ÑÏÚt¬|²>jĥ粡T5Õù«¿YÿnÊR*b.ëðØ(²`æMbçOk?LxøâûœÑWÁµkdi¢ãL1ŠëRî ñàdÖÚzr÷áÆi÷UåWL¹ÏÙá£ïé¯9óÿu>9oræ2Œ
+ªê H^rÛ¿¢
+;:·-é6<ÿ¿t#
+ oyøaaË®hËŒP¬a%¿Ù)K:êãd'lðl_
-UIáÝJÔðtúz;©Úù]Ýäj¯%Zéžq;VÉ*ÃaÅ`
+&ÿXü§*8¿û5;eÁAiåT3³$àb0#%-N5)üÆIF¢ú`è7=éÝŠŸCímÌÖeL³rÐÑß3å·+¡¬oÏð~òak7¶K]×M<~"=0ö¬ÆœJ\©g{ÉJúDO²õgti2åRTq6ÓfÄsÖî6fõýjGô"JG
+ËÈÛÕÙ^ï6<#*œfj,»ß±"Å5ì`šÎ3¿Ìn¥éê®$û
£êuò
¬K±ð»;?>!F.B°ÜI8hXÝ Örµ/kq(3ì'6øb¬M7ñøñhj®ê×nçÈ9üCnzÆâÊͶð7OÀ0ðÕCg]`nÇsRü\¥ž}¿Zλ[DRäJaX!åàŽ6gånÀ,^3ð«vQ[Œ/ïe5O»&ËBv3bÛb¿\Ç=ù$œû¹?Y/ÚöCRN'3óÝrÚêÊq¥=${¡ ;N>Dp¬H¡cÅËqzIr_G4ŽÓõJ¡dôŸu7¢èMÌİL€ûj$QIÀƮÁ!p×®{špêÖgW9ݹ€0qjÛl¹Ÿø¿ùZùâ>¯û<é:l\컣ãýiX
6¯÷Ùïb6tk4ÏÀ.(žŸÙå£R4pv¬¯A§<Çøœ©3hmV×§4LGת7E'ñãÎ÷³åü9ÖT¢ÒfÞûiìÇê
.¯/7 r¡u9
+³3ÑS9å MiGÁ,"ÎkDž²Œ%W xP+Înx7À¢§p ØS$UpCÁ;SØHÌv®zk1~€2oènèØÆ(e¶knH|9æQ~#eD0ml&Ú4NSœG50SEÚ$ÀÂboêèáJ^qfNÍÿ°×q^6ÁòO{\ñëTô~³g¥
ÜLß["Jôqã»ÜôÈC7Q:Ǫup7}=raòBÒ±Õ&h8*^©hø8Ú;à??Œu{A¶Çy+;4ŒŠÖ×z@&=GÍŸ¹=xº.DÞkUe[Hª§4rÕJÆ3P[¬ßL kDÜœ>_^³¬:ò
ãÇøÎGfÈÛ¬ÀNXYxÇCjô,Zæ-ª'Íê8C^TAO@ª~û\ëìÙä¡&aNAU_Wp÷2ÞÆŸÙÎG'g`m/eG
+^T%zä0)3dq)ìÄùÈ(z<YY+:¥µ.>h}0œ$ßÔѧÃGHnÇÎÙõœµWŠ%k*yܵUª žýÕB¹Q3ÆÝz@ÛCy¶ŠÔìïÜr¥'![׿8+Ðýp«ñyÜšm°ÿF»øvAOÖÈERi$=ÜPfÒë»~$v7nëEÿAŸš9ÑÌš¡åøëõÀy2tYµ±Æ ïMT*4ϵOŒÍvéivcò0¶º
+jï7+¹üï§·É'W÷FìÄk+$1j\s'ùÁÙ@5HÒoIœÂuxß[š»f»[ý»×'&"ŠŠd!#înU{Qµ²zÆ€çóŠõêkO1Û ÿ¯ä,%víÙÓÙü!žEóþLRènf¬Bê¬Pü¶?»6ßéðÄ·=1o=õº²Þ€^ ζ°»{Í]ÜÒÌ98ðw/bìŸlqº,7kÕ¬úVèi2Ï¥ÎDܵީå
+DóÙr÷ÃÅòË.k5TLUjÜýÚçcdÇ¿(ꮣÊ÷3÷®'dK7fzóÌ|jMÞ|vgZMϯÄÅ0ENZ³2¬:f¢~óx4[6tÍçÕúgüH7»üªÄnusT1cBØåpÖÜ
+OõkKöª÷XT;ãóÌ'þ£9Z×Xt/ÚoRKÚ*IÓL¶®`TüÑB3-£D÷o2òU&ùew¢Æi
j=mµšö]bD£j ÕÅ+µf©qÄ
+Ë6ìªÝCLo]Ò,ÒÌûA(5IªQ©æÂ`óÖzØ)zSí³fxå¡ábó[ø¯ÒF;§
œÃÓôô4Sò"«y\ºo»(â}Góuu6/©ÃÂñÙpŠ9ÔZ÷êio0oT»ZÏ*Ϲed*Áw°Š³<Ò»{LfE{ gxß5ç.?ÐVvÝsW)
+GXßÚâqšîÜt
üù$þC* ³©ð9Gj|·*uuUëaðÒEµa(<,è2#ªÌöÁ¥RìÜ-Œýz¹7í$xtvGœ./q>z¥
<Oœ ëÃqeÈþdyiRš¢ì¿×Ì»,àÅmöULÐùäæÛ(ö#ðȯêÍ0Š>)tutBúuÈtú¶]*ÃAFkýOP{LŽg±ö{# ê;/*ªªêMŸI
+. ~<M]î[æò
éï{@Ãs!å%/ŒÆ,ØçÊòË£@0{qâÖ#Wû!ìÞPDeØÈ
ÒzÞú,Rç*5Â&bï¹ðP.üDxïdãB±Œ22Ð@£äÓ{û©ú)šB2ËQþR5Ö7vö§Áë'oOtìÅýENÿGPîeØûËW``×úÐǧ¥M"øjÀÿPK
+š]7,isis-database-3_cvs/regions/DemoRegion/data/UT ;$YG}$YGUxèèPKš]7zê-R9isis-database-3_cvs/regions/DemoRegion/data/data.1.log.dbUT ;$YG=$YGUxèèíÕÝ«esðµ}NŠ4$a Éc 13& y/ IHÈÛÈÓ[ÿ?È
kWséBÍö¬ÙßÃ9¹ð2ÔçSßõk¯ýöüg¯œVWWî^ÙµsϵûWVWWÎ^ýÇÃ0Lf1¶\Ò'ª³ô\~ÃxX~¥_ï;ô`/{Ü9ÓkaëÑÙOãçü8MæOLóÛ³ÏnÛp~vªO:yúÜ謬ëׯ¯)xœòmóem<¿ãôó^·£×ßùö»'6œÃ÷MÖÙY¬cºþúéŠ÷ýÎçM×_lÞvEÖó:w.í\ÙYÍùë:×wnæcÜ×¹«s÷BÆÅÃyÏ£Ç;/w^ïŒÕyg!Gùx?Ê{>í|Ñùj|°¡OÇSÛ4õMRc¥ÎsRë$µVê€æJÝË©œR¥îåÔŸúÏMý=Tö1É^&ÙÏ$ûx6{©ìg9{Ú=M²¯Iö¶uãoà©ñpø7×S×µüÍ0lßûËï믮óËî×õïúÜkÍ
ý_šcµüœüß·ingÐó;t.ì\Ôo+Ë:óÿ«:Wwú~0ìììêìîÜй±sSçæÎÛ:{;ûÓ÷á@ç`çΡΜû:÷wÆ;ÏCG:uwì<Ýyf_Ïw^èŒØy©3ÞŽ^íŒÖy£ófçíλò^çýÎÑÎ;w>é|ÖùŒóeçØ0ÿ/:ëwìE¥TúRéM¥?UúTéU¥_KéÙRúVé]¥VúXée¥VúZém¥¿Wú\éu¥ßWú^é}¥ÿTæPEeËIe.ÙTæSQeNYUæUYenÙUæWaeYVæYåö̳2ÓÊ\+³Ì·2ãÊ+³®Ì»2óq=õxæsb\×ÿÃÇÿPKš]7§UÍ A0À8isis-database-3_cvs/regions/DemoRegion/data/data.data.dbUT ;$YG=$YGUxèèìKl#GzÇ9ÍCÉ®íI²ö¶ÇG\Žõèªêöëi%ªm²IMÍhd¯¬ÑP3rÆVâ8q ÁÂÉ÷ Á [æ9äb ¹%Ç{äCT5Í~°ÕQÇûýfTÅúúûWÕWÕ¬~ÌÏËÄ@ìÛÆüŒ1;ÈëB¡pŠÐã|G%ŠJÎ=ÒÙQ -5¥ãK£ÑtkNsÕx[®uÏhŽ«niÁwé·²äÊÖ_ož[.òóy!nÿN
+:¹ í_iIß(Ë%§]õ×}g±*×ýÕ4ÐtìMØÚAÛ÷NI®W嬮/¹Ue}Zö°1jÿqûÕ/këõ¶oà£Ûï$ì¿«Kaý£ÌúoÔíªã»uoh|2ûÿ°ÿTÔÿgŽÿ¥j[9Ý4®]¶ýjÂþÓQû_Óöo6]_®eÕY5BSŽÿ:9;jÿÙ¡ý³Ú~·¯»¥üo9êÕ7®mÞÌÞDÈÖkƲÓZ6®qqWPÌ'uwsl¢-AïÒ»Úw;o`³»qLùŠ-øÝMÎéMnÝ!×§\sœ 8"ê$¢?ÑñçaûÏlñ?±ÿ-~rŸ%âÿ/DÛßóAü[\/UëAÇSóÿyÜþ×¢öÕö«õÒÛëµzYdÊöÝý3Qû/Æÿ`?|·&uôSÙþ¿$ì_ÚÿzÒ²\o¹·¥AàÖôì?£íµÿüÐ~AÛÿ·~ûv¡l#àP}Y%ß]qýÕ¹YCÑß
+cÅiæa¬hxußðÚÕêõ0Ël¶TÌ2Ýëùi9zVËÚ²NzïÈwÚA¬ß{«"fÊæ0>FÞÈO§Òê$Rÿ\%çÃøóN_×+Ë[áKu¯¥Æd¥Ýz°}Zc'E5é»JnéŽêë-ÕýÇÛaXÿ}ÿFZÀ
+Ndÿ¥ýOUòì€þxÔÿŠÛÐsŽõÙR;šÿÿÚ÷ö¯èäÆÐ~)þx(º]3ì°oéúí·óÙ·ÇOWKNɯ7š8ŽÿÏ û¿¬püsóÙ'cü;`1Õþÿ&ìO%õßöÜwÚíJÕ¿fP«fœÝ(Fì°ÿ
+óÏJ>ÿéÿ±ÿ²¶¿/Eâï·3âïHû>ðë95©b¯Ò/¿·µ*œ¿¬ôñeEö·©¶§öµ\W»Ùÿl͹¥»e¹ÝìEãÑ÷ŸXMÇ«Èè§\OíÉÍ`àPÁ_jËj©ÞòëKª*ÔIä¥z&=twgÓæÅñ÷uÝÿÂö¿/þ ±ý¯ÿ»®ÿzqû/wôÇ?#-`~'³EÛÌÿ¿ÿ9þë ~"moÉm¶üZÝ·ŽªÛ<[šý}Óëÿzü ão=_ýCÆÁ¶bÌÿߪÇíºþCû×Ôýäö?ÓögFí¿©ÿ³W2ê_.-Õ~Y¶Jºt÷ÄBkÙõ*õì×e€AÄßM8zTnyíÚ¢lª|cJyzQ§o)Rð{K:U][€7+=Ž1xg©^/ër#o4eÃqUX,×t[ã€Þ÷Dƺ¿,Ͷ§fXÄUU@{+ò:Žš/õI+uòÜj¹*s7f}4~\·ÝôgÂöÿÌö»î
ïqÚ_!Ñÿ®êþÆi?Ù¯arÙOØ¿£ç??ùHÇ»)Ýʲ_L·_MØÿUí8ÿiä¶³bÔþß$ì/êúýçúÇ.òçµ3aÿµö[¹ügþÇ:RqÄþï&âïµèüïß³Æ__Êj0îDüM
Õ<ÍõÓž²³ÚŸÝŽzæ6bo5TôUj©Ýè³L2SbQ<_ÙåÌŠKl%ç¬-Ys<ß-åÉ«ÔpÙlÊ
+ª*DO=þþp:ÅHÿÓýïFÎøìÆßgý¿¬ãOÿòÿ¬ÔÛPLµÿÛ ûßÒþñ¯ïøg2ý%ìwö·T2Æ¿rŸñŠ?ê÷Š¿\o&aÿºöÿÑ€þLÿ[ö¬íGæ£Ç?gÄ_NñÈ»$«Õ°zè;.þVqýßRÉ
°ýœsý-eÎãÿ/qûzý%lÙó¿ öÇ~òøïôñ_Øþ²¿²Õ®{0¹ýJÂ>Òþñï\íXqQtãH9ûû û·õúë'9õ×#CÇþª¶¯¿ÿzŸÐ_ðp·ö¶·ö;vÔïííûîvw»s°Ðê<èlv·?Úî~ü*ÆêÍš^E ÕvÁTº5^~]ý<œøgoz)³|ùýÝíÝDá[Èâ
+®¬Ø6
+ŸÎ,ªÒÙØÃ,ÊUÅP€
+€º`jUæøå4v÷>Ý)¶,SfÛY&ÂP'ÿü×ÿIõX @"LP:)¿l,ø4* ,ÝBsò3TÀbþ
+0GB7U
6"[2õïõ_9¢þ63)·š Ú5qÕŸš@,è$ªÿ»ï_
+ô¯ä×P:
+C1DT3Uç²Ø)ö¥µª?KÆåŠ¥öÇÆ°ž9©þ¯žŠ>ÿæ%õóÔáK+ÎÿãœN)!œ«?"Fq
¬~¬>_èvº+Ÿ>¿aöþïö²Ü¿ñ¯Wú|œ·E¿?s°óǶþùwæ(ÇŸþùõó\pÜìË·¶v÷»åÎÁæþöÞÈÁZ¶>
+À²šÉebËŽ"ÉÐ{{×öÃÛ}7=Þy.ÞîÖ·zg0öÞo "åúàÂôrfqµú5<ÁÀ¢Ú(ž(r}Õ¶Å ·MÆ3¯þ§ÁõçCý©¿mç7`!L*ÓØ&ô
+8{ÿÆ?^VÀÙèùOf0Â8ÓgØ2}¡D1ÎÒÿoáúsŸJèõçkêçéÃ×ÿ[ÝýnçÞǵÝî}wgk7X}µ%ôÞõÁ±`ÈbÚ k°ü|9X~Ÿiÿe!úçyÍá7F÷÷·÷"÷P6^ðFÂŽ-ÀSÂlrøMî^Ê"&TßÞXœ03L¥ûú³t§§?ο°)eÈTv9FDÉ2Ð6¢\ø¹Öÿ׊š¿èݧ_9c1a!lè)¢ÿYÐ?ÐÿÍiêoñQbÚDÜâªè@ÿýÏþþµiêoëÛÀpD8é~@,:|
+Ì
þçAÿ@<UýøÏãÙJ}ŠôéúÏþþõ)ê¯R}°Ws,lKBÒõ¿úú·úgÿ©p*b0Ç6æ6Ñ¡ô
+žødTÀqëÿRBïñõ'fÿl€Ï61£þ¥'Cýã×ÿWŠš
+ª¥GésMb§WÀå'€[ÿkÓ?ŠÈaa®'¡2*3Ì>pòú¡ý"hÿŠ%LM5 ¢ÚÔùÿSOüÇ®?óß~~Ð÷ÿ/ôýL÷Æî~wðvýåjï1ì6C¶ms",ÎÕQpúsç/ùò »§>øûKúVþ×
+Õa>âÔDH³01ç§püývJÀŽ9×ÿ\ÃËÃw
+
3¿TjJÇFÉ)-˲á;Ui4ÚU·ŽÐjÈ+[sÁùä~œá:nÙèd>G+^Ý7Œvµz=̲"-·înÅõüŽ=emU'œwô]ô'±·}ÏwÜRúû¥zY6Û®þ^IJCí
¬ÈþF§"+Íz»á¯6€ÚEµVSvFË-Nåüû¶×Fõ?¡¿ï4+Ò?ÉZèY\rJ~œ)ßi;Ÿ.cÔÖÀ7·æ4WK_ZUìïhJþô]µCÒiÕ=×[ªG²ÌQÿ¿ÒúÕÿ;ýfèßš7ÚÕ@õŠTåÛ%ýâvÝœÚ3dUHü³éyÇ ÿÎ{t9þošäü£à!ZÿõŸþ®W·Âê^Ëo:ªå®Û× 69ª%Ÿ¡xÊúÿHëfÔÿ÷UrùÆÐÿf.ÿ1Jõ?âî`£Ÿ~Ïëÿ]ÌöWóéOrêŸWìÛ?]ý6÷ÿÍhÿÿëþvôSüR£âþ¯hÿ#ãËð?¶OD%·ÙòkuÏ_ÜU'usoïtM¥È5VÇÑa)6MwüYJ?2Úþ~wü)©¹¯ý|ø|t\ï;ý_1âñï®aü/åéñgNu,føÿB"þ-©äBÿÞËgßÿ¢Õ{]TöOWÿk ýÿP%Ï~2ôöýïãm¹:âêÛZÍÕŠ¬hµû=¿8ÿÐYë·ò?éã_ÂþÈð3°ºú®ýzÔ7Òÿg~«ÿ¹cðè_vU͹í zq-9|Í_vkfóðµ±iÉ£(K|Féâ$³ê¥W9l¹µFUV¥Wñ{ïÕUÐ0Gòœq*¥äL×'=ãeR2ghVtª£â
ζ[r0«¹Š}wž)[x¶tRrQ 3ÃýD¡©ŸË$ò¥{m+¬Ÿ$MuÆåô&1ÝÔ|cüIæÍp(¥àT¹2(dL#³MÒ'e³ÅÂiðß§b5Fdü¯êñ?ÿÝÎ7þ©ãÿȰ¬ÁâaüûMYÍ¿î«d6ÿxùæéþÏyßn:Õ²*bYy/qÿkÆõ÷TrqâãvþIùûöOWÿú7Žÿ~ÿBøaþÌ<Gý/4ãö?ÐõοeŸúO×®È_k&QÿMíh-ÿâ0ÿSc1°ºõ^ÆýoE¿?ßñwøç€ßÑO;ú8.ÿ?G
+ÞS ¢¿¯Ûߣ ÛNoñjŸ,~ ôøó@÷ÿÐÿ·óùæÔAÈMù¥çd1Åÿžþ+*¹Æÿùì[ê_Ú?]ýËZÿÈ÷7£ß^Ìèÿ@vªß+GS¿ÔT¬Ô«)Çlê`íTR
+{ËYÑu*KNIÆf§Çtüýz=Þþ€çÂöÇ2¿
+Opž=ü*·þ·K·ÿpü_ÈŽ?láW_Ùÿýšä°ÿßÈÕÿèÈ>dµºt· gÛÿóAÿÇêçr0áÈŸr~¯³©~o`abëïŒàe }Ÿ9ÞuøläOù®Ñ9P
tæç>vG'ó§Öþ¿pæ¿°xp×GÁlÁõí(îÿ³#þ÷F583*þÿc|ôù/Tý\N8Ê~
+ÞÆþœNwtÜf&AÜ6Yðì[éqÆ1B¶Å£x÷ýK
ó'¿ÿp£»œ»3Z8ÓÖÅA0*'ØNÞ)?üŽwœ_«³q°»3|ö ŸòÏâj¿ô³ÅÈdê?µÃÏy±~*5|Ñ׿GÿÖKàËKàÝœÂõyc°eéKà-S`2ËDXʱ.l1³°Û»;~1ÈŠ67±^gĀ̢Lwýÿ3qDÿ§ÜÂV°ãTí ÆØÆŸ-ÀáÿßShoÀñ ?ðŠúpÉÚ$6ל)¢a*ÆÜüæ£í»Î|ް^=ýqKæÑÛìÏêÏÝÎAÏû¶¶vÔ~iÿ³Ž}$AÂL0fc|øùÐþé®ÿûâ(þ«œÓõOã¶i[*E¶ÒBæ?ýÒøÿ¡8RûÇLùBmq˶)·UæŸ9?ôÿÊ«SìÇzýW?þÒ1ܰznž<ò^'OÍÏkåfa\/ÞSFÚØDøq×ÿAÄý¯?ÿLýç&ÒçPβm°%iäbð Ú(žÛå[T鮟ÀÓÿÿëÿŸ:èõoY8ûÿOãbúc]ÿ®#úì÷ÿ?^ÿ;°þðÕÁV?®úyM/Y·r®'®Ç`.ôJžžILØÄ²blx?üä5ðÁÑ_,ot÷·ï<Ô»[ÆÁÞÆolïÜÓï[Ãï·O_»ZÛÝéÞ?žŒ|mm-mG»ïékæuÆ9T|/È:³Ð{ÁÝâurfg`öžn Ï¥µ«W¯W²/|±¶¶»oas÷nçÚ¥
îîÞöÆÂ^g_évv6;ŸÞ"µ*Ï嬲¿ûpo #a}¿,Ôž
mË$Ø*^7NÂ6ãú¹
+&åBÙ·01¢äls}·ljdQİ}R¶õ*[pL9bTµN¥üIYºwZÜ"Sn³2.tsã&ÂXU»eaç'e[77ÎçsRsAï]7 £AGvìMkgΡûº¡úNPZ¢»dÿïñ9G2ÏÏ35S<çøL#9É€= fg¹\ÛŸ·ŒÒÓªþ3WÖ®êêiA¹³·±ß}žßÑ/ýýí6ôŠ
+/ÂT"D°'kªëŒÛiºïDçã³8î9] ë1É·kkkÙCbrÞzìõŸ)ëÁQ~oL!uL×o9ä0Ã@þ8
ÿgïÚb$¹ÎòìÍqÖkD«
+'±Š×3ãsN«íu¶wŠw¶í¹¥»Çöf0Îd¶wvÐÜèéµ³$"xx$^ñoð(HH) OHüÿ©ŸTõTõeº§{7üœ=ÝU§êÔÿÏ¥Îysp9ŸîÇ{Yn÷}1·o=Ó%§KN.9Ý8ÝÙhõ蜯{ÙøÇÔJ Zx~j$ãÿVCàÅøÐIÎIÉøèæøÿÙÄøÿ¿~¯ñÿó<mÀßê=CLèUFôQ&ì£ì£ê£î£é£í£ë£gýâXhzÁd|Ðäj3Pá'žÍ@FFF32?Z3Šhry0ò`£îEñð°&gÐä
+äÈ)S ÿ0NH3ÈéÓ%§KNwN÷añ'§ucÂÃLÅÆÿK'ÿOžÂåAc
+8ZpðO!®5ÿÏLøõÿèÅ¿YD÷÷õLÀáÿþ»Ï}óÔ%!ÓBùéªX®"Ã1N_¹ÆµÀ ]X ÞJ#iðîÅ
+!Q²
f©ZT7F`8ÄOfžQâÎRµšn/qÌQ!IsŠ:¡ÇÆt7RJ7X/ä$ITé_GݯþŸ€÷téŠKÉîé:÷Yò#äGÈ®Q_Ì4ÊÚ»þÉè<iYrVç Ù1Ù1ÙñdÇ'kgoî5ª¬¿ÅFÐ#jcŒM*.×Ú9%U¡Joùé×z·¿TZûëÏÆÙ×Ö|(k*RlþQ«=Ú(&<H1ÚäGÈ¡6"Ù1Ù1Ùñ€Ûý÷ã¹ØÂhðÑ©Ñô?9Æ=Bž8Ñ âcºÙÿt.ÑÿôH_¯ÿÛÐiýOÿÜ»ÿéá~þc]_KÎ@]URjúp€ŠÔUE~üùêª";&;&;xWÕ€Þ`ù£SmÙ@ @ gá_ÿtÉ
+ŒÙµá;ÇNwü¿4sªôÏ`íS¥ÿýY+¹*ýÏKvêôÿtéÏÏÉÇ@ @ @ ñÇ?_âÈâb×!ËÂ/ÝMþÊqå_ïm5·J0y|ÑIŒû{êÕ£zpØEõ/š×ªõ»µý=ç_G[¬ŒY¿_Ï¿žùÆ&~M}ŠÆ£$ßWKÿ<ÄñÏs'Š_H&]èw0²,ÔKÆãøòVþ³ úÒ7·«øõàÖÁÝÏíV¥ýÛÁ36Ç»Ø8øß·UåXèbcÓxíåi86»Œ W?8==ûÒåéišc¶Âr¹c9ÄsGÄÜÑ®ð÷Gúw}@þa_sB»Ð9¡Ú€¬yÚÁþ€Ö=QWªŸQUüñ§q~ù¿ÏxþÄúZitþI§7\*ZcxKÿ.ôŽ¿¿l(Xý i(ØíÚ4NOî×gûðT=¬äŸp]" Š;Þ¶°ø6~=²Xøé+[µ¹íjÝßàÖÝ-,\Ú¬W§skxìò
+~ys÷nuz«6s¿{FàC_ºÔªGwwësGÍó÷k3xO`ç.¶èY{)~ÿëSñ4ù|ÚëoüKm(ùKnB!6#8ž^ççZK²èJ|kçv0íE\¹ìßÝÝÍ
+r¯GoîÔ·î4Ê ·Šs¹ÅºµyT
+سÍò¡Wt·£të°Ãaü°hñÃŒuXÅ3
ÇoUooŽN0Ô$ïœ+p`sw¡
+õ-¡ŠOèŒÉšåÿÚPñWr+÷»¹)fxš@®Œ#LÏøód3$ä<ÍsÁ3hä'-W7÷_©îlß©'8Èûä`ûò4ù¿õì°ôο*ž3ÊZ¥Ûô÷.¬Õv¶:2Ó'
þÊÒÿÃg;í ø'¥Æ?ûNß× zç7]êiþäõ³œþøìÿÏÐþÏXþssÊsëe¡ŽR§Zø¯'óPi¥¡\¶Ô1 Mæ Ó³u6;Iè3/å.û<t÷`ÛÞîo×ï<÷öiPE²uÎuùßßÊþÀÙZííO[§ÁútškÙß»zòÿ?ºÅá¢pJNÁéÍ
)8Uìh;*ëØÑ.Aù£òÉíOË¿¿æZ
+Üó)ë Ô6Ôaÿòÿïlùã&h at T>E KWÆSõ¥ebpX ¢»".Jþ×ô¿B[Éœÿ!Ç=\~¥Éÿ
.òîbF@vÙûQ$/ÿolwæðü¡tBbþZH5ÐRádú÷ó}Ôóÿã*®G²œ³ÌQ.4êÑau«ÀïºdñX¹º[
áúœYW.Ç®j>w'ÿÿbm(ÿ£Ÿkíeø1¹b*£ù÷§š{õGp¯ÚlðîØ,W±|{ÁÏâÞáîUŸ¥Œe7üaÌçööà+Ï£¿0³üÙä
+]âCA¶ŸØ÷0ö]ŸöZ.©s©_ªlÖÀ®onÕj iŒÐUÑee hߣÉÓIø/ÓþsJ
+øö Žú%xP@"ŽàîžÌýÊÿWêCØ?ŽúP¢ÿÕÚ2«Mh4¶\®ÿ÷öóIVÁtxãž+H(^ÔDhÓ>ýKðwÌÓZŠžf\0,àaz÷ßtÜÿõ¢þßZ ãN\e#§ º~ÿxÁ®ðà©§äÁçE;³ív©H¹4ìïÒ0åR¿Ô_Ùþ9Z¹nÿ_ÒþCH6ýúmÂ0Ÿ:h$¶ JL@xjºâ×wŠ0)kü=+òßÄ¿@?3WæK
|¥ÌççoJþÚR!X[¿¶T[,äKÓÐÊÊêZ1_\^ÎæoÀA¡T.XY+ëKK3í"/JåâêJpžX\©€ª[À*ñ#:³_.K«+ûGGׯ¯*ë+ÅÊñsåJ~e!_Z(óšðz~Ÿ²Z
+VáÁ÷\Ëà®B)ýæó«åJ²üj¹\_/çÖ B,/Vr1×3ÿxòùRÿ þ_ž×
ÿk«këKŸ Ja±°ºXʯÝ(ÎCÍÇή-K«ëkPY¥qAiõÊF'J|Œ>9X.äW^)oTR®Z+çÓ¬òK@èR!šÈ|åZq5³æRaŽº°>2(|zÝË"åFË«+ùµk
Ê+
¿ªT/W
+þŸ
Âb¡uO8Q¬à PßJ©xmoûºgÿñ{g_(.Vï_N#1ýra9¿R)Îp šRŸkéL>Ø[Î<[.äË«+Ùççók(ëkÅ¥båf¶Añ9³Kä×Ö+ø0^Ñxú,Ùd_.®å3ä}M u©(UF fQ,Ná±2T%Ëu¡€ã©O_^+Ì¡4ÃÅpaä¢âç/æÆ²ÿÂoâü³óqÿ¿¿]ü¹PYœþr¡\.,'VÖ¯J'Iz³ëÅWLËh=~ÄY¬ W^uÜiü4ÞºT(WEçL]!EðQýk
©Ùÿ¿œr>ÿ>|<mÐ#ò0¶/Ý^*Ü 4
+h?7üÿuñrÊA ÿé¿Ú¢ÿÅýÅ
«M²çÁÛWJyÐ×ýñ×CŶ siôõÿ6|Œ·]ÿr_õ0V;-óneºý;w¬þ«¿ô¥UÿBô«,úQÿsÙõëOäÿG ÿ3õ£nþ§ÓâÍ ú0$€î§º?מ"鯿ŸVèÿ?Žøù_Î/Aé|òA[RŽÐ<úôza:Nk.Æÿÿ
+:믣þœÝÒ¿¹îþ§©Mß3hý×Ñž¡ ÿ*6ÈZô¯4èèèa<5 Ò;éÿ§`ªÃþÞLÚß÷ºØdÖkèÙ&høë¥ã²÷..õ²¹ Øß÷cÕŽt$ôïóšWûŽ¿$ö£üŠ:ôï^RÿŸÓEÿæKKÔ=iõ
Bp}i5ßè\ÀBÇæWÚýYª7ý{çÓ¿ûšíüãrWýópRÝCù(êп/$Û?ïï¢Ë
J±0ÉHìmõ#F)=z%
+öifI¬Š#AþœÿÓ¿/ÂÇãmÿ7ÓUÿpr
+|gurd· ÿËHÛþ®ôÿëã<A¥Éõ€ÿÝHÿÙxý¿ôÿ_îiQï€r«¯c7Òt£K6yª\ðªôós§mßÏWÔ©HðEÿx;ÿ~µ/ùÛcòïJçÑÜÁÿ¯>üOØß¯ÂÇOµóÿ¥Ÿøïzò?rÇùÿ`ªCþo%íïïºØ_~ŸR{^_O ]ÝBÄX7_Fëu#huÈ?pòÿ5;þ°®ñ'&Å ¬LuÈÿ«IùßîÇ|n¶7ųì|Ròÿ÷Nþ¿òoÇß«ýõÿuäÄTð[®;ÿ'Õm þÝ~6\÷%Û«µæÜCeCÍpîYÈðœkï^+©Ò'_>{¿ÏîíÝi>9mosgw·8öèõÝÍú{mötôï¯óôw_²=A¿4ùwoMh\[*ø/üw·æ^6ÿÔºÿÓñ_Îó/dŸ6;júËý@ @ @ a4ÀÐ7Špq©îÞOÚ
+Ž~Ŭ3®wÓuœý×NÊ^;~vàçê²óIñ î¹>øìàMe.6Üä?ÎmDKßx2Ú¬þ£¿žùÆæÜîæþö\¹^ÛÙßÞÃ=Öx/öÂÇÙ
+üù¡åÍÃC(õæ
+ÄÑÚ]¯BÕ~vãÉøúœžš/¶SǥǢڿ³±qPÛÛ:žUÝœ[ßÙ«ãœsÕ\¯îoUç*#~×w&{Ôwmx>úïÏoâ*©ÛÙm¬Ùô.Dú?[
*Z×Ïóê|mŒêX$ºeuÎi¡üVÐkaB©yªÜL0ʵõÛhÁ€QÂJÎÁ§Ø1UnPzP/6ŽÊY®k\u£ßÒ23'Ýžêö7 ŽàáÊ:¡ÇÆtç©R+ÅÖ9Z+m×Þ^&³é6xI
ôfBZï5Oü0Æx%ÀûCšÌªÓ²žp»ÐGZ°:ÔÞ1Ýð[¿·±¡æXaÖÎÉ¿(£ ñXèJzcÌæÀ³ÌhºæÒÊ"9Ú¿O>Rëõw9ZJHèõǬž·×Zð»Ãæà=¹µÒ'¬¬d]·Vàý@×OvÙxjðE3Ñ<GÊ^|kKàVYËÔêvÙrš5izè4Ðßdô©à;?A© ýÂ*ÁE?!¥0X¡õÕo.hfÑ5<8õ\Cqß2hI:!j¯[a+ dÇùº5÷æè ÉÉÀ¥kjÙXT·o©B^á Ô2òqäÀQíÆçÀi+ÀN€Ú!û÷û0ª!Fq\;â®>®ºQÝ0ùÑ
+àøÆDõ±å¡!z`(A §N@Žc û1åØÜö¡XàXèÜój8/7AÓH¿L+1Ç€z @Nùå÷A¬m ŽF=5'Iõ²]ÃéäOšÃ@ @ <ŽÀõ·öàß%¿àj÷öOµŸzûåêÑQu·ÙR\(аCÐ*#
+5vH9hi§¿ï{ªõÛoøû`¯áÖ{ï]ŸÌö~=í VoµÍ$vœãc9Å:«ušyï^îÀÊœÃfwÜ uë
+霡˞1CöÿŸØ¢@ @ @ @ !ëßÁ¿wõ~±š\¯mÖ«Û÷ãâB&æósø!
+>ÃÖØÿÙÄØÿ£Gþú£úO};:?;â9ÿçªãg7@ @ @ @ §ÿsª1þß}1ÐJmç0ñ^ŒbÖDËPJ«áʯ¡PN€Ox€^÷Ãÿùÿ?{çê>è¿ÌNfüÿÿ@ @ @ á'8þþ=Ú{ýùêînkJÁX»I»¯2Ü¢q8Ùú?ú¿ŽŽ)íZ:usêÎÕW};o<*ûÀNÍ{üÿ¿ªô/F?>ÃiFPé<íÍãÀqþ¿9Fÿ`òÑvBêPi+YÈT{çß,êmBþ?§~Üôß;Fÿü@ô+û"@ÿÃP[ŠZìÍžø8ÆLÿ)ÿh«BZn¹vÖ9!îEŸIÈÿc òÇLÿ7Ñ~ã· fLp°|azº?þIòÇLÿï)ÿh;U%E2šÑÂ3ÈÞO'äÿáIÊÿ÷¥ÁÛŸ5ÄY«{¿N(À'Iÿ×€ßân®n¢nUÈBÓÓÿ«üß?IúÿpHúýæ¯RIÊ3gwÜ¥Óÿ8ÐqèçÌ+ÀWøÄýÿ÷£HFýWBÐáÊNqAÿ¥ýQþ×$?ÿþÿ9Ç
+gL_
+"\7Ðd@\þôoÌôÿçòÿ1JZËeOùÛüùßžéÿá°ôcüÀoÑ`ùÖì)~0Iú/
+©ÿ!÷í?Çîç!°õbI(@2/ýÿ3,ýžº`eÊ:&zÓW'&Hÿqû~ßþð(VJ©,¿èÚѯòÿðéÿîö/œýKŸOñÐ9Qoòãâhþ÷Í!éW(ç¬1BYé°CH^ô«ø'ÿ×ÿÚ`îP€/T~Hf²Ä¥ªþœÝ ÿ€ÿ#CÊ_cþëp'áîØÈÊ/µåMú'ÿœ0€ÿ3ã4Òq2éÆ@Øqdþ'¿Aù Ìq!4h¿îÖýåbýMò'ÿÍI¿õù€ßÂS)c$·]Ã_»û¯I0IúͰô£üá§§HÊP=íß$ä?Ñþ¿ãôfÿÎ÷ÿêÐVKȺæíÀ&&ÿ?d~ÿBŠäO2+y·Pëÿk?Ñþ¿!ã_Ž'ŽvÆ
pcÍÛ÷:þžø'ÿ=5þîû¿üÕÖJá%:Ð*¡ÉpŒô?3$ýBzÿbGíLóŸdfÅ:S
+$2ÀñÒÿÒ°ôã3pg4
,$PÙíÿý>lLÇKÿ[Ãåÿ"ôýß,T¡äØ÷©AzS~"û;ýÒÿEíi
Â}îÒÙþ¿ÁÿDó¿œ!õ_¡ÿgV8鬿²àAvžÅžÔÿÝ!åïÛ¿¡âàþáÍNäü'ÿmI¿ÿ5Î@À¬²§dÇÿýqñ?ñíÝ}¬dg]ð»ÛèJ#ÒCPòŒ¿øBï3wœ/Û¹sÚ4µ^º+íné¡¢P_*ŽRk$VhÔ4¥1%õ%ÆháÅh*Aþ3¯Ï=3gvî9sOÙ|?íÞ¹³3ó}óòçyæ<uæ¿«äöÝûCI§œðÒ
! IÀ
+ÀD@ýe·ê>£ö¿Vô#=ºp÷7Qý×Úþ»¹dýgo at G'©áëš È/2,Õí¿*Yÿ>lÿZ{éô6ÖªyÿAóoÒØ]æ¯sü÷Érù%çK{?5ýtû¢àüñÿaþAóo¿Öþ¿§Ëµÿ$gY~iŽtTtt ñ§k?îý;êü¿S²þ³ñoãµôN«fJÌïÿê¿Ööß'ËæÁ¡âÔö·áxþøÏ8ÿôК3~þÓRÇjôö1ÚHÍœS1V0ÿaX6ÚêÿýxÉúaÿwJz|Xý|áÀFõ_kûïñ²ùCý;!èÌïèÀçóšúkíÿ+»ÿ«¬ý«éð¯Ã[::
+ÚKÈ?]ÿµ¶ÿÊÿ³ño¥ÂŽÇè(ÈÃTÀEùuTÿµÿ>V26ÿÛÓ¿æR ãé
+pþ°æÓÝ ÎößËæõO
+úDÔvaùG[pøçSÝ£øµ¶ÿþ»d~œóZè0Z*'.ùTà(ÿ+ëÌÿ%Ïÿ6ô +§ä-§Â:ùTàšâàÑæÿzÙüá3(&äÔÐaú·ö7mó+ßɬÿÚþt)Jþ(êäS£üu¶ÿJÎÿ.ÿåyhö{z<Ì/hÿó©þ¿QüZÛ_)yýë³ï
gãâšö4ÿ8ÿs%ëßgó¿43®6ÔX\Óõ_kûï«åöõÿpÚíñtàÙapáñOG[@ýÏÌõÿH®€³¿>wý;hNu>3,Ç_Y6vý¯éôϬåNpCoTxþtâ×9þÛ)?ÿWtÖ§S_6ÞEôó©ÀQþ:çÿåç?.uüSÙø¿ò)íxméd°(Ÿª¿Öþ¿ó¿Ôàûï~Šë/»âã߀pTëÿ5%ó«ìø§÷VQ+0þÐ6°(¿6:ÛŠäöÍÿÕ>ô|0átØ
+æ¿ãOWí¿²Çæ¿'ÃŒ?AûŸQaø¢0Qý×9þûc%ëß
ë_Ï© %ÎÈÂËIÿß(~í¿W¬ÿìúGð¥/©Â×aãÀ £ú¯³ý×(SÿÜÛlü?,zÂD
+`Œ£K¢ù_±Sýó×Ùÿÿþërù³ño©§¥,BÁüo;éÿǯµÿ/ÿýÇ¥ò»lþ³ÒJºµÒß·þ¿qþZûÿJõQ~ÝÿZ~aö3³Ó3 à¢
+ Îþ¿ÿ)?kÿéÏÚifÔàp_³þ¿qþFù_T26þÇé
ï@3Añé:°`Œôÿó×Ùþ{qÉý_
+æ?I-0ý
ëÀÅñ§«¿Öö_þþWËå×ÙüfÃ_ýÁº¢ûØIà8ã¿¥óû¬ýçè=²éðwÕí¿oÌÐÕŠË~ë³E÷²î¿qþZÇÿ·äñ/»ÿMžó
+œy4Ù@QpÒÿ·ñ̰jìÿ+Õÿîwú?€gÞÁJeŸþf'ÝãôQûïšóÿ`ñî=í0û3Bm £Ÿþf'œãøqóïšóÿg¹ú÷ùáBPJŠþzcÖ¿ê¿Öûÿ]]2vÿÇ©ÙMÿ£ËÍ¿ãî¿qþFù¯(?»þ×ÁJ8%Ux°ðü?îþçÿ:ó_[2ÖÿŠœpAá-ZëÂæïžÿoÿûëÌÿͲùCû.yžÎp<W|ý?îþçÿÞ:ó¿ªÜùßgßÿ¢«~MÂ>ô}qÃUapÜ8.žxŽùeÉúÏ>Cx{Ï"Žÿç}ýu_Gõ_kû¯Ôý/(ÿpþætíK{×ÀsÎ×d÷?ºÿßÚ°êìÿûùù³ûj§šáKçÀÐfæõŸtpÿQüZûÿòßÿ]nÿwáøÏEžrøF{v 0]ÿuÿ>P²þ³ûXFœ§ÏÁPí?7uÿ¿QüZÇß]²þ³þoNoDeÀ97VSþK(éúoÔXÿÊæÏîÿ@'=&
¢×VBûyÀI~muöÿœœäý¿³ùOoBÛÿ jú¢7éç¯óþ/%ïÿÀ²û¿2IU¯ýeÁða~Õã¿·Œÿ/ý?,ôzÓ9IbááßDÕ_kÿßnÉú¡ý«€ÚR+H'
YŒýëšþëÿÍ×ÿùÃñy©ãÌÐf at m!1çøñ
+°
+ÀõaÔØÿ÷{ûkp9 ãïX¶Ç?·öé?w«ýïiÂà¯3Âø©ÀG ßqáâ
ä¶{Ï¿íüœûáçcìúë¹nìß:~Cí€L¹`^KIp×=tÙõO_&Âpa9¬l\6Ÿ"ÊâÞý{îœóÙO?·Ã(s²esnÂ=×àÆÑ;ÓÿÊÜÿ.aüû]á¿adxûÆ¿w÷oœçâ
î
7_;#²yÖÄ
`ê°·oŸxaüjé,©n'VZX.W5þýàþä/ßåWL»ÙHYmµös¹¢üŸÐòs)ÂËWÞÑ̯(ÿÇ"ÿÛ¿\g·¶Þçœ4Þ8§ùªò*ç0ùužlv/<&fôvBsgòbéð&[SÜ1úô\%fú2+ÊÿqÌËMÿ{pm8þWÁX]UËÁøßïÈ?o²ÂÒËÈ,¿÷\pë<=tG¯*ÿ·IýÿP.5.éÂ~Ä=äJzé'VÿG^ùçl«Ïm©üó&«,_ÿ"ÜED£
+ÅõN
¥UÌä¿þ
¿¶ú]ãߌÉ:Kÿ
vÙ2º^gë{íÄQäßXUþJªõùoÀüž\þ÷ÊÐþPÖ#ý:ʶÕK~Úh%Si»ÑOiãÌ^s³Ûz]¿×=Ó¿éLzËÙtw7ÝœîDL~nMzSIï:¡õÉÆöN¿±œ·¹ùÚìY£>û9'NEÿÿ^zåtþG¢üÇî,ÈßéîJ{7õÒîÎö yçL7é¶c§M{»ôÍîFw»?ë÷m÷~³l¥ÍíáëÝênǺýœvÚèlî$ýáãÉf?NÏOú3>ãáVº¹¹noôOÍ|±©_Ï|Í3îfºÿТOýâÄÉ[ï=ñš
qW `êÛlx±S8ŸŸõŸø¥3>l6ÆiÚnðÜHíý`®ÊÓõÿh\ÿ§ê¿îîmö€âo=Hÿ,ÝH{
DBûÖnÉ~9ý¢ß¶»[
¿ÿzFœ
+°n%Ûýnkþ3èÃ&qíΚÿ7ÿcqù¿Š üÏìÙœGogïÌTœrTœôLo§œ×
+¢=u>ÜðÉÉFüsØñ²]%~ö»ü£3öÁ/&©£'NŠüïo<þ`\þW
}ã±d³ö÷I»M/¹œÛï%¡8GGÈÓmÍ; oÓa\p/]§ÑÙé¥ÝíÆéôŠëF/t±öÒímqÞäºa
J€M uºÒò¿-ÿCqþ_ªæÅvÖTíé0íbÓÖúÆþ©Y¡Ó÷²×Í
^Uþwçò8ÎÿáÂü·LþzóÎöüÀ'Še;I3m)ÁmGü³%<+Jòÿy.ÿGâüï?òn)ÌKgvÊw\Koò.rÅù¹üóÿâü»i§3Ø÷wçAbFz¡l"Jy Ê{ýYEÏ]eþrù+Îÿè¬üýðN7míl÷Ou·;;sAºTÓ°É02ñ6*ÑËÌ*Ñïr©+Îÿù\þßó?0³þ7SzóÝþMóûF
+hj¯âÃþFôf
ç¯6?Ïå"Îÿðü[i¿K4ÙÝÙ.¬~Áe+õ¬(gèÂEG¥0xYå0øM~?XAþ;rù7ÎÿþùÓåè·ÓÝV8GÍåt]ƵsCvw»ô²Ãâ\¶$*Éÿ¥\þÅù?Z|þ~ûâ3|Ó%MéŽÑ¬9ç8û 8úmŸ-T6ÿOæòbqûï@»{nækIÖÔ¢ÚÌæ<ÿ÷+mÿµm
+8ðI[Ýtæ?üUQû¯ÒüÿËÿËlÿp¢ú6OœkqKeDwk«»ÑË^jÔô]ªY\:ÿµ¹üçÿµ²íÍÚ*Õå\8Í;Õ¶àlX:ÿæò?çâÎÅmá5RahkI'C;ã$8y©ù'Ésò
røüœ\þ§âü©ôú§â£ùü¿ËÿôRù{i«·×íÂhµkð5&[B^ä¯*Ès.ÿÇùß>3¯?ÿx§Œs;挵qÎpÝ8+\x<îhò1ÿOâü?7wÿßèëŽt[Ú€|Ûõù¿3ÿSqþ_ìøWŸ/`ù?Ëÿ§qþ_/×þ¡ãdŒå¢ÐÛI¯l¶Ó€*|æC÷Ïÿ\þ?[|ý³D~a×luï&çìC5{ªË2ÿ3«èÿš®÷·âü/Ëåvóßí_ÚºJ¶~Ëç¹üçÿͪòs¯òmåOË@ùüÝ\þ¿ó ¢ñj/*ËÿÔ(ÿCkÃïÿ*X=»Ï=ûwôï¿kô-@ÍÂ(Œw`t±#<gFÆ#«
/Ö¿ûü]ÑKiæìàÅÔÌ
+ižÚåÿ
ÆÀå!ÿ?Bÿi²?]8dß¡ö·ûäÛÕÌÉ=Ë?×\y.¬"Lxóð
+®~ËÚÚ±kÿxvKíý;/^áÜ3¯<ãÜ3/þe}ãá_Þ0|äçü%ŒÈÚõÿï5VY°G(ÿ?Fÿ?Ö·ÇÿÏ\ŒëŸ;²[«oÜ}ñŸ»3
+·×KXsæu.¬c®RŠOÈî¯pnôÞ¹~ñí&gôI€1»lQziã{î¬3jöøÿ§å7á]éýSV§8gÊ»ÙùMÒÞðõ:ó-ë°ù³;7Pt&tÚ;Ë€³ã]?¢êÿê
+ó¥ÐiÓ×N2ËæÌ+?;ÿSù_RkþñýËoÿ6ÛÿFjí-×Î3gû¿rª^Vçöÿê
+ëßgË(¥ÖÜZÚÅ?Å¿êÜú³ïÆùÑÄÿ©Jòs-8ã2«z at 0úÞ)ÁçTÿTÚþãï»G>·> ¶~ÝáóÓ1»Á¢/Êr/µSg·ÿsÕå×&Ü6¶}Ú8sÓÿo|Ï7Þúå÷õDZϿöóµºügë«x©£C aÎÿ7|óïîûä±zï8ö¹uvù_Q]~êßha6FIjÿÐ)aÿ(ÿŠöÿï~ÃÖÛŒóü¹u3Êÿú#Ìÿ]æû¿¡÷ãŽ8ÇcÆ,>þœäùÏÜþÏ·ýò¹u5Êo0ÿ÷åòæü7ØþmÖþñÒ'€Ê
+ãõìžrª®üìù§¿ö¯?·.F VQ³ó¿#çÐùû2!Œ¥¿aZOÀÇŽ&°öÏýè_^uãxÇDåÏÿÎÆÀå-Zÿ௫\ÿ¶ü2H+îÿ»³q0ÿgãüÍZÿ!ém€ýáR}óKâkVµàJòoçòÿMÿ=åÖ5R·]»/ztšµ>Vÿ\þ¿ó¿·\þj|«>ÿݹüç€ÜúGF·Ûoºë÷Ò³a¥6Êóÿt.ÿ?Äù?TÉú·¶ÙÑŒÕwée$gŠ~+òßËÿùÅë-wü[ݺäÿ\þçV»þ¯®-[rþ`KW:ÿs¹ü_ó?Xnÿ§Ï møø×ë¶\ômUùó뿱Òõß:ʧñÂg[aý;:yd«'²§äbW?¿þ÷¿ÄùÏ&ÿä[Xco»{ã^z ô%ÿ¹üÿºÌúgK¯Zm{ |þOçòÿÛ%¬<\ÿoþÁ.qDZYýi¯êü?Ëÿ¥8ÿÃåöÿ€ÉPäÀÉ/Ù~#ýtª¿ÔApù¿Ëÿ8ÿ«Zÿ¯Ú-¿ªüçòÿûâößrífSÄŠñN0xNÒêÓ¹ª(ÿÏ4ÖàÛÆÿPKš]7Q¹·Ú"0
+9isis-database-3_cvs/regions/DemoRegion/data/data.index.dbUT ;$YG=$YGUxèèìÝ_h^ç}ÀñGrìÆ%ÈfâÖ8mèÚP{Ïÿ?¡tíØ²;^lBÈÒR7yÕy#ÉКl+d+£:c±Á£¬0(¬v7v±(a)xn--5cacx6b.xn--6ca œØ`{~G:vÄÙ¯ôä[ý~lœ²
+þ=d¿éý÷Œ'N·ÇõÉð+§8qüã'îñ{¥ÔL}ûÅù_Ô·_žžùþÑ÷ê/æVN..¬L~sR߯.®.,®Ÿyr²Ž¶ž¶8Y=yeùæ××>mL>£MÎþÓúdöɲ×&YÍÏòu
òþgëíúvJœ°ã¢W'7&¯¯-þÖâÚÛ[«úXóº®jO:%Sÿ<
z[§LÒÝD§}Ð:eÅ€X§~d ÞÅìMz..éÐíÒ*;:öÖ$ûþ?§îÿºïÿGîôÿ®ÖÞqÑóë+}Š>E€©'¶&fãBý¡¶N%8sÿ£²ÚuÅ¿çä¬çm>šâßbýx@ü÷ØZþÿôÿu5tÿ_éûÿSÛÿßlQµuBAËçv1°þÕM®CpÑgcL19åèéÿÀHŸ=öÖ€ÿBúÿºÿÿ ïÿØÞÿÏížèóoÝúàw/þcÖ9&bð©¹ÀéÇÝœòÖÁDmlýb02®kÿçï\Õ×]¡@ÇŽÕ)ycLô`L{@kÒÿÍ×÷3jèþÿÓŸÿëú¿là{/úòduurãÚÛ7'[-Wþ+ë'm}°Åèb]7Ñÿ|±7Ž&ìžôÿ95tÿ/}ÿ?ÞõAÿ0Ù±7Ž&ýÿSÒÿ×ÕÐýÿ}ÿÿT×ÿ%ÇÝE_ܹ°/,,¯¬¬ŸŸ²xókóENÈÙù`³7Ù¥¯¿'s¯ìrn1%9#@Î)ðÞL±Î$ú?ðÐú±7Ž&ýÿéÿjèþÿ}ÿf{ÿ¿žã¢W'k/.l^`µOôÆ$ýçl
+.Jg/:Éößk<þìïœ 5éÿWjvF
+ÝÿUßÿ?³œÿÝqÑKún¥¿\vÖÝ-è¢Äöm,>DµUþ§lAb}1.È
ÿ+F>ú?°Ï±7Ž&Ùÿ³Òÿ¯ª¡ûÿµŸÿ¶ëÿëºî}ýÿ«k+××&_ûÒòÒÚ»µ³Î)øÐ]ÿ¿8Ž7^G£ÕI>œÍM1Ëë
+ØlSÐ9DWÕ¹Î=ŽÇ¹§XïrHÞŠTI¡Î=ŒÇ¹¹ÛopÖ|̱Îvuîc{[lµ1%-û¶ÙQñPú5¹¹{üùXœ<Ÿ×ûGwü )ÄšKœwzÿãÏ{[oåJõØcRÉÉZ[ç>yï×5Ùq®±ÝÙN6hM1±X9pÖÁGdðåݶŸ;P¯bñFËØ£{ü<89^&'µÑrr·¥Î=¶ÇÏíêMŠuÁ%íäüô7ìS·aÆ×ÿ.97Òÿw<XþWnºãÏeÕþ8;Wß¶ŸþúhEöôIåøýãÏÆÞ>zÒÿþÿ]5tÿÿ^ßÿíúÛ¡ŸÓßqÑk+7¯œ}sÒ_š_é>õ%[Ý-çl(¶? áŒCçn<ï±Æóo9Ç¿ñ ùe¹Ù~üy¢ñýçÉÆó4wŽñŒcç=Íñû|ŵyüéûÿz}{WmöÿŠ"?8þ`œ|ô€ÿ^úÿºÿÿcßÿ?ßõ·ÇúþîŸîìoµÞ%'rÖëo|wß=ʹÿÛ;ÔvÜá¶ãk;îñ¶ãh;îɶãŽwŽížcmÇ=ÝtÜÃëïÇÞÐôÿóJQC÷ÿÃ}ÿ?ÙõyÒÛ)Yôô=]YëÅn.W.¥Dru9ú?ýþOÿßÑ'ÇÞÐd-ýN
+Ýÿ¿Ô÷œœÿÙqÑ37¶Óòr±¹Ë1k׺¥ÿÓÿéÿôÿýëØZþo¥ÿ¯«¡ûÿ·ûþo»þ?[×ý,úüÎiòæäõúþÎ%RÝ«§ŠPRË8¬¶±N»=ýŽll uZH1çäõ[þOÿ§ÿï³þÿÇcohMú¿þ¿¡îÿÿÜ÷ß?ÿVÉ¢_ÚqÑk×WŸ>Yû`·/Á[nSrB@Fë#ýþOÿ§ÿÿ,Ïœ 5éÿq^©GfÔÐýÿŸÿÇíýÿò^Ôw+W'×W.,-,o-ísV»ºtÑÎhëµõ§+þOÿ§ÿÓÿÿœ 5ÉþYúÿºÿ_ëûÞÞÿÏïžèóoݺ»äÖSÿC®K}¶ÚÙàÖú?ýþOÿÿ0ß{@kÒÿþ¿®îÿßëûÿsÛû+öÓÿéÿôúÿ{eì
+Iÿÿôÿ
+5tÿ¿ïÿ_èúÿlýyJ=œã¢¯./M¶ÓÅèäz)Qû]°Éž:êt£Qôú?ý?öÿ7ÆÞÐôÿ/Î+upF
+ÝÿöýÿÛû³Eû³ŠXÿjÌ&wçžè³1Šrôôú?ý¿ôÿÿ{@kýOIÿSC÷ÿ/÷ýÿT×ÿ*5»ÞîùÿßQgî×!Ë(ŽÕɧB(Æt³~{ÚYÆYWgÙbñ%×[]êÜTgý&ÈgÔŠc.ÅÅsrrÃ;S*Q¶²ö¹îQ;KþOÿÿ9ìÿß{@kÒÿOKÿ_WC÷ÿ?íûÿé;Ïÿ¿-^ÞqÑKúnåêäúêòÒ
¥
å¥}ÎÑj©ÛE;£×>Ô®ä:öG2öÅÝ
+õgôZÎp1h]
+&§ä¥ÿÓÿéÿ±±7Ž&ýÿ¬ôÿ
+5tÿÿ·ŸÿœÓÿ»Pö>Býêï¬+º[ÐE³ËÑÆâCìO&jX°!iíÅž`ëÖ+Š~ôú?ý¿õÿ{@kÒÿÏÍ+uhF
+Ýÿéûÿ¹ŸÿmvýÿªÕõÿéÿôúÿ>ìÿ¿1öÖ$ûÏKÿSC÷ÿ
ŸÿÏßéÿªé¢ý S¬5f»Ó
+\ôÙSLN9zú?ýþ¿_úÿëcohMúÿEéÿëjèþÿW}ÿ¿ØõÿJ8%^œÏE¯N®¯./]XZXîOÖÄ$áÞëè/¶Ø\ŽA.ðÎÞfçhtuv}'=ßâœ)>
:»{©v;Û[[Lš«€+.ítÊuô÷8:¥»s¯XJ°:WwýÚãè¢ë¿±vV{.Õ?ôúÿCàÒØZþÿôÿ
+5tÿÿŸÿ¿p·ÿP/7·åæÇ'€R ÿÓÿéÿôÿÆ~}ì
+Iÿ¿<¯ÔÇfÔÐýÿDßÿ/Óÿéÿôúÿ°Ÿ<öÖ$û_þ?§îÿË}ÿ¿²ýúÿÍí£Ë·w1°þÕMá>cÉ)Gß÷ý7«~³ôúÿ>íÿWÆÞÐôÿ€ÿ¯«¡ûÿ÷ûþÿÒîÿOÿ§ÿÓÿéÿ»µ8öÖ€ÿ_þ¿¡îÿ?éûÿµ®ÿ?RvÏÿ?œã¢¯./M¶ÓÅèMWwQû]°Éž:ê\»Q§eÔûåuÈ2J'muò)€1ݬ³ÓÎ2ÎJc·!ÄâK(un¢ÿÓÿéÿ{ñ±7Ž&ýÿåy¥QC÷ÿØ÷ÿ·÷ÿO×ßL÷-m=ðÏÿ§ÿÓÿGðÓ±7Ž&ÙÿéÿWÕÐýÿÝŸÿ¿ÒõÿCJ=ò÷NÏ¿ukûÞÄ eIcrÑ1º Ï>ÖqÝÕÿÏO9Îiä ÷®þ:s49X-iýŠßµ9)§1JŽÅDJIuÜìb\4ÑÛ:.éKNŸ~Œ1»(øóÝËÞt<_?ܶÖÄewßúgœöÅÉ&kœñZëbŽKþOÿÐ<'7Û?¿3õ]šþO6¥î,X\)Á9çmL¡ûÖÔw!}œS¹éëÁÓø ]NÉØ:ï÷ŠçMrÖ§î"ÖÔCY)Ö}ããìb^¶ÁÈ^uªS¬2Ÿ³y®€(ûKÖÊ)E:
Cìæ}wê_ÿ_Šîxœ¯·X·&G 8þpüy°üŸÜtÇËõæ@ýk®ŸÕ¯¿}þ~¶ýáèoŠ¿;Å:ÀË1fcýGr+ãÇ?õñ'ËÍö¯Z!êž¿~\2Iwã\ÖÁÔ¯lý"(îÚi9õž å,fùr*$[|œêMÐA>1åžz8uŸX»ÝÕÃOÊu·õðSDuÜ_Oyð)Á[]oå¬ëzHôõ/gë÷6ZSꌿ~«ß
+ŠîjqIÇäêsÉú}qàøÃñçAsrì
+ÀÏéÿ¯Jÿ_WC÷ÿöýÿÕîñ§Y¥ÎÞû¢ýç'×WúOQw.×ï¶&fãBýQG©{_hÛšì¢NÇÌå-yÜŒ~ÍãO<þÄãOûðñ§÷ÇÞÐôÿ×€ÿoš¡ûÿÿôýÿµ;ýÿZã«ëÜÍ
+|øÅðéÿôúÿ~éÿß{@kÒÿ¿2¯Ôá5tÿÿÕŸÿe{ÿ¿t_YŸu³_9X££é®³_·:;uÊ¡ô'ìfªõ¥Ä.hçBL
+F_èÿôúÿÃÝÿËØZìÿUéÿsjèþ¿Þ÷ÿ¯nïÿí^0{³ü7zWú?ýþ¿úÿçÆÞÐôÿ¯Iÿ_WC÷ÿ÷úþÿµíýª^ol4ÑÛºdÒ!|L%f]ÿ§:Àl@Ákc°þOÿ§ÿï§þÿKcohMúÿÒÿ7ÔÐýÿ`ßÿߨ[ÿÏÞènIWÿ([m)ŠÝöWRì¶µÞ-OüÏ!Òÿéÿôÿ}Õÿ{@kÒÿæúøºÿÏ÷ýa×ÿ7Æ;m4gWå|hr°Úïêëµ/N¶ÉÚEoŒÖZ^ Yú?ýþ¿úÿ¿œ 5ÉþoJÿSC÷ÿwûþÿæÿos,&c.h.²Ûçÿ'gœ³ÁM)Ö}Lÿ§ÿÓÿ÷Oÿ?5öü_{÷jÙuÖq|O°35&Uô
à«úJÐõïY^€6cŽm ±Uoa2CC C!ü¯H ZªšÈL !Tm©EDϳî;й¹ëÌÎ9œïÜäŠ}öº{Î~îZû·÷>`nÿßkùÿ¹iÝùÿ«üÿÞü¿ö?²{4yrëçõï-ºRs²-i%ûTS%žWU«>4éq}®µ\i>BþOþOþ}åÿ/lzÀÜ,ÿ?nùÿÅiÝùÿûùÿñk¹ÿß'ÅÙ&œ¯ÍåÒt©ŠŒž`š\H®bI§DÜÄSÈEÈÿÉÿÉÿ¯§üßozÀÜ,ÿ?qdŸíÀŽîüÿ'ùÿÿëFßsÖ6zûîÑäÖ;îŸsëôéãÛöÅqb){ÄlÉss%ÿÿÿÿCÙô¹YìÒòÿÃÓºóÿO/òÿËùÿîÝþ=xrk'co.ø`àBÐŒËu»
üüüüÿ*ozÀÜ,ÿ?eùÿ¹iÝùÿß.òÿSËùÿ-o³ÑSgsɧíÍ5qµJÍY7GþOþOþOþ¿«Øô¹YþÆòÿÓºóÿï^äÿgvòÿ3FäÿäÿäÿäÿWuëŠÌÍòÿûLÓMŠuçÿw-òÿûóÿÛw&·ÎÜq÷ö^Ä>KÙ«P$fK#ÿ'ÿ'ÿ'ÿ¿/nzÀÜ,öÀòÿÃÓºóÿçùÿüÿàôöó±S<yìÁ[; »žZŒnÒÔjp}s1HäÿäÿäÿäÿW³µés³üÿ¡#Ótó·NëÎÿ?±ÈÿêùÿAýëÛè-»nôÖãÇ/oÎ5ßJëm.Jn5¶š¥^/Õì2(©åþ[ÑzMKœ6\ª:ÑR-ƵšUÅk©KVêÖ¡RÞFŒ×œX+¢ßŽÖëãµýÙàTq9µVK Ekœ1^+ÚèSKuAK¹b»@þOþ¿/üœ,÷7Çôd6²î'®T-õwã¥ÄY+sEKž`G«]ࣥŸ°B)»æši3nv!]"çÿ0^ªX© o€ØECÚвúÇñQíÒ¥ä³ÖtÚµGDmXÿ4>¬f}&6Wu·Õ¬I[ýþ³_|Á^zÿ9ª/ŠéŠsúõ~=§_¿§_/è×ê×
iööôE+ux€Ts6©5:ïNFôÓJ_îM»QDg7zûà³OÖþgŒVŽyj všgm¥t¬N÷ì:R·êϵë6XŸ}poilµBtÖÉu€ÓÓ"ôúÏ7/ÙËòügŸ®ðåáVÕ|þjzJn9ë|ð_ÆK
>(¯KukoKН¬Pªÿ±Û:3
b²oZKø×ñRÉ~ÀªïŽNñÚŪ_]¡-Ÿtíækš-ë<1èþCÿÙGîµåþ3ç\âßǪŸj²ÇG6$[%kÿ1^*÷³`NŒ:GIÕÎX3ûÏñR}Ec§Ò²hC³I¹áúúøÎªÖŒNC;dz4gµþ{|Xµ· -€³€Vt%WuâEÿ¡ÿìa/ËýgÆõÇÁÿ]¡V?f޹š{\ûXÖ»Æÿ¯e\??âUÛs4Vše}ÑER
+ÚÒªvÅX¬Ö
+mCky;äìd±öW£ÎŸ}Ë
+Ë5ký)Ö(E;Ý|tÑè?ûÂ=ö²Ôf=gññc3ZÏH5ä]64[ÌÝb¥>8Vª·»·ä¢hÒPj±+ÙžlÒ£äj·ÑJ¶ñCã»KzŠ?¢Î¢ªÎšRÚžµÖñae«¥?.4}nU[uÒÿFÿ¡ÿì_±åùÏLç9µÒN}£G€%CÞ%5£+j}QšGxµs#Å¢';ÈbŒTϬªu1oÉUO¬¬÷|dŒT³Ÿq΀ŒÓÅov§ýÁcÃ¥|E RlV§BñBÿ¡ÿì'¿b/ËýçÎá_èºòêk&Wõ(ןËCëÇúOUýŽq)ºwkõEôÉлV(Uú@¥¶{\ÃFõ±ñ0ú>+k^$7µ1V=ŒµÖϬPËö\²ç~زÐKmÎV?;^«ÏÊt=h!cjÏ&ÑÿJÿ¡ÿìÿl/ËýççÆôÔt»ÎQÄÇRÍŽÔ/; ¶¯ÉÓE\³õX¿8ïîáYïOõ_DÑãÛWú îTîW2ZjÎ6ê{ÇF±³Ïú¶IÍçèR+NßEvöùøø°ôËŽñ7®{k¶ÓÏôúÏ~ñ5{Yî?'ÆÚg^'=Õ¢w»àÚìä
+¥úœ¢yÐ)FK)hú©ñCœõÓ?¥irMŠËÖÏVè×Rëº+§äjò}yÿx)úÕP¥Å~5u-¶êÔRÿÁ÷þb×RçjW»ëüÌFFÿ¡ÿìvûÅ[úÏCãÇA¿¥ÀIvl}=4x
ZÖ5|Ó×¹F±DL'õÈð(Ä~ÞÆEÉÛÙìúMgÇÆö:GÿÌKkÔ.ÿ<:þöt©ÚR«Ù{í¯ZΊxçÇÕ§xÑ®uß/íÔ%] ÿÐö_¶åþóØøaÐßç¥ýîªÔlýJ|üèìM±J-V;¯u¢µÖö3dKš:ê÷Lèwí@r|Xý:=ܫ̥êdÃÙÅZë©ñaõ«DZlNNw[êýçéáR±_`Pì2"í¯vvKë/úÏŸq£œ,÷gçqûªeEwþNº°xèÙñÊoߪ!±U %%q)ØòëWW(e©CÊ©_mË;ÿókÃÝG§<6ÍÈYr»Ä.êç×?3>¬Ø/N±Ijö&;c£¥[¡
+« í°êþòýT=ýþ³üЊ`vî?Óžé¯õëuýú{ýú²~ý~}}nþNýú^ýz¿þïÞ;ïiòÏx͹xq":ßï_o©ï+ÑB²·OJhýÏÿ"è×T$§+V¯
+\ì
+i¶¯>7\+õ0êÑ®æÏþ÷®êÏÛËNÿ¹A{ͧµÇØ7Ìy)ýg¢ÿÐè?oõ7ö²Œþñþ+ê{8ÙU×ÕéÚÍÛUZê·ÇKõËÀÚíRÈMÛµ»ß]¡J»@Öå}Ø«¥~ŒÔåâ»Màúùµ?X¡Øô oÊ&ÚÙ.U ÿÐö
+[Mœ¥ÿÌù¶üÃñZ5öüMôžòvF'ZjÿÂø±^û«y;óÔôûvÝŽu ?ôGýä ªýñ÷Ô^+ýñø Z¿,J\Ö"U³U³R?ûéo/vŸ©é{Ó÷Ýè?ôýâ³ör¥ÿÜ8ç[IkýÙ
+µú¹f{Ê+Å×àsk=jÿóñZ}iô ±Ùê*kW³Ôì/ÛFê×%€V]êmõXŽi©¿Öö-vv6Ž'€Ð/¿0^«?ODŽÖJÒŠm± Mk}~üGì×f}º€wAÎîë×R/«Ø¡F»N+èÊÉ.ÕZ/«Ú4¯y}IÔ9ÖíÒËãÃê¿t)ë\ÉnƱE$úÏÆ<»éŒÙóÿ¶çÿÖýüÿßZ<ÿÿáŸþŒaõgìþ oéßN]Þ`ªvÊ嫲=šêz£%»<òÐZòb€ßîìŸ9»É¬ß]ï<ëOÖ¬?¯·õç÷mzÀÜ,ÿÄòÿsÓºóÿ/-òÿGvòÿ[Þ>¡œmëã;œ€]YÜæÏÕGö¡ÛìÐ.ª1odk£~'Û}ssÿÿÿ_ùÿÍ07ËÿÏZþqZwþÿýüÿlÏÿß3Mú§³ÝÃ-ûÝúøéûNüè»ïÛ¹y¿æÐüfϯÉÙç§Øg©hÙGß²çß²œ3eûbݱJYÑ¿rû]Ìö©è-¯¥€ÈÿÉÿ÷«Þô¹YþÿèizßiÝùÿ=üÿÑåü÷ö®ûNlíαåþ b e¶Ûã£âã"óß=¡]*ôövöÑà%)"Íû^ëüh-¥ðA$·ÔªŸºŠuË"ÝøSðÒ?׌Žkk1·\«øE¢?TªeV©.U£±:ù?ùÿ»0ÿÿÔŠÌÍbÿóÿÖÿ?¿ÈÿÏ÷ü"ÿ'ÿ'ÿ'ÿ_07Ëÿ³üÿÜŽîüÿ«üÿ±ÿë?zm8¡
+RíCè[^ŒnÔIŽÔ+à mb¥rÅ·s.'õÒxjA»oJô)6}éãÏÆcO[óÁÚôûÑÅbOô¿0WµVÈÙ¯Zk¶p\kœ:cK³Õ"ÿ¿òÿ07Á·üÿâŽîüÿùÿã;ùÿÂñœÞÿÿâ|¥öÿïùQ{÷\k8ìù±{ÈÙ÷\kWqìõæ+uaЧ%ÿ_'ùÿMåÿOŠo?0;ÿÿÔ"ÿ¢çÿ¶ÑŒýFïÜ:}zëø±O.ZqÍoÏi/.$ Í»,Y·[ÈÿÉÿÉÿÉÿ¯âý07ýŽüÿðŽîüÿOùÿËùÿm»nôØ©O\JÿÅÕ²§VëAZ ÿ'ÿ'ÿ'ÿ¿7=`nÿ?eùÿ¹iÝùÿ-òÿ§vòÿ³¶ÑÛu£ÒÛ:õàG¶>qe»®æèÓí6'>5t£Á@þOþOþOþÿüôŠÌÍòÿ§-ÿ¿8;ÿ/üÿéÿOäÿäÿäÿäÿëò±MåÿÏŠïø®iÝùÿüÿÿÔöúÃ{Üèm§îûÅ-KÐm[\ë~#ž\}«)øªU_»Šª-N1\CIÞÅ U/]SÕl¡~®-ŠàjtÙ*m±ÛïX¹ªí{B+ÙÇì$DÝZ÷M«{tåºÛÙo5×%€r-ûÆ5íb`Yß#^wo>83ù?ùÿZ³+ýçŸ_¿¶·³u
+ÝY9KÎ)ÆsÑ=ôÞ«{!µXWsÚyôVõúNÔ²¿Š²¹ÚaµUêfÐ7žw©wWÝœlÿ(èBÚÑjq±X·|éÚªÚš?Ÿh«,Ÿ×ÃÓºåË׎Jß³ÖÚµO6ëî-dÛ¯\Û`[o@)é#ŸÝÚ2è?ôeßc/œÿÕtîeó¯§íù×;Ðè?ôúýç²ßÙôðγüÿYËÿ?:;ÿmÿ?»ÿ϶ÑEô?gÁKs|}îoÌ]ðÍYrþóßß¶+ýçÐìMoýÔÿk®ŸögĪ2Í×RsZns|qî/Í]ð幟2kAúýg%WúÏ"ÿ?ŒÖùýþCÿy÷öߨôûÄÿPK
+]79isis-database-3_cvs/regions/DemoRegion/data/data.trace.dbUT $YG=$YGUxèèPK
+]7isis-database-3_cvs/rules/UT $YG}$YGUxèèPK
+]7isis-database-3_cvs/rules/CVS/UT $YG}$YGUxèèPK]7QYÖàó%isis-database-3_cvs/rules/CVS/EntriesUT $YG1$YGUxèèÑMNÃ0à=§Ô?iê
+m¢š ®fÔ%cäØ9?Q
+©ªäå|oô<÷7¢DZâ8ûÀ
±
+}RÛ\
+Žs!þm W׊šÅjxD*¬66Ë'xD>|3Øcð
+Ÿ74Ät¿bÔÅuÀÞE*·o˳œ©ŠAÖ,lVÀG
+µÛGçyÉÇ×íùÇÎÊ^Ö/Ž)mÚ>uÑ1M¶:&Ø`=þpYs{²Õ]ùé]ÝM÷š÷бFZ¹ŠÑ5
+m®¬õPK
+]7ÄÌ<(isis-database-3_cvs/rules/CVS/RepositoryUT $YG1$YGUxèèisis-fish-data/rulesPK
+]7.à"isis-database-3_cvs/rules/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7&isis-database-3_cvs/rules/CVS/TemplateUT $YG$YGUxèèPK5b7S(
&B0+isis-database-3_cvs/rules/Cantonnement.javaUT Ua+G$YGUxèèÍZmsÛžþý
+DsSS±BÛ×kí(sí\Ýú%cû2œt:H,€É#@%ºÿk?ÿEw ŸH±;ÉL9$vÅî³» 2>ý7¿,/b¡z=¹ÈÒ\3¥¹Sæ·á4D\hrïÏIxÿÝTHÂ3> \,ÒD
qz{+Ûð4œ=xÙk>ÕiŸòææ2Ó*Œªõ9_æÐ<ã:+Š÷|ÉCÐ4ÇyÎW§RéöØaÇbªelT£'Zäí2ù«ì¶àzÿ²á³hr
¿JªTóðn^ÃÍÑøâ¯"ÎD5Uµ"F
Â3¡¥ÈÏÒDúêmæ¹2w°ÖÃ4Ñâ£ÞȧWPá×âd o€ ²Bl C·Ç¥sðKxóí<{ÖcÏØ!Ot$@è7^Òû\Ñ>ûý.KÒ¥XLrÁŸÝÝýÿzæ'i²Z€
b/Üí÷1cJ`ybsåR¶ó%±.E®À^ìK±x·ÏöÂ?²o¬èS®4+²æßgßÑù»ç{{Ïw¿e{ßíÿaþ=¬I}6É`z%ÛqŒ,æSÁ8ÖÖÌ¢ÎIÑ:¹RuØUDù&dz=LÁtÊ
+%"ñ©¥^
+Ùû:«ŽÈºò>
2¥A?ÃþàgF9+ÀTKX1p&y#Vvx+4<µ=#uF»wi"XÆsŸžùoG,)âøÀ'ùAðÜÜâm ZÞLN| ¡`w°Õ$ÞÛûKÛo^Ì@ø·ñùãËÖ²Àu£ãÃã³WÇuK\\$·ìÿMŠB)¯ß'³;ŽIsþÍ㞢c¹!ë¹Tî%øÈÁ¥`;ËÄgãëËÜŒ:¹8_]
+×S_ߌþx|sñúæt|~trþÃÕÍãË«ëËñõñ?Ý_åÕ!åâf|x}òöäú'Cz×e°xÏyÝÁÀ¯\è"Oh©aÃXfîÃgìÈB³hÏfÀ·É¥M/ÀûžSðsä šäÿÞÎyºE4i$0¹ ^Lg§cwaaG,JÏóôbǧÂÈiò&èûQŽÏŠ<aaa8×Âÿ?£(3erówÒúÒL¬i§qøÐE÷YJ³4å²ÇM
YÜÁ`VÚVB6,*òR-yV΀'`ÔÊbñs!bfs©*ŽÒÀý]kí¶»FÀI"ú¹,J%+$¶Ì¹4:Ξg(£7Ä_¡s;òP«Žs ÀîO âT&ip·®õÄŽ6dŠÒ`úÓeÂÒ_ãÊY¬áD Ë?=?ñX7rÇ<;Y|~Ô0»!h§3² A4òXÛú>JjMc/ñ=5ýîwìiõ:?Ù Ôf0ÀÙØŠs·îÛ"_SƱqšÄŒ»\¥É
+ðEš`p°N0¬Éá3žOÂe2JÒE^z{^ŠÐ§^¥FRœOe¢Oê5
¡ù-?ª!
K=Nø$QÐÚϪ`ªr
$:/DеÕvor/Ñzvõ>äÒqô+93BÜÐíàTAÃj+$XïÎ
y8šÄ!ù~ÿÀkŽ,Äû#1yI~ý7¯eòšzMr²@'5dÄâ-¡2,aûIRB-&CEwvFkªá=z¶"±
+<zÅ;h{ÆX\?XpC£U®}n Ö4&YóxÑ°Š¶dÌVPO`NŸdüñ¥bê€Êöl
[
+T
+À̳,å=_#ÏÅA3PvG×èüBØÅsfWï6i{í|jïJFã#Ü€7ÚDÒQ.\I\Jåž±«Ì2MF3 ÆÄG1-ô=Œ[B@úðwiJ
+íjUöõJ,ãéL.kºe'ØA+·SKÔ MÀe4Î̲×â}5ÇW
óŽíá¡ØgñÜœ ÂèÕGãØŠÔi¯ V$ðìôªfÚääó;G{ì@m#8^Ù(-zà¿Ií (ÊAÓ>jåçç}¶íí+6RÁ`õé}¹©Ô±6§žþ¥!
+f3D¯V$çmpJÌVíÖ_KÔ %Ò$Í ýÍôööAëõÃŽbå*AJCûÞÄMikf!Ê4{ÙöŒÌÄ£jæÇL*»AFý]÷þ€s9€#ñ$b<Xj»ŸŠM©ë毪 è&/IкxGŠÑÁò\ÔÊ#OJ(í p2ι:.£;WŹ¡'¬gf+`®Ð04³Ks ;IRÛ)œÈ-NaܺSc3ÔQ«C߬.Œëàül$°Ù ÓtÈvêŠêîY-Ìl,ö=]«-F¢,1*Ô
+ù^8wQÖ],·_ä.éSÓEL°$N-\§ à<TD
E?ªd2ñäÊF¢ÝäþŠü°ìXJóøfÅd ~Ú«ã±ýÀÙ{Gu¡œ/óFÃfðü<slä¯\bÜ.r5ÎeçakñzÀùYóRŸ¶ P4Çàó6
+9ï«&«Z"žàÃDFH4Û6LEÎg\œdÊ©
+ÛŽ^R
+
+aûšAmJR*\
SêÜßP:Ù+J¡$ðÎ,z"ùxLsÙZ0@>2S%ÓÆGž*oÂ{ËãBžÖ¡µûfï
+fâ¹Ö(4d»mŸ:ÜùõŸÂò¶ Y[;שjÍk-MSüË&»ØvŽlÄüNõCÓ6JàiW¢
+¹ëš=ª2Ñcºº®°å7}!Š"ÄÌF¿æ§[µ
V>öÜíÖZcèðKv1C[ãßY¡ã+{M,N©DBÅpТ"§r¬8©N5ÍîÔ ¶·¶è¶ëÚÏÁ'ð)Wµn8Er«ç£QÍÊî$Àõ=-2Mµ1?TªÉDU±Œ`ÊžEe¢å}.gR &ا[2NE÷ïÿÃîõœ)@ä=v=æBGÄùoØÚsôK1³ŽtÿÅfŽur³¡ç!
+ë¡#0
+·÷åç4,Á¹^þ.VA ê¶ïéçéšc·ë]ÂÐ'ºÄ/žŸ
+v? výîT¶ê®GÕåíÔ².
+¬o%1ùºÈép v`Íx°xŽVÿ³ÍŸÊ^ܵuW ej
+3X
+Lùæfð@°÷Ž6»N[aRÏdYTGB[Èä6ŒÝÞ¶É«Ô?ü Ҏ銊ÚÙáÎÔNÒèÛ<að®ÁÚÁD«.D°uíTYá¡áKædbÞù¹¥[biú2
+Yäºy×pÕŸþÕ3¯Ñ£;!#Ø6ªï*¿iµðt
+Q±È²\.£Òdc ~Âõž€D"J̵Ôþáq)šûŠ?¢Ä}mÙš<KŽv¬ê>Mv)óJ+¬KkÝ$ŠxZR³N/ÊCHß«+n20ÙÄ~ÒÏŠ6ïÕVª ±Ã$ÈÆè6æ3ŠŒSÅØvßLÆïÁæh
+¹»¢×M}À:-ŸØâUÓØ¶Õ6Ž?³Þ#g ±5%¹3?úW±*Uð]ïÅPÂ×D}0ßèRHø±7Õzm/7èÞ€»²r/è4~ï`+EÏ_7ï|4ÆbÞ(×®ëšÆìJŠnÍã<IÕKÿ×°õ±x¡åé¹s
+\תQï`ã}_þPãqGT·æâç°WÂPÚ6AK×i~/¬òINolélçÇÈãŠ<n¬æ
+OQóéšüÂöSЊÆDŠõoÂ7}èN°{3%°|õÃÖhyŒ1ôÀå êWP£ö-aá¿ô¬(>¬ëí
+=ÛÿBH£è³ŠwºAG ׎ò!àÝËæL%x¯üö£N0y@€HÔÿù5¯¢ßC1OnCóU!haï`_Ýj£òð£ÕqX^Ó;ŽëÃàæ¿úbö
+x1j²RÑ4í@õV(%ŒOÈn-ò&¥Å ~%Î?Êr'Fè~
+wËD¹µ
+¶;n<BTØ€_ëÈšP8
+JDNÛvÙSº§Ug@ÝJ¹oø°¹zÌ-·óÀÈ]ãu¯ãë`·uDvWew_¡êQøû2Þgx£}xÄœÃ#ïu«UÚ_çÓ5¥ûÿ§OשÒ_éÛ5ìXê95cï®÷_PK186ÓÔâͪ2isis-database-3_cvs/rules/CantonnementPreSimu.javaUT €·E$YGUxèèí=]sÛ8ïþjjCÅ
+í8{{[ö(5NìÌú.vRqvêæ¶¶\ÙÌR€N<Yÿ×y\ßóþënøMÊrâdD$F£Ñß$Úgúç³(õyŒ·±áÍa°8qoÊÂèÜ.÷ÓÄlïÉûÿ Îö:ö<Ó0±³pŠzÎçaÛ~x~îçö«ð|¯[·Î4 £+Óiä-Ø~ËãÔON9ß+>:õ$ò>êAïKÇL}{?«W^ìœ}O/ÆOÿâÄÇ΢âÉQÂ#Pñš
+cRGÓyî$ø,Î~€;Í"ÛE|ÎáÿØg^|aÁðã`ÿõ_ž¿àªÞ±7O}DÓ>æÇ£ã0ðL€Ç_@aðIãžäjÁcûÀIxnHrÑØÏu',8°Ä9 p
+¿ÃÇð ñ`1±¡
+œ?žð-\É·=Ú`Ø'H þAbãÞÁMºqX»Ën³ ŒäóIÄÙÎööäó4¹#æap5Ó}ýüÁw&Àüy`#ŸŒÛÀÏhè%bX ûî-¿ôð×.{bï°ï$èW@.|}w@ÿÁÌÿùxûÉã?²'ÞÝùݧ€þlrÅ Ó>!³Ë&>öz¶µ±H'>ÈøÔwâ8·Ò7Çœf°Å<pcfÒ}ÚØ`Ð@, YsrÌfÎÔóœäjÄÞ§ß"MÌsŠCŸÞÅN¶ÌBk`Ûö`ž ©h°ºàÖ
+ö9Oàʪ@Ñ&ä{'¹ ÿ
+ÎNäÌÏ~Åc€Ÿ¿gvù;ìr?+ºLÂÐçN {ñTÕ)'Ýp (å¹þIJ÷X47Æâý_û'Ýûsí t~ÀÁáÃãçoÕÚ¢0ɹË@q|O]FL(Àg,q&>? }ÄÏKhÑü
+«Ôßî ªå:³ÜÈC9~,k¢
+Àsö·¿ÃTSÇNt%Ô5ù$d8át8Ÿ¯û±Ht$^LJ
+áùÂQ7ް÷ßœ=ú³çG¯÷OOGõ=NßýŽÿê¯g¯_œÚ?98:ùñôìÍáÛ³Ówo÷ßþøóÙñá;@µ
+(¯Ïö_Œ;úéèÝÏ¢ëuÕ À¢'y"XCIlOÒ( ¥Úb º^gR%Æ<box4ç sÂx`6A0ÿ!/IÁJ·Ïå,ßIÎA©ñ?È9_=€>a]\.¬'êž©É1[»;Ð`QÉE~ÙáÇ)pJ«<³Ššî²)ðÕ£®pQgÙxdСŸ ×Rö8ÖÁPIr T¡çÂŽšÚ
+µJ
+ýßoŽÌßÃ:ÒùÕ3Mx,.ÁjÄsa)±9ýç!ò²öM/Â9(º2YXÞRs²XýØ-ÎnÁvÊ׳qžçÐÓIAÖÔf7%äªÎ`ns7§;ÂPÞ`&@¡åÅX_ì%<úsGY®YB±ÍéßÝZÂäV+DÀl0üç8MQXo±£EÓª[[$m»šÇoåÏòòÎÀÛeª:*î¢`yÃQÆs at q!KŽBs j*b ìÛ*IU}W[O@¢JKvS5PŠÀ 5W 7nÞÿFú°®hØÁÀål¥t%8eqž³ÆìHqºDLµ}UÀãÊpØžûT«$Q3|£`Ê¡=%ÿΪšZÑÔÐD£ÎøÛß?Ô7×Ý (Cô)í{kâ)Èáu
+i±öT±ØQkICVlåñvÌ?åg-EÝä§
ñg^Ðí«¥(Ã#®ÅcĶk@æB,¹4žÎÆWëTTØñT'Y^ysXki
S//z㺠'ëò"úu®7ª¯®7ô¿Ee±àþ
+«äÞÌ4éfÄE±)OÀtÏo (åçx@Ï9àî
+»t|pvâÌ!Ày%5Ó/)÷Qu Ë9kò#zסÑóQ¹ÀDþg÷ÈLÉߊé
+*Ï1ÊË;pBS
+ñ5ßÀ-Ë`Šç)!0@Én
+Äd§ÜÃEBchÜkÃ57Œa2UþLÇw÷}ßÓ;u<ò%2Ïâ*DÄV1VB±"ÔÜ÷Çó}>S at u±MöÂÑåÇÜò¡G Ë@¹~
+Tjv]ÇrÓC*©DX=Hê¬õv\SnToDª1¶ÔJº[tµÐE8àþÿÒ€éwhúÐàJ|®¡Vì²'^pÃlSAÌÑ[EãíKwýáì90ý : Ü5º+Ï(5ÀÜ5ân5f@tÀ¢ÑÉ«VðÔy
Ü4N0ñxP;Caµì=c1m£* 2DÆ^鎫`×xb^I!æÐWÊ1 ÌámËŠ452Öà
+ȰµÛ
+ !ÇÇ$Çù€Ç5Ø4øOµ@|°dBsÄìÔÃüØ#×ëHi*1SÔAìðG;añ},sy
+8ç@A 4/9jTSË-³dS
+BôZž:n«e£&tŒ FÜLT%fÓRäùì
+"âXäù)€áz€%ÞLÍL
ð,¹6Øš%¡pŸy°ÁÔñ§DuõÈ 0
+ßm&(6£{Š -ldæÚ>
+Š~$-ÙÁe( ÌVѪÖB2Ä(]² L/1å; 0·Uh°Q:XÉòÒ'R^¹ÑÁšÊ1Y«LÜПìRôE8ÇY ŸëF77@Ÿó>6%ØZbÌÿçôäÔØä^isLäv§{¬"mòr:Iåö]JBÆE7vÀË0¥¥It1ÉLl;GX+âi ³š.&R!À8óš4b
+ølØMÂBR9ÉWÁNäÒ§ËRUk^÷ÇÞ¯ÈÂ.€þ⪎}pDñxnÚNÄùw=ì×±uvÛ<T®TdhMôÒ×uîY±iCó.·°¹&YÓÚD%ú-S-ŠþfMÛ5Ìá1z.ŸE
+[aÚÄfr(â{ÃGrs;ø¿P;L/b{|×ÇùýLѶ2iÄsÖ]LÞf×ó$ÏxI-ZœfmÀoŽIuÚ-ɲÙNÞ!æÂQPReþÙíVHê²åuae3Ü1a
+ò
PýŠð*SdMɺP [9®Þœ_°šw*YâOn~ÎÇŠ³Jœ&hfš`ã±ø¿éªK%ì»iÏ:«âõHλí¶ßØ9á³§àµE"é\7°`ž è2Ë¿nßæîÊoç_s¡£P¶œsì]&&@o&Š} RœÒ{À<w#Ä(ª{YËzyÇCöÏK*Ç =B|í!
+#üøÉZ£Ã²ð&ÙžŒFã1çOËFº #Ÿa4áÃVbŒÕ:4Æd=é¶U*Wì@>^JmÞRk&T讪°îup)d}òm·)L°Ÿ£5h7ÆÂ6s0q«·àÁ&+=ÊÝÈxÆ40ä!¢yÃ>€A]Éx÷f'÷Jº©ÎN!¶-ô(tÒgI¶ÀâY
+dâÌÐfM
+±'r¬à~¹X-Æø5Ÿá²±Šsq¡ÃÇ¥QzÒ
+%ÊK/ªÄe$±ŸêÆ/¹DS¬Ö[[ÊtØxÆÁžjb7qÓ ËG0±ãöèQµR.UÐï(5®zÉÒ1c¡Z&Ò#ÿuy8rê{šz·ngl*á߯Y©B6KÉHCJ±;_JÉl
ÚN27,§äÑ\ÒÄ'õö³A| Ppô¹ÎöH¢7áT_¢ÕÀ'µhõÜÿ67T+ɧ5^(zu^(zšÚO;Þ;>K ñŒ§/
+îgæî§±qet=Np]
+¿õøKlò·ëyfY£oÍåü¬ÞZk»òæº,:+%£gí§,Ç i^áÂIéõ®«äïÒ/YÙ¬Ý}µO«òªf¯Û[ž*ËzP=Rg*ßUð[P¹<ýÈÌsI®7ÝD\ŒÙ$#ÙQÍ~¶zeI¢[ÂæûËÂ{E ¹>W®E÷¶ìOÇ]çy6tÉîtÄe5Ì×oa_#s' oÁé2Ë€Xî3ïÜ 7ï¬wVëTŸË4"M xü6éJ°÷ÛwVùÚæ+N;®#®O«ïÖ9Ê~n=Ê~32±õzòmª5yhG'>ñÐ>ÝÃ;¥~¥S¢9«T€bŠÒÉyõ}Æ};ú?fcî878Ì@bk>Rþ÷3çX}(`w - rZ.ŸuLèt8õÍ¡!ÝÓjäCüÔ",qÔÌæàZV$Á2<°[ ò©<yR ã03êúÁ&ø5øy.»0d>N"ž^R=
+Xê
+pyPêT)Pz~uÎA`BD4øè:·Hy"ŽüX¯»Ë#AÆ:°;ærÕ1í¹÷}ÿ¹:L€!`KVh2(r|Q1·ŒÛxãWsŠ(IßT!\o®HT²=YªÇBû)ûØN|Bju¯ Š>cÕWèߌºŒÆÊ§6ª&YÆ)$Éê
+M¹Ä<ëcõíïìhRÃN&e{ZqI;µ§hsM+жXÂ+lqÎÞÕnŽ9b_µùæPóàLAÅŠÁæ¡ÒyùÕ¿å,{.®ê@à75ÎöTÞDVÍÆqÓ«/IQªæLQ=ã(Wés (ãýÏsÈÈÓÜîì×ï8 þÌÐqÉÔÁš?&t\²UÀÄ=šaÓ[FGÅÈÝÁf/·àú¶Ï4Âk|X£ŸÎó$¹ [âXuxÅqûcm@žŒŒGµZOÔ`Ýä|l:ÝPêF¥š€¢a\äHǪŠÅL°50øø9ûðè mÔè:òwÉ%ýo~Uu|®è+UâUº±u
+¹ÒDªÉ*®ªxv°ba2«ÖhßÄÇžs#ÖíDß^ïÜÅÂÛË/BÖ¹(Ê%¬ÍFßRôž>kÞÄ& Ùu;ðYcÀÑžZIJ¶±ÈyéãmpÀ¿/»=d!àà±IJY}«[R-·H%׿:¿ªóóHî°0Îèó)[ÔÙÆkŠ×¿òðDUðŒèå41C1«gT[ÖÌ$ »öPsõAÕtwU«YêRŠjÞÌÚØãD}1
+±fbºoø1út±ŒyûIC
+Î`ÀèËİðÈäÊ
+é/ÛÊ1
+dÿÕW¶ÚÕ6¶ì×FSyww=;M8
ŒÚw¬sšv9'rS/aZÅUU¬L-ÔŸÌ+(£H*2=î²ú®,ÂK1ÚHr0Õ' b èl\Ö»xš¿Ÿ¥nÀFÞ¢¢Ü¬iI¿NévÑ_iñU5>hÎqážKËz.ªå!Ë"H-k2J.(O#7iÙÖ;U
+
+P¬ZôûéN|"T%jº[k¹×( .ó3m×ÛÀV»«Ö× ú3€Åìi,?+šå³×
nìÜqKÑGsêpIy]©¡w¥$ÄpZ~SV.Û{ÞÅÙÉöâ÷R¡ӯ>,ô0ê ª"œÞ-¶M"ÞÊa%à
+æé\?Á3ÕûÇ
+7£ öžºæs[µí¶äëÈ7!UÚçKpËÇ} R
+6U'Û¥¯ÐØèu¯YÇÙno×öèQû;µ6ZÐVÓûµ60ª\oÓUÔ¯eÜÔîyñÞKêæ¯ÝvDŠñ
+S^{©äâlu©qY_¶R aàšM+y0dÅêÑWòxÅ,ùâ*Ô0?üeð,YxJh¡péªÝbfú@Œó1åŸ!ÄÒE)o`ÊBÞàt(ÐíñäC+ÂàlCûÜ^-[}!]Ê?óÁ³_ú¡ÓãÌÙäª@â7iáŸÁ-ÅÙ^\çVU;JBù?"'€Ý"Žî=o[õ[x0çböëŽÔ÷yçŠÖîìâÜ Ÿ
ÙÕÇ=dàEKÊKX«u%š|%(õ}€òyNétVyþ^ªôyqýY¢6$ï÷ŸºPké}_ ~ªÑçóóz¯/êkt
òµ¡ò÷õ|ñ±ÚPëÀÏhëÀoø¿uà÷{üîåu ž9P\ymÏZ§q9îOF9Sœ\á kM+£ÒÑQRAå+k]Øô+Æ+,Ë3Ïîg¬XpôÛ7]ÙÖw=qœ¬]±!êº`yÀc~ãö}-T\ç!Ÿ`¢
+ÀubháË$ Ø:±Î@ÔµþÖÙß[6áîyê°Î<¬€ç=Î<ÜHÎm˹î>RW×°oSÞaç[È;<ù=ä5VXz«"Ó@Ìwë\Ã-2 ëBŸõíÖñö}í¯ùAUwú_ér>ÙòÅåúcò\¹íÕ;T[ËF[Ëëpy.¯ÃåužŒâëèw%=ïqô{/ßÜX¡¥ÿÀrÓÝÅèÉ¿äß¹X{çŸä¯Âóérx>Õúü ®µÄ;{Úlôî4aiœðE>žûTÖåÒã÷(ÒïIäê×£ìçxBÿm=¥É±W®]È~I=æ^Â8ºOøÐ3ÇH¬Fÿ@E§
+CxÆôÀ±ºèXÜUmCR_YbRáÐÇa
+ÞtÄâÆäðPá#
Xæ"øÞMÂÐçN ×efœ¯e·è«_a ¬ô
+j(ü³ÃSŸ ÅhAÍ©js
¥ÂÍ?9ÀK¹"2
+3pNÉé?ìáÄÚ@`à÷-¥zíl,'-Ö
+ÊPÊyÐ,!é,úé¢ðFeñz1Ë¡%-daë¥Ìrü+
+ÎçÖk
ŸK®9
+\šp×üxHbúéÁÙ7D¡È^UîEÅËa\·XÂ3Ä&_«gE!QEá:¥ÊLZŸ0SG.On8Óìÿȧirß1£"
+V[åóE¬>QÒ%{V.9qº=?êÚÞ,bRXÍ¥,Í/éCäcúlñ;b Ýp>xEÒòÎçw÷v©ÁЬÐÁGFâpLIÒC'Üd'3!r⫬²ø±0T'ÙBÇ,eün¢ÀÚX\6ÂÅË:|Ã:ÆÏË!ª/ÐÏAÙ«"åA\WÉ€Øþ
+ŠÄ£Z9*SÃ1¡b, į74
+Øä/
+"]oHm²,cò«ÝœeBõ®î2 ãäŽI
¡,ç*WÉr\Ý~ec³-ÍýPK1863ÁÒW8D@isis-database-3_cvs/rules/ChangementParamControlablePresimu.javaUT €·E$YGUxèèÍksÛ6ò»¢é4r¬PvÛ»ëXaŠJ쎹ñk¬4wœ$A6RT Ò±Ûæ¿ÞÇúûýÛÅøe»òMÝÅb_ØWtö#œd$Í#&F[[|¹JÒf|Fô2%såŸ÷uŒÅ?Aèή@.I,(¹Œäñep\ºœ¡³,Ioú³¯23GÙ ]²QùÕÓ,å7vÐzMÿHyÆÒ÷&ã4¥·G\d5ïÔc];ñ%Í®ðPY EðEÊþ.\\oáæ
+ÜO¿cÑÊa£ZðeQ:ÌFÞñ$~Ä»ÉZÇe·+&±`ÇðªÅÏ8>kC ÆS¥°\çð£zN3*`jñæ5{ÐŽc¬<6§Š³5|öl<#ï("vk+OðáëçûäË]'×l9Mùbw÷¯úý74Ï®Ð8oI.ÈâöNA
9yâKÙ*å 7/åÐk
+`|vή9Þíœ`|ŠQ»$_ßl|v ÿå¿=ßÝ{þÅWdïëý/þ²ÿåWLo %3ûdºòÇòÝpkO#°ÔYD
¯¯h| ¢³3Ò%ªR§;K*Íbñ\wÉ/[[.ÉFÀ6ÉÎxijÛù·«<#@õ6ÉSб@I¿Ao{ì í<@"×01ö-ñ
ÄZzpÉ2øÕ_Ëp '¶=RêÉþ+Yáñ6$qE#ä[FS
+r·5 Ò.4ÌT4VBõ"øûøäûñùC@þÃ×ǯϜpñ¥³rïi#ל¯w{þÌ4ø¿ÿCb6cBÐôVi4@ÿ¢i(Wâ®Ò(²p$UÐØìéÒÍvC«ÖÌ<°58¿;ûÏWoOÇÉ âäðÝÅûñÑ÷§o.Æ'oOŸ\_LÞß~ûÃÅñá;
àSÝŒ`Z°î'þÌúÛzfx¥,ËÓXò$ Äú©PU5æ9céedþ.âØ+¢OçÔŽ5¡|Î"àÈÌøo4Í£§&ÉdÎTAf3¬Y2ØÊ®Òä£ 73ŠðTfyÑï)ý'
¶2\äZê.$®0<ãðð#]Ð`nZ€,ñjÅ¢;Bs2¿[Ò¡(êÌX¶¹Œ§/WF<H at At,5ø@ÈHR2Œ:øÀ¡¹¿Vè$"öSÎ"?Õb0M³Q× d _àqäÿV±8Ñ7añ¹ïd£bhq#]þyA#µ~fdÁå'\°idœÈšò
+Ãï°`Zâ$¿f©ÞKyKgQ`÷Œ)=Ýa߬Ò9Ïš(5sŽ~;NR52²×zdÇGâCWÐß®&<íã<Ñá£MHŒØX<X³øâàó±ÇRõ_ÊLý)š÷+cQÀ/ÉrÄÅj*W£ðFôõÌ
+H`_a7Fžï±âz._°Ý.ï€<Õ#+HxÔ#ÀQ²÷ApQûÛµRÇ/HÿIìF¢ï-Üö¶Ï¢Ïf€ÏsôÈ1°±
+ŽžKã»^ö'Â"ÁÈfh鳞«kz*fÏ?÷#²§^ºm`"°kZ#ŒCÏrà ö¿A8+t9Ï3&x.AÄ ~žFCCª×,Ò9ôU:!ÿE¿k¬Z»ÑÚñz5
ZÍ3€±÷kÜBüüEsÓ¢2¢qÆi1<Ëîèaµ1åcDù' PÚÛéFÜšqü{9ö<ax\jËV6muºÚo°c€XÏÑ7ZM¥lŽU&ãP('ã9øÁü(Éä#ÜmòÕýR÷]5B\ÀO_ÃêH{ïYEôýíÐZžn4l÷2úEú=tTÝElf%ØDäL8dv>zåð}4$ãX(žé*7ã&~ýUçIž»FA*@[¥<ã(껡¢Ég4È\Å- ÂÃ@+"€d3ÈIÇ$=tüê®Eært ÞMRnØGR84L¿3bYù)È€"õXÖ(C=jÐX¯M¬G-IB;ë ®ÔZrÞ{>\?r7H©ÍŽëFÝxG±tè4׿B»ÁLVDÚ\¹<µdRÎqvz2¯ âéŒïïnŸô$_N1hZê=üg@ü|¯vž6w
+\kg&³+?©º'{GõV̯%P éT¹Ö,œ»
+]<§ô®ÏìÈȬ(ž ùÊoÒšå2è·yesšË`è "·ú®¯r°MÖø»Ei÷ªpª¥÷h²àUÁkŠ÷,ÞZ>-Nþ!hdŸàQåÁX(§ÔÊy:J©vø]ÔÍA¯õÎçÅ©0Ðssa®µÃáiLèóÐü`a5*ä§üâ?åhq3û!ž·úI·È?Qšo_3ZRySl »h)ØjßÀ[îÁHKD:Úåe§÷öP?^ÕdÑëjLHIÆñöê9Ö{,=€qÁÁ§é
+»Paè¡7)ú¹açŸàºÈ6ô-xUð¡Ùç}GÓÜ[8GàÅy/O!+ÁŸ©y]]SgyGÒàYÀÄ@šæ¥Ío{0¯SöqYUbñâÁ$Ÿ9D¢åX¡U
xµœas9Ñô¶fIý÷#È+²s4áZio
Ø$£Ðji/Lê(OÇñüâ7Š£6Ön~0+G4r 2Q!íœ|0©Óì¥çykrMHvt$=eÇ^aý÷àa8Ä2!UIÎ]5yÁÂH$rÂÂ`ÜK£),G^c³
+[ýwØP!ÒV©\
MÐc+ÞåYo
¬yÅ(Ñ¥ÚÚȶݯ«Ïǧ'ïŸë#Ë€]Üx¥ÉJ>çrÊT{ã
+¯yciw¿OOæLðd¥w)%MæÂäÉÛžJböÈ©Öëê®á0ÕN7Õs¶7ÆçÔòpw¹Ã$ž·ã- at QÖ0YœêjDE¯·SSACeìñlŸ`xyË$3Œò*y)Þ@
+w{ÔÝÆ»Zj
+»NcýVk3ÈõPíÍoëßTúOì¯O¶þgÁM-$ÝöjuølKyXé:îéôežPYš9ÇÆ9@šgød޵µ5Ò,Ã\xÆHwØCÀ9+ªë§ bY[T[ÁKÕ
+»=Š£¬ß-li pžñSþbÏd¯i*kÛàí±Þ}ÍBË*¿*qõ°01 xFh8Ç¥~VyéVÉŸÀÞÄÈb¥Å'8V_ª`=aý²LRÚáMsYÿZÈcyjñaŸŒ|5èÌûøjê{õžk=:T71Öì`=Ðßzëñ$ŒÀ¯Þ¬"C¶kRÏÇrÌ'ÉŸWò¬ ÛŒ8â#¹â;ÕóÉRŠLHË/Â
+>* !Ýþ{šþ3e°óqœ2,R=VwC4±3uðUÎyÂ8OêkíqÆ¡bt§Nà8·{¢»qŽ5t^2ã@|ijö®<î§HûÛdd`+*NØ
+:m«ê]h`b _ë%$ÕÃnHÃ5Ûé9Çråô©œ¶žtXÁ@;PšÔ&.õ1[0µKšT.(¢ÜÅøp×üB ÷öJ¹Ì£1žïÙ{ŠÀñ,N{¿C¢ÝtÀÑúã
š;3`+¿åµ ïd@èá*Ù×L¯XS):ôǺVæå}{n>KPQÑTZڟIJPÞÈÙ,¯ªÒªÔjz®6¬¥2}þUcùÙEçŽ]FjYxTO°æL÷€ætõy{¡*6úÇj+t>«`gø#
+;|šs¥J_Xðú8ÐædŽlAÒá<i
+?Þæš6è{%Èi]äKEzó¶µ;tmËzà$G?)Ôÿ}`ëOu·0¬÷ÂKÐõŸÔà,F=š¬ mϲ>ÁòÚÛZµ(m«ÊÀí3ŸßÒã¬0Sig:b[×Ètöåë÷mF¢KMÁÐÔ€:eáM±)Wá/J4'|ggMHjñ Yò5ežÛ¢kxï¥*C?KdÑå·'Mw
+&%LN9MUç:ÔÐ!·]æF=í^îC|úsXéx¶Ãìoø±¹*lc
+j_Õw5ͪ:ŸJí¥¶%T`û8Õ÷íÍ*Œß!©Ÿ/·4$PÏÔà&vëiâÜ£Q«|²è»Qâ>œ
GkØ g8Tú6uûv#}¿Ö§¹ö&ñ¬¯ChÔ+ŽØ«û×up®*ͶJ_òRr»í¶¿ºWï{\5ïÐÅðIŽôOÖKv¯ÇjpØ
+Àãõ5t~\Ž5dîë%¶Ž6ílxÊ/¿ß
+ÞD Íúc{ÞHçH+o»]¥ògnlš¿ÙéoøÔ+ùÇùñ¢¿
+
+L@ç ÏÃÆuJ¹raL:X*·¥ÿañ§$*8B$¿¢`²âÀâ_FŒ¯§I1Ûy58 øe7Á¯ŒæðµÖ¿Êú@ãWÐ
+rv4J |)š)ÉwìÍ j³kª²ÿ-
+[@¬HÊw¢Á£/EõÏUÊÆ³ßEÃ!xÎŽÇ"p-þTRtíãÖ§ÿPKsWò6bRIGR*isis-database-3_cvs/rules/GraviteCPUE.javaUT zÖF$YGUxèèÍ<iSãHͯÈ&:\2P{ôB¹¶ ª-(èèí 9
+IÉF»
+þë|úûÞËC©Ë)ØEwÙ2ß/ß"æþ'~+X"Ý_[³8J2f<>[Ï&"È3zrçÐ;Á®8ÇÜ¿0r6ÂÔ¢Û[Þz¢ÛýnÃÞq?¿È8Kœ÷ Ëìáiد>ü(Ò<ÈÎøLÔ]ÊS%òsñϹlÞAðt¿þàL³2cï3Ýá?ÓÛ,MON1ðÊt*Ó;/³<àÀPAßdFa&>gûæe±Hœ#ÃNàÝÂq"Ìd&aèæÂažðÞÁM%°áÇÂÑñXZøðÔ2ÚÜ\cL-8ŒøùØCÉÂ=Œ}àk²Ç^o³0ÙM"Øîööèç?ò<»ÆÃ(|EyÊÞØ¯?üŽEÂWÀT"âDŠÂõyKSç"IAÄìûb.ñÛÛñvÙ÷ô å1P.öØ÷Gôÿóü·óÛþaïßÿkïõ4Ý<0t@Äì±;p â£ÑZß°'ü§©Ë'
á$e®Ùµ5
eËSÁ@ßÙû2
²ûÈóÉ=DyÂP×öp'ÃiÔ_÷<o}°ÞÀú8`°g޻ǻüê»K@ÄöZ`ñüO@g)lCÁ&" Qd¶p0ìWà}f3Ô°ß~Xm«³#vÓ/`æ€yŽ)æ C±d3
+ñD$¡ü'g$.Ô²dpÇÿ@-S+bÉÙr¢~š`О$YºæÅ"p I@ŠTÏ`y÷31Ó² J#]²X9ñ\Ê7 ÇUm úd³©D+ð$lnðf
+ÈFWjq-¡REŠK#b"±.L`&ÎòŽ/Ï3ÿîB$?ªO§S4/%zo]Âðýú
/Ò'ÊÎÀè/Žm;úÅ8šew2%fŠÏ|°œÌÂux§WOþrý§óÓËËaû³ã«ë_>ü||}þîúÃÁÙÑÉÙûËëã×W®ßÿõúôøJ0WÊáÁÕáO×>>yÿÓÕÊßœ;ÿØ6í±I J0geiöZx%"ËdæU€®ôöÑ*
ÙZ76øt*Á¥£þèCe
+Z°<U[p3fþç
+åÊ,(çŠ|"ì$=gÔ &ÀØQ1 Êîè÷ö
Sp +zu~t^åúº¿îK°·cæCö4}Ö|V]ÛLØ
®Ãí3~Æ&Z!ÞnøòÐ~
+!~wI³®à2ÇÁC_ÿó îXÁ#âIûöñ£Q&&âX_ÏÙäë'èÝõr€62,Øé¯à'ᡱ
@MJaMúàøÌ>Úý¥íáŽI¯ÆÙªóHNhEúµ°|+}.ÔF z!ðw{PÍ~Á8ñÍ%Úwqûðœ[
+sLÈnØ|ïÄtSͬhÈðø[kÌ;@TSZÀ¡§|«&SQ¯ÇS|Ú§§ÞéùÙÕO8ÑNmðê
+¯cè|Ñx>
uýõêŽõ²!ÃEšýí
+lš){Òc¬Ÿ¬RZ²u¢3]tž«âš<î;ûšiÅjqAŠÊ:±€Ö£+ojteì
+LÖ¹¬ÅÎNZÎå"ŠjËdávY$7YIéhY§×k·D5]Hÿ-veê
+
+ÖQ±\Îí²(NõCSùÒRu7%NW·b0kÈ*ŠÌ6$ÐN9é-Ã4 À<ÇŒ#ú8%Vì(LŽ*Wxi'«ñ1ÛÞ¯ Àu%'Í[\ŒÐ1aG&.l¯fö-AïcíD9ïNþr
+!z$3ô
+9Ô,Ê3ðÅÅã2K3ÈíµJí¡o²02Q-Æ °4!¥$Ÿñ¿eÄ0að(,þzßITú3.ñ`
I¡6ÔNTÔ\C*2ÚjJ·iíû¡¢®"ØBšÅ·µÑæÚòXH8@
+öåÜ oGÓÑÇ rŒœÏä5ÏKåßÁÀÁµÞ\eÆcý õ%LŠûZPc£Û6í/žÆL@"±z]ÌjŒDJ3ïÆû7uÞ{E®¢%ôOwüžòtØ
+t`ö§7?âFáð>6CÆ'Ñ#ì[cGãŠÓë=ÂÿÚÄ^M; ì£=Œã2$1ZÖl¿ZßrT/é{UäZhP>;$w04ø!}êFÓéµCŽÓñ§²Ø Kíõf
+kÚjgà.9ëCÀ³«©Dí`Ç'vêßréìæyÂ¥2Sª !³Ü/ÏØtŠRÙbMÅA®¬ÔBJIÄM_íÉİÈLÛ|xKÑ(ȵ€ ÑE(ÃKä%e·
+ä1w®2ï»ÕACÓMB°ÿfÒÌwoò
(UDw³É"ò:òWÁH>ßg÷žVK/%a»ü"Íüy%©^%%tz&>?ϟœ9Vš"¿È5ÕDÓ{ve©§q"üYj9e}ªçŠGâ&¿=9ØuhÇLp-F0EBµ·Ÿ¥¿±-¶NålžSeŸŒL¶zÅZVoAøæ{'ÈÅTÚÂÖÁX%4ÔGr^žìR÷Aþf<è56EYS=XêÒüŸKÁháöó
+!;U¯ÁÚ
+ÔÌE5õy[Æ)o£šp}, rõóÏBÞf_R at W*ãEþ±Ê"HG²²Îõ&Ø8$òKJða'ísÐû¹ÀLmözòAû$¬X׬ÄX`ÇllêöߣP€¥QÈÙÿñÒ|v>Éõ_wuDyÜØnnØæÕRËÕÆ·¬.¢ª7ÑÇ'>Âè«®y"¬ÎjÒIE:šWÊ,ÿßËy[k:(LdV1âuREéj¶^*šsÊÜ!VËÜ·\Di*PG1!ÆØâqAœéoÏ!*åª,œÄ-èKÈ{žB|#ÕRXZÊäõÇvèoL$$éT¹ÀB4±
+A
á×~Eº7kØúÚ(W¡8I#¶ûoÞ6±?mWù,ØP²i¯5b4673¥Áú`è
+CÊ¢fžç7÷ÂÏmDÙdtHÀ8dÒOÁ8RêµÝ"U
+Ív'p¯[Žrµv4M;nšx«`m,¥mH4q#µnK«4®_[û2-
±å5-èØ
+¢ðÓÂè€Yvjrós§\9žf9&q3/Š7R at d[±¶pmZWú` ôrÚUŠúýb~
.ÌxJT¡ÝÊã¥émÔŸFxÍ*]D
+.ÿ»wIkÜËIq0¡hBZŸÚâò%£: Uù6îläÃuH{H%!ûaøcE1àUiª€
+bm(âØŠÝÐ=rPÀÏ6ùzÿ*X`¯S~Ü?\Ù¯$ji4)YMmŸ¿Y0ûU
TÒ$¥2TWH¿îŽ,Übáše}yÂݵ,ÑNûÏÝeª"["6N{L«mÁðÕÁ0¬¶Xô§j[±
+ /ºžÅô< ê©{NRåYRôöØ.š;c*oÁîµâÓ}
+ÊÀ¿Ïáv(š#EÚÔ«@Åå1ÈD^ èüZqMt$ÇRgaðlWH³&7mXIpª\ŠëãþÎ+HOû1Èeg0ØD(·¥U»»6h|.|F
+e
©37°h2«V³€7qOêaaµQcpàJá`"oÞš Q²òö$7Þ,=¶ovÝxéhÁÂ74ø*cq©®¢lÑÈ'¥
+štugQSJ×tI8b.MA°dYi®GÖx»\Ú.ÑHuâSL³¹ºG)üÛ©àu_©8A±{ÀÒOT
+FM%;ÏõBÕjÔ.væzîqguq D[ ogôV=ìó¬ÞÏEU%ö€M`&žñêhmuT;ŒK/« [ãåêÙ
+l75Åë%d·8Ö³ÖÂ=kRèhÓ³ÊU;®'8Y
+kûÓö'^¶{öáÒ\å¹õÖ4éiAÆbZêbõkÇnN°W/%¬Í! {m*MUÅYÓ.ÃgÈpuA'r®2±B+ç-D
+'m=é1\¿¶Jà1`õ70aT /ð¬6Øt_9z©5±HCáx v,Ä·n\"ª[ð?¥¶~5¬äEÇsl"vÖUŽþkÃs¿š¢
Œòª~:dœPÒY*®Ê£ÃÓTæ,Z·îR]>Óõ{ãpYÛ=öÔW§í{ºÔù¡ñ
z2¥÷ÞŒ·:¡¹^:Ù{{¬æªœ.é0Ö*gËpl¡íãmoßF}{T2¢#DæY©á7Æ*lEg§êõÀ{ßÜü.΢œìq#÷!õL²Íxš^pÔÛúxÉ®ócMnèÕÊ~!}ú9xµ³;b{]3xhzw:ReoAzÔ«QRœQmV¯6;Ò=£Õ¥c{
¶³oª²Ó§êðsv¯MÊ8l`NôQün¯µçßòäeŠÑ^Mæn;œ·PŸx^°§N%¹Ï-#c'M/ÉÀ%4Ã_ý<þ§jðÙý§kNëeu°VÂ'( §å~ñлãéøÁM«ÅLg\šé!ª
+ên1`é©TEÔ§9
+Yú|e
&÷šRCOÆÕ2¥nèíE·Û
+ûÓËžRhÜS¥
+Â
+ýòòÕúãf®jgR¡·ªš~šì:×]p3Cw;ÌÙ4Œlš±Ý#hºØø\}mÏÚÔÜ£64NäìõžŽ*oêÓûJµ
+]é-;LÀÝožkZšôºñnUŸ!¢Ý~¿»Ñe×Ïû©K
+fÛÜSGÉr"qäbÚÌ«G€éDzê{^ÔŠÇLÂèÑ=r!ÔóÒd}dQ¢zÇKlLÑS¶s
+RºÕÈj©¬æ)»ñ]µŒgþxh=<>(;Ü¿`Q²ÝW áBœÜ³ºkXóFlŽèV)ët^(RÏtŸ#Q(®WzBûVywÅU
uVØjXìUjKOêùå³úUk>«¯+
+wU'*HeOëÅP/Ÿ'
»«®ËÍâZ¬8ªŸœ{Ù®pwñu¿œøòC2bOiFPp4zÖ_¯ùØÜ"Ž+5óÌM§kgnÍVy˪çŒÄ$ÍLýÙÕŠµ°¶)°MÝÈÖÉÀZÙ<ÑùV'R{œlQ2CÝýÈ⵺x'Wµ?¡Y~T
Í\h5Ö¶*ͪŸå=Kûªv÷/6 o€Ÿ¯YäjhIKEÔ&akܶœQèš>u(_±Tq0t{Îtªö/Yt2n\úEÊàìór¢á%É¥JÕM^¹.ŠM»¶ÚÆ_2mß
+S*RÇšnê,ŽDãEm÷]q¢Ç®Mÿ}
ŸÐsROÈ2-Ôeµxý²!ªAZÜ}Í>åeÃ8Æ2`ìËQœÐÛÿàÆ?raǬðç"`é×þPK186Ó$v®*0isis-database-3_cvs/rules/InterdictionEngin.javaUT €·E$YGUxèèÍZmsÛÆþLþ³&
+JIÚŠ¢1-ɵå·NGs$ä¥ àÆLâÿ[ÿ>{wxi:gnwowï¹}98æ³ÿð¥`I5ê÷å:©§rÆ¢déÍ¢¹²T<ý:ô®èÏÃè@Âð¡I4<æ³éz
Ê¢åRKïUŽFöÏÒ(ÙV4%2Nw+T€Ÿ£æÐŒæi"ßL?ð
+÷däý#©HFµ×° ðÆI·¯€J;Æ®À¡DÇášZR:eÍÓý"ÞhxrµÀ¯j!ÕÊSr4
w-R)ë(Õ ÷óÜ;
çQ·é^Ÿtå]ðT@EÒÕ^:Š*+2qÁÍOU`=oñ°zÎS®`À*/a×îÚyJ|ATÁÓ>yÒgOØ|Ìå^À¥Gë<O<9?c_°0Úõ4ì?Ûñç<KWQÂx
Ûu)ö¬ž}ð)°.ÁònLDH%< èͺÂì³[±twÆNœSöý
+j³,þâ}v¡0ó_>ýâ+vúõÙ:ûò+MÏŠ[¢±VæMcL¯dšÇý8ØÓ³+Õ6Q"+V]>öK¿ÏpÁG,XŠÃŠe>L·öCíâ,e°²ÑÆ8#"OÈ9ò<ïÈÑô$Çx`C6Ÿç³2xKâÉi¯Vܬ1ß
+°'|ý°€[
Yª$ä2K2ÌBý:ñrNÜ]äpGøôô¯urœuªâÍßxOŸß~¿SÔ..Ï/¯_\ÞÖÍŒCx ì_ÿ&3¡O¶ÆàûŬÐP/ÃJ<J:Â஀Ò)!goù:°`ù2Üz×ãûÛ«>Œžº¹ßÝ
+vSL.ïÞ_}wùpóòáÕxrq5ùöîáõåíÃÝýíøþòÛï®/ïw]vÁ,,ú€nãZËèJD%¡ÖßkxÀžö]SÃóœÉZ€lþ/Y)K
T³®sÁI^9ÿs;ç«Ç&Êd.Lò¡ý9åv,»(`TºJ¢»|;FNËÊçèuäIlÎÖGnn%k9cŒg<có÷kPL³©">ØL€Àñú=âãÜ5ùGr8D$¹<XÈ6<Tá
+Õ<Ä€êSLû>?f"`x4.vÎþÙDrÎH§ØDôï^g÷77¹_ê^1çÇL²y$S&|Ù&áÒšŒàÏš×Qæ7žTI¢VQ¶âXYšUPqACªË_Ó(
+K»vûm`¥3¥[ëœ-vé»
J?ý
"Ç!]¹>IÒ$å°jëÇ×P\×/rJ¢<;bÇ¥B!Î#§^Yl=ã>óõbòëóÏY'å3¿[n5±ÒêTÅìwLà¹FZµHsõ
zXè-§GÈÖÓ æfëíÁ©@N#54Û¯_EÇ\*_ Ñ:µ÷ÛE2çA9³ãzØ(àpÊ,MâÛK³W~éà~3\&4@ÃBVöI1PR<éÿDBîú
îpÓéØ+A-¬€ÍÚop}lQmÐìÑÓ
ÔæõÀKºn¿0Ïz£x8ÃÃhI+kN0ý
+;)-pôC·Ò°ª@.ä*@_±$NÖbí÷Ëk£aG
+ŒîÊ
$uÀåA(MÕcâeé{ŒÛð0EF-VÄ~€ÇT¬cÕJ¢eaðéÒañìÇvkèÙÔ1¬Ûè t6BGå~«5vOØV7œªDÕP_Ð{|>ÊŠr>¡!wÉÚ{uÈ÷³,þ/öeeH:iRŸ_¢#
Óà'àÉ,%j²
+å]EA,XÍ8šA$#ù'ÅùAVÑÞøÅ;²)¿wòº€ÔNÝ2b¹ýÔ¢à ªÌfêp»
~Ž
+GqXQ9].¢ÊÞÉIH¬ )ÒâóPÚ €cTÔÛêdwEi$kÙ^Ûµ`tÑv×Òùì€+
&šàîó°Óxê¬"³9cË4óŠ|ôÍÃÜPWŽös3®Îe: @V·Š¿ÈÂ|ÛÀ²kaPLØ4å
ùÈd"7FçføËc¥ÐD3£V×h³1ðé}@òutÖpºÔ*VÚoìÞV¯mJPM¶YÒw"œYŒAOÀ$Â\Úð^ÓVìÆHäB5±qÕÄ0i*Eïrª3ŸfØß°xÐ÷cöX
+.rVÝAÎÊ) ÿ¥S¥$A¥#ªÂ1?4ìò©Aßt'-6³¥ñV\MXðŠkÛaµ¡&ïtöš%6fû»6µË|ìÝvq_¿þJjŽ»fÑç Î
+ WËÇ9WÂ9
+£Òà:êšáëlRAÝç«Ì ÙvžnÛµtY&bmDûÞÕc«AžÍØ÷~MÙBÀ@Gäs¹@ÍçïMYy
Šl ×ÔR%§FC1QïV|n¡QÉaŽ Ùmÿ@6Š6
+oÛazkŽvu4bvSPèéêþa§Ëæ»Imš(áa;Auà6ÙÉ|èNÓÛ°pî²T·¬AÄñáâõf:AŽÕ#·56¥U+:;;]¶BFÞB
èy!!ýb@{ zJLš¢Ÿ³#bêòkrNJN,|1°.79ØDb«Óþ`çêv~Þ<Ïï¯Þ\Ý¿m_=xWuÍø«%¿îZô7<ÈÁíå~8; v8°NöÍ,tÙÙÑSo~ŸBÀþkóñSé/8^ÀÃ¥gNc+mŽé³L÷úF#?oX+Ô5MÇeËÔ·ëu^¥TFE§ÚO¢µãèÁÕ]û'ëwÈÆ²\öIÂUõói4ýAÌRïâÅyi¶)µE²ýRcœf+?¿Zæßr°hóqŒØ|5³í+²YçµAåy2¢gVRcðêø ªGI,nužuip²*f£Äßëü¬×Ÿ€&ßoTª[+i³Ññ²N¯Wh®
Bwýû¬>On~a¬0êëã78h.ýävw'Íã§î.pÓgA°èQóŒ4ÁÜ¢§[3¢yWgš#£¯¡±)à=§Ò4eœí#:¯;oÑ4_g4STûèd
$ï]_ÿ{×GèìHèÊD"ÛVkl@î7LvØÔ£ÊHámOØZfÃáïíÿÐPÔêðöôoÕœdÎò/¿·YÛÙE6} QÛÕ;QBœM4Ðгáß×czÑ8ùþI¥·it¶Î@Ýj'DÀ÷k
+·²HÚþ.¶ÕlRc79_'(p|ôôèxïñ¶kj¯ådÛB;Fvötlüù}ÑÑõöt?yP#|žÛ±Qÿ7á¬×23m«÷Þñ!-2Á°Òp`êCûZPU/§NGóáå?D~®Ú&9qÝì? Àpø{úi.ltšUÍ~
N'k³aŽSÃ<'s>òÍÿPéõLCþšBjp,Ks6ÓäeÊL7-õsAq^çØãêVRb¥åpÑòQsTò
+Ø¥;r
+rª âÖ8`PWÜ5vÚŸß;š)A¹¶_kw#ZÏñ18ûÌFж°ßšS¥Oó!*Ntÿÿó!*Ré'úEÛQºB7fÝWÿPK186Š×¢
+U37isis-database-3_cvs/rules/InterdictionEnginPreSimu.javaUT €·E$YGUxèèÕZmsÛ6þ®_j:µd+öî:V©;=ßÙÇvs×ét4 IÈQ KjÜÔÿõ>ÖÿâvñB/¢ä8éñ-Åb±ûìSÿ?tÁH
L:Ÿ£$%2¥)÷I,<?
+X¥\xüé·Â;Å?ÓÑbZðDSÉtµôÂh±àbáEÑnd¯©FÉ#©ð8ÞY^Ð+ÆÞÑ5õxäý+á)KF¥Ç hèMÞq6ýÊå9FN)6ðR|Ü
+ºZÑtþÞÛ/æÇç [1ø/¹s¹ô$_e!.ì³³ä<Ü£}εþÅ#ñ*){¶ÎKoc&œc²È@tÙJÇDÊAd[l!C+ô&3&pÌWpÓJÐJØÃ_ÀŸ®á7Øòs
+}<l6Ž|Ngž¿ß!ûätÜG'ÌÕÃã|0ÐdpDŸ>$"Z³Õ,aäÙáá_Íøw4KQBšÄí*Ê$yÿü.€3pS'\2¬è
ºf5ÉWlÍñ×yê=%_Ög 6Éb/Õ?XùoO>yö
+yúíѳ¿}ý¢'³[D%ÌŰŒäB
+;q6ÁÕýJYßîeÂP£@÷ÉNÀª"iD2Éž4S<œwg)Ån£,!èGHäq1z]ÏóºýJ|è"Ö°° øIÞ¥p×Û$§§¶ÑiÁÌÖŸg4!1MèjºÀc"²0¹$ÊÔ
+ͬNèc=àýcrñÃäêÇS at 5å Ç'¯NÎ_\YA(e>
+Èx®HðÑáâøIé,dÀ~Öi(!ûšªÑ÷ú£
+×Y
+BçsxPæ4§¡de
\#± ?ýËøLJÜjóòúHêÜaAGM8³N\ªc§°÷tpÂöAÞÞùäæêôßÓ§oÎ'××Í'7Ó·³NŠo^OÏ&ǧß_O/O®Š×7WïÜhwMûm\wÖëá°4Kß«h at kö.7l=g\²dÅRì91pjîaàl; *0"á&€°ÈPÏÎÿάy¶§h¢IŠÃú9<ŽÌaÃÁÆI°©tD¿JròÞgOmÓ^÷2|ÆÑRк}»KRÝæ$YxOhFûMd2ÇÕñY
+еº<ÁتCÜâÂËvHÖ4ýÈ\Êe~eî]@²_2žÕ*ffÍúYG< (@¯uÔÿVeB/YÙ;p3§Ddœ¯BUÄå1Áä*¢(_sSZ )èx)3æÄxÆð*`UD+uj{çZÌÄîAn =¯×w¶òÂ"CoÀÐKLÆ0&¥pKŽ=GQÇ/K<1}z®÷BÝ0}#ŠÝ¹{}g[4=ýÜ3ëÙxñ9éiBäúëõ=°'ÀÁ^iÿýêLIÉœÅð¥QýBM0è¥÷HuuÁžHa%û7v+Ñpq
+ø4fšÈ/Ƶ¥Z®3[ÜÅšÛqY)ĵžv,Q?¬zÔM¿ŸCŒ®Yúfþ
à æÿXÏWK:ãMËZ=©8å2€â9s}ع
+·)N8÷_QŽü!{U7TÜ¥ñ$Kû5RÔ§à$úIqëîœJÛC© Mi¹ZÏÑÄ£Añ `ºœF+ÖÁáð)Ø¡Oåžý| /ìòJø©R&¬iH_A.¬-ËDìÑ[4ëJÄCh$X¬Á_C0a ÇèÊä¿Ä tÍ|åÈPaN«šÊîON0{a0XZCBlåæIy¹×ÀŽ·Á€,¶ïÂN³1"AfÎçpt
++eì
Ì8"`©2iÀ45ØÆþl'œÈÑjdà&×0êßR3œö6æÈÏÆùJèÄæ
+rO[76·qõø<næoIåÄx²Ícñ*PLÁpjzãñµ{^YeÇWr.|²OÆcržÝþìõûï(f=àTQÿ#8êm8.«¯šdçóD¿Ûš¬ ÿ°TÆ¢Àv/s,PWCŒËܵRÜÎm1iðF8
+gEÛ*.ç
µrÒCiÀ}á¯q3²:i©¡ÈÁજU:޵KHþ( câáú
+fRw/Ík»ÂÿÖÜÖÛ
+ã]<¯&ïü8·Ä+2ÔîE1*|r(`¯}{g~»Â
Êtùaížç
+oÙÌ{Ð GûÙîË+D8URŸÆFàHXù:©.f{¬ÝÉ[G!>³íXT;e6ѹpq»t@¢&òwž²üþÝÕŠ>îÍìK|{ì2ÝÀ%Wªsà1®ö{Ъz;$x©êŠÆ£Õ,ÛœFÛ©)>Æ_u:{;;^
+7Óɫӷ§7?¶gBÕ³<Lð~úùCQÚJUàÝÃ9ÚvÑ1íu¯-ìËnRaxbwûw;ºsíXãLë Aá;yðV:_tã·4ÌXÏ(ɺðî@¶h
÷͹höœO? (Í#õ§å'ÅsžY Û^õÞÏp¿£:º¿e4ø&aèGàIIæÛF_lM÷Íìó1'65+luEÁ3¯Ú¹\êW~Ò«œër8×ÄcÛiâû|Ó`m /pÕÈÎ jB×?@Uàr',IÈYŠ!S÷O:7 âS-æôú:ΪÓ.;EëÔFÜ5]T>÷[Åùå\µ ¡@Íùœæb3?~
+ìÔ×øFÍ\UIЬþW|)5á¢*>q±¢õ3®ÑF¡tÑÏdŒaÁ$_ÚÖ\ÁET !ràÚ¿Æ.'·j3ãnÕŠãÒ²kit]ŠÝŽÜSÛØØûàø×gïŒåjÓm¶k®b¯0>/¶*}q=¥]R~RÓ»®o(]m¹DŠ6Þ©WiÀå ·Xšò\CVàØf$ÆËFúöùØxÉHÝlH+¬³ñÇyÏ*¢`æaTêñô&×NÆ[q¬qÉË!Øš8"ŸZVcÊñºOºÈU=ÉVJÞ~Í6,ôÐlC¥V+»MfUµž±ÕŒë³Ç³Uücújk=°1VÂÏZ]þ¬ a¡ªYd§f4Á{= 5:€
+×@ºï¶Ð9ÆãR 7yE²Û·msµmœŠZëÃtpŽ!õ#*eÛlºRK# bÛúøözMþq×Î_ë|wŽûtn;ömví×ÔÓñdïuÑŽ×ÐÌÙÜÚ\Ø< zjç|þñf9C 8 |d|
+ óù.0Ë2â`M#ÇöÞPCe€ªš)U5Ë4ä3¯V«öê³L±\Ôκÿ$ôîç¶íØ×xHi«ÿ:ãæ»êg!g?°G+ø%ã$ bá:¡\gàsÊ
+6juú/>ò¯hÔ¢º]'£âLZ€
+fqç8d)}0b?Ê÷µùÃÁïë~k7pºÞªçÛòI]!±VRÛ»B¬óžfþŒôM
éÚ×ë䫯Ÿþ2V[ú¹Hã*¡ ç(eªâŽDöuÁ
+
MÝÔb¯Ø×¯Xm
ÜÐQ>ïEa ÊjÜ[&K²1ÒHeÇG«/ÆVMmÝç0áÉ~ÿ¥6§¹|0õ!Ýu
+Wš:Ã5ÇÐ^øfþÊ 5fj³ÕVšÆØ{ægé=<[ÒÐÎ2DLÙ*µ¯¬ŒOî=õï¥âMüÏbûº±ÑClYäÝR$ËBÈ/ G©UÉH}CÇaýDËŠû8g*Ø<ê3°\
oafñ®U¥ÁvDãöIÑÝý¬1SmfSgõŒº=K7ø¡
+úT#5Ý4y>§ÃQjs6Î2Ž0H-ayFÒûÂ!3ªœæ:ÐÛ×è +ÒoÝuÄéj}P'*PdúP¥åóæª5÷;oi{o:š|n~bpªÿPK<v6€Kð\5isis-database-3_cvs/rules/RecrutementLangoustine.javaUT ŸF$YGUxèèÍXyoÛ6ÿßâÁ(Z9Ké+ãy«»]8)l·;Â`lÊæ&I¹ñº|à~=R²%Çþ 0xüÞÉwP éø/:e #©f¡ÀýPH
+JSÍÇ äÅyæáÕ\Ç(E
+éxÆéû"PÄÓ)ŠäFLù`ïèX¹ÈÈKjEúLEŸ¥>K÷þ€sJž ¿J®\×$UÖ§zf?£æv!§dhW"ÐìAïâÃ#äL?â0éJÂ]É|oÅËÕ\ãà:í»_÷ ÷#¢õäÍ '+9éñé±N/BŠHjèÙ^4סG{a&ŒHû^i'ÝÇÉ^ôjªÐ4±msÔtqܬh
+壣ÀôÙXF©}C©/#&€ÌŸÅ\IÞ\B>
+jÊùj÷
+ôLHÌÎhÀôÚ¿t?µð£òéÍ©z³TÌ?Å4s&Ú/úlÎÍ誀
+/V\oPoB4]Â}±¯+õךFõü²^¿<=)à~j[E.á>D3âÍr!î=ÌݱGÚa0`°`¢ {$ððÎ- R0GÁ¥cîqœ8?ÂH
+[HÉK"<p
S$KM£eTPò9ZèaÒ'SŠqæì8kD©(X6øfRIýŽÕFãZf\#}_É«æÄÕrâê9q'9q§·
+øùXHy^Âl
+×<Ø)Eå"N-€ùDKÙÄIÔóR 2·H³EÏž²=fEÚzìrµzÒkû׿Þ^ßõÚÁñÈmw8úÔŸùØÝœÝŽo;×·ï£Ýþh0ì·Ý÷¿zÝaÂáñbãÐ6ÁÛuóÒÒ<óLG2°F'~HöŠNBvôÉ+êº
+Þ+ÓJžÂtÀô0)0P8ñ(Êb\1xÈœyeA"2 {£)'žž€Z·Ú×IÉÐ6=â«îÃÅ2Æ¢w»
+ëGNѬ¯)`N~·ÚaÈŒï@#|ÇZjªq¢µZUöc3åÁÿõ7Ã¥ß8vANÑ[L®¢tSœ§R?ÙÏpÄr
ŠTyìïyÓøX"u÷æOÀ(álŽX¬|ö}ÐØšDÉè!)×è¬×@¿P,òâ¬eZZÿdJRJLfR&࣠#®Fqýb¥¹öWl®1A\kàÆ œåàõšú.:¶Z8;€bspÍb +Ê2?Ia_ÊóùKÆIËßÓr~|Ò81Eü0€zR;©f «Ž²¯lVaxcüMž·¿#nÅ3µÁ3ÇãÞ¥çx«ìŽ||Y(+cáJD31&ê3âqtÍÚo÷Bx©m»óîÌ Ì}ézo |ûÚKrÙÄ\ê)Éîcž{œý:%@c§dÐý0ìöÞvû%ø÷_Ø<ÑœÄwWÃ;CºIŒöRÞÞ}J€n£ÝKÚé^Å€k=ÍüV^Ð2Ê:áq£øË€Ù
+_Íg8E^ÙàêºÛ3`eÊØë[T+®P)Óe#? §2Ç Ëû#g°^ï%+p×±üZ435³âaµWKßëÏ?¿|²E(mšµZö¿YÍØkÍ\3ÉÝílÀMëJsá}ØŸ§IÄñn÷°b#ý׿í+Øâ&"VzŽ<T-<C®ném¡díñó$Zö£&÷èó¡ Î[§ ·t~ãÇ3Úvš@Ò/jÃd
+ëLî³Ó=ÃÄ£eE\LÞ.ÌÒ)øý&EšÛ ßK
05ÏJÌ`]šÝ£Ú©l·æ0cÇ?æœÛöijj)ñûbÉaM³7µj÷Œž®vîb;]}?]{¶îäÝ=O÷ÓÕ»§ÛéÎÑíÐóüÝ=/öÓìÒ³qÎêé@X(«UkÕ~ÇéZÆôìÿµn;àS}»[ÿEJ*¯Œ&'ùæö¡uRvzæ?fì!t^WÈY¹Z+ê]®åõ¥³Í¥%Þ"åÄõþ³1ð·Xz€Å³búõ"æÄIxgÃ1ô³Ø¬åFÖs#Or#Os#Ïr#Ïs#/r#1ò9Zvÿ·'~®·öá®|üPKEt7`Ø
+3'isis-database-3_cvs/rules/TACpoids.javaUT 1CG$YGUxèèÍ[{sܶÿ_Ödb}¡4d©=KJª%y¬³§×£x8ÉàYjÆß·úý-Ÿ>ÕN[ÌXGÅŸ°»XÀ ~á7¥Y(ÔþÆ\&qªÙŸâ~Šeèÿ«Å¥ÐûíRu}6Àùg¥¹Ó?g"DäË?Fþ)ý¹*! '<X@.q€ü0Ÿ¹Ñÿ2ŸÙ_ìGè8œ«Aó.¹^ÐTÞúgæç¡ð§Z€#Öp~\EÊD+ÿµPYšÏùRì·º
7b«ãRZ|%¶yêËy*¿Jª¹T_DZj)2æXØá2ö×v&ð®û*N²¯û2$[XCÌâæîaÐgq€§Ñ<^oا7B¯C-r0O IGÐJ.I2qêä ²dÕfÇr}ØžKûqGžÕãô] Clk¹Âò¶<Ù`OØträÓrÇ3œ¥hf{ìŠD¢Åò:lw{û®ÿ/<Ó8e<£»e)öŒxüKȯ±%|œ€"I¥>VÕ¡º©Gì×b%éiíøß³oê\i%3̿ǟ96?ùïvvŸÛÝf;ßï}¿œ·ý'Ï®ï&=v`z%#Ó·Uå%"Óß ÃÈIuÏ2øG6óù}
+JAXÆ$>¢r1@˹"lBoÅã+0¥+)^Á»Oôïy(_r; YæAk$Â1!Cl)4Ñ5ã"ȧð"ô
à§< Y$ØXÙöà+ çqªX*YxÏ8ü×L°e,Á@fê÷Çs>úWNÐ¥í¢ CcøI©ŠÊ1е1þ!Î4èËnëeF[Iv"ª!WFI,gý~«ý¶±ÁÐ ^Šc)Á.@{ôÝ}È`B 8)ܳäÍ÷Èð$ÞŠïû£}ðžx3]ÁÚBÁwÀÊàãéàÍËéò
+£}K#Ýy+°+åÞX
pþ@2ju-æÌ;àÄGÓåmúÀ!&ðînzã7/5!ÛÃp05TL"Ôd°¹°ºFÞO£)Âv9ùsÇ¡àãFÛÆbÎC%*P[£[Ì|>b>{÷ÜB)ÞÙžQ¿ØŒmmý.¬a u` T2œýo·|°fGÅý³Éôõé߯^^M./Ç<?^œŒ|sruñãÕËÉùñéùOW¯N^_]N_OŠ'?ý|uv2µ>UØ7N\c*tBàÑ©éÀÒq×ÁœQE`V©üZKǧNj^ÍC}¹Œ=[¿Ã#³àFeÆ€â1µÉÍËÇ^ ³2}!×êg«ä<]]yd©
ŒYhg°ÊÿGt:§ÕÏ>røãâààíUÀÓñÕkbP/`Û¡f -
œr-ÚÍQ!ËŠ 'I"È/glv¿äiJ©¹å]ñ}Ìx]øì{2t&¹ð%òÉ«ÎñQH²W²6±aŽúæ\sÈð꿳W+ž:FxD1¿#ðÆ;¹
+U«SP·Q,Iùk&áH€f&ÜR.-¡s.ñNñÞ_ÍÂ8Í€J޳€ØY qN]ªKJ¹+øêÖØúrÊmÆÌ&mñÓ!ÇÒÎáoÍXR`âARÊЪ(
*@±ÇsAiä( @vüÂùsÍ^ÜMãDòÓWF0yÇÈu¡KGè#P~`ó6ËLYF÷ÆÇ@Å9g^=Ò e`ß~kDAótdAwyõÿ693yýóhTwþlzOÎLl©pÙò*¬¢ªÆ.¿HeªËe»©1QâûTOñ[F±Jè³Rñÿ×áJx`4jœ>4À{ϱ¡õjùBÕgÕgíš&9Y5j3O«8¢M×ÐçÈ/ÇÖ5$[×Y&zdS§Šš¹ô#à:X8ååÛlkœGy§W¬ŸÚ€cc|©©yâ;øþ÷µY6ÙÓÊûSŒ4-iÖÕ1±YâjãébŒŠ>f¢öÓF÷[ùä|_ZO®úRR*œµ@RmÜ¥ÝpX§j}€é·"@~o+nÒðSxn4ì"Õ
+|eºðû
°$àwñÌœmdPvºgLÉMárnjÿåå§Q®4rÈÚžÿW©DŠrg×rD&YBÙ·ŠÍ?EKK¥2Av{ácAÓ ÚO<ÅQæ$£@&È]ØÁa>`5ª~*B>·Œ"Á\Ùyø"yJÐ%w3hoÙëBï\Só4^> ŽÔè£Ù8Iüñ°çÚÍ/ªZ@ÝtûÎ"ÍTÒð*áÔÊTÍ`u×r6íó
+ã«¢h(:œ/õüÇnê©4wc¶º©Ùð»õäÖ
+òÖŒžB«`ÉWj*¶kÓä
P,w÷pP|3ísGÞ ùRèçy¹ðšSnìÊÜeg3 ]¢÷ÒH¶WÐ`&¶]Žf]ZŸ{TFåËÎ¥úªÉJšŠÀRÝîÄ:)ÚÃCŸÀÐR{§X{Ô¶Å'SK 9¬-6p7;0«è17p%{ä_LAÜÄTíF4/²±ŠÝKÜ1)wÌ¢Çül«ô[t!:\WB2y,©Òb 9Dd®-4Qº·$F²ïG\õ:ÈŠíº ÝíØñ¯.]ÃCêLW÷UlTó+CŸr%RÊ%ÖÁ-[ümó·û þ1aŽÐÇÞ¬z"|7Ñd<Ä3:ðéâ¯á¹TùT\ÕíöèCEñl}QŽ>EÚ:bnQì+Pèù[ìÇÀgNÕïysitO{'6ÉÔÈouväíQ5ùäà9TáG#ayTŠGT+ö§76U$eoA×JÞm~]|b
+|A~låÑÚ2èSµS3¡DÙ.jœ€Kx÷ÎÀU"Pýôí~9}9¥<-
+ò²«×öÝYXjz{»{Ú_Û_àhj'ÕfrÞü'ÌÞê±[:ÍÍe\Ž`;=²hÔ1qGÆW6ºÝÚ£Ç^Jw¿ÒÝRúìKDúì}Ö®aC¥j¶€ÃhJàâ"nw}.+£ßâ|UØóUšûpæD(wöÈËt&fâÛŸvèuH¯%6 æÁPëµ³Xàà%å3ñUÞ#³q8sò
+Ê:;?ºí¢äò`»[³&ŽEóÕ2ä¹vöôõ¹k`í±ªnôÅ9¶á2KZØÁ Û¢}pàÓþ0µ\#§ÈÛA
+Øòï§áª{øž.éb-~Æð0û°Q³1ú¢å×èÈ®Ÿ€µk·ŸïbS\I}×çÀúVÈÇf¡ºCqÁqT€_=«Ÿf¹AóF.ÖMb~á.N8wFpÚ[2ç±#æÎlnÛ{jë87ŸžMOßN:TXd¯ÛzF7×`,ì-3Aµ1Ëmë3ëê!îC5*§®Xt=MÒ¬zÕòv
+õUÞþêÛv1UG
+;ô¿,a7²+JmUôÉÎd:=9^÷,(-qÅ eµåNì
æIÀ¡# P
+)Ìþ=æcŒ³@(šRÊvå:;Ýc¶tjZJg·]ØRñAhÕÎí¶¶kDk"NØ[ªqAå÷À(V¯ Í2lî)¢°xSÒqðÉöúi«L:ÎàšèWs£R¿Çt?Â3Õ·^¹UÑæ[е>¥scj&*! åDÍSô¢¿Êb-yn3ϪÔäšÞfEh<¬®Òê>d -°ð*÷kæF.e$tüú1«»ÃëÃÆaâHîÇ6¯@cT¯~U®`K*Õû°M/ÞLO.ëK©e8ç·wªgõÇö
+Ÿô} ÿÌþõáPµòºBµî;óï ݰÍ~'w}iHNr5©vq|zy4y}\\8£»fœûF3;ÍZç3õmà(Ø¢%aŸ±²MÑõª©uyñpž€Tضp5ù{ýö@mkö±÷æfªp7VÍE1Ú6.ªö4»5ªýO&rI÷ eÒàcðÔSÈÛÅõ:Ì|÷n)6#m%w ²d è« ŽÞ²kÞ@~Nlïvßíó÷ÃYcÇM/ÑSYö457 at __ñë?©~ÙÏã€q¢sºþ\ÆhcÈÖ§Jº3jÃ\ÆÕñ
ä~çµ[Ly«$í;íÜsãÓÆ¿PK1862W
+ç"(isis-database-3_cvs/rules/TailleMin.javaUT €·E$YGUxèèÍYùnÛ8ÿ{ýlP rì*IÛ#©3õ$iE"öÌî¢(Zж²€!%7Ù"O7OÓ·ØßGR§€Ý°*äÇïŸH%<øÄ§©,z¿Õ³$V)Ó)OeÀb5õx,Â,/wüúsUBOxp-9ÅöÃx:ÑÔ?§û{Ã4V·úIªýK¡³0=ç3±ß\È3*ySnúÈçܱÿO%S¡ökÓ ôO¥NëÂÍxzMÑß*&Ê%f¿ZêÔן³,ä`Ø'ô&ãè,$fö¶o`ß°ï0Rq®ÝÞ&BûG<kÁDÊTrk-YÚïtª ôKÖByÊ5XÃgžÏ°ØÓÚÞÚj±-6ä2Å4OöÁM*)Ç{ìÅâ¹`Ïwv~pë¯y^Çñ(ngqŠÙ«âõuÈGp*-Ï
+%%µðaå³u.óìé¥KzÛc»þ.{êP]%à[ì±§Gæ|¶³ûìùK¶ûÓÞó¿ïœxiàÙèšoÙc£äµÌÚv!á¡HSÁf@c%!ã[?ÈÔ\KñQÀµ%KTØ)&ÀÐÛ18l"k]îeð5«}iµpÁÒeZ0Dð@2œí²'YÊà6Σ Ø# _FØÛð}£œOd KÐæJaV¯ÇÊžõ§"ÅÈ+mjmï[Nó€SpÅgW#È7ãÄg³äí~98dlïîþ\$"ó»Ú°#Ãà8Æo¹Te=ÿq5\Å,=¶SkMÙûà.Zsuk} _¬)¶Ÿ¯Œa ¯0øtz-µIÃùqÃá2°L>Q&Cÿ¬?Œ<ù×Õ¯'gýÁ »âüxxõ{ÿô·ã«7W§ýó£ó·«wÇWáexüößWgÇCàn\Ö=¯Kæµdô(f*2üû
+
+X
Þi÷l±wB!.ØxO&5ÍÂMÊÑRúðÉ,ª$âFcr"måû_;§&Îd,li ÇdŸÉíÙ^b2vTnPéµ?kv|§Ú^]4¥Ÿò6hºFžÑÎegMáûI"¯ÈlüuÆ¥Eǯ.Rl6{|µÙ#É&Qf$Êñ4óZÓ
~×Vð!œUG
}(þÈDÈ0ŽæJÍc9fÄ·P¿CÌïJÞ¿MU8>ÝæÆ,¥âÆT-žkÐ,â<€.Ka£8Ô<0Åd¢Ù-r#Ôeg·#Qõ}»0\ÇÑ '£ž·0úÚk;?¡gÈæsâ©¡ôË
çX¬`É¥SyrTsaa+«ZÈ.3ŠKc×?2)S&PkÙ\qiÝjÂ%Æè&ß)ð7DQ4ãì£í[5âXZÒË|:×V!×jßî²4<bMâ(ëê¥ TÿÄ3Â=5Å¡úÈâéM$¡kí©2Q.Ë ³.5š"ÂkØvÕ[± uÏèø=ŽW«¿ß«cVwµ(î:|bE[N€×$ÑZ¢à4¿ôÑ¢Œïm°ÃTQíǯr>P.ßjµ>Ó!#ŸÅªÌÃñï<ÌDo£¿9Ï©øöÅN6L.'RVØãv«bb¿UØàbç
+ñotª[$ñM]ÄIa'=cÖßêúwHÝŸÂéÌèHÚ5^ïqeodŽtK©Þu6ímXÒÅøâ;06*±QmÒc¥]²±¹Ã¬déWÌÍy2Ó
+|¥hëõBùö=ç-âD~ðd,ž}£Š¯Epÿ¯Žëô/Rc¶3¯ÕMŽaRáÆÏsah&ëG·
+ªfÑ1°ßªToȶí/µ¶ßøC.ðXŒÔüùÞÿü¥rE;«è[-]ÎúÃáñùðäâ|!:ª×¶Æò³3)ç%qD_âÄ?ÎPã7AÎJbá©YÀº)Hj{ÖŒZ='"h0:ñš_Èn¬º§4áàOìÓSkÍg,CáÜGgs³^¬tןªÍîÂûIÆÁ'Û¿X^莺9]£!¡9vc3V8TxtÓ&òè(UÜn ¥g
'Å8tjRλ.ÿq<,L¿QuBznÅÀBW€wQÔÎ. at y
+ÏÉ/øéî¥WÌ~Øœ{ùÙ£Ÿ.û^D ºÐå²6ÑÒ@QÐÝ+7:ø!mv,ôPÝÅZ¥o÷Ú>2ÊWÈ
ŠªÊ!$GR\ó6ëÙ~Õ~z¬€çGll·Cüå!Ok"Ñö8¹mª)1Ôpý«7®\0ÚŽhOàXt+ÊdϱéK7ô#oë¥çbôNJ÷0A«qEÂÜIc1Cý>€5AzÄôÆ~«â,aSó·Wõ³Ð®Ð{ÿüÃz€dVÈ\hJ@vÐk^HÝ'Áåkn¯ž<[õTZò
¶ój°}I¯.r·ªò÷/>tïEVE:}Òöv¬Í-Ò6ŠÈ÷)kåêêÜu¡!ºó¯âNýË£âö.ÞÖ0âDZßͩ؟Èe}fµ+ÊkÂeJT¬@µœ|É^êá$ºRåM6Í[&éÔÖN*!5qæZaÙñoÝ!rž§ëØóH§ÒuCQ§ìŒ:ù mÎcßvŽ*öÝ×{ßßrh޳œú_ªÖÚ§Gk±Ur
+RaªöDt×Ëâ+Dk{[·PŽ]-w$éÄJ¹Êi¡jzVövP_YåÈ×ò?ÂTËN§mS9Œ³\F6ôdÛµ<^Û]Lò²ÝÓS»]V\&Ÿ2à©€lŠz² çúÃím{WÇ
+?â©P6À)ð±wdv$"ë(Y~¶çi&<Ä~:sÌI3ÑlçšðåÀœéŸ,IyU¿Jêlè
+ÌJ¯ å_»ÆÍñPm+qNj0PDð.M_êÈèñÈž,]â¿DZH{K{Î#ÀùãbCjŒÁ¶KHœ
+ïÕ&ª(©ÅzOš*·WÙô
+
+ÔŒÞ}mÙÄÚÑ41¯}Ð+» œqÉÚÚh±Ð}WŽ®ói4>ëúF;Ó©+Øu+[ÄR¬(îš>ªÚ>ïB6lt¹>캧¶Ùú)2zºVîòw»ÖâEÝœ=Õw÷GII〻A-.ô_PK
+]7isis-database-3_cvs/scripts/UT
+$YG}$YGUxèèPK
+]7 isis-database-3_cvs/scripts/CVS/UT
+$YG}$YGUxèèPK]7cñ7FÂ'isis-database-3_cvs/scripts/CVS/EntriesUT
+$YG4$YGUxèèEÎA
+Â0
á}O1'è̎ƬEAHZ0`$5¢··ûïŒm
ûh&^:\¬¯of2ȵÄáAÄÀâµâ¢±Â£}dz3ÚgBîpÈHK%Xµ«œ='Wæ[²
>L³&QôÉi¢{ñ
+î¢ûpj7¢Us÷åoPK
+]7·*isis-database-3_cvs/scripts/CVS/RepositoryUT
+$YG4$YGUxèèisis-fish-data/scriptsPK
+]7.à$isis-database-3_cvs/scripts/CVS/RootUT
+$YG
+$YGUxèè/cvsroot/isis-fishPK
+]7(isis-database-3_cvs/scripts/CVS/TemplateUT
+$YG
+$YGUxèèPKa6ýª*,ÈÂÔ-isis-database-3_cvs/scripts/GravityModel.javaUT \
+çE
+$YGUxèèí]ýrÚJ²ÿßOÑ=·c;9{ìÜCllSkp²¹©%Ã`ë\XIxS~Œ^Þb»G_3úBd Få2 ÍôôôtOÿŠG3³WÒßÿþ?;Pc}|oš·wðrÿWºK×±Þgp1±TÇßûÚ+UcÊ€oö2R5žÒ'Š©j
ruîTÆ~k(#À¯10õõY1ØÜëè)¬¯¡ÞL,ªÖßÓ
+"0ÒûêàîMŽ>3Àºc`1cd>à?Î×pÆ4f(CžÜ§µÇ4QvK§æëÃÍ=ÏqJ<ŽàTGÂ¥êÚ00e¿á%QpqhA7 XĹúòÝ{*µS}¿}@Yá;}5ºCXÇÏêp7&&Le"á}œsÞŒî@µñÞW[j£óá[w:>eSfRG㡱^¢Y÷È;Qž¬µÏ1Kõmý¢Þù@58wµvN-šÂUµÕ©__T[puݺj¶k6#¶žãE$6ÒQ}f)êÐt+þÖDî}žSŠžÇÔ)òŠ@Õ+eã
+uíWû<un᳡¢ŸXzžY)»ß²eškœJ~ù:
ÄàjšôìB{B^œÚG
+ÖM^Vö_ìŒÚÿ×í*Õ
+£Ž·³³W²+xf(SÕº¿DVþRŠSñc¡"ôág0ÙØªÀþ¯pðËáÏ¿îÿÃIò§2Á3`ìY
+üéªÜO-6UéÛ!T~,0ÆÚ°Cøé aþ¶»ÿjwÿ~;<øõðà%OOjªŒCžqáϰc¥÷ÿÊ-aÏPÇy޳j£ÊªÚq[éQÈÌ+êÁ?ŽJþuR&Ôº>ML+ÇúpÈzÜÌÂ/Ð,üLDXA6ïÒtͬõÛ[U»\è·Gé*=K7î¥Ô>·#ź£ú¥rÉ?²ŠoÄ$µô±ªT:ôÿX×,öŰö¥ÇƶlÜŽ£¢bg9bøiªæ{°
+6?êZ[¥ÅÌÉÐjãwlÊ£tyÔBY Ùf©ÊÌJm&n0[]Rg»døa€K{¥'C%=m?ý¡OÆé2µÕŒcŠÉfÊvv{.õÿéZrCêžÖJÛþü$*u?Fòdò)]"Á»é:ê]k*öh1œÓ_ØÝrošŠÔëÁ׺`tYö¥§1Mþ`§5F
w€ûš¢jœð¬R©<+Q)DÇéVÆ:ÅÊÚ0§÷|k®Ü2€ÎsV<â4ø?tv5èlBFìÏ× Mã@zÑj¡ªÚ]îèt¢€_?/+AþIŸa#ôI}*ÖW9@N×ôªæfýs¬ÊèjÐ`ÖÄÐdÂH8²]«üšg»Žèbí¶sÄiB)7VAü]m"*8DÁLj÷¢tâ2° g
+eÄ
+EG?èrjoSµo?Êc«S©®öѧ¬B9Pu]¡v.çfÎË2âüÓrÒà""(Cÿlì0eÀiø DVñÍ©çveÒsnCBCŒ-Iv!€ökà°Q(ÒmÉ®Bô£t¿ú)-éI²z²µr)C
+8#=ÉØ- ^0@Ó>FøŸÌÂòbüË)ºVä6®Áœ~ÚîtépÙÅY0ÉBÜ#:Qd_m jþáºö7hæüzpA_žîy
+îLÁÆ7o`Ä?í§^N/«W%¯KÀ'ekØóh=Ru»ß-x¹ÝËÖê*ÕN«þ¯îiœ}^ou;õËZ÷ªÖê^6sþíójå}æ5ùøé«/²[è(lÌ¢uÏ| =ÃNî8Õ~V|+Mn£ jè^ï BGký0/^=$]n#Qr¯ ÅT0
¡+¹!0sí(ñ6"ÞFÈCÇclf·$Oæ€ÆBÝlÄÚ(P]}Áº{L>HRfάM0iºlò=Èô°þ¶öí¢ üPxñ«2°å|T,¹C YNŒ±
)ŠíAøýàëu$â9
+É(õÌ â
+TŽŸÞpÔØê(XœWWß^œüeôn«`"@R·÷GÞË#ºý $§îà-ŠqC7Mý?Ù àH|žcK)p22tðÓ-(*`Y6±2]Œ`ð`õé1×Dú-"·xËšŒØzíÆ¥bÞçe×i|ùâ¥1Ý0£9à²ørHä«ävR¡NåàÖ:aÃcÝŽLbM²á£;õXŒK¿®]tíN»Û<ívZÕwø{ëÐ×Ö¡Ç+rîî|ãŒx6Yý><¶ÂM}*xço¯¿Å;èWòíRîEôBe}ZFÇÃÇ·nvÿÒœ/ì=Jþ4ÅÑ}ÿÁÿ^wàÛG)Š®ÈR-T¹Nó€yH³ê*ûo4ËkF`Š7*ÓÿîØÄ`eè) 'BSòdÃçt¶Ô+Å
6>YÁ Î\ññp
+2Q=Ö¢Ÿh¥Œ<ÇtîÇNFÔDW$9;ç4ZIäŸ$cLÆ ®:Èù±PLéOýxÀÇllϺ"^oaÏÚ|ÌÓ±ÂÁ
`ãkãÆIß3ÏR:Qî](ô ÈõÈ
ûÏöàåÏ.â=;
+Pæ yäBóúÀø$/¥ŠLž¶bÓá0¯mÖ~$€°a#9:(8üÍ#-Ê=LÞNJŒõ¢è9¢õs_Ùö#6B
+S¥¢:îóæu{³ê<'ñ\p4÷ÙÙbpDgfÖÍÂj»2óÉhó1Lžq
+w@ </â@Qç<*BhÍùÁKkþh$nÊCîÚcëENîžÅÆjTµþ¥œÓÈk1ÅXSNÇÍSwÔÚUµÞêV'ÝËjœÑ©5ªãZ÷¬Vmmý÷ûo#o}úòä¶ù~>]·pÒß^ËònFiV!bc¯qsü:·€T+~dÒB¶ÀÇ*$5¹`p¿¡ÖÿuYg«C(gŠ[5CÃ'ûeì#`¬ÐnŠpE䎎®5Ñ4äh5è'§xsÔÖu£As-[³ÞG×ã-®YLVeâ;¹àÔKøR"+!XdIhãŠð»ñPEÊçÃ`?>D[Liß)ë7tëTýÂú«*I<<ušÒ>¯¶j'ÝF³ÓE5Äo[޲ÞhÅLRæ-^YTZXz»0f9%óâ[jäpð( %±apñç2ÏaÎDQÙatìOóEMÎ[î>>¢!ܱ¥®ÈÅ2Û1êâeÊzØÕ³ñœáKÛ·ì¿|ù»
+/
+IJ
+ø=?°+â\óyöp?ëÛ£ýºœ®µÖ)Gôðq)c]ûC°ªYü¹\Öl.§tñÍïBœTOý}ÏžD^gpkI>JæXš@À3Ù4äÔx(Ä3aÆk)³CRLSò¯>]ÿà|÷ž§ño:ŸÆœáV9ÒßÄ·ìrDãX¶8D¬@ÜàUT1oí2@ô©ýª{OÎb¿=HâŽÇÂAõ^1{P°Ë.rZŸräæNÎdëosp¡h}ì\HÜí1ë¡Ñ7w)Êr}$-,ÈÂÔ)¥þæOo`¬YýÇ7$=k5Ûíî»êÅu,\T'õÆí»ÚWµãzÍùÞiU;µ³¶ÒM¥ye«Ú?Å
+_ÇäîÆèîšPÏÑÃãC%EòäâÆqÃÏCcº²
+éo,ñuÌ5,ãP®7œÍb·öFÑÇÖ®Äq!Ï5Šëa'úö©2šÃ!WâW1wÄx9ýš®yGæniFç¹5PtQé(ÿ!po¥cú,ÞÇSœw+ÌÉô)¶ßÝÞ6
+ýxEÛ(!Þ(}oX«X±bõîÞ3Ú¶V&}LïÄ þ÷D5{Ñ7SfÚßÌ\°~€Œy×owú ±Å¢$+1j"wE1Q¢àÛIŸ!&&X`FSðâŽÈ`š+'9¹;ämÂØåØ&e ù6a¯í4Œtº\͹L9åàd7ºo/n>Ž3Ã.Í}×W=,6ô)cš¯ãìÛ«cCŸ/é)UYQº;WÞlUÚ@zOZ¢FnPIzʰ7²§m_ŒvZMQÇný».¥ê³ÙDàeAcièv'è|<u[è/^øëŠܿóçÒÛð
+£%ìË«ãóîûZýìŒàáš`Ç NŠOq/}990¿eFΧn:ÄåæhÄIœ}\mŽJ±ú°€°€]ä±àz)`±1aÕÆ-lgÀóµqãÄí<øÜ2Ëa6Üý§Ã÷ÄðgdOçŸXivè4«@¥
+É=nüD¶ªªHHÍtFR{œ€0Û/7ê¶ŸÎüÑ_eËÀÒÖœ§sïÛwÝ6ØÓo_}ËMxÿ&\Î2Ž1Eæ`œW>nÜžó÷ôØÔ§ÅwKÞ§G¹mMÎÉþÝ,ÀºèÅqÔözö;ö=fqAhÚw&ŸOÇi©&Ší+I±MT¯C·3œ`QÖjÉt·!ŸñáœíqùŒt³¿fBx±CCN*m lþg$<||cÔA_ì
+)þEÆòôÊJèKAQæ¿eTÃé-WÅÇS
+DÛXЊ!DmVoaá2$¶ùXpV÷Þ";,ì: éÕÉ&sS|úV\'€7SrwÞ\6Útøúä"°£;íMë01cÚsEZ Š cdM]uu*p N%®0)ìkL}3cöØ\ês
+O
+è/;Ê+B9JèMQ€ì$ÔnYá)ã}€Ãçìß;ÒÊnÿf5PßLpÁJ¥'åeáHÈ`=¡-€Mi·ñÏE·ÛègN¢{tŒKÿô&ìÅ/ozð3œŸ,Ï*xÑAî6ìé3KÐë6l1M'¬£óÕ«]©øÙb®N·UkÔÞ!êê4í%Ø[ȵQ+o×2%÷Cè«jÅfÝýŽ×Kpüù]$[na7~5þœž]<ÕØ®í ¶tú¶|ÀªÜ¥ßRìx³ÈŸPjk»ýyôQ8/²(9[°I;6µwë\ryNþåzÔ¡Á>¯6ÅÇSÇdÇÚû-Û4$Ö¥Õ[¶y-~Íê#a×<ädOð:ö®S,kŠä
+ä3Ùd»'6d¶Yý YI;cÇß°ðK2{â$è²À|FF/ãVÕX£w¡µº`mÀhÖ:VjŸoПÕÖYœÑmŸ#tTmÕ«o/jÂ[µJCý· *'!®ÎZf`5|Ä㌲ÝÌ o7ÍQT;K,['7b®;ðÐ÷pÌ¢ÃÁà9TK8Ö.÷°Y,ŸÛä²ëÖIIÖ¿$æ³å³ oÞ:ês¶ÞŸöMç1-îËK?µ9Oú-pö¥ÂpÓáæR²
+q?
+èZkÕ±µu
+¬=.ŸZ³ØXfÍ ØvºH8eÃM2?X&ÓÛðYOvØôéN;«
+/ùÐvÑúhİl,}Bo0ún±>'tÏ©œðJ&qÎ6wMÈCØ84ïõÆbý8ÊÃï
+b÷Q;ØùµC·Œ`ø3_üm
6[vXzUÛ¥Ž5óÉOÐ?uÿ»In7o»*O+;ØEÜs)ϵV+ñ·ó»Ù9ýú²Àëz/yÊ,RÖ%P9º×ŽQ§µ`øÁF¿çÀð7mônœÆ¿qœ9àÌf*9hHÏ_1pvøQÁk0ø]úä\ÒèínåîyÝŒòStÆOÞoãÝÀ!pZã\lfýMÈ4NÝð3{ö¥ØõgKæp¯Ü9>Ós}/Â;ñ§ÍooÒòNü321n°|Ã3CªÖ=/"pPTÓÝÈÅcÿeªËcVôÏbïœÖTëT5ïÐØÀk±÷<Ý_ðë#SDw¯äD>ö®Å Ìt<ŠdŽiÈtKIsÐ¥@îèmý¹¬£.
Üó"a¹]ÒwV¥]ÿšÊì G<ø÷Ž!÷¶aÈ£ärþBµ×š»q§ç ó]Î=«üW¯=ΩO{ýRžÓöJŸ3¬òµÓÓf+ãqbû/pzbÆITYÎö«9víöíXð#¬ïoÜúÈ8øÖ¿Úó{l ¬¡À~Bïïh"d2³¡k1f;¥Óq3Šõ#BäçKBrô'tù>%ÒDg|Ýó/Bœùk§ÀÑPKq®é6:µ8Ðrö+isis-database-3_cvs/scripts/ResultName.javaUT ÆF
+$YGUxèèµX[SÛF~÷¯8€qŠ)Ðv*l4cKI6!/EZãMå]uµ2a:ýÁüŸôY!\lø²û]ÎmµÙÜׯjÀØ*¿Ðâlbàý¶·¶~¡OéÇV)^il}jÀ@HÎÊ&pùM
*BHÜB»¢( ×êL³)à˱æ
+56çLó}žP%$Læ©(§¥á 0n*MSñ}VÊk0ëij\œézCèrÉ5Ë`Pfš©'.NÛ²ÓŧpzQíè°Ö
ÀÌ%÷ü^ÃëßÃ6!Ô45fwÌr
+*§}ïQîdÌÜlm=`ÿÆe
++šM=,SeÁÇeÖ$\Çntä#°Œ8¶Àò¢}\l&
+¿å3>Ó<Ÿ4æµBß ì#Übž=7:!7ò0+\{س:-¬*Æ6UÆ&²âÊø &¶@uY
+6ãàjc`y-ŒLɳÊ&.Ÿ ä>1Hep®ÖQß§¶ßd¶ ®LZMøžÇ qd,áðÂvv¶°UahiߨÚn·ÛÚ;[0-r
ͱ±ÙhlnÌ
+Œ(3ã±)o}e3VÛ¶5Ç2H÷`{úÏTÝí{[»{;êE²§!¿îøóªäÞ|&èÕŽ[í-xSïé±; G;|ÞVÿ ö§ô»íݜ휫õTçžÈªXöàŽæ©ŸC9KþbgØ
¹)ö
+´
+`yµlôúŒ%Ú¿ÊKdŒOöç>4KÙ[JÖô4£
+(0+ØôvÌ5®(0õ)fô8L/¿AŠtñwÉq»ªüÏxI
+ûËÐó=ÀÑvú}Å:Çî*%Çò(TÒHD8~O8(»W3%Ui%ê[,:}YUBývʰ
+Ny
ßò?*K<ãdáãL âC¬T«júeMaFÝ1%º ž\N1Ê2>¥@aççJ
+Z;VrNX
F«)#\bNfU\9ÅÒ·šâ
+ú^E"Ò¢rÒºë$Iç|Þo!FBböVàn=ŠÎšÂ$Z;Ù<HwÊðO0YÓH¬úv<
+ÒŽ
+ZSl6j
üBÃÁ?Fµ±8=n¹Á÷s|è¶ñ±ãv¢xàqqßàwñ»WU!|;EÂtZs:ö\#LWï÷°*ÕS·ÑÂîYÞ¡ëu+è»°=<*q)¢ÖKb:ý×±"§{ò¶3Æñ^'ÎÙÅJªÃè0FäÓ[,4i€ñšÈǺ@õÅ÷xàî÷ôEI>PùòȶÙG1©ÜÍL2 PùºæDOs¬ßqÃ#*§>ʪ¡;ø¬û% s±ªîÛöüÅf[Ýu0ô-Ïvn[§täãÜZèÀõû>
+-Â5ųB;]Å4rûóòèû^4OâŽÞ}1Ä€C9â8E³ò8ÄÖ²ý0
+c¿sÕj1<³ñ§ðÇó.[ïêÊì\5OmòyƲ³zà,7qŠÆ}Ëõ"Ç£2»<Nð mÉŽÏè Tg]ÎôºBüè¡çQ0¥öé^RâöuéÂ#+pcÏ0ñÕ£á¢SOøÆÓï977WbœñÞmÎ|íÍ·u7ðÃ0Yœ¡CU[¢õ =pl× S]bIJûãúïy±îäzTÖªR^RÀC¥ñŽ5ªÓCŸcâqó"²ùCñxJÇÑÏ¡€È7Ñ*zŒSÏJ©ª-ÇãEàMøü.ù:3òØ£a]×ýqYkô
a²ÿ\âø`úLH/Û#ŠÃëÇÕy^|êiödÎ_JçjÑ|^$_ZÞ:^,£ÏÌæÜZªVxüõüز#wt÷2á)+1b¶Ò5»Ãoo·°°äÅüÚ¶<Ö pïÜôÿ>³ÆÿPKct7ªëŸm8)isis-database-3_cvs/scripts/RuleUtil.javaUT iCG
+$YGUxèèU[oÛ6~÷¯8+LNZN°¢[nÉ64ÝöLÓÇ23JÔxñêùïû(ÉvEJâíï;WºêoY0yåtül0Ðem] G¹"mÄöan]!d-Õ
²ei+/-
+]âγœ*X·9DUvÁ(eX¥ÓÄé^hé^:.³×~©ýJptÐìÅï¶Fm«Ù7Êÿìl¬_ŠôP³ÂüUa¯ËlxhW ž±UàOá«zaSáVÇãÓÓÒÍJVß7ø âj!Rbp×\;øbJoÈsž;Š<ÓÝ¿1¬¬#YÙjSÚèéj·|gä9ÑP9k§=$âm£ºfça9|àµN«)MÄk:é ï€ëø§trÛL`þá|29¿Èir9œLóËFæÐ1S× ÷ºjîÆ:ÎV€ô>Dà èè¿Á0
+¢gBùÐR*mtØè1¿³±ÑQªiºZÚìâÕpÈ"øž©lð®i_¢à]¶5A4
+g;C9
ŠN lrJwËúhóžoKÌ÷Ñÿlaö6®€i6HÓSO&#Û¹N¹Õ]slÍFE3"Å€+bŒû°
ªáx6W
+@Z]Ž*UL±4,ØùÄ\BÖÒpt;Û ÙnÛFºKgð
Å ¡ýºA>â1ÈõÆ6#êl±¥êj¢,š²cM@"óÙîjÏöý
+?kÔ_ÒŒ¿Ë_bŠÑ6Û¯·÷°UZ÷¶Ò(l±fÑøg8;ÓË0ß]WÑ>Q-ŸxüêMÖÓ>ð±ü
+My«Ë,GaÇš ,è!8D§w/ÓôôKÆëæ^šüº§üÙVàÅIo€¿«Þ+û4ùÑ{àRâuU>»Ø¶Ú7 âiÅñÙAS$] ®ó©«¯÷g>©³³c K£ÇÖZc:Ø©#€Ñí¿¬Uت${Õ_Íé1ãÓè
+ýl¹?¥å#ÂOá;DCvÀcäy.òçHOã»ýªmé®xjóòÅçið?PKªb7Á!!êOªŠ)isis-database-3_cvs/scripts/SiMatrix.javaUT d+G
+$YGUxèèí=isÜ6²í_ÌfË3ÒÆ¥2Öa«Ê:J7/J¹š!FbÇl9ëÿúŸú7Œ/¯ ÑøHö±\òl4}¡5²ö¿üõ!Y#{ñâ.ñ¯o22ÜÉææßñ)^{±GÉË<ó£1yF£_ÝÐÈY§©]Þø)Y$ñuâ~ÎJIϳ7nBwÈ]z~%þUQâgÄŒ8Aaìùó;|GMHvCIF0%ñÝ<?yEÓ&n@Îò«ÀþF)Åâ.ÔÓê«;Vâiž4ûG;úð>!·4IáLšFà8!C7CÊ/°ÜÈœ#EKóËVzx
oâŽèPBßøA@®(ÉS:Ï1¢`òãÑåÓWdzòùqz~>=¹üi³ÞÒ[ÊQùá"ð3Ž+q£ìhGÇç{/ ÈôÙÑˣ˰G'äðôLÉÙôüòhïÕËé99{u~vzqàrA,ÆD;É
1°Ñ£ë©løO Øš<rãÞRðú·@Kf O
ÄÑ5k&Ü!þDq6&oô%ëbÅâ¥dÇä(9còÍK
+L¢ä,pg<&9bxòd48N3=²9ÙÚÚzŒõdóÛ1yu1ÅV5¬m<|ž±ÆxỠʷίî+œPPoL¶ÿoÆ
l}³ýÍíÍ-ôز(ìü îëszëã¯m²ål=%_2/Ýô¡Ûäë}öàþö1¹9![ßb
+MZ@SVË6¹õ°w@ÿÂýËœ%þ"Kw>€°jÊqíÌÀ®4kÇßz9GøçõNGÀèuyãÀûÀFÞœíß©¿ÛÎÖ_ŸpÓj*vöæfqbxÅ+ÏRÚ}Cà0£Ô âëk?ºv^Æ×;ÝÀÝÔuW.ºÙ
+þA
àzÑŸÖ¶'ûÐ,^ø®s÷â(£o³vÀ·3ºà°óÄñÁ[þOýt.Ô9ðczúZRÛ oŠQæg>M=Ý æà~²}Êu¹sÏ©ÛLxyLá¿^°ÔMãè(ÇÝJÅ<p»Ó^Â?Oâ|Ñ·P_ò.(³Ì[?»ëZ ;ÿŠ)
+Ò%2Ð{zÝ¿>ÍŸéÞÆí êÝú!ò3Nþ8«©\v·Ð}wc-ÜÁÇÒmÎ{ÍYàŠiÑ)ß>Ä
+ÊbïÑWFæîÌ@còkÊbèX$^a:83í`
+GžüEâßñÜ!÷KJÇè\ÓîE¿È(í°òìôÞ(Ä5®Aõüÿ]åhýUxÕïª%ÛÉþÇ`<l²MªJ®°±€²ØCŽF0¡YD%R@Ôð€|<ã±¹:ÎU!:ÁÜ¢$,ž MóXHa$ÀQ:ÿpjòÁç'nH#!)ŒD96þøœ*F®ìÛØ÷HÚ
äqIh*ÉSZ!)MÛ(ÅkÄ)`lI|€~UôO§.Q èÕsX¢q]UbªTU%j<rÐåÃ0(Ñ#öXÞ-ÊnøMJª=71éVE2c+-sJIGWyϬRQ¶ýgCE£Tý(ŽË5JPÚÍÆøï;ôäߣ5átn`ÝÞbÑtª=À ÞÒL¥ÚÂ3÷#oÃ6[1Ên±¡ŒíŪE=1}Cà^
S[NpXŸC£ÌZuÿ-Bd,nTß>èË'#ï áÙkæ7
+£ŒUÝccYãzÞ0*ïu1*àI2îa7~7ÞØÔB5L²d÷£#]Øe]*°&éhš±ÉZŸEËHZiaMÐxø
šå}]Ð@@ ñ*[i5fÉÃìËÒÑ«Âã©ÿ¹ÜB^Ð$ŽBp²Vx¯KL€ØEqÎS,ªœé"êªðXTòÆ·P¡úF¯°šŽùÊû
+¯*n€/ xdpDFub€teLw8k]x ášàfŒïkOßw×JQÍÓ¢þÒ0m©.ÿ[þ~¹ Éám!Iò?ìÞcZGÑZD#¯debN!p@Fp-8ÈÞzþ|þ!\xlZ"5Ð=$jÍ~Žî(
+¶Šjè(§ÐzZI0
+RRÏ4ß°'·"g0Y "*ŠOpªÚÊ)Sªêe#(¢Õ«]muHø»Ç ñ7=§7ººúNÄ_Tûe"1"_íMŠë5äF>7ïÐ
\{îÅqâù°,ëçÍ_êFÀ[o7RékêßWÚï>Š&i~Ëb?ò[îCEá»wøÇýôDö`EFkFâ@ܺ
·^Yã2ØÂ1î€Hà-«_)¡%ñZ0÷!4û[²÷M^?1tlu,f7«>áI¡î
Å!{GõŸK±`Çg#»0ó5кU6U§EÕ< §fðì}XSÉsVóPçxzy~ô߯.Î_ÿóôä`\G³EbþåwÑ®1§øœÜ]tôz8@·¬yÑ{hfìsÛÔ-³eWXw,mr
+
5O'Óc4ÀÌéð¶RÉKë.Ò}NçÏlÝËÖuÕäF~fW*æT3Z¬µBÿ¡¶ìA:«ÛÙùÑ^³¢q"»(F>×- mËÝ(çF{¬2]ŒºhÔó12fTÝF¡6VwñÎAþ^*IÆE7±?ÒÜ¿
N~E8yqç·¿åù}YëÙÍnÎÀdÐ@³j%«¥]ïÝEÿÏÜp~ÐDqxßóCòsG)=à·Qø'¿Xú<r¯ D-Ÿä)*K5ÜdüÌÇŠ9Ÿ_4`I«ê×µy§æ~Ë*Žar¢ûªu).ÅõÞT1[úıôú$C·Y+${QŽšðbÁŽôÈM®ócøè-N¡clCAßYM@üTÉPº1{¢Š÷8n3&Z_÷µ8\Pî
+0×îÞôrïÅë3èæ/.ϧÏÂn_ë{úÈè4Ç¡SAÈù)Yï
+±:œ§MGH\©×«<±õžxy1Ø
+Æ=)cA4§°Ê¡ìªÂvc[ÄŸ®Ð¯}Y>É`/jð?X%tøÇvº8ó·Œã±
+{4Ó;°ÿä.îcÅjÜm ÚùÆ®dðigBô¡Ì Ž1Ï^H÷fA >?ÝÝÜ!)ùN4MýwÈP®¯*ãxUwÕbÀÖ!NUájÂn®TÁÂB$,Âäø€*4QÅÄ®
+SÈHWX«šRÙ5Vv
+q©u]ÛêÂËÜ?ìJXíµ±ÚJÕï°êwP5S¢æwM5ãUv»¢(VøZ®\e·#ºÅM1©ÉŽ»§jÇa¯AÏ *š$cN×{Ãsýyµ2ü>Ìbðº3űøÍÎtfË(Ò}z_D.°ÊcÃÏøØÃÃS1Ѳ€á¬³y²u2
+F;ï-²yOhœZµï×§àÅC?åœÄ?p}û«Ië,l7jœD«Yë:¶^¯6Ó6éhaŠ¢xYíËZBXžg|ücÐyf=pK^8>+}ÏôÒXim+kÂWG§Öf%elzÚëïïo°Õgnß,7Ó£wÏÚD\iõÁ]0KîÞçG¹ê8ÔÐùÕóÆþ®º|îê#ôOÝØfÔ8¡MYÄ¢=ÃV}Žd7U®1Bޝ:±WÑÈJRdÔ»qé²{eE¥0uØÀü|hÖ²/"ÚàæñÆà-³µu|hµ
+åÛÜ©šf¥9ó:_ôG}¬PeyK^êLoàœ
Jæj/æv¡fþ¯×0èb
k¬«2¡¬²x4Ò奱µÈkmX_ÓjÐø©9)þBº©õÛÿjM:;s]NÚbÁ{8K{lCyEm^èsø ³*õYçÁ÷XX~ÝÖ[±€2Ýæ~,Î矮g9ÇÓßíBú.§CLd xø##mKEE&§)S«/«DñkM£}a(},ó9ŸæûÔÍ8m<Ú lysòêøÙÁùëÓÃ×ǧ'/vTÝ>69ðQn@ÙžM\?#wÄœýbÕ )À/"Âx~tÈj;x!ØÎžSž?žKÚ&
Kê0!žuhóÈ;5U(ÿf
OÀp\ZEþýo@öUeE1rž1<\?
+·ÈcìÅnúv1|ÌW'Øûeç²Ma1ï¢H;ê·
E3ÆaHI
+®3PiYF»íœóœRªuÝŒ¹Ëì3RÄ6ýhêØOoi²ïÃÍÚôc9šm5%ÔËg Òáfuö®×dð»
dvÿ&Ò$/úÿ 2ÓÎ]T?>BçGrÝ€ÊuŒFKXÍDÚáÑÅ£çÐ¥_Nq/zú¬dö`XøwhËèJŸÎekÑŽâQæ1ÜX%®Òš|ÛÍ?¬w`¹Á]Jüx
+} Öü ëèï*}CŒÿjàé¢w¯Ø'§š(³:ûTP$ßÃø}W
B§æ êáfð¿àÄFj^¶B AáÅÈNÑ@Ò\$*¹»ÖrCt ãu&*
+b}5²³ns,÷ÁÀ-?2±ïø Â1"ØèÃà_çY¶yµpÝ
+~ã&ðûÖrµ^MýÅr ûÂT©ý ×:µR¡:îšâæ(TÂJûWn±k£ñ¶ŽXRÀÄ-ª¿¯ AÔ=ErMÝD÷*ÅþB0žM¬H9R8]þÞmFkžzsŽÁìó6
¯ÊO¥ª*²ÓùÜù,ßH ý-çÝ?E~òÏŽ{²S©Õ©V0(¬FªŸÃ9SkŸÆM>ôcW2jV ø§Ïòaí3ɲãü,?°OƲ×ËÎŒ²Âú4+r
+wRàýSwÈÙïŸWâ¢.>ʳŠõJk
ÇZDwRUUµy«AÉQõZjaFÅœyöY×~PÍ«Û-«.îÒNg$QDÃÁ\ûÏ^=·d3Û8JÑÂcìn Êò.pÛ?À<yÌÛŸý²§y eßMó Qqèà*à¯ïQ6í³åsÜ0§Aß2£KbHÚ@©Gqâ%|çUÏ»¬b6ÆõÓªÄõÈÄÍ!7bu& Kãüêù Gã»å
%ÊÌLïÜP/Û%=ÔË,!ê8º&J¹¶<Q].U4L¢wÊ
+åú&«ÊUÖ4§
+ä2Gy-¿È³÷*ÏŸË<ï³Îs
€9ö5žw,¬_
+Á¬eQÊý(Ò{¯;mX×PhÙežK
'K-®\+Z>×¥ªNéq<Ë€Îm×êáÌø#T]®{<u¹V= Ô±Z
œòì®×ýóç®×ªãU*
+\*ìsjmœñ2-h\°šÀúÒø¢ö°ò rc\ÖIÿ
³lâYuâKȧ2õ§l2³|(fÉÊy²aŠLÂXÖY¶Î~€
KäHêâç v³Ê\zùî!~%]B§d_$ý{¶ «×*éþë€ëO.O÷O!ÍÅœ3H#öñ-~^;Çržû€:ø}H¹íD9W±7Á
+®/·D³ŸhÙŒÖPùi[ØGd÷X_qUVRwQËÐôûÍÑi--± ®VouUy§Ur,f³ÍÊk+¶02«0Þ.hÛ°Í4øK\²®?+T·úxõ®µ¿ç¬IeuKS+JV8ØfÚyAÛQYçUŸ©hËÐUåÄ
+ug¯ZT§ìyIó=3#ív;fòînXÞ#*×0Ú;cÍÍCc4}o!êÄ%|¿¶û»XPÜÇ¢C?Øn§e»Zån!ÅÕn~Í©=Öo_Q7¡mãòg.RâÞÒöÅþ|Àž
{ôW·-KâEñ*Ô;rŰ"F{ä<,_ýîzKÎg.úζÂLXi2e%+ÚÜV^QO^©m[)Ñ¿c¥35w§ü
+GµL6g?ªXá·_]UVQ±¿®]`Ñ×U÷àêž|ʶ¯YnÚÊL4ÇÇISÜyñ
+Ï£8bSšóž ¶Ÿ€·àl=üDžZ×ö®î©V÷Q@©Å6LÙÉxÄ9·lp¶+&UYÁe^ɬGVæ¯qûn¿œŒõ0]ºÍRßã4
+ýŠ-Ne!--œ§qûâ9þJüã^9^1 ŒÜg)NACR1ÍŸ:sÌ
+"ÈP b³Óü5FÑ£;¶Ö-â-6Ú,É3~P~m°Ç6Ç"Þ#¶KšÏg7%ÒÖëüÇú |1>GVÂc=äŒÔd»¶OŠô_Kµº.£Ï2~6ÝÍ_Ïî°žþ0H¡J]ÙWÂImpR:}ÇôÙŒS÷Ï-?¥gÒÛWv/p{/ÛöÇ œèÊPŽZ}W41bQ áû^ïbcÛ?YVž`>Ço騸Ë?lì ©ÉÏnÈÕªàkd2)ëâ"juuÕðgK8Z#×*䯩éõ}Ù^¢TË/ÏWHÜÎ/¶)-=6س߻ôCZ~«wÐb,c4C
+Gya/°kß=]2^òG°lÁ\aÑ6X
êÇÆÏ¶2:ÓéÕv»¿¬ö)i^«P³V«¢¯)ŸJù¡¯Ï q±&ÉâXŸÿX&+OQ««²TÞ/×X)GßC12äÌšŽðf}<ïÓÆÄ+Í:??(f°ø£{ìöóB¬.|ôòn!Ö¹TøæhZÒ@xžòFqp&Ï€ï¡S
ÆÇ
+^M,¢ÀwdÜO*.Ý
+*Tó
+
+ÔfÔ¡e£¬ŒmwB]î h¯ÚGì4_P³~.ÏžéÜUR,ây(ž<'ÉžÒ±¡ºÒI=©pjŸ>ËÚÆ=n6 ðsBKe¿XPÔ%€²*Ýñ²z{Fõæ!1çÖV]Pîlf}ÏJ¥õñjlÀÄÊkž€i»óu<Dÿx€Ç2žîËO/Cf÷`Xß-e=sö×¢
+æRdm,º:fÛ¬«BnqŽœÀ\ÙF*åGgú}1vÛÓTÙ¶NAÝ7ñü
+àïOŸ}ê<yúŽ|Ã˧l;³£.Q³ºQF3
+î[Ëæ¶Øi·Ðd¹gÔ'pÒž°Ÿ[`£ërRìÓŒvÀ[Ã{AÖ®uõÝ€x7©œCe¹Jw8àTŸåy·õ~FnŸöüÛׯžÛXYYBM,PH+ÌžTšºÿ8¶{*ÜÄW¶¡ä®_®Œob7š¯«,göÊcCÚå&ærr³85Õëcåêõ±rúÆ%jŒY×á'xµvyæÔ_ko _>k«@-5àuèG9+¬hºÊøâñcUqggký*ìP¹PH¿ÍÙ&:#Ì.0#9EÓDgÁoªÆr=e3`c\ÇMÉÚ®1èeí96hÑÔÆÄê)Ie¢cm81ÔSêQµ¡y`<ÀËedÕ M¬åEq| Ã<7ñÄ&±LO+;3dk@#Ë)OTæñÅ+¬#å£À/Bìæ<Ž nLþ¶¡ýäoäâ1+Ëì±ÇE¿¡ eCýçÐŒáeøU0&g ÅóG²!!KUG9øgGEVdÎŒjgŒñRs6ÙËÚ9ÖÆšëÌÆs+qO)3àÇT?ó^¬géÀj>z^.±ØõŽ¥²PX߯CÇëâ ZYOã
&ž~$ 8ê2Çj€rŧµYþ[m%7}¢Ý/µ?u¶¥
+åëŧW9?E®éȵOrÌÑæð¡é³W'ûÓNEöØ}׳eNXâ3Ø%ëèþ@ûL/Í[_ÛŠ¿€ë¡Hõ€5Àc浯;¬¿«Ÿ (ÌçVv1Õ>Ÿi9²A_No;®ŸŒ¶í43ÑøÍ\k8ÎöySíTRû!
+c7J|{í¯pO¬ÅÛ*ï?ÛŠéZX7Ñ]j[sè_;ÆÀŽ²Ï¶-{P»l>¡<ñòÞ{&oÈ1Øõ€Š(ŠíöÛ-w[q€ñ9ÃH»ïÎ4E#Ïü8tÓŽ[,ÒãÔè>BŽÛ/m6ôÖ§O/.þ€!Šnô#õ¯o2ÕF§ÆsÍWitíùÏXÕ¢ŒlW íH+54ž_HÐë+%,,ÔôÂ?^zCï&|`Z}¬xܶs>þ~ÜÝ_ÞûÜØ÷ãzÓgÛ2³îybdûæ`*tëÎ`*ðÒ§D¶í ŠÃkþ¶óg:ÆÍWz:âOž1Bßãþ*¹+³ª·©)ðn÷ä:[<ù_UÔÌN«áÝkóqåõ¶é1|UL¥!/=V'ÊÛÎì0TêÌâÅ]Ê
îzh;õûÇ£ç/êþ»€ S$Uò© 8ͯi!äWüÝpRd²[²TØÕ8!TSa¢(l€ÏáªôlßOgnâPÓÆOkÆjûjÛþÑÅÞô|ÿBSžÿ]{ÿðÿPK
+¥]7 isis-database-3_cvs/simulations/UT 5$YG}$YGUxèèPK
+]7isis-database-3_cvs/simulators/UT $YG}$YGUxèèPK
+]7#isis-database-3_cvs/simulators/CVS/UT $YG}$YGUxèèPK
+]7p99*isis-database-3_cvs/simulators/CVS/EntriesUT $YG6$YGUxèèD
+/DefaultSimulator.java/1.19/Tue Nov 06 18:16:14 2007//
+PK
+]7kîæ-isis-database-3_cvs/simulators/CVS/RepositoryUT $YG6$YGUxèèisis-fish-data/simulatorsPK
+]7.à'isis-database-3_cvs/simulators/CVS/RootUT $YG$YGUxèè/cvsroot/isis-fishPK
+]7+isis-database-3_cvs/simulators/CVS/TemplateUT $YG$YGUxèèPKf7r.ÔX4isis-database-3_cvs/simulators/DefaultSimulator.javaUT n¯0G$YGUxèèÝ[{sÛÈÿ_b¢ìU /¶ŒÉn"E©
IHfNY eǹºbÀÂ.0xHÖ&úÀ÷îë`zÙ9KéîßôkxýŒúíoÿãŒ"p{yëëh#òöÍð)^£UD74êAË4ñžÿ7ò2õj§=ò?Û/ Ó0c/Z$_{1ÙFá:²7n%qžJní»0%º^DÞ2M(ñbîë0BÐõVwø,
+\äF+öãÂŒ"4 íiºôAŠKÏ¡ALÜÞña|M]²Œcç(ÃLÈ@ÎC`l'^êÁûÜÐ(ßä-rÝ=FD³<"áé@Ü;âÛIAÚoP¿ÐÒ%2Ÿ· Ñ5°o=ß'KJÒ®R¿, 1ù8¿\Ín~"uËÒÍù§Sh\ðÞPÎÊÛl}8^$w ;rÖà=èïF£ù'Ôà|47ÙO,¢©nÍG«KÝ"Ó+k:}BfÅb 6CLVÀl.MlÏ3Å?ÁÀÆ ïkûÂ;Ô»Ùlâu<?ÖLMh\yJŒ €Gn#ì% ëÃäÅÈöÈ(pú=ò?9(ú¶CÉwd"ï¿Æ 6ëŒy{||üÝñ÷o~ì«ZŒz}pðúWpHWvê'3oÂÈQÿgûÆÊ"
+Æà·ÇÄÿ7aÎDßüáÇßÿ ýd§0|ÙæþB~ÊïÞxxwBûÇ"ßK;?ØRô|3dÿï¿a±?ÿprü{Ö鬲ý°w ÇÖv~±×àñéÁP%$N5ìdÝwÀã}tøŸwüÇ ?Â?Ó
+EÁáéÃ{¿?}:Ìáê//ÁA
+"dl€×øo6a÷ýpœöuÿ2\vkvn; Þ]©u!íÆN®ñOä}îÙû¶7
+MpëÙý9þAB?'»ºåØä ;·MâþEdßxÉÝÉN«/-5öÖ^Í<.gþbõ=Ñû`dñ
+c7çp#õßÒ,Ü^ô;{0ŠV$^âÑž?Šð_Ôí4Ü¢uîGÑ~Fí8FÁ*ìF9K"p§õ]·Övm£ÔpàOk«Üù(ã0ðàWGBÙýèP¬ý(DªŒ]ú{ÓMmø4Ùa/5Ê%w[DTÉõ)Fþž-*O_oÇq-;°ÔÌ$&ÅÃ`uÅþsÌc÷ .²²ÏgïSù[ÈòºYÍaãõ=0ní°ßï¢ÈGDämäÝvÂãwF@Ø_Ó~iµÆD?M
@ìLg6lV=!2Ä
+ß%Y]{ëÀNRLž¬1B`qzn`šV3"P
ýé;
+oc@óKadw `ÍD0ÒðqN£buÂ,#ü¿¥h<29//H ôOÔIÄfºYÒh²ÂçrßY{4>hBvÖ7¯Æïk19_'æü}AÈ\N%ÄÅ~ð±Ì?{îX.Ñ8Ûµ¬K©e~SáP©AwQ'KIJ rÞ#î²ÌløNSI¥*0qsFz?×2)hå¬HÖòN*¿ÏÈ{9µ°
+®^}RRŠF ëV
+ìdSúUâRj(sÂ5€ûµÔHŠõÂR]+dE @Ì(+khiGG"DåÊ*S×c¹ob¢bU¢J¬ÏÑßú»+sš£BSCñ@æ=bJmïëC÷úµtËmÃqTµÄóÏØö/ÞXV
+Ç
+î5èµCÖ¢ÒËÉ!ùó(üL$|ÈóYÝÜŠW÷+èQšÞÜ'g,Û0ØŸ
6t¿R÷pPLãdæ€Îµ@pØÓqhI_.Nüê<*Ϫs/Ãä4¶Ù@ÊBqU5»œöf³EL$ÎmeTô3JÈœäOè".º\ÒÎn¹8ÝÆxh}x1Äm!»EÿÒ8Ñj.
׿¿ÇùŸô«ôC2AŠš[ë&YšÓLÀÌz¡.)L ºE+#<6 Fö¯Äå&¡œ¯ëAÍCöÂǹœCãa)&BRIµæL3Á°]Û5BÿªWºõI u=ž°vâ\W{œ?šõ[$Ga#°P)B9YèùèÃh®"£0pSFÔD| ÁupÌ_Lã^QvµÐL&1Ù
+·šnT<keé⎯? LÛu¹
+\OÄ¥6ŒêÞÌb#Ø4Ø:1œ±ýŽÿtµÐn Ô[<Äçìb¢²šÃŒãW±"VdîòóKa
+Ô\ÆYÁ¯e1cë
+Ö+p
+zªlDw
+\ðÊ9°ì«^PbTGêî^EŽ¢¬§Žå=%žø£{5ª]HrÚáÀÆ©nza+\ËRs £I¯ÖIùTªÊÐzÜÜ9p/Þ1G'@n±
+ZÔ/Ê(2¥5[*åËÉXSŽcIŠA¯=œ€o!ýòba/ç%wá¯Å=<+ÎZÎ.Ë0Ûh29ï6«aèèÎþNýãû¶à9Ì_~5œáÅ«6¡Ayw^3óØ`zý÷iìÈÌ\çQª5ŸPU^ÞŒ?&œ²Uhh XŠCySmÜî&%V,^òži#ïy³
dʶÚ<<³œúr/`t×%qža:nI [ž6ôÝÆ§Ê4ü;41Üq¬²}¯X¬×²¶
ùys$¯u5SE±Z(Ë:íèÆùùÄ/Šà ³¹¥ÏOè+÷
+ºsHŠ4ÊËÁdÿà#¢puäjñU
+åëqé1øÌæÃàòÁž|8TqâÂD÷ú*4³Ö®< 1³édºaalòBF%zSa¢byÐ(ðªþ%
+n<'ÎXÕ°áRÅoYm(fŸ£uÁh`ÇTË×®æöúTbV;8Gã¡<5áUѯl®ŽÞ*j| z¥ÚX±ËÁ¿çïaëSk4PO6ñWŠçкs°ÇZSÍ®`««ÿÓìjú0NZÔ€_GUϬå!Uüî
+T}œ:&®;väâ©+âÃ/X
+î;.ůœb»nôÔ¯±Rð:S¥*l=¡*¢_^×¢vpÈý?ãsŠXÆÄ]þzg`šÕoÎHÂÄá_ÿ"Õó³39Ê 9¢·ZyQð9n]³c^YޱðÒºÖëÃ
صÎSšOJ'uPèQ'và`²sØÒ©"XG³n
+gY1u\ó*§|áF"ný×ÿóaKŠòÕaºÃžÍò"
+ÓöPj6=ºï(
+ŸH>æõ>e?pù/ì~Ü7/ï¹×®¬&Ì&;Ø ºöÈø¹}4Fïç²-í\š¬:òGÇmwÍÍùŠ(×5W³Ã=ÐRõÖºZÚö RZH=ñR7#ó
+ß®¡Ë-ì¬KüQhŸÏ¡¹LE|Þ¹K&îú/Hc°ý&Êf¿Ê85ïàWAìº \·:Ñ×SU4ÕÂ$¢74JJK,x6ÐöªBÐ÷¶óØç[ãµ:Ô]ö#Ѱaïó
+s+ìr SÖ+ÎI>Wç,ÅUÏíøô¹»a.Î9± änøØó¿ìÏ6
+êàzvà¬ŽÒØxè¬W?lÔ+ÎXõH¹&ÌšÕÎÉöHùÜ®äš /ÔEÒ*ã÷Ž®r¶ÊKc¶ÍÐùŽRé£f'|*G{òbÇOÚ6îØÛTgÊðÃüÁ3+ß±-,,Ç¿=$j*NÍfw`PŸF
+¹·¡cÏ÷œž¶ÉUbò=²Øøl±ôÂ
+îÌo{ÙùUeŽ&~óé Æc`nµÜºÖcK€$ùšþ3Þ»Ñd¬ÏfÍgº2õjÈ;þB3³¡Ÿí±+ŸÞJ°k0ϳ|Z"z*Ìœ8ëͶžémœh¢1ÆL#ÜËVÙëÎ1Ð O˧¥PO Jý0ʶâ#>rÑáØÜ·V翪¿á5Œ.¡~LU}#>Ø%c6`ú£UX€€^ãÒeºŽ¢s¿èê[oÝ Gm,u?ÎÉ3Û®ñ:óŸÇRׯ_Ó.
+¹Ocó N
+Ñ«QîÖÛŽô;ûm;î'I·a\:9+u>Ʋ×nñ(8VÛÀÃVí;©)F$ÅM=ìŠïÇCE?
+g1ßç!üÔLµ ðJÌã¡,JÎ*Ùlß/xÝß óDnu ÊÓŠr£·Ð9r^HÕÐð{Þð-m4VeY±CÂõAjS&\Ä̵£G«xÎèÆïi DÒìÇ[ßKÞ5Á[)IU³<Àu"(bðºÞd]
òÇM¥]«z¶xVÒöÏøI¡GsU-ÂAæFâÔ»ñÄ[ÌÍX2œ Œ$¹2k
îáAª¿N,:#.+#§&a£6ØK/Á¥bÆ*+Ê$¬$âHMñ`GÙQbûøq!GKÆ£ª¹œÝúw¥ÄwMuZÉl^-ÂÒXC
åxÙKü\2`ÛŠê²àG1lm×Í{.÷î¹Ô++ÉÀvÁEáE¢Œ.iÅe=ççžÖjÆUÔ(
+vmÓ$øTzöªT|µtR
}7+ÆîêÐ8¶£;þá.{ÎÖ$Ê+=j(Ùq>ÚìZ±šj]Øêö
¡6#ê_Ÿ;à#ÆücmvêNšT)j³>r¯"hä2jtÐläPbµÇŽc Ïï+¥í§(Êšv[#45ÕªðVÜëXrSõÑbsOÔåHîø<,ç?²;.KðŠ"uddª.&Ñ"ivʯé·XXª.ÉH_þÄ?ÖCÎGÐùŠURmQYt¯Å×âãGþùaõLŽÆÓŽÓkþªìAA{žËùhöT磱Á×Uñ+ at v÷ÁÍËæù;ÿ@¶ÚpYdÊ>3HÐ>@G4ª^Ðù`þ}ÅH÷QôÊž\&³ù¿u§fJýA'ñdÅO?}y%sý²a}B91_^;iÿ¿
+eLõµÐÍáb¬Ì¹aâC·Bcšõm/Òwlã7Rìü QøòÚOæïA;ëÊ4Ñf@ß N¬4Àn¿gïuË.ÌÉóop÷jήaäarî}Šîs(Z`Û_Uµ¥Ðò¹®
++ŽÅ<#Ï,óÝ©uÑü|aMf³ÅýòÊÀ,ö*Åá©1³Ýõèn.¢0Ù9ËÉêïb"³-u`fÛážêK{+Ï£ÿ¿ÖsúÝ|ù`gÏ2ú&MŸÎ±ïŠñãF~ò_Çž[i|æô&¥ó¥¯
+e||Íœ}FTž}41ëÖÅÈ\L> vº5Òß]RÞ:&·äy;Z{ÁäÔ¶#%ËJ6P^ðzAüEIõbÀ1}ØŒü¬b/ã| Ãü7Ãäùøbúïé0/â,_.Víè"Ö3¢þÙòþàþüPK
+¥]7
+íAisis-database-3_cvs/UT5$YGUxPK
+]7!
+íAGisis-database-3_cvs/analyseplans/UT$YGUxPK
+]7%
+íAisis-database-3_cvs/analyseplans/CVS/UT$YGUxPK]7ÉVâL\,
+€óisis-database-3_cvs/analyseplans/CVS/EntriesUT$YGUxPK
+]7·þÍt/
+€isis-database-3_cvs/analyseplans/CVS/RepositoryUT$YGUxPK
+]7.à)
+€isis-database-3_cvs/analyseplans/CVS/RootUT$YGUxPK
+]7-
+€isis-database-3_cvs/analyseplans/CVS/TemplateUT$YGUxPKgb7šYª
+s.1
+€éisis-database-3_cvs/analyseplans/Calibration.javaUT²a+GUxPKki6_m*éŽ
+)
+€aisis-database-3_cvs/analyseplans/Max.javaUTÙ|ñEUxPK
+]7
+íAŠisis-database-3_cvs/exports/UT$YGUxPKÄ[ž6RÄD©
+Ñ+
+€õisis-database-3_cvs/exports/Abundances.javaUT[UFUxPKÄ[ž6l#«*
+€`isis-database-3_cvs/exports/Biomasses.javaUT[UFUxPK
+]7
+íA¿isis-database-3_cvs/exports/CVS/UT$YGUxPK]7A¬Æ!»Â'
+€ isis-database-3_cvs/exports/CVS/EntriesUT$YGUxPK
+]7ÿ1*
+€'!isis-database-3_cvs/exports/CVS/RepositoryUT$YGUxPK
+]7.à$
+€!isis-database-3_cvs/exports/CVS/RootUT$YGUxPK
+]7(
+€"isis-database-3_cvs/exports/CVS/TemplateUT$YGUxPKÄ[ž6kû§§/
+€^"isis-database-3_cvs/exports/CapturesNombre.javaUT[UFUxPKÄ[ž6¯² .
+€g(isis-database-3_cvs/exports/CapturesPoids.javaUT[UFUxPKÄ[ž6îòË
+ß0
+€z.isis-database-3_cvs/exports/CellsDefinition.javaUT[UFUxPKÄ[ž6qr
ùú
+.
+€ê1isis-database-3_cvs/exports/EffortsMetier.javaUT[UFUxPKÄ[ž6ÇÜs«+
+€ß6isis-database-3_cvs/exports/MetierZone.javaUT[UFUxPKÄ[ž6&ó),
+€°:isis-database-3_cvs/exports/NonActivite.javaUT[UFUxPKÄ[ž6xܵ
+,
+€?isis-database-3_cvs/exports/OwnerMargin.javaUT[UFUxPK«`ž634€Í1
+€¢Disis-database-3_cvs/exports/RegionDefinition.javaUTbcUFUxPKÄ[ž6UYÇ--
+€Hisis-database-3_cvs/exports/RejetsNombre.javaUT[UFUxPKÄ[ž6äpÔ,
+€DNisis-database-3_cvs/exports/RejetsPoids.javaUT[UFUxPKÄ[ž6ÉæÉ
+-
+€wTisis-database-3_cvs/exports/VesselMargin.javaUT[UFUxPKÄ[ž6:6íN¿0
+€jYisis-database-3_cvs/exports/ZonesDefinition.javaUT[UFUxPK
+]7
+íA]isis-database-3_cvs/formules/UT$YGUxPK
+]7!
+íAk]isis-database-3_cvs/formules/CVS/UT$YGUxPK]7NIÓw5g(
+€¿]isis-database-3_cvs/formules/CVS/EntriesUT$YGUxPK
+]7c9Ÿ+
+€O^isis-database-3_cvs/formules/CVS/RepositoryUT$YGUxPK
+]7.à%
+ۀ^isis-database-3_cvs/formules/CVS/RootUT$YGUxPK
+]7)
+€._isis-database-3_cvs/formules/CVS/TemplateUT$YGUxPK
+]7(
+íA_isis-database-3_cvs/formules/Emigration/UT$YGUxPK
+]7,
+íAå_isis-database-3_cvs/formules/Emigration/CVS/UT$YGUxPK
+]7j³£3
+€D`isis-database-3_cvs/formules/Emigration/CVS/EntriesUT$YGUxPK
+]7¹áu""6
+€«`isis-database-3_cvs/formules/Emigration/CVS/RepositoryUT$YGUxPK
+]7.à0
+€6aisis-database-3_cvs/formules/Emigration/CVS/RootUT$YGUxPK
+]74
+€«aisis-database-3_cvs/formules/Emigration/CVS/TemplateUT$YGUxPK
+]7$
+íAbisis-database-3_cvs/formules/Growth/UT$YGUxPK
+]7(
+íAibisis-database-3_cvs/formules/Growth/CVS/UT$YGUxPK
+]7j³£/
+ۀbisis-database-3_cvs/formules/Growth/CVS/EntriesUT$YGUxPK
+]7œT¡Ô2
+€'cisis-database-3_cvs/formules/Growth/CVS/RepositoryUT$YGUxPK
+]7.à,
+ۻcisis-database-3_cvs/formules/Growth/CVS/RootUT$YGUxPK
+]70
+€disis-database-3_cvs/formules/Growth/CVS/TemplateUT$YGUxPK
+]7+
+íA~disis-database-3_cvs/formules/GrowthReverse/UT$YGUxPK
+]7/
+íAÜdisis-database-3_cvs/formules/GrowthReverse/CVS/UT$YGUxPK
+]7j³£6
+€>eisis-database-3_cvs/formules/GrowthReverse/CVS/EntriesUT$YGUxPK
+]7âTW%%9
+€šeisis-database-3_cvs/formules/GrowthReverse/CVS/RepositoryUT$YGUxPK
+]7.à3
+€9fisis-database-3_cvs/formules/GrowthReverse/CVS/RootUT$YGUxPK
+]77
+€±fisis-database-3_cvs/formules/GrowthReverse/CVS/TemplateUT$YGUxPK
+]7)
+íAgisis-database-3_cvs/formules/Immigration/UT$YGUxPK
+]7-
+íAwgisis-database-3_cvs/formules/Immigration/CVS/UT$YGUxPK
+]7j³£4
+€×gisis-database-3_cvs/formules/Immigration/CVS/EntriesUT$YGUxPK
+]7ýký/##7
+€?hisis-database-3_cvs/formules/Immigration/CVS/RepositoryUT$YGUxPK
+]7.à1
+€Ìhisis-database-3_cvs/formules/Immigration/CVS/RootUT$YGUxPK
+]75
+€Biisis-database-3_cvs/formules/Immigration/CVS/TemplateUT$YGUxPK
+]7'
+íAªiisis-database-3_cvs/formules/Migration/UT$YGUxPK
+]7+
+íAjisis-database-3_cvs/formules/Migration/CVS/UT$YGUxPK
+]7j³£2
+€bjisis-database-3_cvs/formules/Migration/CVS/EntriesUT$YGUxPK
+]7Ñüº'!!5
+€Èjisis-database-3_cvs/formules/Migration/CVS/RepositoryUT$YGUxPK
+]7.à/
+€Qkisis-database-3_cvs/formules/Migration/CVS/RootUT$YGUxPK
+]73
+ہkisis-database-3_cvs/formules/Migration/CVS/TemplateUT$YGUxPK
+]7*
+íA+lisis-database-3_cvs/formules/Reproduction/UT$YGUxPK
+]7.
+íAlisis-database-3_cvs/formules/Reproduction/CVS/UT$YGUxPK
+]7j³£5
+ێlisis-database-3_cvs/formules/Reproduction/CVS/EntriesUT$YGUxPK
+]7ŽÕ.¢$$8
+€Rmisis-database-3_cvs/formules/Reproduction/CVS/RepositoryUT$YGUxPK
+]7.à2
+ۇmisis-database-3_cvs/formules/Reproduction/CVS/RootUT$YGUxPK
+]76
+€Xnisis-database-3_cvs/formules/Reproduction/CVS/TemplateUT$YGUxPK
+]7
+íAÁnisis-database-3_cvs/regions/UT$YGUxPK
+]7
+íAoisis-database-3_cvs/regions/CVS/UT$YGUxPK
+]7Û`6ð'
+€coisis-database-3_cvs/regions/CVS/EntriesUT$YGUxPK
+]7.
+€Îoisis-database-3_cvs/regions/CVS/Entries.StaticUT$YGUxPK
+]7LæxÈ*
+€/pisis-database-3_cvs/regions/CVS/RepositoryUT$YGUxPK
+]7.à$
+€¢pisis-database-3_cvs/regions/CVS/RootUT$YGUxPK
+]7'
+íAqisis-database-3_cvs/regions/DemoRegion/UT$YGUxPK
+]7+
+íAeqisis-database-3_cvs/regions/DemoRegion/CVS/UT$YGUxPK
+]7ëZ
+P882
+€Ãqisis-database-3_cvs/regions/DemoRegion/CVS/EntriesUT$YGUxPK]7ŸÌt!5
+€`risis-database-3_cvs/regions/DemoRegion/CVS/RepositoryUT$YGUxPK
+]7.à/
+ۍrisis-database-3_cvs/regions/DemoRegion/CVS/RootUT$YGUxPK
+]73
+€[sisis-database-3_cvs/regions/DemoRegion/CVS/TemplateUT$YGUxPK
+/50ÿbéa+z+9
+€Ásisis-database-3_cvs/regions/DemoRegion/data-backup.sql.gzUT¿
+EUxPK
+š]7,
+íAisis-database-3_cvs/regions/DemoRegion/data/UT;$YGUxPKš]7zê-R9
+€íisis-database-3_cvs/regions/DemoRegion/data/data.1.log.dbUT;$YGUxPKš]7§UÍ A0À8
+€«£isis-database-3_cvs/regions/DemoRegion/data/data.data.dbUT;$YGUxPKš]7Q¹·Ú"0
+9
+€¶åisis-database-3_cvs/regions/DemoRegion/data/data.index.dbUT;$YGUxPK
+]79
+۟isis-database-3_cvs/regions/DemoRegion/data/data.trace.dbUT$YGUxPK
+]7
+íAh isis-database-3_cvs/rules/UT$YGUxPK
+]7
+íAµ isis-database-3_cvs/rules/CVS/UT$YGUxPK]7QYÖàó%
+€
+isis-database-3_cvs/rules/CVS/EntriesUT$YGUxPK
+]7ÄÌ<(
+€>isis-database-3_cvs/rules/CVS/RepositoryUT$YGUxPK
+]7.à"
+€isis-database-3_cvs/rules/CVS/RootUT$YGUxPK
+]7&
+€isis-database-3_cvs/rules/CVS/TemplateUT$YGUxPK5b7S(
&B0+
+€misis-database-3_cvs/rules/Cantonnement.javaUTUa+GUxPK186ÓÔâͪ2
+€ñisis-database-3_cvs/rules/CantonnementPreSimu.javaUT€·EUxPK1863ÁÒW8D@
+€]3isis-database-3_cvs/rules/ChangementParamControlablePresimu.javaUT€·EUxPKsWò6bRIGR*
+€'Cisis-database-3_cvs/rules/GraviteCPUE.javaUTzÖFUxPK186Ó$v®*0
+€ÍUisis-database-3_cvs/rules/InterdictionEngin.javaUT€·EUxPK186Š×¢
+U37
+€Cbisis-database-3_cvs/rules/InterdictionEnginPreSimu.javaUT€·EUxPK<v6€Kð\5
+€Áoisis-database-3_cvs/rules/RecrutementLangoustine.javaUTŸFUxPKEt7`Ø
+3'
+€wisis-database-3_cvs/rules/TACpoids.javaUT1CGUxPK1862W
+ç"(
+€K
isis-database-3_cvs/rules/TailleMin.javaUT€·EUxPK
+]7
+íAýisis-database-3_cvs/scripts/UT
+$YGUxPK
+]7
+íALisis-database-3_cvs/scripts/CVS/UT
+$YGUxPK]7cñ7FÂ'
+€isis-database-3_cvs/scripts/CVS/EntriesUT
+$YGUxPK
+]7·*
+€isis-database-3_cvs/scripts/CVS/RepositoryUT
+$YGUxPK
+]7.à$
+€öisis-database-3_cvs/scripts/CVS/RootUT
+$YGUxPK
+]7(
+€_isis-database-3_cvs/scripts/CVS/TemplateUT
+$YGUxPKa6ýª*,ÈÂÔ-
+ۼisis-database-3_cvs/scripts/GravityModel.javaUT\
+çEUxPKq®é6:µ8Ðrö+
+€â§isis-database-3_cvs/scripts/ResultName.javaUTÆFUxPKct7ªëŸm8)
+€²®isis-database-3_cvs/scripts/RuleUtil.javaUTiCGUxPKªb7Á!!êOªŠ)
+€{²isis-database-3_cvs/scripts/SiMatrix.javaUTd+GUxPK
+¥]7
+íA&Ïisis-database-3_cvs/simulations/UT5$YGUxPK
+]7
+íAyÏisis-database-3_cvs/simulators/UT$YGUxPK
+]7#
+íAËÏisis-database-3_cvs/simulators/CVS/UT$YGUxPK
+]7p99*
+€!Ðisis-database-3_cvs/simulators/CVS/EntriesUT$YGUxPK
+]7kîæ-
+€·Ðisis-database-3_cvs/simulators/CVS/RepositoryUT$YGUxPK
+]7.à'
+€0Ñisis-database-3_cvs/simulators/CVS/RootUT$YGUxPK
+]7+
+€Ñisis-database-3_cvs/simulators/CVS/TemplateUT$YGUxPKf7r.ÔX4
+€úÑisis-database-3_cvs/simulators/DefaultSimulator.javaUTn¯0GUxPKzz1uä
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/AboutFrame2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,30 @@
+<JFrame id="aboutFrame" visible="true" size='{new Dimension(250,180)}' title="isisfish.about.title"
+ layout='{new BorderLayout()}'>
+<!--
+Maximizable="false" Closable="true"
+bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+ <JPanel constraints='"BorderLayout.NORTH"' layout='{new GridBagLayout()}'>
+ <JLabel id="version">
+<!-- Fixme : gridbagconstraints
+ origin="fr.ifremer.isisfish.IsisConfig.getVERSION()"
+ <gridbagconstraints id="gbc_1" insets="5,2,2,2" gridx="0" gridy="0" ipadx="5" ipady="5" fill="1" />
+-->
+ </JLabel>
+ <JLabel text="isisfish.about.text">
+<!-- Fixme : gridbagconstraints
+<gridbagconstraints use="gbc_1" gridx="0" gridy="1"/>
+-->
+ </JLabel>
+ <JLabel text="isisfish.about.site">
+<!-- Fixme : gridbagconstraints
+<gridbagconstraints use="gbc_1" gridx="0" gridy="2"/>
+-->
+ </JLabel>
+ <JButton text="isisfish.common.ok" actionCommand="cancel">
+<!-- Fixme : gridbagconstraints
+<gridbagconstraints use="gbc_1" gridx="0" gridy="3"/>
+-->
+ </JButton>
+ </JPanel>
+</JFrame>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/ApplicationMonitor2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,16 @@
+<JFrame visible="true" size='{new Dimension(400,400)}' title="isisfish.monitor.title"
+ layout='{new BorderLayout()}'>
+<!-- Fixme : ApplicationMonitor
+ maximizable="true" closable="true"
+ bundle="org.codelutin.i18n.I18nBundleBridge"
+
+ <ApplicationMonitor
+ smtpServer="fr.ifremer.isisfish.IsisConfig.getSmtpServer()"
+ emailFrom="fr.ifremer.isisfish.IsisConfig.getUserMail()"
+ emailTo="fr.ifremer.isisfish.IsisConfig.BUG_REPORT_EMAIL"
+ />
+
+-->
+
+</JFrame>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Error2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,18 @@
+<JFrame id="errorFrame" visible="true" size='{new Dimension(250,180)}' title="isisfish.error.title"
+ layout='{new BorderLayout()}'>
+<!-- Fixme : ContextDataSource
+maximizable="false" closable="true"
+bundle="org.codelutin.i18n.I18nBundleBridge"
+<ContextDataSource id="error" context="current" source="error"/>
+-->
+
+ <JLabel constraints='"BorderLayout.NORTH"' horizontalAlignment="CENTER"
+ text="isisfish.error.text"/>
+<!-- Fixme : multilabel
+ <multilabel constraints="BorderLayout.CENTER" origin="$error"/>
+-->
+ <JButton constraints='"Button.SOUTH"' text="isisfish.common.ok"/>
+<!--
+ actionCommand="Cancel"
+-->
+</JFrame>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Exit2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+<JFrame id="exitComment" name="isisfish.exit.title" visible="true" size='{new Dimension(400,100)}' title="isisfish.exit.title"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/Exit.xgl")}'>
+<!--
+ Resizable="true"
+ bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelExitComment"' text="isisfish.exit.text"/>
+
+ <JTextArea constraints='"fieldExitComment"' id="fieldExitComment" />
+
+ <JButton constraints='"buttonExitOK"' id="buttonExitOK" text="isisfish.common.ok"/>
+
+<!--
+actionCommand="Saisie.saveCommentAndExit($fieldExitComment/text)"
+-->
+
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/StatusBar2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+<JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/StatusBar.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ import org.codelutin.widget.StatusBar;
+ </script>
+<!-- Fixme : ActionMonitor
+ <ActionMonitor postThreadCommand="xpath:setVisible($stopCommand, 'false')"
+ progressStartTime="5" messageTime="7"
+ messageDisplayer="$labelStatus" progressDisplayer="$progressStatus"/>
+ -->
+ <JProgressBar id="progressStatus" constraints='"progressStatus"'/>
+
+ <JLabel id="labelStatus" constraints='"labelStatus"'/>
+
+ <JButton id="stopCommand" actionCommand="stopCommand"
+ visible="false" text="isisfish.common.stop" toolTipText="Stop the process"
+ constraints='"stopCommand"'/>
+
+<!-- Fixme : memoryStatus -->
+ <StatusBar constraints='"memoryStatus"'/>
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/Welcome2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,109 @@
+<Application title="isisfish.welcome.title" size='{new Dimension(315,114)}' resizable="true" location='{new Point(0,23)}' layout='{new BorderLayout()}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JMenuBar>
+ <JMenu text="isisfish.welcome.menu.file">
+<!--
+mnemonic="mnFile"
+-->
+ <JMenuItem text="isisfish.welcome.menu.synchro" accelerator="accSync"/>
+<!--
+icon="imgSync" mnemonic="mnSync"
+ActionCommand="thread:Welcome.updateVCS()"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.close" accelerator="accClose"/>
+<!--
+ icon="imgClose" mnemonic="mnClose"
+ActionCommand="close"
+-->
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.frame">
+<!--
+mnemonic="mnFrame"
+-->
+ <JMenuItem text="isisfish.welcome.menu.simulation" accelerator="accSimul"/>
+<!--
+icon="imgSimul" mnemonic="mnSimul"
+ActionCommand="OutputView('simulator/Simul.xml')"
+-->
+ <JMenuItem text="isisfish.welcome.menu.result" accelerator="accResult"/>
+<!--
+ icon="imgResult" mnemonic="mnResult"
+ ActionCommand="Welcome.openResultView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.input" accelerator="accInput"/>
+<!--
+ icon="imgInput" mnemonic="mnInput"
+ActionCommand="Welcome.openInputView()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.script" accelerator="accScript"/>
+<!--
+con="imgScript" mnemonic="mnScript"
+ActionCommand="OutputView('script/Script.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.queue" accelerator="accSimulQueue"/>
+<!--
+ icon="imgSimulQueue" mnemonic="mnSimulQueue"
+ActionCommand="OutputView('simulator/SimulQueue.xml')"
+-->
+ <JSeparator/>
+ <JMenu text="isisfish.welcome.menu.configuration">
+<!--
+icon="imgConfig" mnemonic="mnConfig"
+-->
+ <JMenuItem text="isisfish.welcome.menu.configuration" accelerator="accConfig"/>
+<!--
+ icon="imgConfig" mnemonic="mnConfig"
+ ActionCommand="Welcome.showConfig()"
+-->
+ <JMenuItem text="isisfish.welcome.menu.vcs.configuration" accelerator="accVCSConfig"/>
+<!--
+icon="imgVCSConfig" mnemonic="mnVCSConfig"
+ActionCommand="fr.ifremer.isisfish.versionning.ui.VCSConfigUI.doLaunch()"
+-->
+ </JMenu>
+ </JMenu>
+ <JMenu text="isisfish.welcome.menu.help">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem text="isisfish.welcome.menu.help" accelerator="accHelp"/>
+<!--
+icon="imgHelp" mnemonic="mnHelp"
+ActionCommand="help"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.monitor" accelerator="accLogMonitor"/>
+<!--
+icon="imgLogMonitor" mnemonic="mnLogMonitor"
+ActionCommand="OutputView('ApplicationMonitor.xml')"
+-->
+ <JSeparator/>
+ <JMenuItem text="isisfish.welcome.menu.about" accelerator="accAbout"/>
+<!--
+ icon="imgAbout" mnemonic="mnAbout"
+ActionCommand="about"
+-->
+ </JMenu>
+ </JMenuBar>
+ <JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/Welcome.xgl")}'>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/simulation.jpg"))}'
+ background="white" constraints='"simul"'/>
+<!--
+ border="EmptyBorder(6,6,6,6)" (pour tous)
+-->
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/calc.jpg"))}'
+ background="white" constraints='"result"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/book.jpg"))}'
+ background="white" constraints='"input"'/>
+ <JButton icon='{new ImageIcon(getClass().getResource("/images/bookPage.jpg"))}'
+ background="white" constraints='"script"' onActionPerformed='new fr.ifremer.isisfish.ui.script.Script2()'/>
+ </JPanel>
+ <JPanel constraints="BorderLayout.SOUTH">
+ <StatusBar2/>
+ </JPanel>
+</Application>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Cell2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,71 @@
+<JPanel name="isisfish.cell.title" constraints='"inputCell"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Cell.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Cell" context="current" source="Cell"/>
+-->
+ <!-- Widget -->
+
+ <JComboBox constraints='"fieldCell"' id="fieldCell">
+<!-- Fixme : ComboBoxModel
+origin="$Cell" renderer="name"
+actionCommand='UIHelper.setTreeSelection($tree, $treeModel, $fieldCell/selectedItem)'
+<ComboBoxModel origin="$FisheryRegion/cell"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelCellName"' text="isisfish.cell.name"/>
+ <JTextField constraints='"fieldCellName"' id="fieldCellName">
+<!-- Fixme : DocumentEvents
+origin="$Cell/name"
+ <DocumentEvents onModified="Update($fieldCellName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelCellLatitude"' text="isisfish.cell.latitude"/>
+ <JTextField constraints='"fieldCellLatitude"' id="fieldCellLatitude" editable="false"/>
+<!--
+origin="$Cell/latitude"
+-->
+ <JLabel constraints='"labelCellLongitude"' text="isisfish.cell.longitude"/>
+ <JTextField constraints='"fieldCellLongitude"' id="fieldCellLongitude" editable="false"/>
+<!--
+origin="$Cell/longitude"
+-->
+ <JLabel constraints='"labelCellLand"' text="isisfish.cell.land"/>
+ <JCheckBox constraints='"fieldCellLand"' id="fieldCellLand">
+<!-- Fixme : ItemEvents
+origin="$Cell/land"
+<ItemEvents onStateChanged="Update($fieldCellLand/selected)"/>
+-->
+
+ </JCheckBox>
+
+ <JLabel constraints='"labelCellComment"' text="isisfish.cell.comments"/>
+ <JScrollPane constraints='"fieldCellComment"'>
+ <JTextArea id="fieldCellComment">
+<!--
+origin="$Cell/comment"
+<DocumentEvents onModified="Update($fieldCellComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelCellButtonAction" constraints="panelCellButtonAction"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Cell", $Cell);refreshView($inputCell)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Cell", $Cell);refreshView($inputCell)'
+-->
+ </JPanel>
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/EffortDescription2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,172 @@
+<JPanel name="isisfish.effortDescription.title" constraints='"inputEffortDescription"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/EffortDescription.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="EffortDescription" context="current" source="EffortDescription"/>
+-->
+ <JScrollPane constraints='"fieldEffortDescriptionMetierScrollPane"'>
+ <JList id="fieldEffortDescriptionMetierList" selectionMode="0">
+<!-- Fixme : ListModel and ListSelectionEvents
+renderer="name"
+<ListModel origin="$FisheryRegion/metier"/>
+<ListSelectionEvents onValueChanged="refreshViewPattern('buttonEffortDescriptionAdd.*')"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonEffortDescriptionAdd"' id="buttonEffortDescriptionAdd" text="isisfish.common.add"/>
+<!--
+actionCommand="input.InputEffortDescription.addEffortDescription($SetOfVessels, $fieldEffortDescriptionMetierList/selectedValue)"
+origin="not(getPossibleMetiers($SetOfVessels, $fieldEffortDescriptionMetierList/selectedValue))"
+-->
+ <JScrollPane constraints='"fieldEffortDescriptionEffortDescriptionScrollPane"'>
+ <JList id="fieldEffortDescriptionEffortDescriptionList"
+ selectionMode="0">
+ <!-- Fixme : ListModel and ListSelectionEvents
+origin="$EffortDescription"
+renderer="possibleMetiers/name"
+<ListModel origin="$SetOfVessels/possibleMetiers"/>
+<ListSelectionEvents onValueChanged="input.Input.selectEntity('EffortDescription', $fieldEffortDescriptionEffortDescriptionList/selectedValue)"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JPanel constraints='"panelEffortDescriptionEffortDesciption"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/EffortDescription.xgl")}'>
+
+ <JLabel constraints='"labelEffortDescriptionFishingOperation"' text="isisfish.effortDescription.fishingOperation"/>
+ <JTextField constraints='"fieldEffortDescriptionFishingOperation"' id="fieldEffortDescriptionFishingOperation">
+<!-- Fixme : DocumentEvents
+origin="$EffortDescription/fishingOperation"
+<DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionFishingOperation/text"/>
+</DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionFishingOperationDuration"' text="isisfish.effortDescription.fishingOperationDuration"/>
+ <JTextField constraints='"fieldEffortDescriptionFishingOperationDuration"' id="fieldEffortDescriptionFishingOperationDuration">
+<!-- Fixme : DocumentEvents
+origin="$EffortDescription/fishingOperationDuration/hour" tooltips="in hour"
+<DocumentEvents onModified="Update(3600 * $fieldEffortDescriptionFishingOperationDuration/text, $EffortDescription/fishingOperationDuration)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionGearsNumberPerOperation"' text="isisfish.effortDescription.gearsNumberPerOperation"/>
+ <JTextField constraints='"fieldEffortDescriptionGearsNumberPerOperation"' id="fieldEffortDescriptionGearsNumberPerOperation">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/gearsNumberPerOperation"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionGearsNumberPerOperation/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionCrewSize"' text="isisfish.effortDescription.crewSize"/>
+ <JTextField constraints='"fieldEffortDescriptionCrewSize"' id="fieldEffortDescriptionCrewSize">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/crewSize"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionCrewSize/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionUnitCostOfFishing"' text="isisfish.effortDescription.unitCostOfFishing"/>
+ <JTextField constraints='"fieldEffortDescriptionUnitCostOfFishing"' id="fieldEffortDescriptionUnitCostOfFishing">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/unitCostOfFishing"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionUnitCostOfFishing/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionFixedCrewSalary"' text="isisfish.effortDescription.fixedCrewSalary"/>
+ <JTextField constraints='"fieldEffortDescriptionFixedCrewSalary"' id="fieldEffortDescriptionFixedCrewSalary">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/fixedCrewSalary"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionFixedCrewSalary/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionCrewFoodCost"' text="isisfish.effortDescription.crewFoodCost"/>
+ <JTextField constraints='"fieldEffortDescriptionCrewFoodCost"'
+ id="fieldEffortDescriptionCrewFoodCost">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/crewFoodCost"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionCrewFoodCost/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionCrewShareRate"' text="isisfish.effortDescription.crewShareRate"/>
+ <JTextField constraints='"fieldEffortDescriptionCrewShareRate"'
+ id="fieldEffortDescriptionCrewShareRate">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/crewShareRate"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionCrewShareRate/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionRepairAndMaintenanceGearCost"' text="isisfish.effortDescription.repairAndMaintenanceGearCost"/>
+ <JTextField constraints='"fieldEffortDescriptionRepairAndMaintenanceGearCost"' id="fieldEffortDescriptionRepairAndMaintenanceGearCost">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/repairAndMaintenanceGearCost"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionRepairAndMaintenanceGearCost/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionLandingCosts"' text="isisfish.effortDescription.landingCosts"/>
+ <JTextField constraints='"fieldEffortDescriptionLandingCosts"' id="fieldEffortDescriptionLandingCosts">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/landingCosts"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionLandingCosts/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelEffortDescriptionOtherRunningCost"' text="isisfish.effortDescription.otherRunningCost"/>
+ <JTextField constraints='"fieldEffortDescriptionOtherRunningCost"' id="fieldEffortDescriptionOtherRunningCost">
+<!-- Fixme : DocumentEvents
+ origin="$EffortDescription/otherRunningCost"
+ <DocumentEvents onModified="UpdateOrigin">
+ <UpdateOrigin source="$fieldEffortDescriptionOtherRunningCost/text"/>
+ </DocumentEvents>
+-->
+ </JTextField>
+
+ <JPanel id="panelEffortDescriptionButtonAction" constraints='"panelEffortDescriptionButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/EffortDescription.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("EffortDescription", $EffortDescription);refreshView($inputEffortDescription)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("EffortDescription", $EffortDescription);refreshView($inputEffortDescription)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$EffortDescription"
+actionCommand="input.InputEffortDescription.remove($SetOfVessels, $EffortDescription)"
+-->
+ </JPanel>
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/FisheryRegion2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,138 @@
+<JPanel name="isisfish.fisheryRegion.title"
+ constraints='"inputFisheryRegion"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/FisheryRegion.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="FisheryRegion" context="current" source="FisheryRegion"/>
+-->
+
+
+ <!-- Widget -->
+
+ <JLabel constraints='"labelRegion"' text="isisfish.fisheryRegion.name"/>
+ <JTextField constraints='"fieldRegion"' id="fieldRegion">
+<!-- Fixme : DocumentEvents
+origin="$RegionStorage/name"
+<DocumentEvents id="updateRegion" onChangedUpdate="Update($fieldRegion/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelLimit"' text="isisfish.fisheryRegion.area"/>
+ <JLabel constraints='"labelLatMin"' text="isisfish.fisheryRegion.latitude.min"/>
+ <JTextField constraints='"fieldLatMin"' id="fieldLatMin">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/minLatitude"
+<DocumentEvents onModified="Update($fieldLatMin/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelLatMax"' text="isisfish.fisheryRegion.latitude.max"/>
+ <JTextField constraints='"fieldLatMax"' id="fieldLatMax">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/maxLatitude"
+<DocumentEvents onModified="Update($fieldLatMax/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelLongMin"' text="isisfish.fisheryRegion.longitude.min"/>
+ <JTextField constraints='"fieldLongMin"' id="fieldLongMin">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/minLongitude"
+<DocumentEvents onModified="Update($fieldLongMin/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelLongMax"' text="isisfish.fisheryRegion.longitude.max"/>
+ <JTextField constraints='"fieldLongMax"' id="fieldLongMax">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/maxLongitude"
+<DocumentEvents onModified="Update($fieldLongMax/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelResolution"' text="isisfish.fisheryRegion.spatial"/>
+ <JLabel constraints='"labelLat"' text="isisfish.fisheryRegion.latitude"/>
+ <JTextField constraints='"fieldCellLengthLatitude"' id="fieldCellLengthLatitude">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/cellLengthLatitude"
+<DocumentEvents onModified="Update($fieldCellLengthLatitude/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelLong"' text="isisfish.fisheryRegion.longitude"/>
+ <JTextField constraints='"fieldCellLengthLongitude"' id="fieldCellLengthLongitude">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/cellLengthLongitude"
+<DocumentEvents onModified="Update($fieldCellLengthLongitude/text)"/>
+-->
+
+ </JTextField>
+
+ <JScrollPane constraints='"fieldMapfiles"'>
+ <JList id="fieldMapfiles">
+<!-- Fixme : ListModel
+ <ListModel origin="$FisheryRegion/mapFileList"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JPanel constraints='"panelButtonMap"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/FisheryRegion.xgl")}'>
+ <JButton constraints='"buttonAddMap"' id="buttonAddMap" text="isisfish.fisheryRegion.addMap"/>
+<!--
+actionCommand="input.InputFisheryRegion.addMap($FisheryRegion, $fieldMapfiles)"
+-->
+ <JButton constraints='"buttonRemoveMap"' id="buttonRemoveMap" text="isisfish.fisheryRegion.delMap"/>
+<!--
+actionCommand="input.InputFisheryRegion.removeMap($FisheryRegion, $fieldMapfiles)"
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelComment"' text="isisfish.fisheryRegion.comments"/>
+ <JScrollPane constraints='"fieldComment"'>
+ <JTextArea id="fieldComment">
+<!-- Fixme : DocumentEvents
+origin="$FisheryRegion/comment"
+<DocumentEvents onModified="Update($fieldComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JLabel constraints='"labelCellFile1"' text="isisfish.fisheryRegion.selectFile"/>
+ <JLabel constraints='"labelCellFile2"' text="isisfish.fisheryRegion.ofCells"/>
+
+ <JPanel constraints='"panelCellFile"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/FisheryRegion.xgl")}'>
+ <JTextField constraints='"fieldCellFile"' id="fieldCellFile"/>
+ <JButton constraints='"buttonCellFile"' id="buttonCellFile" text="isisfish.common.ellipsis"/>
+<!--
+actionCommand="input.InputFisheryRegion.loadCellFile($fieldCellFile)"
+-->
+ </JPanel>
+
+ <JPanel id="panelRegionButtonAction" constraints='"panelRegionButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='thread:input.InputFisheryRegion.save("FisheryRegion", $FisheryRegion);refreshView($inputFisheryRegion)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("FisheryRegion", $FisheryRegion);refreshView($inputFisheryRegion)'
+-->
+ <JButton constraints='"buttonCheck"' text="isisfish.common.check"/>
+<!--
+actionCommand='thread:input.InputFisheryRegion.check($FisheryRegion)'
+-->
+ </JPanel>
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Gear2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,101 @@
+<JPanel name="isisfish.gear.title" constraints='"inputGear"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Gear.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="Gear" context="current" source="Gear"/>
+-->
+
+ <JLabel constraints='"labelGearName"' text="isisfish.gear.name"/>
+ <JTextField constraints='"fieldGearName"' id="fieldGearName">
+<!-- Fixme : DocumentEvents
+origin="$Gear/name"
+<DocumentEvents onModified="Update($fieldGearName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearEffortUnit"' text="isisfish.gear.effortUnit"/>
+ <JTextField constraints='"fieldGearEffortUnit"' id="fieldGearEffortUnit">
+<!-- Fixme : DocumentEvents
+origin="$Gear/effortUnit"
+<DocumentEvents onModified="Update($fieldGearEffortUnit/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearStandardisationFactor"' text="isisfish.gear.standardisationFactor"/>
+ <JTextField constraints='"fieldGearStandardisationFactor"' id="fieldGearStandardisationFactor">
+<!-- Fixme : DocumentEvents
+origin="$Gear/standardisationFactor"
+<DocumentEvents onModified="Update($fieldGearStandardisationFactor/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelGearParamName"' text="isisfish.gear.technicalParameter"/>
+ <JTextField constraints='"fieldGearParamName"' id="fieldGearParamName">
+<!-- Fixme : DocumentEvents
+origin="$Gear/parameterName">
+<DocumentEvents onModified="Update($fieldGearParamName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearParamPossibleValues"' text="isisfish.gear.rangeValues"/>
+ <JComboBox constraints='"fieldGearParamType"' id="fieldGearParamType">
+<!-- Fixme : ComboBoxModel
+firstNull="true"
+origin="$Gear/possibleValue/type"
+actionCommand="update(concat($fieldGearParamType/selectedItem, '[', $fieldGearParamPossibleValue/text, ']'), $Gear/possibleValue)"
+<ComboBoxModel origin="fr.ifremer.isisfish.types.RangeOfValues.getPossibleTypes()"/>
+-->
+
+ </JComboBox>
+ <JTextField constraints='"fieldGearParamPossibleValue"' id="fieldGearParamPossibleValue">
+<!-- Fixme : DocumentEvents
+origin="$Gear/possibleValue/values"
+<DocumentEvents onModified="Update(concat($fieldGearParamType/selectedItem, '[', $fieldGearParamPossibleValue/text, ']'), $Gear/possibleValue)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelGearComment"' text="isisfish.gear.comments"/>
+ <JScrollPane constraints='"fieldGearComment"'>
+ <JTextArea id="fieldGearComment">
+<!-- Fixme : DocumentEvents
+origin="$Gear/comment"
+<DocumentEvents onModified="Update($fieldGearComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelGearButtonAction" constraints='"panelGearButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.Input.create("Gear")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Gear", $Gear);refreshView($inputGear)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Gear", $Gear);refreshView($inputGear)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Gear"
+actionCommand="input.Input.remove($Gear)"
+-->
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Input2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,478 @@
+<JFrame id="input" visible="true" size='{new Dimension(700,500)}' title="isisfish.input.title"
+ layout='{new BorderLayout()}' location='{new Point(0,139)}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+bundle="org.codelutin.i18n.I18nBundleBridge"
+Maximizable="true" Closable="true"
+-->
+
+<!--
+ <ContextDataSource id="EntityModified" context="current" source="EntityModified"/>
+ <ContextDataSource id="RegionStorage" context="current" source="RegionStorage"/>
+ <ContextDataSource id="TopiaContext" context="current" source="TopiaContext"/>
+
+ <WindowEvents id="events"
+ onOpened="input.Input.initContext()"
+ onClosing="input.Input.saveCommentAndExit($RegionStorage)" />
+-->
+
+ <!--
+ | permet de savoir si la region a ete modifiee ou non
+ +-->
+<!--
+ <TopiaEntityEvents id="saveStateWatcher" origin="$TopiaContext"
+ entityModified="input.Input.setEntityModified()"
+ propertyChange="input.Input.setEntityModified()"
+ commit="input.Input.unsetEntityModified('true')"
+ rollback="input.Input.unsetEntityModified('false')" />
+-->
+
+ <JMenuBar id="menu">
+ <JMenu text="isisfish.input.menu.file">
+<!--
+ mnemonic="mnFile"
+-->
+ <JMenuItem text="isisfish.input.menu.importRegion" accelerator="accNew"/>
+<!--
+icon="imgImport" mnemonic="mnImport"
+ActionCommand="thread:input.Input.importRegion()"
+-->
+ <JMenuItem text="isisfish.input.menu.importRenameRegion" accelerator="accNew"/>
+<!--
+icon="imgImport" mnemonic="mnImport"
+ActionCommand="thread:input.Input.importRegionAndRename()"
+-->
+ <JMenuItem text="isisfish.input.menu.importRegionV2" accelerator="accNew"/>
+<!--
+icon="imgImporter" mnemonic="mnImport"
+ActionCommand="thread:input.Input.importV2Region()"
+-->
+ <JMenuItem text="isisfish.input.menu.importRegionSimulation" accelerator="accImportFromSimulation"/>
+<!--
+icon="imgImportFromSimulation" mnemonic="mnImportFromSimulation"
+ActionCommand="thread:input.Input.importRegionFromSimulation($fieldCurrentRegion)"
+-->
+ <JMenuItem text="isisfish.input.menu.exportRegion" accelerator="accExport"/>
+<!--
+icon="imgExport" mnemonic="mnExport"
+ActionCommand="thread:input.Input.exportRegion($RegionStorage)"
+origin="$RegionStorage"
+-->
+ <JMenuItem text="isisfish.input.menu.copyRegion" accelerator="accCopy"/>
+<!--
+icon="imgCopy" mnemonic="mnCopy"
+ActionCommand="thread:input.Input.copyRegion($RegionStorage)"
+origin="$RegionStorage"
+-->
+ <JSeparator/>
+ <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocaly" accelerator="accRemove"/>
+<!--
+icon="imgRemove" mnemonic="mnRemove"
+ActionCommand="thread:input.Input.removeRegion($RegionStorage, 'false')"
+origin="$RegionStorage"
+-->
+ <JSeparator/>
+ <JMenuItem name="miClose" text="isisfish.input.menu.close" accelerator="accOpen"/>
+<!--
+icon="imgClose" mnemonic="mnClose"
+ActionCommand="close"
+-->
+ </JMenu>
+ <JMenu text="isisfish.input.menu.server">
+<!--
+mnemonic="mnVCS"
+-->
+ <JMenuItem text="isisfish.input.menu.addRegion" accelerator="accAdd"/>
+<!--
+icon="imgAdd" mnemonic="mnAdd"
+ActionCommand="thread:input.Input.commitRegionInCVS($RegionStorage)"
+origin="not(isOnRemote($RegionStorage))"
+-->
+ <JMenuItem text="isisfish.input.menu.commit" accelerator="accCommitVCS"/>
+<!--
+icon="imgCommitVCS" mnemonic="mnCommitVCS"
+ActionCommand="thread:input.Input.commitRegionInCVS($RegionStorage)"
+origin="isOnRemote($RegionStorage)"
+-->
+ <JSeparator/>
+ <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocalyRemotely" accelerator="accRemove"/>
+<!--
+icon="imgRemove" mnemonic="mnRemove"
+origin="isOnRemote($RegionStorage)"
+ActionCommand="thread:input.Input.removeRegion($RegionStorage, 'true')"
+-->
+ </JMenu>
+ <JMenu text="isisfish.input.menu.help">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem name="miAbout" text="isisfish.input.menu.about" accelerator="accAbout"/>
+<!--
+icon="imgAbout" mnemonic="mnAbout" ActionCommand="about"
+-->
+ </JMenu>
+ </JMenuBar>
+
+ <JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+ <JPanel layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Input.xgl")}'>
+ <JTextField constraints='"fieldNewRegion"' id="fieldNewRegion">
+<!--
+ <DocumentEvents onModified="refreshView($JButtonNewRegion)"/>
+-->
+
+ </JTextField>
+
+ <JButton constraints='"JButtonNewRegion"' id="JButtonNewRegion" text="isisfish.input.newRegion"/>
+<!--
+ origin="$fieldNewRegion/text != ''"
+ actionCommand="input.Input.newRegion($inputPane, $fieldCurrentRegion, $fieldNewRegion/text)"
+-->
+
+ <JComboBox constraints='"fieldCurrentRegion"' id="fieldCurrentRegion">
+<!--
+ origin="$RegionStorage/name" firstNull="true"
+ actionCommand="thread:input.Input.loadRegion($inputPane, $fieldCurrentRegion/selectedItem)"
+-->
+
+<!--
+<ComboBoxModel origin="fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames()"/>
+-->
+ </JComboBox>
+
+ <JPanel constraints='"tree"' layout='{new BorderLayout()}'>
+
+<!--
+ <hidablePanel id="treePanel" name="treePanel" origin="$RegionStorage" layout='{new BorderLayout()}'>
+-->
+ <JScrollPane>
+ <JTree id="tree" name="tree">
+<!-- Fixme : NestedTreeModel
+ <NestedTreeModel id="treeModel">
+ <TreeNode id="rootTreeNode" origin="$FisheryRegion">
+ <TreeNode id="cellsTreeNode" name="Cells" type="fr.ifremer.isisfish.entities.Cell">
+ <TreeNode treeOrigin="../.." childsPropertyName="cell"/>
+ </TreeNode>
+ <TreeNode id="zonesTreeNode" name="Zones" type="fr.ifremer.isisfish.entities.Zone">
+ <TreeNode id="zoneNode" treeOrigin="../.." childsPropertyName="zone"/>
+ </TreeNode>
+ <TreeNode name="Ports" type="fr.ifremer.isisfish.entities.Port">
+ <TreeNode treeOrigin="../.." childsPropertyName="port"/>
+ </TreeNode>
+ <TreeNode name="Species" type="fr.ifremer.isisfish.entities.Species">
+ <TreeNode treeOrigin="../.." childsPropertyName="species">
+ <TreeNode name="Populations" type="fr.ifremer.isisfish.entities.Population">
+ <TreeNode treeOrigin="../.." childsPropertyName="getPopulation(.)"/>
+ </TreeNode>
+ </TreeNode>
+ </TreeNode>
+ <TreeNode name="Gears" type="fr.ifremer.isisfish.entities.Gear">
+ <TreeNode treeOrigin="../.." childsPropertyName="gear"/>
+ </TreeNode>
+ <TreeNode name="Metiers" type="fr.ifremer.isisfish.entities.Metier">
+ <TreeNode treeOrigin="../.." childsPropertyName="metier"/>
+ </TreeNode>
+ <TreeNode name="TripTypes" type="fr.ifremer.isisfish.entities.TripType">
+ <TreeNode treeOrigin="../.." childsPropertyName="tripType"/>
+ </TreeNode>
+ <TreeNode name="VesselTypes" type="fr.ifremer.isisfish.entities.VesselType">
+ <TreeNode treeOrigin="../.." childsPropertyName="vesselType"/>
+ </TreeNode>
+ <TreeNode name="SetOfVessels" type="fr.ifremer.isisfish.entities.SetOfVessels">
+ <TreeNode treeOrigin="../.." childsPropertyName="setOfVessels"/>
+ </TreeNode>
+ <TreeNode name="Strategies" type="fr.ifremer.isisfish.entities.Strategy">
+ <TreeNode treeOrigin="../.." childsPropertyName="strategy"/>
+ </TreeNode>
+ </TreeNode>
+ </NestedTreeModel>
+
+ <TreeSelectionEvents id="treeSelectionListener"
+ onValueChanged="input.Input.treeSelectionChanged($inputPane, $tree)"/>
+
+ <TreeRenderer>
+ <DefaultTreeRenderer childsPropertyName="name"/>
+ <DefaultTreeRenderer type="java.lang.String"/>
+ </TreeRenderer>
+-->
+ <!-- used to update Tree when IsisContext is modified -->
+<!--
+ <TopiaEntityEvents id="updateTree" origin="$TopiaContext"
+ commit="input.Input.updateTreeEntityCommit($tree, $treeModel, $e/initialEvent)"
+ rollback="input.Input.updateTreeEntityRollback($tree, $treeModel, $e/initialEvent)"
+ entityRemoved="input.Input.updateTreeEntityRemoved($tree, $treeModel, $e/initialEvent)"/>
+
+-->
+ </JTree>
+ </JScrollPane>
+<!--
+ </hidablePanel>
+-->
+ </JPanel>
+ </JPanel>
+ <JPanel id="inputPane">
+
+<!-- Fixme : CardLayout
+layout='{new Cardlayout()}'
+-->
+ <JLabel id="emptyPanel" constraints='"emptyPanel"' horizontalAlignment="0"
+ text="isisfish.input.selectNodeTree"/>
+
+ <!--
+ + FisheryRegion
+ +-->
+ <JPanel constraints='"inputFisheryRegion"' id="inputFisheryRegion" layout='{new BorderLayout()}'>
+ <JSplitPane id="FisheryRegionTab" name="FisheryRegion"
+ oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/FisheryRegion.xml"/>
+-->
+ <JPanel id="fisheryRegionMapPanel" layout='{new BorderLayout()}'>
+<!--
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="fisheryRegionMapTool">
+ <OpenMapToolSet id="fisheryRegionMapToolSet" origin="$fisheryRegionMap"/>
+ </OpenMapToolPanel>
+ <OpenMap id="fisheryRegionMap" origin="$FisheryRegion"
+ selectionMode="0">
+ <OpenMapEvents id="fisheryRegionMapEvents" mouseMode="Nav"/>
+ </OpenMap>
+-->
+
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueCells"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Cells')"
+-->
+ </JPanel>
+
+ <!--
+ + Cell
+ +-->
+ <JPanel constraints='"inputCell"' layout='{new BorderLayout()}'>
+ <JSplitPane id="CellTab" name="Cells"
+ oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/Cell.xml" id="inputCell"/>
+-->
+ <JPanel id="cellMapPanel" layout='{new BorderLayout()}'>
+<!--
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="cellMapTool">
+ <OpenMapToolSet id="cellMapToolSet" origin="$cellMap"/>
+ </OpenMapToolPanel>
+ <OpenMap constraints='"BorderLayout.CENTER"' id="cellMap"
+ origin="$FisheryRegion" selected="$Cell" selectionMode="1">
+ <OpenMapEvents id="cellMapEvents" mouseMode="Select"
+ onMouseClicked="UIHelper.setTreeSelection($cellMap/selectedCells[1])"/>
+ </OpenMap>
+-->
+
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueZones"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Zones')"
+-->
+ </JPanel>
+
+ <!--
+ + Zone
+ +-->
+ <JPanel constraints='"inputZone"' layout='{new BorderLayout()}'>
+ <JSplitPane id="ZoneTab" name="Zones"
+ oneTouchExpandable="true" dividerLocation="200" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/Zone.xml" id="inputZone"/>
+-->
+ <JPanel id="zoneMapPanel" layout='{new BorderLayout()}'>
+<!-- Fixme : OpenMapToolPanel, OpenMap
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="zoneMapTool">
+ <OpenMapToolSet id="zoneMapToolSet" origin="$zoneMap"/>
+ </OpenMapToolPanel>
+ <OpenMap id="zoneMap" origin="$FisheryRegion" selected="$Zone/cell"
+ selectionMode="2">
+ <OpenMapEvents id="zoneMapEvents" mouseMode="Select"
+ onMouseClicked="Update($zoneMap/selectedCells, $Zone/cell, refreshView($zoneCells))"/>
+ </OpenMap>
+-->
+
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continuePorts"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Ports')"
+-->
+ </JPanel>
+
+ <!--
+ + Port
+ +-->
+ <JPanel constraints='"inputPort"' layout='{new BorderLayout()}'>
+ <JSplitPane id="PortTab" name="Ports"
+ oneTouchExpandable="true" dividerLocation="270" orientation="VERTICAL">
+<!--
+ <xpanel xml="input/Port.xml" id="inputPort"/>
+-->
+ <JPanel id="portMapPanel" layout='{new BorderLayout()}'>
+<!-- Fixme : OpenMapToolPanel, OpenMap
+ <OpenMapToolPanel constraints='"BorderLayout.NORTH"' id="portMapTool">
+ <OpenMapToolSet id="portMapToolSet" origin="$portMap"/>
+ </OpenMapToolPanel>
+ <OpenMap id="portMap" origin="$FisheryRegion" selected="$Port/cell"
+ selectionMode="1">
+ <OpenMapEvents id="portMapEvents" mouseMode="Select"
+ onMouseClicked="Update($portMap/selectedCells[1], $Port/cell, refreshView($portCell))"/>
+ </OpenMap>
+-->
+ </JPanel>
+ </JSplitPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueSpecies"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Species')"
+-->
+ </JPanel>
+
+ <!--
+ + Species
+ +-->
+ <JPanel id="SpeciesTab" constraints='"inputSpecies"' layout='{new BorderLayout()}'>
+<!--
+<xpanel id="inputSpecies" name="Species" xml="input/Species.xml"/>
+-->
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continuePopulations"/>
+<!--
+ actionCommand="UIHelper.setTreeSelectionFirstChild($Species)"
+-->
+ </JPanel>
+
+ <!--
+ + Population
+ +-->
+ <JPanel constraints='"inputPopulation"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="PopulationTab" name="Populations">
+<!--
+ <xpanel xml="input/PopulationBasics.xml" id="inputPopulationBasics"/>
+ <xpanel xml="input/PopulationGroup.xml" id="inputPopulationGroup"/>
+ <xpanel xml="input/PopulationEquation.xml" id="inputPopulationEquation"/>
+ <xpanel xml="input/PopulationZones.xml" id="inputPopulationZones"/>
+ <xpanel xml="input/PopulationSeasons.xml" id="inputPopulationSeasonInfo"/>
+ <xpanel xml="input/PopulationCapturability.xml" id="inputCapturability"/>
+ <xpanel xml="input/PopulationRecruitment.xml" id="inputPopulationRecruitment"/>
+ <xpanel xml="input/PopulationMigration.xml" id="inputMigration"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueGears"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Gears')"
+-->
+ </JPanel>
+
+ <!--
+ + Gear
+ +-->
+ <JPanel constraints='"inputGear"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="GearTab" name="Gear">
+<!--
+ <xpanel xml="input/Gear.xml" id="inputGear"/>
+ <xpanel xml="input/Selectivity.xml" id="inputSelectivity"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueMetiers"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('Metiers')"
+-->
+ </JPanel>
+
+ <!--
+ + Metier
+ +-->
+ <JPanel constraints='"inputMetier"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="MetierTab" name="Metier" >
+<!--
+ <xpanel xml="input/Metier.xml" id="inputMetier"/>
+ <xpanel xml="input/MetierSeasonInfoZone.xml" id="inputMetierSeasonInfoZone"/>
+ <xpanel xml="input/MetierSeasonInfoSpecies.xml" id="inputMetierSeasonInfoSpecies"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueTripTypes"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('TripTypes')"
+-->
+ </JPanel>
+
+ <!--
+ + TripType
+ +-->
+ <JPanel id="TripTypeTab" constraints='"inputTripType"' layout='{new BorderLayout()}'>
+<!--
+ <xpanel xml="input/TripType.xml" id="inputTripType" name="TripType"/>
+-->
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueVesselTypes"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('VesselTypes')"
+-->
+ </JPanel>
+
+ <!--
+ + VesselType
+ +-->
+ <JPanel id="VesselTypeTab" constraints='"inputVesselType"' layout='{new BorderLayout()}'>
+<!--
+ <xpanel xml="input/VesselType.xml" id="inputVesselType" name="VesselType"/>
+-->
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueSetOfVessels"/>
+<!--
+ actionCommand="UIHelper.setTreeSelection('SetOfVessels')"
+-->
+ </JPanel>
+
+ <!--
+ + SetOfVessels
+ +-->
+ <JPanel constraints='"inputSetOfVessels"' layout='{new BorderLayout()}'>
+ <JTabbedPane id="SetOfVesselsTab" name="SetOfVessels">
+<!--
+ <xpanel xml="input/SetOfVessels.xml" id="inputSetOfVessels"/>
+ <xpanel xml="input/EffortDescription.xml" id="inputEffortDescription"/>
+-->
+ </JTabbedPane>
+
+ <JButton constraints='"BorderLayout.SOUTH"' text="isisfish.input.continueStrategies"/>
+<!--
+
+ actionCommand="UIHelper.setTreeSelection('Strategies')"
+-->
+ </JPanel>
+
+ <!--
+ + Strategy
+ +-->
+ <JTabbedPane constraints='"inputStrategy"' id="StrategyTab" name="Strategy" >
+<!--
+ <xpanel xml="input/Strategy.xml" id="inputStrategy"/>
+ <xpanel xml="input/StrategyMonthInfo.xml" id="inputStrategyMonthInfo"/>
+-->
+ </JTabbedPane>
+
+ </JPanel>
+ </JSplitPane>
+
+<!--
+<xpanel constraints='"BorderLayout.SOUTH"' xml="StatusBar.xml"/>
+-->
+
+
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Metier2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,74 @@
+<JPanel name="isisfish.metier.title" constraints='"inputMetierCaract"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Metier.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Metier" context="current" source="Metier"/>
+-->
+
+ <JLabel constraints='"labelMetierName"' text="isisfish.metier.name"/>
+ <JTextField constraints='"fieldMetierName"' id="fieldMetierName">
+<!-- Fixme : DocumentEvents
+ origin="$Metier/name"
+<DocumentEvents onModified="Update($fieldMetierName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelMetierGear"' text="isisfish.common.gear"/>
+ <JComboBox constraints='"fieldMetierGear"' id="fieldMetierGear">
+<!-- Fixme : ComboBoxModel
+origin="$Metier/gear" renderer="name" firstNull="true"
+actionCommand="update($fieldMetierGear/selectedItem, $Metier/gear)"
+<ComboBoxModel origin="$FisheryRegion/gear"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelMetierParam"' text="isisfish.metier.rangeValues"/>
+ <JTextField constraints='"fieldMetierParam"' id="fieldMetierParam">
+<!-- Fixme : DocumentEvents
+origin="$Metier/gearParameterValue"
+<DocumentEvents onModified="Update($fieldMetierParam/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelMetierComment"' text="isisfish.metier.comments"/>
+ <JScrollPane constraints='"fieldMetierComment"'>
+ <JTextArea id="fieldMetierComment">
+<!-- Fixme : DocumentEvents
+ origin="$Metier/comment"
+<DocumentEvents onModified="Update($fieldMetierComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelMetierButtonAction" constraints='"panelMetierButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.Input.create("Metier")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Metier", $Metier);refreshView($inputMetier)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Metier", $Metier);refreshView($inputMetier)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Metier"
+actionCommand="input.Input.remove($Metier)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,115 @@
+<JPanel name="isisfish.metierSeasonInfoSpecies.title" constraints='"inputMetierSeasonInfoSpecies"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpecies.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelMetierSeasonInfo"' text="isisfish.metierSeasonInfoSpecies.selectSeason"/>
+ <JComboBox constraints='"fieldMetierSeasonInfo"' id="fieldMetierSeasonInfo">
+<!-- Fixme : ComboBoxModel
+firstNull="true"
+origin="$MetierSeasonInfo" renderer="concat(firstMonth, '-', lastMonth)"
+actionCommand="input.Input.selectEntity('MetierSeasonInfo', $fieldMetierSeasonInfo/selectedItem)"
+<ComboBoxModel origin="getMetierSeasonInfo($Metier)"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelTargetSpecies"' text="isisfish.metierSeasonInfoSpecies.selectSpecies"/>
+ <JComboBox constraints='"fieldTargetSpecies"' id="fieldTargetSpecies">
+<!-- Fixme : ComboBoxModel
+firstNull="true" renderer="name"
+<ComboBoxModel origin="$FisheryRegion/species"/>
+-->
+
+ </JComboBox>
+
+ <!--
+ | TargetFactor equation
+ +-->
+ <JLabel constraints='"labelTargetFactorEquation"' text="isisfish.metierSeasonInfoSpecies.targetFactor"/>
+
+ <JComboBox constraints='"fieldTargetFactorEquation"' id="fieldTargetFactorEquation">
+<!-- Fixme : ComboBoxModel
+renderer="name" firstNull="true"
+actionCommand="update($fieldTargetFactorEquation/selectedItem/content, $fieldTargetFactorScript/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "TargetFactor")'/>
+-->
+
+ </JComboBox>
+
+ <!-- TODO change Java to $Langage/selectedItem when we can change language -->
+ <JButton constraints='"buttonTargetFactorSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveAsModel("TargetFactor", "Java", $fieldTargetFactorScript/text);refreshView($fieldTargetFactorEquation)'
+-->
+
+ <JButton constraints='"buttonTargetFactorEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+actionCommand='input.Input.openEditor("TargetFactor","new","fr.ifremer.isisfish.equation.TargetSpeciesTargetFactorEquation",$fieldTargetFactorScript/text,$fieldTargetFactorScript)'
+-->
+
+ <JScrollPane constraints='"fieldTargetFactorScript"'>
+<!--
+<editor id="fieldTargetFactorScript" askIfNotSaved="false"
+origin="org.codelutin.util.FileUtil.getTempFile('', '.java')">
+</editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | PrimaryCatch
+ +-->
+ <JCheckBox constraints='"fieldPrimaryCatch"' id="fieldPrimaryCatch"
+ text="isisfish.metierSeasonInfoSpecies.mainSpecies">
+ </JCheckBox>
+
+ <!--
+ | Add
+ +-->
+ <JButton constraints='"buttonMetierSpeciesAddTargetSpecies"' id="buttonMetierSpeciesAddTargetSpecies"
+ text="isisfish.common.add"/>
+<!--
+actionCommand="input.InputMetier.addTargetSpecies($fieldMetierSeasonInfo/selectedItem, $fieldTargetSpecies/selectedItem, $fieldTargetFactorScript/text, $fieldPrimaryCatch/selected)"
+-->
+
+ <JScrollPane constraints='"tableTargetSpecies"'>
+ <JTable id="tableTargetSpecies">
+<!--
+ <tableModel origin="getSpeciesTargetSpecies($MetierSeasonInfo)">
+ <column title="Species" property="species" renderer="name"/>
+ <column title="Target factor" property="targetFactorEquation" renderer="name" editable="true">
+ <tableColumnEditor><EquationTableEditor/></tableColumnEditor>
+ </column>
+ <column title="Main species for the metier" property="primaryCatch"
+ type="boolean" editable="true"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonMetierSpeciesRemoveTargetSpecies"' id="buttonMetierSpeciesRemoveTargetSpecies"
+ text="isisfish.common.remove"/>
+<!--
+actionCommand="input.InputMetier.removeTargetSpecies(getSpeciesTargetSpecies($MetierSeasonInfo)[$tableTargetSpecies/selectedRow + 1])"
+-->
+
+ <JPanel id="panelMetierSeasonInfoSpeciesButtonAction" constraints='"panelMetierSeasonInfoSpeciesButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoSpecies)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoSpecies)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,84 @@
+<JPanel name="isisfish.metierSeasonInfoZone.title" constraints='"inputMetierSeasonInfoZone"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/MetierSeasonInfoZone.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="MetierSeasonInfo" context="current" source="MetierSeasonInfo"/>
+-->
+ <JLabel constraints='"labelMetierSeasonChoice"' text="isisfish.metierSeasonInfoZone.selectSeason"/>
+ <JComboBox constraints='"fieldMetierSeasonChoice"' id="fieldMetierSeasonChoice">
+<!--
+firstNull="true"
+origin="$MetierSeasonInfo" renderer="concat(firstMonth, '-', lastMonth)"
+actionCommand="input.Input.selectEntity('MetierSeasonInfo', $fieldMetierSeasonChoice/selectedItem)"
+<ComboBoxModel origin="getMetierSeasonInfo($Metier)"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelMetierSeason"' text="isisfish.metierSeasonInfoZone.season"/>
+<!-- Fixme : SeasonIntervalPanel
+ <SeasonIntervalPanel constraints='"displayMetierSeason"' id="displayMetierSeason"
+ origin="$MetierSeasonInfo">
+ <PropertyChangeEvents onChange="Update" propertyName="first">
+ <UpdateOrigin source="$displayMetierSeason/model/first"
+ target="$MetierSeasonInfo/firstMonth"/>
+ </PropertyChangeEvents>
+ <PropertyChangeEvents onChange="Update" propertyName="last">
+ <UpdateOrigin source="$displayMetierSeason/model/last"
+ target="$MetierSeasonInfo/lastMonth"/>
+ </PropertyChangeEvents>
+ </SeasonIntervalPanel>
+-->
+
+ <JLabel constraints='"labelMetierZone"' text="isisfish.common.zone"/>
+ <JScrollPane constraints='"fieldMetierZone"'>
+ <JList id="metierZones">
+<!-- Fixme : ListModel and ListSelectionEvents
+origin="$MetierSeasonInfo/zone" renderer="name"
+<ListModel origin="$FisheryRegion/zone"/>
+<ListSelectionEvents onValueChanged="Update($metierZones/selectedValues)"/>
+-->
+
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelMetierSeasonZoneComment"' text="isisfish.metierSeasonInfoZone.comments"/>
+ <JScrollPane constraints='"fieldMetierSeasonZoneComment"'>
+ <JTextArea id="fieldMetierSeasonZoneComment">
+<!-- Fixme : DocumentEvents
+origin="$MetierSeasonInfo/seasonZoneComment"
+<DocumentEvents onModified="Update($fieldMetierSeasonZoneComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelMetierSeasonInfoZoneButtonAction" constraints='"panelMetierSeasonInfoZoneButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.InputMetier.createSeasonInfo($Metier)'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoZone)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("MetierSeasonInfo", $MetierSeasonInfo);refreshView($inputMetierSeasonInfoZone)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$MetierSeasonInfo"
+actionCommand="input.InputMetier.removeSeasonInfo($Metier, $MetierSeasonInfo)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationBasics2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,159 @@
+<JPanel name="isisfish.populationBasics.title" constraints='"inputPopulationBasics"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationBasics.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Population" context="current" source="Population"/>
+-->
+ <JLabel constraints='"labelPopulationBasicsName"' text="isisfish.populationBasics.name"/>
+ <JTextField constraints='"fieldPopulationBasicsName"' id="fieldPopulationBasicsName">
+<!-- Fixme : DocumentEvents
+origin="$Population/name"
+<DocumentEvents onModified="Update($fieldPopulationBasicsName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPopulationBasicsGeographicID"' text="isisfish.populationBasics.geographicID"/>
+ <JTextField constraints='"fieldPopulationBasicsGeographicID"' id="fieldPopulationBasicsGeographicID">
+<!-- Fixme : DocumentEvents
+origin="$Population/geographicId"
+<DocumentEvents onModified="Update($fieldPopulationBasicsGeographicID/text)"/>
+-->
+ </JTextField>
+
+ <!-- TODO radioButton dynamique en age / longueur -->
+
+ <JLabel constraints='"labelPopulationBasicsNbClasses"' text="isisfish.populationBasics.numberGroup"/>
+ <JTextField constraints='"fieldPopulationBasicsNbClasses"' id="fieldPopulationBasicsNbClasses" editable="false"/>
+<!--
+origin="sizePopulationGroup($Population)"
+-->
+
+ <JButton constraints='"buttonPopulationBasicsCreateClasses"'
+ id="buttonPopulationBasicsCreateClasses" text="isisfish.populationBasics.recreateClasses"/>
+<!--
+actionCommand="input.InputPopulation.wizardGroupOpen($Population)"
+-->
+
+ <JLabel constraints='"labelPopulationBasicsMatureClass"' text="isisfish.populationBasics.maturityGroup"/>
+ <JComboBox constraints='"fieldPopulationBasicsMatureClass"'
+ id="fieldPopulationBasicsMatureClass">
+<!--
+firstNull="true"
+origin="$Population/maturityGroup" renderer="concat(population/name, ' - ', id)"
+actionCommand="update($fieldPopulationBasicsMatureClass/selectedItem, $Population/maturityGroup)"
+<ComboBoxModel origin="$Population/populationGroup"/>
+-->
+ </JComboBox>
+
+ <JCheckBox constraints='"fieldPopulationBasicsPlusGroup"' id="fieldPopulationBasicsPlusGroup">
+<!-- Fixme : MouseEvents
+origin="$Population/plusGroup" text="isisfish.populationBasics.plusGroup"
+<MouseEvents onClicked="Update($fieldPopulationBasicsPlusGroup/selected)"/>
+-->
+ </JCheckBox>
+
+ <JTable constraints='"tableAgeLength"'>
+<!-- Fixme : tableModel
+ layDown="true"
+ <tableModel origin="$Population/populationGroup">
+ <column title="Age" property="age"/>
+ <column title="Length" property="length"/>
+ </tableModel>
+-->
+ </JTable>
+
+ <JLabel constraints='"labelPopulationBasicsGrowth"' text="isisfish.populationBasics.growth"/>
+ <JComboBox constraints='"fieldPopulationBasicsGrowth"' id="fieldPopulationBasicsGrowth">
+<!--
+origin="$Population/growth" renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationBasicsGrowth/selectedItem/content, $fieldScriptPopulationBasicsGrowth/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Growth")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationBasicsGrowthSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveEquationAsModel($Population/growth);refreshView($fieldPopulationBasicsGrowth)'
+-->
+
+ <JButton constraints='"buttonPopulationBasicsGrowthEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor and DocumentEvents
+actionCommand='input.Input.openEditor($Population/growth/category,$Population/growth/name,$Population/growth/javaInterface,$Population/growth/content,$fieldScriptPopulationBasicsGrowth)'
+ <editor constraints='"fieldScriptPopulationBasicsGrowth"' askIfNotSaved="false"
+ id="fieldScriptPopulationBasicsGrowth"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/growth/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationGrowth($Population, $fieldScriptPopulationBasicsGrowth/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ <JLabel constraints='"labelPopulationBasicsGrowthReverse"' text="isisfish.populationBasics.growthReverse"/>
+ <JComboBox constraints='"fieldPopulationBasicsGrowthReverse"' id="fieldPopulationBasicsGrowthReverse">
+<!-- Fixme : ComboBoxModel
+origin="$Population/growthReverse" renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationBasicsGrowthReverse/selectedItem/content, $fieldScriptPopulationBasicsGrowthReverse/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "GrowthReverse")'/>
+-->
+ </JComboBox>
+ <JButton constraints='"buttonPopulationBasicsGrowthReverseSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveEquationAsModel($Population/growthReverse);refreshView($fieldPopulationBasicsGrowthReverse)'
+-->
+
+ <JButton constraints='"buttonPopulationBasicsGrowthReverseEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor
+actionCommand='input.Input.openEditor($Population/growthReverse/category,$Population/growthReverse/name,$Population/growthReverse/javaInterface,$Population/growthReverse/content,$fieldScriptPopulationBasicsGrowthReverse)'
+
+ <editor constraints='"fieldScriptPopulationBasicsGrowthReverse"' askIfNotSaved="false" id="fieldScriptPopulationBasicsGrowthReverse" origin="org.codelutin.util.FileUtil.getTempFile($Population/growthReverse/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationGrowthReverse($Population, $fieldScriptPopulationBasicsGrowthReverse/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+ <JLabel constraints='"labelPopulationBasicsComment"' text="isisfish.population.comments"/>
+ <JScrollPane constraints='"fieldPopulationBasicsComment"'>
+ <JTextArea id="fieldPopulationBasicsComment">
+<!-- Fixme : DocumentEvents
+origin="$Population/comment"
+<DocumentEvents onModified="Update($fieldPopulationBasicsComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationBasicsButtonAction" constraints='"panelPopulationBasicsButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+actionCommand='input.InputPopulation.create()'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Population", $Population);refreshView($inputPopulationBasics)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationBasics)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Population"
+actionCommand="input.Input.remove($Population)"
+-->
+
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationCapturability2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,43 @@
+<JPanel name="isisfish.populationCapturability.title" constraints='"inputPopulationCapturability"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationCapturability.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelPopulationCapturability"' text="isisfish.populationCapturability.selectCoefficient"/>
+
+<!-- Fixme : MatrixPanel and MatrixPanelEvents
+ <MatrixPanel constraints="fieldPopulationCapturability" id="fieldPopulationCapturability"
+ origin="copy($Population/capturability)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldPopulationCapturability/matrix), $Population/capturability)"/>
+ </MatrixPanel>
+-->
+
+ <JLabel constraints='"labelPopulationCapturabilityComment"' text="isisfish.populationCapturability.comments"/>
+ <JScrollPane constraints='"fieldPopulationCapturabilityComment"'>
+ <JTextArea id="fieldPopulationCapturabilityComment">
+<!-- Fixme : DocumentEvents
+ origin="$Population/capturabilityComment"
+ <DocumentEvents onModified="Update($fieldPopulationCapturabilityComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationCapturabilityButtonAction" constraints='"panelPopulationCapturabilityButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Population", $Population);refreshView($inputCapturability)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputCapturability)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationEquation2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,138 @@
+<JPanel name="isisfish.populationEquation.title" constraints='"inputPopulationEquation"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationEquation.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <!--
+ |
+ | NaturalDeathRate
+ |
+ +-->
+
+ <JLabel constraints='"labelPopulationNaturalDeathRate"' text="isisfish.populationEquation.naturalDeathRate"/>
+ <JComboBox constraints='"fieldPopulationNaturalDeathRate"' id="fieldPopulationNaturalDeathRate">
+<!-- Fixme : ComboBoxModel
+origin="$Population/naturalDeathRate" renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationNaturalDeathRate/selectedItem/content, $fieldScriptPopulationNaturalDeathRate/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "NaturalDeathRate")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationNaturalDeathRateSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveEquationAsModel($Population/naturalDeathRate);refreshView($fieldPopulationNaturalDeathRate)'
+-->
+
+ <JButton constraints='"buttonPopulationNaturalDeathRateEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($Population/naturalDeathRate/category,$Population/naturalDeathRate/name,$Population/naturalDeathRate/javaInterface,$Population/naturalDeathRate/content,$fieldScriptPopulationNaturalDeathRate)'
+-->
+<!-- Fixme : editor
+ <editor constraints='"fieldScriptPopulationNaturalDeathRate"' askIfNotSaved="false"
+ id="fieldScriptPopulationNaturalDeathRate"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/naturalDeathRate/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationNaturalDeathRate($Population, $fieldScriptPopulationNaturalDeathRate/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+ <!--
+ |
+ | MeanWeight
+ |
+ +-->
+
+ <JLabel constraints='"labelPopulationMeanWeight"' text="isisfish.populationEquation.meanWeight"/>
+ <JComboBox constraints='"fieldPopulationMeanWeight"' id="fieldPopulationMeanWeight">
+<!-- Fixme : ComboBoxModel
+ origin="$Population/meanWeight" renderer="name" firstNull="true"
+ actionCommand="update($fieldPopulationMeanWeight/selectedItem/content, $fieldScriptPopulationMeanWeight/text)
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "MeanWeight")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMeanWeightSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+actionCommand='input.Input.saveEquationAsModel($Population/meanWeight);refreshView($fieldPopulationMeanWeight)'
+-->
+
+ <JButton constraints='"buttonPopulationMeanWeightEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($Population/meanWeight/category,$Population/meanWeight/name,$Population/meanWeight/javaInterface,$Population/meanWeight/content,$fieldScriptPopulationMeanWeight)'
+-->
+<!-- Fixme : editor
+ <editor constraints='"fieldScriptPopulationMeanWeight"' askIfNotSaved="false"
+ id="fieldScriptPopulationMeanWeight"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/meanWeight/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationMeanWeight($Population, $fieldScriptPopulationMeanWeight/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+ <!--
+ |
+ | Price
+ |
+ +-->
+
+ <JLabel constraints='"labelPopulationPrice"' text="isisfish.populationEquation.price"/>
+ <JComboBox constraints='"fieldPopulationPrice"' id="fieldPopulationPrice">
+<!-- Fixme : ComboBoxModel
+ origin="$Population/price" renderer="name" firstNull="true"
+ actionCommand="update($fieldPopulationPrice/selectedItem/content, $fieldScriptPopulationPrice/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Price")'/>
+-->
+
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationPriceSaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveEquationAsModel($Population/price);refreshView($fieldPopulationPrice)'
+-->
+
+ <JButton constraints='"buttonPopulationPriceEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($Population/price/category,$Population/price/name,$Population/price/javaInterface,$Population/price/content,$fieldScriptPopulationPrice)'
+-->
+<!-- Fixme : editor
+ <editor constraints='"fieldScriptPopulationPrice"' askIfNotSaved="false"
+ id="fieldScriptPopulationPrice"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/price/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationPrice($Population, $fieldScriptPopulationPrice/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+
+ <!--
+ |
+ | Action button
+ |
+ +-->
+
+ <JPanel id="panelPopulationEquationButtonAction" constraints='"panelPopulationEquationButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.save("Population", $Population);refreshView($inputPopulationEquation)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationEquation)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationGroup2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,159 @@
+<JPanel name="isisfish.populationGroup.title" constraints='"inputPopulationGroup"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationGroup.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="PopulationGroup" context="current" source="PopulationGroup"/>
+-->
+
+ <JLabel constraints='"labelPopulationGroupPopulationGroup"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationGroupPopulationGroup"'>
+<!-- Fixme : ComboBoxModel
+ id="fieldPopulationGroupPopulationGroup" renderer="concat(population/name, ' - ', id)"
+ origin="$PopulationGroup" firstNull="true"
+ actionCommand="input.Input.selectEntity('PopulationGroup', $fieldPopulationGroupPopulationGroup/selectedItem)"
+ <ComboBoxModel origin="$Population/populationGroup"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelPopulationGroupMeanWeight"' text="isisfish.populationGroup.meanWeigth"/>
+ <JTextField constraints='"fieldPopulationGroupMeanWeight"' id="fieldPopulationGroupMeanWeight"/>
+<!--
+ origin="$PopulationGroup/meanWeight" editable="false"
+-->
+
+ <JLabel constraints='"labelPopulationGroupPrice"' text="isisfish.populationGroup.price"/>
+ <JTextField constraints='"fieldPopulationGroupPrice"' id="fieldPopulationGroupPrice"/>
+<!--
+ origin="$PopulationGroup/price" editable="false"
+-->
+ <JLabel constraints='"labelPopulationGroupNaturalDeathRate"' text="isisfish.populationGroup.naturalDeathRate"/>
+<!-- Fixme : matrixPanel
+ <matrixPanel constraints='"fieldPopulationGroupNaturalDeathRate"'
+ id="fieldPopulationGroupNaturalDeathRate"
+ origin="reduce(getSubMatrixOnSemantic($Population/naturalDeathRateMatrix, '0', util:array($PopulationGroup)))" />
+-->
+ <JLabel constraints='"labelPopulationGroupReproductionRate"' text="isisfish.populationGroup.reproductionRate"/>
+ <JTextField constraints='"fieldPopulationGroupReproductionRate"' id="fieldPopulationGroupReproductionRate">
+<!--
+origin="$PopulationGroup/reproductionRate"
+<DocumentEvents onModified="Update($fieldPopulationGroupReproductionRate/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPopulationGroupAge"' text="isisfish.populationGroup.age"/>
+ <JPanel constraints='"panelAge"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationGroup.xgl")}'>
+ <!--
+ | Pour les especes en age
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupAge"' layout="BorderLayout"
+ origin="$PopulationGroup/population/species/ageGroupType">
+-->
+
+ <JTextField constraints='"fieldPopulationGroupAge"' id="fieldPopulationGroupAge">
+<!-- Fixme : DocumentEvents
+origin="$PopulationGroup/age"
+<DocumentEvents onModified="Update($fieldPopulationGroupAge/text)"/>
+-->
+ </JTextField>
+<!--
+ </hidablePanel>
+-->
+ <!--
+ | Pour les especes en longueur
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupAgeNotEditable"' layout='{new BorderLayout()}'
+ origin="not(getAgeGroupType($PopulationGroup/population/species))">
+-->
+ <JTextField constraints='"fieldPopulationGroupAge"'/>
+<!--
+origin="$PopulationGroup/age" editable="false"
+-->
+<!--
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelPopulationGroupLength"' text="isisfish.populationGroup.length"/>
+ <JPanel constraints='"panelLength"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationGroup.xgl")}'>
+ <!--
+ | Pour les especes en age
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupLength"' layout="BorderLayout"
+ origin="$PopulationGroup/population/species/ageGroupType">
+-->
+ <JTextField constraints='"fieldPopulationGroupLength"' id="fieldPopulationGroupLength"/>
+<!--
+origin="$PopulationGroup/length" editable="false"
+-->
+<!--
+ </hidablePanel>
+-->
+ <!--
+ | Pour les especes en longueur
+ +-->
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupMinLength"' layout="BorderLayout"
+ origin="not(getAgeGroupType($PopulationGroup/population/species))">
+-->
+ <JTextField id="fieldPopulationGroupMinLength">
+<!-- Fixeme : DocumentEvents
+ origin="$PopulationGroup/minLength" toolTipText="minimum length"
+ <DocumentEvents onModified="Update($fieldPopulationGroupMinLength/text)"/>
+-->
+
+ </JTextField>
+<!--
+ </hidablePanel>
+-->
+
+<!--
+ <hidablePanel constraints='"fieldPopulationGroupMaxLength"' layout="BorderLayout"
+ origin="not(getAgeGroupType($PopulationGroup/population/species))">
+-->
+ <JTextField id="fieldPopulationGroupMaxLength">
+<!-- Fixme : DocumentEvents
+ origin="$PopulationGroup/maxLength" toolTipText="maximum length"
+ <DocumentEvents onModified="Update($fieldPopulationGroupMaxLength/text)"/>
+-->
+ </JTextField>
+<!--
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelPopulationGroupComment"' text="isisfish.populationGroup.comments"/>
+ <JScrollPane constraints='"fieldPopulationGroupComment"'>
+ <JTextArea id="fieldPopulationGroupComment">
+<!-- Fixme : DocumentEvents
+origin="$PopulationGroup/comment"
+ <DocumentEvents onModified="Update($fieldPopulationGroupComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationGroupButtonAction" constraints='"panelPopulationGroupButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("PopulationGroup", $PopulationGroup);refreshView($inputPopulationGroup)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("PopulationGroup", $PopulationGroup);refreshView($inputPopulationGroup)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,68 @@
+<JPanel name="isisfish.populationMigration.title" constraints="inputPopulationMigration"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigration.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ import org.codelutin.widget.StatusBar;
+ </script>
+
+ <JLabel constraints='"labelPopulationMigrationSeasonChooser"' text="isisfish.populationMigration.selectSeason"/>
+ <JComboBox constraints='"fieldPopulationMigrationSeasonChooser"'
+ id="fieldPopulationMigrationSeasonChooser"/>
+<!--
+ firstNull="true"
+ origin="getPopulationSeasonInfo($Population)"
+ actionCommand="input.Input.selectEntityAndRefresh('PopulationSeasonInfo', $fieldPopulationMigrationSeasonChooser/selectedItem, '(fieldUseEquationMigration|hideablePanel)')"
+-->
+ <JCheckBox constraints='"fieldUseEquationMigration"' id="fieldUseEquationMigration" text="isisfish.populationMigration.useEquation">
+<!-- Fixme : ItemEvents
+origin="$PopulationSeasonInfo/useEquationMigration"
+ <ItemEvents onStateChanged="Update($fieldUseEquationMigration/selected, $PopulationSeasonInfo/useEquationMigration, refreshView($hideablePanel))"/>
+-->
+ </JCheckBox>
+
+ <JPanel id="hideablePanel" constraints='"hideablePanel"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigration.xgl")}'>
+<!--
+ <hidablePanel constraints="fieldUseEquation" layout="BorderLayout"
+ origin="getUseEquationMigration($PopulationSeasonInfo)">
+ <xpanel xml="input/PopulationMigrationEquation.xml"/>
+ </hidablePanel>
+
+ <hidablePanel constraints='"fieldUseMatrix"' layout="BorderLayout"
+ origin="not(getUseEquationMigration($PopulationSeasonInfo))">
+ <tabbedpane id="PopulationMigrationTabbed" constraints="PopulationMigrationTabbed">
+ <xpanel xml="input/PopulationMigrationMigration.xml"/>
+ <xpanel xml="input/PopulationMigrationImmigration.xml"/>
+ <xpanel xml="input/PopulationMigrationEmigration.xml"/>
+ </tabbedpane>
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelPopulationMigrationComment"' text="isisfish.populationMigration.comments"/>
+ <JScrollPane constraints='"fieldPopulationMigrationComment"'>
+ <JTextArea id="fieldPopulationMigrationComment">
+<!-- Fixme : DocumentEvents
+ origin="$Population/migrationComment"
+ <DocumentEvents onModified="Update($fieldPopulationMigrationComment/text)"/>
+-->
+
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationMigrationButtonAction" constraints='"panelPopulationMigrationButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigration.xgl")}'>
+
+ <JButton constraints='"buttonPopulationMigrationSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+actionCommand="input.Input.save('PopulationSeasonInfo', $PopulationSeasonInfo);refreshView($inputMigration)"
+-->
+
+ <JButton constraints='"buttonPopulationMigrationCancel"' text="isisfish.common.cancel"/>
+<!--
+origin="$EntityModified"
+actionCommand="input.Input.cancel('PopulationSeasonInfo', $PopulationSeasonInfo);refreshView($inputMigration)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,46 @@
+<JPanel name="isisfish.populationMigrationEmigration.title" constraints='"inputPopulationMigrationEmigration"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationEmigration.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="Emigration" context="current" source="Emigration"/>
+-->
+
+ <JLabel constraints='"labelPopulationMigrationEmigrationGroupChooser"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationMigrationEmigrationGroupChooser"'
+ id="fieldPopulationMigrationEmigrationGroupChooser"/>
+<!--
+ firstNull="true"
+ origin="getPopulationGroup($Population)"
+-->
+ <JLabel constraints='"labelPopulationMigrationEmigrationCoefficient"'
+ text="isisfish.populationMigrationEmigration.coefficient"/>
+ <JTextField constraints='"fieldPopulationMigrationEmigrationCoefficient"'
+ id="fieldPopulationMigrationEmigrationCoefficient"/>
+
+ <JLabel constraints='"labelPopulationMigrationEmigrationDepartureZoneChooser"'
+ text="isisfish.populationMigrationEmigration.departureZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationEmigrationDepartureZoneChooser"'
+ id="fieldPopulationMigrationEmigrationDepartureZoneChooser"/>
+<!--
+origin="getPopulationZone($Population)" firstNull="true"
+-->
+ <JButton constraints='"buttonAdd"' id="buttonPopulationMigrationEmigrationAdd"
+ text="isisfish.common.add"/>
+<!-- Fixme : MatrixPanel
+actionCommand="input.InputPopulation.addEmigration($fieldPopulationMigrationEmigrationGroupChooser/selectedItem, $fieldPopulationMigrationEmigrationDepartureZoneChooser/selectedItem, $fieldPopulationMigrationEmigrationCoefficient/text)"
+ <MatrixPanel constraints="PopulationMigrationEmigrationTable" id="PopulationMigrationEmigrationTable"
+ origin="copy($PopulationSeasonInfo/emigrationMatrix)" linearModel="true">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($PopulationMigrationEMigrationTable/matrix), $PopulationSeasonInfo/emigrationMatrix)"/>
+ </MatrixPanel>
+-->
+
+ <JButton constraints='"buttonRemove"'
+ id="buttonPopulationMigrationEmigrationRemove" text="isisfish.common.remove"/>
+<!--
+actionCommand="input.InputPopulation.removeEmigration($PopulationMigrationEmigrationTable)"
+-->
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationEquation2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,121 @@
+<JPanel name="isisfish.populationMigrationEquation.title" constraints='"inputPopulationMigrationEquation"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationEquation.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <!--
+ | Migration
+ + -->
+ <JLabel constraints='"labelPopulationMigrationEquationMigration"'
+ text="isisfish.common.migration"/>
+ <JComboBox constraints='"fieldPopulationMigrationEquationMigration"'
+ id="fieldPopulationMigrationEquationMigration">
+<!-- Fixme : ComboBoxModel
+ origin="$PopulationInfoSaison/migrationEquation"
+ renderer="name" firstNull="true"
+ actionCommand="update($fieldPopulationMigrationEquationMigration/selectedItem/content, $fieldScriptPopulationMigrationEquationMigration/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Migration")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMigrationEquationMigrationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+
+<!--
+actionCommand='input.Input.saveEquationAsModel($PopulationInfoSaison/migrationEquation);refreshView($fieldPopulationMigrationEquationMigration)'
+-->
+
+ <JButton constraints='"buttonPopulationMigrationEquationMigrationEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+actionCommand='input.Input.openEditor($PopulationSeasonInfo/migrationEquation/category,$PopulationSeasonInfo/migrationEquation/name,$PopulationSeasonInfo/migrationEquation/javaInterface,$PopulationSeasonInfo/migrationEquation/content,$fieldScriptPopulationMigrationEquationMigration)'
+-->
+
+ <JScrollPane constraints='"fieldScriptPopulationMigrationEquationMigration"'>
+<!-- Fixme : editor, DocumentEvents
+ <editor askIfNotSaved="false" id="fieldScriptPopulationMigrationEquationMigration"
+ origin="org.codelutin.util.FileUtil.getTempFile($PopulationSeasonInfo/migrationEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setMigrationEquationAsString($PopulationSeasonInfo, $fieldScriptPopulationMigrationEquationMigration/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | Emigration
+ + -->
+ <JLabel constraints='"labelPopulationMigrationEquationEmigration"' text="isisfish.common.emigration"/>
+ <JComboBox constraints='"fieldPopulationMigrationEquationEmigration"'
+ id="fieldPopulationMigrationEquationEmigration">
+<!-- Fixme : ComboBoxModel
+origin="$PopulationInfoSaison/emigrationEquation"
+renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationMigrationEquationEmigration/selectedItem/content, $fieldScriptPopulationMigrationEquationEmigration/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Emigration")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMigrationEquationEmigrationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+<!--
+
+ actionCommand='input.Input.saveEquationAsModel($PopulationInfoSaison/emigrationEquation);refreshView($fieldPopulationMigrationEquationEmigration)'
+-->
+
+ <JButton constraints='"buttonPopulationMigrationEquationEmigrationEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+actionCommand='input.Input.openEditor($PopulationSeasonInfo/emigrationEquation/category,$PopulationSeasonInfo/emigrationEquation/name,$PopulationSeasonInfo/emigrationEquation/javaInterface,$PopulationSeasonInfo/emigrationEquation/content,$fieldScriptPopulationMigrationEquationEmigration)'
+-->
+
+ <JScrollPane constraints='"fieldScriptPopulationMigrationEquationEmigration"'>
+<!-- Fixme : editor, DocumentEvents
+ <editor askIfNotSaved="false" id="fieldScriptPopulationMigrationEquationEmigration"
+ origin="org.codelutin.util.FileUtil.getTempFile($PopulationSeasonInfo/emigrationEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEmigrationEquationAsString($PopulationSeasonInfo, $fieldScriptPopulationMigrationEquationEmigration/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | Immigration
+ + -->
+ <JLabel constraints='"labelPopulationMigrationEquationImmigration"'
+ text="isisfish.common.immigration"/>
+ <JComboBox constraints='"fieldPopulationMigrationEquationImmigration"'
+ id="fieldPopulationMigrationEquationImmigration">
+<!--Fixme : ComboBoxModel
+origin="$PopulationInfoSaison/immigrationEquation"
+renderer="name" firstNull="true"
+actionCommand="update($fieldPopulationMigrationEquationImmigration/selectedItem/content, $fieldScriptPopulationMigrationEquationImmigration/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Immigration")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationMigrationEquationImmigrationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+<!--
+
+ actionCommand='input.Input.saveEquationAsModel($PopulationInfoSaison/immigrationEquation);refreshView($fieldPopulationMigrationEquationImmigration)'
+-->
+
+ <JButton constraints='"buttonPopulationMigrationEquationImmigrationEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor($PopulationSeasonInfo/immigrationEquation/category,$PopulationSeasonInfo/immigrationEquation/name,$PopulationSeasonInfo/immigrationEquation/javaInterface,$PopulationSeasonInfo/immigrationEquation/content,$fieldScriptPopulationMigrationEquationImmigration)'
+-->
+ <JScrollPane constraints='"fieldScriptPopulationMigrationEquationImmigration"'>
+<!-- Fixme : editor, DocumentEvents
+ <editor askIfNotSaved="false" id="fieldScriptPopulationMigrationEquationImmigration"
+ origin="org.codelutin.util.FileUtil.getTempFile($PopulationSeasonInfo/immigrationEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setImmigrationEquationAsString($PopulationSeasonInfo, $fieldScriptPopulationMigrationEquationImmigration/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+ </JScrollPane>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,43 @@
+<JPanel name="isisfish.populationMigrationImmigration.title" constraints='"inputPopulationMigrationImmigration"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationImmigration.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Immigration" context="current" source="Immigration"/>
+-->
+ <JLabel constraints='"labelPopulationMigrationImmigrationGroupChooser"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationMigrationImmigrationGroupChooser"'
+ id="fieldPopulationMigrationImmigrationGroupChooser"/>
+<!--
+origin="getPopulationGroup($Population)" firstNull="true"
+-->
+ <JLabel constraints='"labelPopulationMigrationImmigrationCoefficient"' text="isisfish.populationMigrationImmigration.coefficient"/>
+ <JTextField constraints='"fieldPopulationMigrationImmigrationCoefficient"' id="fieldPopulationMigrationImmigrationCoefficient"/>
+
+ <JLabel constraints='"labelPopulationMigrationImmigrationArrivalZoneChooser"' text="isisfish.populationMigrationImmigration.arrivalZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationImmigrationArrivalZoneChooser"'
+ id="fieldPopulationMigrationImmigrationArrivalZoneChooser"/>
+<!--
+ origin="getPopulationZone($Population)" firstNull="true"
+-->
+
+ <JButton constraints='"buttonAdd"' id="buttonPopulationMigrationImmigrationAdd"
+ text="isisfish.common.add"/>
+<!-- Fixme : MatrixPanel
+ actionCommand="input.InputPopulation.addImmigration($fieldPopulationMigrationImmigrationGroupChooser/selectedItem, $fieldPopulationMigrationImmigrationArrivalZoneChooser/selectedItem, $fieldPopulationMigrationImmigrationCoefficient/text)"
+<MatrixPanel constraints="PopulationMigrationImmigrationTable" id="PopulationMigrationImmigrationTable"
+ origin="copy($PopulationSeasonInfo/immigrationMatrix)" linearModel="true">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($PopulationMigrationImmigrationTable/matrix), $PopulationSeasonInfo/immigrationMatrix)"/>
+ </MatrixPanel>
+-->
+
+
+
+ <JButton constraints='"buttonRemove"' id="buttonPopulationImmigrationMigrationRemove"
+ text="isisfish.common.remove"/>
+<!--
+ actionCommand="input.InputPopulation.removeImmigration($PopulationMigrationImmigrationTable)"
+-->
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigrationMigration2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,50 @@
+<JPanel name="isisfish.populationMigrationMigration.title" constraints='"inputPopulationMigrationMigration"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationMigrationMigration.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="Migration" context="current" source="Migration"/>
+-->
+
+ <JLabel constraints='"labelPopulationMigrationMigrationGroupChooser"' text="isisfish.common.populationGroup"/>
+ <JComboBox constraints='"fieldPopulationMigrationMigrationGroupChooser"'
+ id="fieldPopulationMigrationMigrationGroupChooser"/>
+
+<!--
+origin="getPopulationGroup($Population)" firstNull="true"
+-->
+ <JLabel constraints='"labelPopulationMigrationMigrationCoefficient"' text="isisfish.populationMigrationMigration.coefficient"/>
+ <JTextField constraints='"fieldPopulationMigrationMigrationCoefficient"'
+ id="fieldPopulationMigrationMigrationCoefficient"/>
+
+ <JLabel constraints='"labelPopulationMigrationMigrationDepartureZoneChooser"' text="isisfish.populationMigrationMigration.departureZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationMigrationDepartureZoneChooser"'
+ id="fieldPopulationMigrationMigrationDepartureZoneChooser"/>
+<!--
+ origin="getPopulationZone($Population)" firstNull="true"
+-->
+ <JLabel constraints='"labelPopulationMigrationMigrationArrivalZoneChooser"' text="isisfish.populationMigrationMigration.arrivalZone"/>
+ <JComboBox constraints='"fieldPopulationMigrationMigrationArrivalZoneChooser"'
+ id="fieldPopulationMigrationMigrationArrivalZoneChooser"/>
+<!--
+origin="getPopulationZone($Population)" firstNull="true"
+-->
+ <JButton constraints='"buttonAdd"' id="buttonPopulationMigrationMigrationAdd" text="isisfish.common.add"/>
+<!-- Fixme : MatrixPanel
+ actionCommand="input.InputPopulation.addMigration($fieldPopulationMigrationMigrationGroupChooser/selectedItem, $fieldPopulationMigrationMigrationDepartureZoneChooser/selectedItem, $fieldPopulationMigrationMigrationArrivalZoneChooser/selectedItem, $fieldPopulationMigrationMigrationCoefficient/text)"
+
+ <MatrixPanel constraints="PopulationMigrationMigrationTable" id="PopulationMigrationMigrationTable"
+ origin="copy($PopulationSeasonInfo/migrationMatrix)" linearModel="true">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($PopulationMigrationMigrationTable/matrix), $PopulationSeasonInfo/migrationMatrix)"/>
+ </MatrixPanel>
+-->
+
+ <JButton constraints='"buttonRemove"' id="buttonPopulationMigrationMigrationRemove"
+ text="isisfish.common.remove"/>
+<!--
+actionCommand="input.InputPopulation.removeMigration($PopulationMigrationMigrationTable)"
+-->
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationRecruitment2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,95 @@
+<JPanel name="isisfish.populationRecruitment.title" constraints='"inputPopulationRecruitment"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationRecruitment.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelPopulationReproductionEquation"' text="isisfish.populationRecruitment.reproductionEquation"/>
+ <JComboBox constraints='"fieldPopulationReproductionEquation"'
+ id="fieldPopulationReproductionEquation">
+<!-- Fixme : ComboBoxModel
+ firstNull="true"
+ origin="$Population/reproductionEquation" renderer="name"
+ actionCommand="update($fieldPopulationReproductionEquation/selectedItem/content, $fieldScriptPopulationReproductionEquation/text)
+<ComboBoxModel origin="fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext,'Reproduction')" />
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonPopulationReproductionEquationSaveAsModel"'
+ text="isisfish.common.saveModel"/>
+<!--
+actionCommand="input.Input.saveEquationAsModel($Population/reproductionEquation);refreshView($fieldPopulationReproductionEquation)"
+-->
+ <JButton constraints='"buttonPopulationReproductionEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor, DocumentEvents
+actionCommand='input.Input.openEditor($Population/reproductionEquation/category,$Population/reproductionEquation/name,$Population/reproductionEquation/javaInterface,$Population/reproductionEquation/content,$fieldScriptPopulationReproductionEquation)'
+<editor constraints="fieldScriptPopulationReproductionEquation" askIfNotSaved="false" id="fieldScriptPopulationReproductionEquation"
+ origin="org.codelutin.util.FileUtil.getTempFile($Population/reproductionEquation/content, '.java')">
+ <DocumentEvents onModified="update">
+ <UpdateOrigin
+ target="setEquationReproductionEquation($Population, $fieldScriptPopulationReproductionEquation/text)"/>
+ </DocumentEvents>
+ </editor>
+
+-->
+
+<!-- on utilise une equation maintenant
+ <label constraints="labelPopulationNaturalDeathBirth" text="Natural Death Birth"/>
+ <textfield constraints="fieldPopulationNaturalDeathBirth" id="fieldPopulationNaturalDeathBirth"
+ origin="$Population/naturalDeathBirth">
+ <DocumentEvents onModified="Update($fieldPopulationNaturalDeathBirth/text)"/>
+ </textfield>
+-->
+<!--
+ <multilabel constraints="labelPopulationMonthGapBetweenReproRecrutement">Month Gap BetweenRepro Recruitment</multilabel>
+-->
+ <JTextField constraints='"fieldPopulationMonthGapBetweenReproRecrutement"' id="fieldPopulationMonthGapBetweenReproRecrutement">
+<!-- Fixme : DocumentEvents
+origin="$Population/monthGapBetweenReproRecrutement
+ <DocumentEvents onModified="Update($fieldPopulationMonthGapBetweenReproRecrutement/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPopulationRecruitmentDistribution"' text="isisfish.populationRecruitment.recruitmentDistribution"/>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints="fieldPopulationRecruitmentDistribution" id="fieldPopulationRecruitmentDistribution"
+ origin="copy($Population/recruitmentDistribution)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldPopulationRecruitmentDistribution/matrix), $Population/recruitmentDistribution)"/>
+ </MatrixPanel>
+-->
+ <JButton constraints='"buttonPopulationRecruitmentDistributionNew"' id="buttonPopulationRecruitmentDistributionNew"
+ text="isisfish.common.newMatrix"/>
+<!--
+ actionCommand="input.InputPopulation.createRecruitmentDistribution($Population)"
+-->
+
+ <JLabel constraints='"labelPopulationRecruitmentComment"' text="isisfish.populationRecruitment.comments"/>
+ <JScrollPane constraints='"fieldPopulationRecruitmentComment"'>
+ <JTextArea id="fieldPopulationRecruitmentComment">
+<!--
+ origin="$Population/recruitmentComment"
+<DocumentEvents onRemoveUpdate="Update($fieldPopulationRecruitmentComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationRecruitmentButtonAction" constraints='"panelPopulationRecruitmentButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Population", $Population);refreshView($inputPopulationRecruitment)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationRecruitment)'
+-->
+
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationSeasons2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,155 @@
+<JPanel name="isisfish.populationSeasons.title" constraints='"inputPopulationSeasons"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationSeasons.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="PopulationSeasonInfo" context="current" source="PopulationSeasonInfo"/>
+-->
+
+ <JLabel constraints='"labelPopulationSeasonInfoChooser"' text="isisfish.populationSeasons.selectSeason"/>
+ <JComboBox constraints='"fieldPopulationSeasonInfoChooser"'
+ id="fieldPopulationSeasonInfoChooser">
+<!-- Fixme : ComboBoxModel
+ firstNull="true" origin="$PopulationSeasonInfo"
+renderer="concat(firstMonth, '-', lastMonth)"
+actionCommand="input.Input.selectEntity('PopulationSeasonInfo', $fieldPopulationSeasonInfoChooser/selectedItem)"
+ <ComboBoxModel origin="getPopulationSeasonInfo($Population)"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelPopulationSeasonInterval"' text="isisfish.common.season"/>
+<!-- Fixme : SeasonIntervalPanel, hidablePanel
+ <SeasonIntervalPanel constraints="fieldPopulationSeasonInterval"
+ id="fieldPopulationSeasonInterval" origin="$PopulationSeasonInfo">
+ <PropertyChangeEvents onChange="Update" propertyName="first">
+ <UpdateOrigin source="$fieldPopulationSeasonInterval/model/first"
+ target="$PopulationSeasonInfo/firstMonth"/>
+ </PropertyChangeEvents>
+ <PropertyChangeEvents onChange="Update" propertyName="last">
+ <UpdateOrigin source="$fieldPopulationSeasonInterval/model/last"
+ target="$PopulationSeasonInfo/lastMonth"/>
+ </PropertyChangeEvents>
+ </SeasonIntervalPanel>
+
+ <hidablePanel id="fieldPopulationSeasonGroupChangeHidable"
+ constraints="fieldPopulationSeasonGroupChange"
+ layout="BorderLayout" origin="$PopulationSeasonInfo/population/species/ageGroupType">
+
+ <checkbox id="fieldPopulationSeasonGroupChange"
+ origin="$PopulationSeasonInfo/groupChange" text="isisfish.populationSeasons.changeGroup">
+ <ItemEvents onStateChanged="Update($fieldPopulationSeasonGroupChange/selected)"/>
+ </checkbox>
+ </hidablePanel>
+
+ <hidablePanel id="labelPopulationSeasonGroupChangeLengthHidable"
+ constraints="labelPopulationSeasonGroupChangeLength"
+ layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/PopulationSeasons.xgl)"
+ origin="not(getAgeGroupType($PopulationSeasonInfo/population/species))">
+
+ <label constraints="labelPopulationSeasonGroupChangeLengthLabel"
+ text="isisfish.populationSeasons.changeGroup"/>
+
+ <radioButton id="labelPopulationSeasonGroupChangeLengthNoSpacialized"
+ constraints="labelPopulationSeasonGroupChangeLengthNoSpacialized"
+ buttonGroup="labelPopulationSeasonGroupChangeLengthSpacializedGroup"
+ origin="getSimpleLengthChangeMatrix($PopulationSeasonInfo)"
+ text="isisfish.populationSeasons.noSpacialized">
+ <ItemEvents onStateChanged="Update($labelPopulationSeasonGroupChangeLengthNoSpacialized/selected, $PopulationSeasonInfo/simpleLengthChangeMatrix, input.InputPopulation.toggleSpacializedMatrixLengthChangeOfGroup($PopulationSeasonInfo))"/>
+ </radioButton>
+
+ <radioButton id="labelPopulationSeasonGroupChangeLengthSpacialized"
+ constraints="labelPopulationSeasonGroupChangeLengthSpacialized"
+ buttonGroup="labelPopulationSeasonGroupChangeLengthSpacializedGroup"
+ origin="not(getSimpleLengthChangeMatrix($PopulationSeasonInfo))"
+ text="isisfish.populationSeasons.spacialized">
+ </radioButton>
+
+ <button text="isisfish.populationSeasons.computeCoefficient"
+ constraints="labelPopulationSeasonGroupChangeLengthButtonCompute"
+ actionCommand='input.InputPopulation.computeMatrixChangeOfGroup($PopulationSeasonInfo)'/>
+
+ <button id="labelPopulationSeasonGroupChangeLengthButtonShow" text="isisfish.populationSeasons.showSpacialized"
+ constraints="labelPopulationSeasonGroupChangeLengthButtonShow"
+ origin="$labelPopulationSeasonGroupChangeLengthNoSpacialized/selected"
+ actionCommand='input.InputPopulation.showSpacializedMatrixChangeOfGroup($PopulationSeasonInfo)'/>
+
+ </hidablePanel>
+
+ <hidablePanel id="fieldPopulationSeasonGroupChangeLengthHidable"
+ constraints="fieldPopulationSeasonGroupChangeLength"
+ layout="BorderLayout"
+ origin="not(getAgeGroupType($PopulationSeasonInfo/population/species))">
+
+ <MatrixPanel id="fieldPopulationSeasonGroupChangeLength"
+ origin="copy($PopulationSeasonInfo/lengthChangeMatrix)">
+ <MatrixPanelEvents
+ onMatrixChanged="Update(copy($fieldPopulationSeasonGroupChangeLength/matrix), $PopulationSeasonInfo/lengthChangeMatrix)"/>
+ </MatrixPanel>
+
+ </hidablePanel>
+
+-->
+ <JCheckBox constraints='"fieldPopulationSeasonReproduction"' id="fieldPopulationSeasonReproduction">
+<!--
+ origin="$PopulationSeasonInfo/reproduction" text="isisfish.populationSeasons.Reproduction">
+ <ItemEvents onStateChanged="Update($fieldPopulationSeasonReproduction/selected, $PopulationSeasonInfo/reproduction, refreshViewPattern('.*PopulationSeasonReproductionDistributionHidable'))"/>
+-->
+ </JCheckBox>
+
+<!-- Fixme : hidablePanel
+ <hidablePanel id="labelPopulationSeasonReproductionDistributionHidable"
+ constraints="labelPopulationSeasonReproductionDistribution"
+ layout="BorderLayout" origin="$PopulationSeasonInfo/reproduction">
+ <label text="isisfish.populationSeasons.distributionSpawning"/>
+ </hidablePanel>
+
+ <hidablePanel id="fieldPopulationSeasonReproductionDistributionHidable"
+ constraints="fieldPopulationSeasonReproductionDistribution"
+ layout="BorderLayout" origin="$PopulationSeasonInfo/reproduction">
+ <MatrixPanel id="fieldPopulationSeasonReproductionDistribution"
+ origin="copy($PopulationSeasonInfo/reproductionDistribution)">
+ <MatrixPanelEvents
+ onMatrixChanged="Update(copy($fieldPopulationSeasonReproductionDistribution/matrix), $PopulationSeasonInfo/reproductionDistribution)"/>
+ </MatrixPanel>
+ </hidablePanel>
+-->
+ <JLabel constraints='"labelPopulationSeasonComment"' text="isisfish.populationSeasons.comments"/>
+ <JScrollPane constraints='"fieldPopulationSeasonComment"'>
+ <JTextArea id="fieldPopulationSeasonComment">
+<!-- Fixme : DocumentEvents
+ origin="$Population/seasonsComment"
+<DocumentEvents onModified="Update($fieldPopulationSeasonComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPopulationSeasonInfoButtonAction" constraints='"panelPopulationSeasonInfoButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.InputPopulation.createSeasonInfo($Population)'
+ -->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("PopulationSeasonInfo", $PopulationSeasonInfo);refreshView($inputPopulationSeasonInfo);refreshView($inputCapturability)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("PopulationSeasonInfo", $PopulationSeasonInfo);refreshView($inputPopulationSeasonInfo);refreshView($inputCapturability)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$PopulationSeasonInfo"
+ actionCommand="input.InputPopulation.removeSeasonInfo($Population, $PopulationSeasonInfo)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationZones2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,85 @@
+<JPanel name="isisfish.populationZones.title" constraints='"inputPopulationZones"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/PopulationZones.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelPopulationZonesPresence"' text="isisfish.populationZones.selectPopulationAreas"/>
+ <JScrollPane constraints='"fieldPopulationZonesPresence"'>
+ <JList id="populationZonesPresence">
+<!-- Fixme : ListModel
+ origin="getPopulationZone($Population)"
+ renderer="name"
+ <ListModel origin="$FisheryRegion/zone"/>
+ <ListSelectionEvents
+ onValueChanged="Update($populationZonesPresence/selectedValues, $Population/populationZone, refreshViewPattern('fieldPopulationZones.*'))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPopulationZonesReproduction"' text="isisfish.populationZones.selectSpawningAreas"/>
+ <JScrollPane constraints='"fieldPopulationZonesReproduction"'>
+ <JList id="fieldPopulationZonesReproduction">
+<!-- Fixme : ListModel
+ origin="getReproductionZone($Population)"
+ renderer="name"
+ <ListModel origin="getPopulationZone($Population)"/>
+ <ListSelectionEvents
+ onValueChanged="Update($fieldPopulationZonesReproduction/selectedValues, $Population/reproductionZone, refreshView($fieldPopulationMappingZoneReproZoneRecru))"/>
+
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPopulationZonesRecruitment"' text="isisfish.populationZones.selectRecruitmentAreas"/>
+ <JScrollPane constraints='"fieldPopulationZonesRecruitment"'>
+ <JList id="fieldPopulationZonesRecruitment">
+<!-- Fixme : ListModel
+ origin="getRecruitmentZone($Population)"
+ renderer="name"
+<ListModel origin="getPopulationZone($Population)"/>
+ <ListSelectionEvents
+ onValueChanged="Update($fieldPopulationZonesRecruitment/selectedValues, $Population/recruitmentZone, refreshView($fieldPopulationMappingZoneReproZoneRecru))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPopulationMappingZoneReproZoneRecru"' text="isisfish.populationZones.betweenSpawningRecruitmentAreas"/>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldPopulationMappingZoneReproZoneRecru"'
+ id="fieldPopulationMappingZoneReproZoneRecru"
+ origin="copy($Population/mappingZoneReproZoneRecru)">
+ <MatrixPanelEvents
+ onMatrixChanged="Update(copy($fieldPopulationMappingZoneReproZoneRecru/matrix), $Population/mappingZoneReproZoneRecru)"/>
+ </MatrixPanel>
+-->
+<!--
+ <JScrollPane constraints='"fieldPopulationMappingZoneReproZoneRecru"'>
+ <table id="populationMappingReproRecru">
+ <ReproRecruTableModel origin="$Population/mappingZoneReproZoneRecru"
+ list1="getReproductionZone($Population)"
+ list2="getRecruitmentZone($Population)" />
+ </table>
+ </scrollPane>
+-->
+
+ <JPanel id="panelPopulationZoneButtonAction" constraints='"panelPopulationZoneButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Population", $Population);refreshView($fieldPopulationMappingZoneReproZoneRecru);refreshView($inputPopulationZones)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+
+<!--
+origin="$EntityModified"
+actionCommand='input.Input.cancel("Population", $Population);refreshView($inputPopulationZones)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Port2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,70 @@
+<JPanel name="isisfish.port.title" constraints='"inputPort"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Port.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- ContextDataSource
+ <ContextDataSource id="Port" context="current" source="Port"/>
+-->
+
+ <JLabel constraints='"labelPortName"' text="isisfish.port.name"/>
+ <JTextField constraints='"fieldPortName"' id="fieldPortName">
+<!-- Fixme : DocumentEvents
+origin="$Port/name"
+ <DocumentEvents onModified="Update($fieldPortName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelPortCell1"' text="isisfish.port.cell"/>
+ <JScrollPane constraints='"fieldPortCell"'>
+ <JList id="portCell">
+<!-- Fixme : ListModel
+SelectionMode="0" renderer="name"
+ origin="getCell($Port)"
+ <ListModel origin="$FisheryRegion/cell"/>
+ <ListSelectionEvents onValueChanged="Update($portCell/selectedValue, $Port/cell, refreshView($portMap))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelPortComment"' text="isisfish.port.comments"/>
+ <JScrollPane constraints='"fieldPortComment"'>
+ <JTextArea id="fieldPortComment">
+<!-- Fixme : DocumentEvents
+ origin="$Port/comment"
+<DocumentEvents onModified="Update($fieldPortComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelPortButtonAction" constraints='"panelPortButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+origin="$FisheryRegion"
+ actionCommand='input.Input.create("Port")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Port", $Port);refreshView($inputPort)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Port", $Port);refreshView($inputPort)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$Port"
+ actionCommand="input.Input.remove($Port)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Selectivity2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,95 @@
+<JPanel name="isisfish.selectivity.title" constraints='"inputSelectivity"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Selectivity.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JLabel constraints='"labelSelectivityPopulation"' text="isisfish.selectivity.selectPopulation"/>
+ <JComboBox constraints='"fieldSelectivityPopulation"' id="fieldSelectivityPopulation">
+<!-- Fixme : ComboBoxModel
+renderer="name" firstNull="true"
+<ComboBoxModel origin="$FisheryRegion/species/population" iterate="true"/>
+-->
+ </JComboBox>
+
+ <!--
+ | Equation de selectivité
+ +-->
+ <JLabel constraints='"labelSelectivityEquation"' text="isisfish.selectivity.equation"/>
+
+ <JComboBox constraints='"fieldSelectivityEquation"' id="fieldSelectivityEquation">
+<!-- Fixme : ComboBoxModel
+ renderer="name" firstNull="true"
+ actionCommand="update($fieldSelectivityEquation/selectedItem/content, $fieldSelectivityScript/text)"
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Selectivity")'/>
+-->
+ </JComboBox>
+
+ <!-- TODO change Java to $Langage/selectedItem when we can change language -->
+ <JButton constraints='"buttonSelectivitySaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveAsModel("Selectivity", "Java", $fieldSelectivityScript/text);refreshView($fieldSelectivityEquation)'
+-->
+
+ <JButton constraints='"buttonSelectivityEquationEditor"' text="isisfish.common.openEditor"/>
+<!--
+ actionCommand='input.Input.openEditor("Selectivity","new","fr.ifremer.isisfish.equation.SelectivityEquation",$fieldSelectivityScript/text,$fieldSelectivityScript)'
+-->
+
+ <JScrollPane constraints='"fieldSelectivityScript"'>
+<!-- Fixme : editor
+ <editor id="fieldSelectivityScript" askIfNotSaved="false" origin="org.codelutin.util.FileUtil.getTempFile('', '.java')">
+ </editor>
+-->
+ </JScrollPane>
+
+ <!--
+ | Ajouter
+ +-->
+ <JButton constraints='"buttonAddSelectivity"' id="buttonAddSelectivity" text="isisfish.common.add"/>
+<!--
+ origin="$Gear"
+ actionCommand="input.InputGear.addSelectivity($Gear, $fieldSelectivityPopulation/selectedItem, $fieldSelectivityScript/text)"
+-->
+
+ <JScrollPane constraints='"selectivityTable"'>
+ <JTable id="selectivityTable">
+<!--
+ <tableModel origin="$Gear/populationSelectivity">
+ <column title="Population" property="population"/>
+ <column title="Equation" property="equation" editable="true">
+ <tableColumnEditor><EquationTableEditor/></tableColumnEditor>
+ </column>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JPanel constraints='"panelSelectivityRemoveButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Selectivity.xgl")}'>
+ <JButton constraints='"buttonSelectivityRemove"' id="buttonSelectivityRemove" text="isisfish.common.remove"/>
+<!--
+ origin="$Gear/populationSelectivity"
+ actionCommand="input.InputGear.removeSelectivity($Gear, getPopulationSelectivity($Gear)[$selectivityTable/selectedRow + 1])"
+-->
+ </JPanel>
+
+ <JPanel id="panelSelectivityButtonAction" constraints='"panelSelectivityButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Gear", $Gear);refreshView($inputSelectivity)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Gear", $Gear);refreshView($inputSelectivity)'
+-->
+
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,123 @@
+<JPanel name="isisfish.setOfVessels.title" constraints='"inputSetOfVesselsCaract"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/SetOfVessels.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="SetOfVessels" context="current" source="SetOfVessels"/>
+-->
+
+ <JLabel constraints='"labelSetOfVesselsName"' text="isisfish.setOfVessels.name"/>
+ <JTextField constraints='"fieldSetOfVesselsName"' id="fieldSetOfVesselsName">
+<!-- Fixmee : DocumentEvents
+ origin="$SetOfVessels/name"
+<DocumentEvents onModified="Update($fieldSetOfVesselsName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSetOfVesselsPort"' text="isisfish.common.port"/>
+ <JComboBox constraints='"fieldSetOfVesselsPort"' id="fieldSetOfVesselsPort">
+<!-- Fixme : ComboBoxModel
+ origin="$SetOfVessels/port" renderer="name" firstNull="true"
+ actionCommand="update($fieldSetOfVesselsPort/selectedItem, $SetOfVessels/port)"
+ <ComboBoxModel origin="$FisheryRegion/port"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelSetOfVesselsVesselType"' text="isisfish.setOfVessels.vesselType"/>
+ <JComboBox constraints='"fieldSetOfVesselsVesselType"' id="fieldSetOfVesselsVesselType">
+<!-- Fixme : ComboBoxModel
+ origin="$SetOfVessels/vesselType" renderer="name" firstNull="true"
+ actionCommand="update($fieldSetOfVesselsVesselType/selectedItem, $SetOfVessels/vesselType)"
+<ComboBoxModel origin="$FisheryRegion/vesselType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelSetOfVesselsNumberOfVessels"' text="isisfish.setOfVessels.numberOfVessels"/>
+ <JTextField constraints='"fieldSetOfVesselsNumberOfVessels"' id="fieldSetOfVesselsNumberOfVessels">
+
+<!--
+ origin="$SetOfVessels/numberOfVessels"
+ <DocumentEvents onModified="Update($fieldSetOfVesselsNumberOfVessels/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSetOfVesselsFixedCosts"' text="isisfish.setOfVessels.fixedCosts"/>
+ <JTextField constraints='"fieldSetOfVesselsFixedCosts"' id="fieldSetOfVesselsFixedCosts">
+
+<!--
+ origin="$SetOfVessels/fixedCosts"
+<DocumentEvents onModified="Update($fieldSetOfVesselsFixedCosts/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSetOfVesselsTechnicalEfficiency"' text="isisfish.setOfVessels.technicalEfficiency"/>
+ <JComboBox constraints='"fieldSetOfVesselsTechnicalEfficiency"' id="fieldSetOfVesselsTechnicalEfficiency">
+
+<!--
+ origin="$SetOfVessels/technicalEfficiencyEquation" renderer="name" firstNull="true"
+ actionCommand="Update($fieldSetOfVesselsTechnicalEfficiency/selectedItem/content, $fieldScriptSetOfVesselsTechnicalEfficiency/text)"
+<ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "TechnicalEfficiency")'/>
+-->
+ </JComboBox>
+
+ <JButton constraints='"buttonSetOfVesselsTechnicalEfficiencySaveAsModel"' text="isisfish.common.saveModel"/>
+<!--
+ actionCommand='input.Input.saveEquationAsModel($SetOfVessels/technicalEfficiencyEquation);refreshView($fieldSetOfVesselsTechnicalEfficiency)'
+-->
+ <JButton constraints='"buttonSetOfVesselsTechnicalEfficiencyEquationEditor"' text="isisfish.common.openEditor"/>
+<!-- Fixme : editor
+ actionCommand='input.Input.openEditor($SetOfVessels/technicalEfficiencyEquation/category,$SetOfVessels/technicalEfficiencyEquation/name,$SetOfVessels/technicalEfficiencyEquation/javaInterface,$SetOfVessels/technicalEfficiencyEquation/content,$fieldScriptSetOfVesselsTechnicalEfficiency)'
+ <editor constraints="fieldScriptSetOfVesselsTechnicalEfficiency" askIfNotSaved="false"
+ id="fieldScriptSetOfVesselsTechnicalEfficiency"
+ origin="org.codelutin.util.FileUtil.getTempFile($SetOfVessels/technicalEfficiencyEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationTechnicalEfficiency($SetOfVessels, $fieldScriptSetOfVesselsTechnicalEfficiency/text)"/>
+ </DocumentEvents>
+ </editor>
+-->
+
+
+ <JLabel constraints='"labelSetOfVesselsComment"' text="isisfish.setOfVessels.comments"/>
+ <JScrollPane constraints='"fieldSetOfVesselsComment"'>
+ <JTextArea id="fieldSetOfVesselsComment">
+
+<!-- Fixme : DocumentEvents
+ origin="$SetOfVessels/comment"
+<DocumentEvents onModified="Update($fieldSetOfVesselsComment/text)"/>
+-->
+ </JTextArea>
+<!--
+-->
+ </JScrollPane>
+
+ <JPanel id="panelSetOfVesselsButtonAction" constraints='"panelSetOfVesselsButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("SetOfVessels")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+origin="$EntityModified"
+ actionCommand='input.Input.save("SetOfVessels", $SetOfVessels);refreshView($inputSetOfVessels)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("SetOfVessels", $SetOfVessels);refreshView($inputSetOfVessels)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$SetOfVessels"
+ actionCommand="input.Input.remove($SetOfVessels)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Species2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,109 @@
+<JPanel name="isisfish.species.title" constraints='"inputSpecies"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Species.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Species" context="current" source="Species"/>
+-->
+
+ <JLabel constraints='"labelSpeciesName"' text="isisfish.species.name"/>
+ <JTextField constraints='"fieldSpeciesName"' id="fieldSpeciesName">
+<!-- Fixme : DocumentEvents
+ origin="$Species/name"
+<DocumentEvents onModified="Update($fieldSpeciesName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesScientificName"' text="isisfish.species.scientificName"/>
+ <JTextField constraints='"fieldSpeciesScientificName"' id="fieldSpeciesScientificName">
+<!-- Fixme : DocumentEvents
+ origin="$Species/scientificName"
+ <DocumentEvents onModified="Update($fieldSpeciesScientificName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesCodeRubbin"' text="isisfish.species.rubbinCode"/>
+ <JTextField constraints='"fieldSpeciesCodeRubbin"' id="fieldSpeciesCodeRubbin">
+<!-- Fixme : DocumentEvents
+ origin="$Species/codeRubbin"
+ <DocumentEvents onModified="Update($fieldSpeciesCodeRubbin/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesCEE"' text="isisfish.species.cee"/>
+ <JTextField constraints="fieldSpeciesCEE" id="fieldSpeciesCEE">
+<!--
+ origin="$Species/codeCEE"
+ <DocumentEvents onModified="Update($fieldSpeciesCEE/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSpeciesDynamic"' text="isisfish.species.structured"/>
+
+ <JPanel constraints='"panelFieldSpeciesDynamic"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Species.xgl")}'>
+ <JRadioButton constraints='"fieldSpeciesDynamicAge"' id="fieldSpeciesDynamicAge"
+ text="isisfish.species.age" buttonGroup="structuredGroup"/>
+<!--
+ origin="$Species/ageGroupType"
+ actionCommand="Update($fieldSpeciesDynamicAge/selected)"
+-->
+<!-- Déjà commenté
+ <ItemEvents onStateChanged="Update($fieldSpeciesDynamicAge/selected)"/>
+ </radioButton>
+-->
+ <JRadioButton constraints='"fieldSpeciesDynamicLength"' id="fieldSpeciesDynamicLength"
+ text="isisfish.species.length" buttonGroup="structuredGroup"/>
+<!--
+ origin="not(getAgeGroupType($Species))"
+ actionCommand="Update($fieldSpeciesDynamicAge/selected, $Species/ageGroupType)"
+-->
+ <!-- Déjà commenté
+ <ItemEvents onStateChanged="Update($fieldSpeciesDynamicAge/selected, $Species/ageGroupType)"/>
+ </radioButton>
+ -->
+ </JPanel>
+
+ <JLabel constraints='"labelSpeciesComment"' text="isisfish.species.comments"/>
+ <JScrollPane constraints='"fieldSpeciesComment"'>
+ <JTextArea id="fieldSpeciesComment">
+<!-- Fixme : DocumentEvents
+ origin="$Species/comment"
+<DocumentEvents onModified="Update($fieldSpeciesComment/text)"/>
+<DocumentEvents onModified="Update($fieldSpeciesComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelSpeciesButtonAction" constraints='"panelSpeciesButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("Species")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Species", $Species);refreshView($inputSpecies)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Species", $Species);refreshView($inputSpecies)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$Species"
+ actionCommand="input.Input.remove($Species)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,113 @@
+<JPanel name="isisfish.strategy.title" constraints='"inputStrategyCaract"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Strategy.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="Strategy" context="current" source="Strategy"/>
+-->
+
+ <JLabel constraints='"labelStrategyName"' text="isisfish.strategy.name"/>
+ <JTextField constraints='"fieldStrategyName"' id="fieldStrategyName">
+<!-- Fixme : DocumentEvents
+ origin="$Strategy/name"
+<DocumentEvents onModified="Update($fieldStrategyName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelStrategySetOfVessels"' text="isisfish.common.setOfVessels"/>
+ <JComboBox constraints='"fieldStrategySetOfVessels"' id="fieldStrategySetOfVessels">
+<!-- Fixme : ComboBoxModel
+origin="$Strategy/setOfVessels" renderer="name" firstNull="true"
+ actionCommand="update($fieldStrategySetOfVessels/selectedItem, $Strategy/setOfVessels)"
+<ComboBoxModel origin="$FisheryRegion/setOfVessels"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyProportionSetOfVessels"' text="isisfish.strategy.proportionSetOfVessels"/>
+ <JTextField constraints='"fieldStrategyProportionSetOfVessels"' id="fieldStrategyProportionSetOfVessels">
+<!-- Fixme : DocumentEvents
+origin="$Strategy/proportionSetOfVessels"
+<DocumentEvents onModified="Update($fieldStrategyProportionSetOfVessels/text)"/>
+-->
+ </JTextField>
+
+ <JCheckBox constraints='"fieldUseEquationInactivity"' id="fieldUseEquationInactivity">
+<!-- Fixme : ItemEvents
+ origin="$Strategy/inactivityEquationUsed" text="isisfish.strategy.inactivityEquationUsed"
+<ItemEvents onStateChanged="Update($fieldUseEquationInactivity/selected, $Strategy/inactivityEquationUsed, refreshView($hideablePanelInactivityEquation))"/>
+-->
+ </JCheckBox>
+
+
+ <JPanel id="hideablePanelInactivityEquation" constraints='"hideablePanelInactivityEquation"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Strategy.xgl")}'>
+<!-- Fixme : HidablePanel
+ <hidablePanel constraints='"fieldUseEquation"'
+ origin="getInactivityEquationUsed($Strategy)"
+ layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/Strategy.xgl)">
+ <JLabel constraints='"labelStrategyInactivity"' text="isisfish.strategy.inactivity"/>
+ <JComboBox constraints='"fieldStrategyInactivity"' id="fieldStrategyInactivity"
+ origin="$Strategy/inactivityEquation" renderer="name" firstNull="true"
+ actionCommand="Update($fieldStrategyInactivity/selectedItem/content, $fieldScriptStrategyInactivity/text)">
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Inactivity")'/>
+ </JComboBox>
+
+ <JButton constraints='"buttonStrategyInactivitySaveAsModel"' text="isisfish.common.saveModel"
+ actionCommand='input.Input.saveEquationAsModel($Strategy/inactivityEquation);refreshView($fieldStrategyInactivity)'/>
+
+ <JButton constraints='"buttonStrategyInactivityEquationEditor"' text="isisfish.common.openEditor"
+ actionCommand='input.Input.openEditor($Strategy/inactivityEquation/category,$Strategy/inactivityEquation/name,$Strategy/inactivityEquation/javaInterface,$Strategy/inactivityEquation/content,$fieldScriptStrategyInactivity)'/>
+
+ <editor constraints='"fieldScriptStrategyInactivity"' askIfNotSaved="false"
+ id="fieldScriptStrategyInactivity"
+ origin="org.codelutin.util.FileUtil.getTempFile($Strategy/inactivityEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationInactivity($Strategy, $fieldScriptStrategyInactivity/text)"/>
+ </DocumentEvents>
+ </editor>
+
+ </hidablePanel>
+-->
+ </JPanel>
+
+ <JLabel constraints='"labelStrategyComment"' text="isisfish.strategy.comments"/>
+ <JScrollPane constraints='"fieldStrategyComment"'>
+ <JTextArea id="fieldStrategyComment">
+<!-- Fixme : DocumentEvents
+ origin="$Strategy/comment"
+<DocumentEvents onModified="Update($fieldStrategyComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelStrategyButtonAction" constraints='"panelStrategyButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("Strategy")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Strategy", $Strategy);refreshView($inputStrategy)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Strategy", $Strategy);refreshView($inputStrategy)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$Strategy"
+ actionCommand="input.Input.remove($Strategy)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/StrategyMonthInfo2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,681 @@
+<JPanel name="isisfish.strategyMonthInfo.title"
+ constraints='"inputStrategyMonthInfo"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <!--
+ |
+ | StrategyMonthInfo January
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo1"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixeme : ContextDataSource
+<ContextDataSource id="StrategyMonthInfo1" context="current"
+ source="Strategy" path="strategyMonthInfo[1]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo1/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType1">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo1/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType1/selectedItem, $StrategyMonthInfo1/tripType)"
+ <JComboBoxModel/>
+-->
+
+<!--
+ origin="$Strategy/setOfVessels/vesselType/tripType"
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo1/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays1">
+<!-- DocumentEvents
+ origin="$StrategyMonthInfo1/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays1/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : Matrix
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion1"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo1/proportionMetier)">
+
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion1/matrix), $StrategyMonthInfo1/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo Febuary
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo2"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo2" context="current"
+ source="Strategy" path="strategyMonthInfo[2]"/>
+-->
+
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo2/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType2">
+<!--Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo2/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType2/selectedItem, $StrategyMonthInfo2/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo2/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays2">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo2/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays2/text)"/>
+-->
+ </JTextField>
+<!--
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion2"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo2/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion2/matrix), $StrategyMonthInfo2/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo March
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo3"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+
+<!--
+ <ContextDataSource id="StrategyMonthInfo3" context="current"
+ source="Strategy" path="strategyMonthInfo[3]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo3/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType3">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo3/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType3/selectedItem, $StrategyMonthInfo3/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo3/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays3">
+<!--
+ origin="$StrategyMonthInfo3/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays3/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion3"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo3/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion3/matrix), $StrategyMonthInfo3/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo April
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo4"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo4" context="current"
+ source="Strategy" path="strategyMonthInfo[4]"/>
+-->
+
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo4/month"
+ -->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType4">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo4/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType4/selectedItem, $StrategyMonthInfo4/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo4/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays4">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo4/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays4/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion4"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo4/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion4/matrix), $StrategyMonthInfo4/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo May
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo5"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo5" context="current"
+ source="Strategy" path="strategyMonthInfo[5]"/>
+-->
+
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo5/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType5">
+<!-- Fixme : <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+ origin="$StrategyMonthInfo5/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType5/selectedItem, $StrategyMonthInfo5/tripType)"
+-->
+<!--
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo5/numberOfTrips"
+-->
+
+ <JLabel constraints=' "labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays5">
+<!--
+ origin="$StrategyMonthInfo5/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays5/text)"/>
+-->
+ </JTextField>
+<!--
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion5"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo5/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion5/matrix), $StrategyMonthInfo5/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo June
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo6"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!--
+ <ContextDataSource id="StrategyMonthInfo6" context="current"
+ source="Strategy" path="strategyMonthInfo[6]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo6/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType6">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo6/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType6/selectedItem, $StrategyMonthInfo6/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo6/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays6">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo6/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays6/text)"/>
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion6"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo6/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion6/matrix), $StrategyMonthInfo6/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo July
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo7"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo7" context="current"
+ source="Strategy" path="strategyMonthInfo[7]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo7/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType7">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo7/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType7/selectedItem, $StrategyMonthInfo7/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo7/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays7">
+<!-- Fixme : DocumentEvents
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays7/text)"/>
+ origin="$StrategyMonthInfo7/minInactivityDays"
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion7"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo7/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion7/matrix), $StrategyMonthInfo7/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo August
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo8"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!--
+ <ContextDataSource id="StrategyMonthInfo8" context="current"
+ source="Strategy" path="strategyMonthInfo[8]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo8/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType8">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo8/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType8/selectedItem, $StrategyMonthInfo8/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo8/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays8">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo8/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays8/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion8"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo8/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion8/matrix), $StrategyMonthInfo8/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo September
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo9"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo9" context="current"
+ source="Strategy" path="strategyMonthInfo[9]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo9/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType9">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo9/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType9/selectedItem, $StrategyMonthInfo9/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo9/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays9">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo9/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays9/text)"/>
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion9"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo9/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion9/matrix), $StrategyMonthInfo9/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo October
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo10"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo10" context="current"
+ source="Strategy" path="strategyMonthInfo[10]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo10/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType10">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo10/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType10/selectedItem, $StrategyMonthInfo10/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo10/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays10">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo10/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays10/text)"/>
+-->
+ </JTextField>
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion10"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo10/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion10/matrix), $StrategyMonthInfo10/proportionMetier)"/>
+ </MatrixPanel>
+-->
+
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo November
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo11"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo11" context="current"
+ source="Strategy" path="strategyMonthInfo[11]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo11/month"
+-->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType" '
+ id="fieldStrategyMonthInfoTripType11">
+<!-- Fixme : JComboBoxModel
+ origin="$StrategyMonthInfo11/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType11/selectedItem, $StrategyMonthInfo11/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo11/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays11">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo11/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays11/text)"/>
+-->
+ </JTextField>
+<!--
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion11"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo11/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion11/matrix), $StrategyMonthInfo11/proportionMetier)"/>
+ </MatrixPanel>
+-->
+ </JPanel>
+
+ <!--
+ |
+ | StrategyMonthInfo December
+ |
+ +-->
+
+ <JPanel constraints='"StrategyMonthInfo12"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/StrategyMonthInfo.xgl")}'>
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="StrategyMonthInfo12" context="current"
+ source="Strategy" path="strategyMonthInfo[12]"/>
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfo"'/>
+<!--
+ origin="$StrategyMonthInfo12/month"
+ -->
+ <JComboBox constraints='"fieldStrategyMonthInfoTripType"'
+ id="fieldStrategyMonthInfoTripType12">
+<!--
+ origin="$StrategyMonthInfo12/tripType" firstNull="true"
+ actionCommand="update($fieldStrategyMonthInfoTripType12/selectedItem, $StrategyMonthInfo12/tripType)"
+ <JComboBoxModel origin="$Strategy/setOfVessels/vesselType/tripType"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelStrategyMonthInfoNumberOfTrips"'
+ text="isisfish.strategyMonthInfo.numberOfTrips"/>
+ <JLabel constraints='"fieldStrategyMonthInfoNumberOfTrips"'/>
+<!--
+ origin="$StrategyMonthInfo12/numberOfTrips"
+-->
+
+ <JLabel constraints='"labelStrategyMonthInfoMinInactivityDays"'
+ text="isisfish.strategyMonthInfo.minInactivityDays"/>
+ <JTextField constraints='"fieldStrategyMonthInfoMinInactivityDays"'
+ id="fieldStrategyMonthInfoMinInactivityDays12">
+<!-- Fixme : DocumentEvents
+ origin="$StrategyMonthInfo12/minInactivityDays"
+ <DocumentEvents onModified="Update($fieldStrategyMonthInfoMinInactivityDays12/text)"/>
+-->
+ </JTextField>
+
+<!-- Fixme : MatrixPanel
+ <MatrixPanel constraints='"fieldStrategyMonthInfoProportion"'
+ id="fieldStrategyMonthInfoProportion12"
+ linearModel="true" linearModelShowDefault="true"
+ origin="copy($StrategyMonthInfo12/proportionMetier)">
+ <MatrixPanelEvents onMatrixChanged="Update(copy($fieldStrategyMonthInfoProportion12/matrix), $StrategyMonthInfo12/proportionMetier)"/>
+ </MatrixPanel>
+
+-->
+ </JPanel>
+
+ <!--
+ |
+ | Button action
+ |
+ +-->
+
+ <JPanel constraints='"panelStrategyMonthInfoButtonAction"'
+ id="panelStrategyMonthInfoButtonAction"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Strategy", $Strategy);refreshView($inputStrategyMonthInfo)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Strategy", $Strategy);refreshView($inputStrategyMonthInfo)'
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/TripType2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,79 @@
+<JPanel name="isisfish.tripType.title" constraints='"inputTripType"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/TripType.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="TripType" context="current" source="TripType"/>
+-->
+ <JLabel constraints='"labelTripTypeName"' text="isisfish.tripType.name"/>
+ <JTextField constraints='"fieldTripTypeName"' id="fieldTripTypeName">
+<!-- Fixme : DocumentEvents
+ origin="$TripType/name"
+<DocumentEvents onModified="Update($fieldTripTypeName/text)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelTripTypeDuration"' text="isisfish.tripType.duration"/>
+
+<!--
+ tooltips="In hours"
+-->
+ <JTextField constraints='"fieldTripTypeDuration"' id="fieldTripTypeDuration">
+<!-- Fixme : DocumentEvents
+ origin="$TripType/tripDuration/hour"
+ tooltips="In hours"
+<DocumentEvents onModified="Update($fieldTripTypeDuration/text * 3600, $TripType/tripDuration)"/>
+-->
+
+ </JTextField>
+
+ <JLabel constraints='"labelTripTypeMinTimeBetweenTrip"' text="isisfish.tripType.minTime"/>
+ <JTextField constraints='"fieldTripTypeMinTimeBetweenTrip"' id="fieldTripTypeMinTimeBetweenTrip">
+<!-- Fixme : DocumentEvents
+
+ origin="$TripType/minTimeBetweenTrip/hour"
+<DocumentEvents onModified="Update($fieldTripTypeMinTimeBetweenTrip/text * 3600, $TripType/minTimeBetweenTrip)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelTripTypeComment"' text="isisfish.tripType.comments"/>
+ <JScrollPane constraints='"fieldTripTypeComment"'>
+ <JTextArea id="fieldTripTypeComment">
+<!-- Fixme : DocumentEvents
+ origin="$TripType/comment"
+ <DocumentEvents onModified="Update($fieldTripTypeComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelTripTypeButtonAction" constraints='"panelTripTypeButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("TripType")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("TripType", $TripType);refreshView($inputTripType)'
+-->
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("TripType", $TripType);refreshView($inputTripType)'
+-->
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$TripType"
+ actionCommand="input.Input.remove($TripType)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/VesselType2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,117 @@
+<JPanel name="isisfish.vesselType.title" constraints='"inputVesselType"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/VesselType.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+<ContextDataSource id="VesselType" context="current" source="VesselType"/>
+-->
+ <JLabel constraints='"labelVesselTypeName"' text="isisfish.vesselType.name"/>
+ <JTextField constraints='"fieldVesselTypeName"' id="fieldVesselTypeName">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/name"
+<DocumentEvents onModified="Update($fieldVesselTypeName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeLength"' text="isisfish.vesselType.length"/>
+ <JTextField constraints='"fieldVesselTypeLength"' id="fieldVesselTypeLength">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/length"
+<DocumentEvents onModified="Update($fieldVesselTypeLength/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeSpeed"' text="isisfish.vesselType.speed"/>
+ <JTextField constraints='"fieldVesselTypeSpeed"' id="fieldVesselTypeSpeed">
+<!-- Fixme : DocumentEvents
+ origin="$VesselType/speed"
+<DocumentEvents onModified="Update($fieldVesselTypeSpeed/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeMaxTripDuration"' text="isisfish.vesselType.maxDuration"/>
+ <JTextField constraints='"fieldVesselTypeMaxTripDuration"' id="fieldVesselTypeMaxTripDuration">
+<!-- Fixeme : DocumentEvents
+origin="$VesselType/maxTripDuration/hour" tooltips="in hour"
+<DocumentEvents onModified="Update(3600 * $fieldVesselTypeMaxTripDuration/text, $VesselType/maxTripDuration)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeActivityRange"' text="isisfish.vesselType.activityRange"/>
+ <JTextField constraints='"fieldVesselTypeActivityRange"' id="fieldVesselTypeActivityRange">
+ <!-- Fixme : DocumentEvents
+origin="$VesselType/activityRange"
+<DocumentEvents onModified="Update($fieldVesselTypeActivityRange/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeMinCrewSize"' text="isisfish.vesselType.miniCrew"/>
+ <JTextField constraints='"fieldVesselTypeMinCrewSize"' id="fieldVesselTypeMinCrewSize">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/minCrewSize"
+<DocumentEvents onModified="Update($fieldVesselTypeMinCrewSize/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeUnitFuelCostOfTravel"' text="isisfish.vesselType.fuelCost"/>
+ <JTextField constraints='"fieldVesselTypeUnitFuelCostOfTravel"' id="fieldVesselTypeUnitFuelCostOfTravel">
+<!-- Fixme : DocumentEvents
+origin="$VesselType/unitFuelCostOfTravel"
+<DocumentEvents onModified="Update($fieldVesselTypeUnitFuelCostOfTravel/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelVesselTypeTripType"' text="isisfish.common.tripType"/>
+ <JScrollPane constraints='"fieldVesselTypeTripType"'>
+ <JList id="vesselTypeTripType">
+<!-- Fixme : ListModel
+ origin="getTripType($VesselType)" renderer="name"
+<ListModel origin="$FisheryRegion/tripType"/>
+<MouseEvents onClicked="Update($vesselTypeTripType/selectedValues, $VesselType/tripType)"/>
+-->
+ </JList>
+ </JScrollPane>
+
+
+ <JLabel constraints='"labelVesselTypeComment"' text="isisfish.vesselType.comments"/>
+ <JScrollPane constraints='"fieldVesselTypeComment"'>
+ <JTextArea id="fieldVesselTypeComment">
+<!-- Fixme : DocumentEvents
+ origin="$VesselType/comment
+ <DocumentEvents onModified="Update($fieldVesselTypeComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelVesselTypeButtonAction" constraints='"panelVesselTypeButtonAction"'>
+<!--
+layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/ActionButton.xgl)"
+-->
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+actionCommand='input.Input.create("VesselType")'
+-->
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+actionCommand='input.Input.save("VesselType", $VesselType);refreshView($inputVesselType)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+actionCommand='input.Input.cancel("VesselType", $VesselType);refreshView($inputVesselType)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+ origin="$VesselType"
+actionCommand="input.Input.remove($VesselType)"
+-->
+ </JPanel>
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/WizardGroupCreation2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,149 @@
+<JFrame id="wizardGroup" visible="true" size='{new Dimension(400,200)}' title="isisfish.wizardGroupCreation.title"
+ layout='{new BorderLayout()}'>
+<!--
+ Resizable="true" Closable="true"
+ bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource, cardPanel
+ <ContextDataSource id="Population" context="current" source="Population"/>
+ <ContextDataSource id="wizardModel" context="current" source="wizardModel"/>
+
+ <cardPanel id="wizardPanels" origin="$wizardModel" constraints="CENTER">
+
+ <panel constraints="singleGroupAge" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="beginGroupAgeTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelFirstAge" text="isisfish.wizardGroupCreation.firstAge"/>
+ <textfield constraints="firstAge" id="firstAge"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($firstAge/text)"/>
+ </textfield>
+ <label constraints="labelLastAge" text="isisfish.wizardGroupCreation.lastAge"/>
+ <textfield constraints="lastAge" id="lastAge"
+ origin="$wizardModel/last">
+ <DocumentEvents onModified="update($lastAge/text)"/>
+ </textfield>
+ <multilabel constraints="beginGroupAgeHelp">
+First age = minimal age
+Last age = maximal age
+
+gap between to group is 1 year.
+ </multilabel>
+ </panel>
+
+ <panel constraints="beginGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="beginGroupLengthTitle" text="isisfish.wizardGroupCreation.selectGroupLengthType"
+ horizontalAlignment="CENTER"/>
+ <radioButton constraints="beginGroupLengthTypeInput"
+ id="beginGroupLengthTypeInput" buttonGroup="groupLengthType"
+ text="isisfish.wizardGroupCreation.allValues" origin="$wizardModel/inputType">
+ <ItemEvents onStateChanged="update($beginGroupLengthTypeInput/selected)"/>
+ </radioButton>
+
+ <radioButton constraints="beginGroupLengthTypeSameSize"
+ id="beginGroupLengthTypeSameSize" buttonGroup="groupLengthType"
+ text="isisfish.wizardGroupCreation.allGroupsSameSize" origin="$wizardModel/sameSizeType">
+ <ItemEvents onStateChanged="update($beginGroupLengthTypeSameSize/selected)"/>
+ </radioButton>
+
+ <radioButton constraints="beginGroupLengthTypeGrowthCurve"
+ id="beginGroupLengthTypeGrowthCurve" buttonGroup="groupLengthType"
+ text="isisfish.wizardGroupCreation.computedGrowthCurve" origin="$wizardModel/growthCurveType">
+ <ItemEvents onStateChanged="update($beginGroupLengthTypeGrowthCurve/selected)"/>
+ </radioButton>
+ </panel>
+
+ <panel constraints="endInputGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="inputGroupLengthTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelFirstInputLength" text="isisfish.wizardGroupCreation.firstLength"/>
+ <textfield constraints="firstInputLength" id="firstInputLength"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($firstInputLength/text)"/>
+ </textfield>
+ <label constraints="labelMaximalGroupsLenght" text="isisfish.wizardGroupCreation.maxGroupsLength"/>
+ <textfield constraints="maximalGroupsLenght" id="maximalGroupsLenght"
+ origin="$wizardModel/maxLength">
+ <DocumentEvents onModified="update($maximalGroupsLenght/text)"/>
+ </textfield>
+ <multilabel constraints="inputGroupAgeHelp" text="A semicolon ';' must separe maximal length of each group"/>
+ </panel>
+
+ <panel constraints="endSameSizeGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="sameSizeGroupLengthTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelFirstSizeLength" text="isisfish.wizardGroupCreation.firstLength"/>
+ <textfield constraints="firstSizeLength" id="firstSizeLength"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($firstSizeLength/text)"/>
+ </textfield>
+ <label constraints="labelSameSizeNumberOfGroup" text="isisfish.wizardGroupCreation.numberGroup"/>
+ <textfield constraints="sameSizeNumberOfGroup" id="sameSizeNumberOfGroup"
+ origin="$wizardModel/numberOfGroup">
+ <DocumentEvents onModified="update($sameSizeNumberOfGroup/text)"/>
+ </textfield>
+ <label constraints="labelWidth" text="isisfish.wizardGroupCreation.groupWidth"/>
+ <textfield constraints="width" id="width"
+ origin="$wizardModel/groupSize">
+ <DocumentEvents onModified="update($width/text)"/>
+ </textfield>
+ <multilabel constraints="sameSizeGroupLengthHelp">
+First length = minimal length of first group
+number of Group = number of group wanted
+Group width = width of group
+ </multilabel>
+ </panel>
+
+ <panel constraints="endGrowthCurveGroupLength" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/WizardGroupCreation.xgl)">
+ <label constraints="growthCurveGroupLengthTitle" text="isisfish.wizardGroupCreation.populationCharacteristics"
+ horizontalAlignment="CENTER"/>
+ <label constraints="labelGrowthCurveFirstGroup" text="isisfish.wizardGroupCreation.firstGroup"/>
+ <textfield constraints="growthCurveFirstGroup" id="growthCurveFirstGroup"
+ origin="$wizardModel/first">
+ <DocumentEvents onModified="update($growthCurveFirstGroup/text)"/>
+ </textfield>
+ <label constraints="labelNumberOfGroup" text="isisfish.wizardGroupCreation.numberGroups"/>
+ <textfield constraints="numberOfGroup" id="numberOfGroup"
+ origin="$wizardModel/numberOfGroup">
+ <DocumentEvents onModified="update($numberOfGroup/text)"/>
+ </textfield>
+ <label constraints="labelStep" text="isisfish.wizardGroupCreation.timeStep"/>
+ <textfield constraints="step" id="step"
+ origin="$wizardModel/step">
+ <DocumentEvents onModified="update($step/text)"/>
+ </textfield>
+ <multilabel constraints="growthCurveGroupLengthHelp" text="The equation used is the population's growth curve, it needs to be defined first."/>
+ </panel>
+ </cardPanel>
+-->
+ <JPanel id="navButton" constraints='"SOUTH"'>
+ <JButton text="isisfish.common.prev"/>
+<!--
+ origin="not(isBegin($wizardPanels))"
+ actionCommand="prev
+-->
+
+ <JButton text="isisfish.common.next"/>
+<!--
+ origin="not(isEnd($wizardPanels))"
+ actionCommand="next"
+-->
+
+ <JButton text="isisfish.common.finish"/>
+<!--
+ origin="$wizardPanels/end"
+ actionCommand="input.InputPopulation.wizardGroupFinish($wizardPanels/model)"
+-->
+
+ <JButton text="isisfish.common.cancel"/>
+<!--
+ actionCommand="cancel"
+ -->
+ </JPanel>
+
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/input/Zone2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,69 @@
+<JPanel name="isisfish.zone.title" constraints='"inputZone"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/Zone.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!--
+ <ContextDataSource id="Zone" context="current" source="Zone"/>
+-->
+
+ <JLabel constraints='"labelZoneName"' text="isisfish.zone.name"/>
+ <JTextField constraints='"fieldZoneName"' id="fieldZoneName">
+<!-- Fixme : DocumentEvents
+ origin="$Zone/name"
+ <DocumentEvents onModified="Update($fieldZoneName/text)"/>
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelZoneCell1"' text="isisfish.zone.cells"/>
+ <JScrollPane constraints='"fieldZoneCells"'>
+ <JList id="zoneCells">
+<!-- Fixme : ListModel
+ origin="getCell($Zone)" iterate="true" renderer="name"
+ <ListModel origin="$FisheryRegion/cell"/>
+ <ListSelectionEvents onValueChanged="Update($zoneCells/selectedValues, $Zone/cell, refreshView($zoneMap))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelZoneComment"' text="isisfish.zone.comments"/>
+ <JScrollPane constraints='"fieldZoneComment"'>
+ <JTextArea id="fieldZoneComment">
+<!-- Fixme : DocumentEvents
+ origin="$Zone/comment"
+ <DocumentEvents onModified="Update($fieldZoneComment/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JPanel id="panelZoneButtonAction" constraints='"panelZoneButtonAction"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/input/ActionButton.xgl")}'>
+
+ <JButton constraints='"buttonCreate"' text="isisfish.common.new"/>
+<!--
+ origin="$FisheryRegion"
+ actionCommand='input.Input.create("Zone")'
+-->
+
+ <JButton constraints='"buttonSave"' text="isisfish.common.save"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.save("Zone", $Zone);refreshView($inputZone)'
+-->
+
+ <JButton constraints='"buttonCancel"' text="isisfish.common.cancel"/>
+<!--
+ origin="$EntityModified"
+ actionCommand='input.Input.cancel("Zone", $Zone);refreshView($inputZone)'
+-->
+
+ <JButton constraints='"buttonRemove"' text="isisfish.common.remove"/>
+<!--
+origin="$Zone"
+ actionCommand="input.Input.remove($Zone)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/script/Script2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,411 @@
+<JFrame id="script" visible="true" size='{new Dimension(620,400)}' title="isisfish.script.title"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/script/Script.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : WindowsEvents
+<WindowEvents id="events" onOpened="script.Action.opened()" />
+Maximizable="true" Closable="true"
+bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="ScriptStorage" context="current" source="ScriptStorage"/>
+ <ContextDataSource id="ActionLog" context="current" source="ActionLog"/>
+ <ContextDataSource id="ScriptType" context="current" source="ScriptType"/>
+ <ContextDataSource id="canCommit" context="current" source="canCommit"/>
+ <ContextDataSource id="canUpdate" context="current" source="canUpdate"/>
+ <ContextDataSource id="canDiff" context="current" source="canDiff"/>
+ <ContextDataSource id="canDelete" context="current" source="canDelete"/>
+-->
+ <!--
+ | Menu
+ +-->
+
+ <JMenuBar id="scriptMenuBar">
+ <JMenu id="scriptTxtFile" text="isisfish.script.menu.file">
+<!--
+mnemonic="mnFile"
+-->
+ <JMenu id="scriptNewMenu" text="isisfish.script.menu.new">
+<!--
+mnemonic="mnNew"
+-->
+ <!-- TODO Do it dynamiccly and uses Action.ScriptMapping-->
+ <!-- no change name passed in argument, or change for combo in button bar and in Action.newScript too -->
+ <JMenuItem name="miNewScript" text="isisfish.script.menu.txtNewScript"
+ accelerator="accNewScript"/>
+<!--
+ icon="imgNewScript"
+ mnemonic="mnNewScript"
+ ActionCommand="script.Action.newScript($tree, $treeModel, 'Script')"
+-->
+ <JMenuItem name="miNewSimulator" text="isisfish.script.menu.txtNewSimulator" accelerator="accNewSimulator"/>
+<!--
+ icon="imgNewSimulator"
+mnemonic="mnNewSimulator"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'Simulator')"
+-->
+ <JMenuItem name="miNewExport" text="isisfish.script.menu.txtNewExport" accelerator="accNewExport"/>
+<!--
+icon="imgNewExport"
+mnemonic="mnNewExport"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'Export')"
+-->
+ <JMenuItem name="miNewRule" text="isisfish.script.menu.txtNewRule" accelerator="accNewRule"/>
+<!--
+icon="imgNewRule"
+mnemonic="mnNewRule"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'Rule')"
+-->
+ <JMenuItem name="miNewAnalysePlan" text="isisfish.script.menu.txtNewAnalysePlan" accelerator="accNewAnalysePlan"/>
+<!--
+icon="imgNewAnalysePlan"
+mnemonic="mnNewAnalysePlan"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'AnalysePlan')"
+-->
+ <JMenuItem name="miNewEquationModel" text="isisfish.script.menu.txtNewEquationModel" accelerator="accNewEquationModel"/>
+<!--
+icon="imgNewEquationModel"
+mnemonic="mnNewEquationModel"
+ActionCommand="script.Action.newScript($tree, $treeModel, 'EquationModel')"
+-->
+ </JMenu>
+ <JMenuItem name="miSave" text="isisfish.script.menu.save"
+ accelerator="accSave"/>
+<!--
+icon="imgSave"
+mnemonic="mnSave"
+ActionCommand="xpath:save($scriptJedit)"
+origin="util:isValid($ScriptStorage)"
+-->
+ <JSeparator/>
+ <JMenuItem name="miImport" text="isisfish.script.menu.txtImport"
+ accelerator="accImport"/>
+<!--
+icon="imgImport"
+mnemonic="mnImport"
+ActionCommand="script.Action.importScript($tree,$treeModel,$ScriptStorage)"
+-->
+ <JMenuItem name="miExport" text="isisfish.script.menu.txtExport"
+ accelerator="accExport"/>
+<!--
+origin="$tree/selectionPaths"
+icon="imgExport"
+ mnemonic="mnExport"
+ActionCommand="script.Action.exportScript($tree)"
+-->
+ <JSeparator/>
+ <JMenuItem name="miDelete" text="isisfish.script.menu.deleteLocaly"
+ accelerator="accDelete"/>
+<!--
+icon="imgDelete"
+mnemonic="mnDelete"
+ActionCommand="script.Action.deleteScript($tree,$ScriptStorage, 'false')"
+origin="util:isValid($ScriptStorage)"
+-->
+ <JSeparator/>
+
+ <JMenuItem name="miClose" text="isisfish.script.menu.close" accelerator="accClose"/>
+<!--
+icon="imgClose"
+mnemonic="mnClose"
+ActionCommand="cancel"
+-->
+ </JMenu>
+
+ <JMenu id="scriptTxtEdit" text="isisfish.script.menu.edit">
+<!--
+mnemonic="mnEdit"
+-->
+ <JMenuItem name="miCut" text="isisfish.script.menu.cut"
+ accelerator="accCut"/>
+<!--
+icon="imgCut"
+mnemonic="mnCut"
+ActionCommand="xpath:cut($scriptJedit)"
+origin="util:isValid($ScriptStorage)"
+-->
+ <JMenuItem name="miCopy" text="isisfish.script.menu.copy"
+ accelerator="accCopy"/>
+<!--
+icon="imgCopy"
+origin="util:isValid($ScriptStorage)"
+mnemonic="mnCopy"
+ActionCommand="xpath:copy($scriptJedit)"
+-->
+ <JMenuItem name="miPaste" text="isisfish.script.menu.paste"
+ accelerator="accPaste"/>
+<!--
+icon="imgPaste"
+origin="util:isValid($ScriptStorage)"
+mnemonic="mnPaste"
+ActionCommand="xpath:paste($scriptJedit)"
+-->
+ <JSeparator/>
+<!-- TODO
+ <JMenuItem name="miFind" text="txtFind" icon="imgFind" mnemonic="mnFind"
+ accelerator="accFind"
+ ActionCommand="find"
+ origin="util:isValid($ScriptStorage)"/>
+-->
+ </JMenu>
+
+ <JMenu id="scriptTxtVCS" text="isisfish.script.menu.txtVCS">
+<!--
+mnemonic="mnVCS"
+-->
+ <JMenuItem name="miCommitVCS" text="isisfish.script.menu.commit"
+ accelerator="accCommitVCS"/>
+ <!--origin="util:isValid($ScriptStorage)"/-->
+<!--
+icon="imgCommitVCS"
+mnemonic="mnCommitVCS"
+ActionCommand="script.Action.commitScript($tree,$ScriptStorage, $scriptJedit/text)"
+origin="$canCommit"
+-->
+ <JMenuItem name="miDiffVCS"
+ text="isisfish.script.menu.diff" accelerator="mnDiffVCS"/>
+<!--
+icon="imgDiffVCS"
+mnemonic="mnDiffVCS"
+ActionCommand="thread:script.Action.diffScript($tree,$ScriptStorage, $scriptJedit/text)"
+origin="$canDiff"
+-->
+ <JMenuItem name="miUpdateVCS" text="isisfish.script.menu.update"/>
+<!--
+icon="imgUpdateVCS"
+mnemonic="mnUpdateVCS" accelerator="accUpdateVCS"
+ActionCommand="script.Action.updateScript($tree,$ScriptStorage)"
+origin="$canUpdate"
+-->
+ <JSeparator/>
+ <JMenuItem name="miDeleteVCS" text="isisfish.script.menu.deleteLocalyServer"
+ accelerator="accDeleteVCS"/>
+<!--
+icon="imgDeleteVCS"
+origin="$canDelete"
+mnemonic="mnDeleteVCS"
+ActionCommand="script.Action.deleteScript($tree,$ScriptStorage, 'true')"
+-->
+ </JMenu>
+ <JMenu id="scriptTxtCode" text="isisfish.script.menu.code">
+<!--
+mnemonic="mnCode"
+-->
+ <JMenuItem name="miCheckSyntax" text="isisfish.script.menu.checkSyntax"
+ accelerator="accCheckSyntax"/>
+<!--
+icon="imgCheckSyntax"
+mnemonic="mnCheckSyntax"
+ActionCommand="script.Action.checkScript($ScriptStorage, $scriptJedit/text)"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+-->
+ <JMenuItem name="miEvaluate" text="isisfish.script.menu.evaluate"
+ accelerator="accEvaluate"/>
+<!--
+icon="imgEvaluate"
+mnemonic="mnEvaluate"
+ActionCommand="script.Action.evaluateScript($ScriptStorage, $scriptJedit/text)"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+-->
+ </JMenu>
+
+ <JMenu text="isisfish.script.menu.txtHelp">
+<!--
+mnemonic="mnHelp"
+-->
+ <JMenuItem name="miEditorHelp" text="isisfish.script.menu.txtEditorHelp"
+ accelerator="accEditorHelp"/>
+<!--
+icon="imgEditorHelp"
+mnemonic="mnEditorHelp"
+ActionCommand="editorHelp"
+-->
+ <JMenuItem name="miJavaHelp" text="isisfish.script.menu.txtJavaHelp"
+ accelerator="accJavaHelp"/>
+<!--
+ icon="imgJavaHelp"
+mnemonic="mnJavaHelp"
+ActionCommand="Help.showURL('JAVA_HELP')"
+-->
+ <JSeparator/>
+ <JMenuItem name="miAbout" text="isisfish.script.menu.about"
+ accelerator="accAbout"/>
+<!--
+ icon="imgAbout"
+ActionCommand="about"
+mnemonic="mnAbout"
+-->
+ </JMenu>
+ </JMenuBar>
+
+ <!--
+ | Toolbar
+ +-->
+
+ <JPanel id="buttonBar" constraints='"buttonBar"' layout='{new GridLayout()}'>
+ <JComboBox id="ScriptTypeChoice">
+<!--
+origin="ScriptType"
+renderer="org.codelutin.i18n.I18n._(.)"
+-->
+
+ <!-- no change name in combo box, or change for menu and in Action.newScript too -->
+<!-- Fixme : comboboxmodel
+ <comboboxmodel origin="fr.ifremer.isisfish.ui.script.Action.getScriptTypesNames()"/>
+-->
+ </JComboBox>
+ <JButton constraints='"buttonScriptNew"' id="buttonScriptNew" text="isisfish.script.new"/>
+<!--
+ToolTipText="Create a new script"
+actionCommand="script.Action.newScript($tree, $treeModel, $ScriptTypeChoice/selectedItem)"
+-->
+ <JButton constraints='"buttonScriptSave"' id="buttonScriptSave" text="isisfish.script.save"/>
+<!--
+ToolTipText="Save current script"
+origin="util:isValid($ScriptStorage)"
+actionCommand="script.Action.saveScript($ScriptStorage, $scriptJedit/text)"
+-->
+ <JButton constraints='"buttonScriptExport"' id="buttonScriptExport" text="isisfish.script.txtExport"/>
+<!--
+ToolTipText="Export selected script(s) to zip archive"
+origin="$tree/selectionPaths"
+actionCommand="script.Action.exportScript($tree)"
+-->
+ <JButton constraints='"buttonScriptCommit"' id="buttonScriptCommit" text="isisfish.script.commit"/>
+<!--
+ToolTipText="Commit script to CVS server"
+origin="$canCommit"
+actionCommand="script.Action.commitScript($tree, $ScriptStorage, $scriptJedit/text)"
+-->
+ <JButton constraints='"buttonScriptUpdate"' id="buttonScriptUpdate" text="isisfish.script.update"/>
+<!--
+ToolTipText="Update current script from server"
+origin="$canUpdate"
+actionCommand="script.Action.updateScript($tree,$ScriptStorage)"
+-->
+ <JButton constraints='"buttonScriptCut"' id="buttonScriptCut" text="isisfish.script.cut"/>
+<!--
+ToolTipText="Cut current selection (Ctrl-x)"
+origin="util:isValid($ScriptStorage)"
+actionCommand="xpath:cut($scriptJedit)"
+-->
+ <JButton constraints='"buttonScriptCopy"' id="buttonScriptCopy" text="isisfish.script.copy"/>
+<!--
+ToolTipText="Copy current selection (Ctrl-c)"
+origin="util:isValid($ScriptStorage)"
+actionCommand="xpath:copy($scriptJedit)"
+-->
+ <JButton constraints='"buttonScriptPaste"' id="buttonScriptPaste" text="isisfish.script.paste"/>
+<!--
+ToolTipText="Paste current selection (Ctrl-v)"
+origin="util:isValid($ScriptStorage)"
+actionCommand="xpath:paste($scriptJedit)"
+-->
+ <JButton constraints='"buttonScriptCheck"' id="buttonScriptCheck" text="isisfish.script.check"/>
+<!--
+ToolTipText="Check syntax of the current script"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+actionCommand="script.Action.checkScript($ScriptStorage, $scriptJedit/text)"
+-->
+ <JButton constraints='"buttonScriptEval"' id="buttonScriptEval" text="isisfish.script.evaluate"/>
+<!--
+ToolTipText="Try to eval current script (must be have main method)"
+origin="util:isInstance('fr.ifremer.isisfish.datastore.JavaSourceStorage', $ScriptStorage)"
+actionCommand="script.Action.evaluateScript($ScriptStorage, $scriptJedit/text)"
+-->
+ </JPanel>
+
+ <!--
+ | Content editor
+ +-->
+
+ <JSplitPane oneTouchExpandable="true" dividerLocation="250" orientation="VERTICAL">
+
+<!-- Fixme : pas compris : JSplitPane does not accept constraints
+constraints='"contentPanel"'
+-->
+ <!--
+ | Tree script selection
+ +-->
+ <JScrollPane>
+<!-- Fixme : non plus : JScrollPane does not accept constraints
+constraints='"tree"'
+-->
+ <JTree id="tree" name="tree" rootVisible="false">
+<!-- Fixme : NestedTreeModel, TreeRenderer and TreeSelectionEvents
+ <NestedTreeModel id="treeModel">
+ <TreeNode name="Root">
+ <TreeNode name="Script" userObject="'Script'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.ScriptStorage.getScriptNames()"/>
+ </TreeNode>
+ <TreeNode name="Simulator" userObject="'Simulator'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.SimulatorStorage.getSimulatorNames()"/>
+ </TreeNode>
+ <TreeNode name="Export" userObject="'Export'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.ExportStorage.getExportNames()"/>
+ </TreeNode>
+ <TreeNode name="Rule" userObject="'Rule'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames()"/>
+ </TreeNode>
+ <TreeNode name="AnalysePlan" userObject="'AnalysePlan'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getAnalysePlanNames()"/>
+ </TreeNode>
+ <TreeNode name="EquationModel" userObject="'EquationModel'">
+ <TreeNode origin="fr.ifremer.isisfish.datastore.FormuleStorage.getCategories()">
+ <TreeNode treeOrigin=".." childsPropertyName="fr.ifremer.isisfish.datastore.FormuleStorage.getFormuleNames(.)"/>
+ </TreeNode>
+ </TreeNode>
+ </TreeNode>
+ </NestedTreeModel>
+
+ <TreeRenderer>
+ <DefaultTreeRenderer type="fr.ifremer.isisfish.datastore.RegionStorage" childsPropertyName="name"/>
+ <DefaultTreeRenderer type="java.lang.String" childsPropertyName="org.codelutin.i18n.I18n._(.)"/>
+ </TreeRenderer>
+
+ <TreeSelectionEvents id="treeSelectionListener"
+ onValueChanged="thread:script.Action.loadScript($tree, $tree/selectionPath/path[2]/userObject, $tree/selectionPath/lastPathComponent)"/>
+-->
+ </JTree>
+
+ </JScrollPane>
+ <JSplitPane oneTouchExpandable="true" dividerLocation="250" orientation="HORIZONTAL">
+
+ <!--
+ | Editor script
+ +-->
+<!-- Fixme : editor
+ <editor id="scriptJedit" constraints='"fieldScriptEdit"'/>
+
+origin="$ScriptStorage/file"
+-->
+ <!--
+ | Log area
+ +-->
+
+ <JScrollPane>
+ <JTextArea id="actionLogArea"
+ editable="false"/>
+<!-- Fixme : Pas compris non plus (constraints)
+constraints='"actionLogArea"'
+origin="$ActionLog"
+-->
+ </JScrollPane>
+ </JSplitPane>
+ </JSplitPane>
+
+ <!--
+ | Status bar
+ +-->
+
+
+<!--
+<xpanel constraints='"scriptStatusBar"' xml="StatusBar.xml"/>
+-->
+
+
+</JFrame>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,238 @@
+<JPanel id="simulAdvancedParams" name="isisfish.advancedParameters.title" constraints='"simulAdvancedParams"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+ <JPanel constraints='"panelAdvancedParamsSimulator"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+
+<!--
+border="EtchedBorder"
+-->
+
+ <!--
+ |
+ | Simulator choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsSimulatorSelect"' text="isisfish.advancedParams.simulatorUse"/>
+
+ <JComboBox constraints='"fieldSimulAdvParamsSimulatorSelect"' id="fieldSimulAdvParamsSimulatorSelect">
+<!--
+ origin="$SimulationParameter/simulatorName"
+ actionCommand="update($fieldSimulAdvParamsSimulatorSelect/selectedItem, $SimulationParameter/simulatorName)"
+ <ComboBoxModel origin="fr.ifremer.isisfish.datastore.SimulatorStorage.getSimulatorNames()"/>
+-->
+ </JComboBox>
+
+ <!--
+ |
+ | Local/Remote choice
+ |
+ +-->
+
+ <JCheckBox text="isisfish.advancedParams.localSimulation"
+ constraints='"fieldSimulAdvParamsSimulatorLocal"'
+ id="fieldSimulAdvParamsSimulatorLocal"/>
+<!--
+ origin="$SimulationParameter/local"/
+ actionCommand="Update($fieldSimulAdvParamsSimulatorLocal/selected)"/>
+-->
+ <JCheckBox text="isisfish.advancedParams.subProcessSimulation"
+ constraints='"fieldSimulAdvParamsSimulatorSubProcess"'
+ id="fieldSimulAdvParamsSimulatorSubProcess"/>
+
+<!--
+ origin="$SimulationParameter/subProcess"
+ actionCommand="Update($fieldSimulAdvParamsSimulatorSubProcess/selected)"/>
+-->
+ <!--
+ |
+ | Trace/Cache option
+ |
+ +-->
+
+ <JCheckBox text="isisfish.advancedParams.simulationStatistique"
+ constraints="fieldSimulationStatistique"
+ id="fieldSimulationStatistique"/>
+<!--
+ origin="$SimulationParameter/useStatistic"
+ actionCommand="Update($fieldSimulationStatistique/selected)"/>
+-->
+ <JCheckBox text="isisfish.advancedParams.simulationCache"
+ constraints="fieldSimulationCache"
+ id="fieldSimulationCache"/>
+<!--
+ origin="$SimulationParameter/useOptimization"
+ actionCommand="Update($fieldSimulationCache/selected)"/>
+-->
+ </JPanel>
+
+ <JPanel constraints='"panelAdvancedParamsLogger"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+<!--
+border="EtchedBorder"
+-->
+
+ <!--
+ |
+ | simulator Logger level choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsSimulLogger"' text="isisfish.advancedParams.simulLevelLogger"/>
+
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerError" text="isisfish.common.error"
+ constraints='"fieldSimulAdvParamsSimulLoggerError"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulErrorLevel'
+actionCommand='Update("error", $SimulationParameter/simulLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerWarn" text="isisfish.common.warn"
+ constraints='"fieldSimulAdvParamsSimulLoggerWarn"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulWarnLevel'
+actionCommand='Update("warn", $SimulationParameter/simulLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerInfo" text="isisfish.common.info"
+ constraints='"fieldSimulAdvParamsSimulLoggerInfo"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulInfoLevel'
+actionCommand='Update("info", $SimulationParameter/simulLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsSimulLoggerDebug" text="isisfish.common.debug"
+ constraints='"fieldSimulAdvParamsSimulLoggerDebug"'
+ buttonGroup="fieldSimulAdvParamsSimulLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/simulDebugLevel'
+actionCommand='Update("debug", $SimulationParameter/simulLogLevel)'
+-->
+ <!--
+ |
+ | script Logger level choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsScriptLogger"' text="isisfish.advancedParams.scriptLevelLogger"/>
+
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerError" text="isisfish.common.error"
+ constraints='"fieldSimulAdvParamsScriptLoggerError"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptErrorLevel'
+actionCommand='Update("error", $SimulationParameter/scriptLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerWarn" text="isisfish.common.warn"
+ constraints='"fieldSimulAdvParamsScriptLoggerWarn"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptWarnLevel'
+actionCommand='Update("warn", $SimulationParameter/scriptLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerInfo" text="isisfish.common.info"
+ constraints='"fieldSimulAdvParamsScriptLoggerInfo"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptInfoLevel'
+actionCommand='Update("info", $SimulationParameter/scriptLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsScriptLoggerDebug" text="isisfish.common.debug"
+ constraints='"fieldSimulAdvParamsScriptLoggerDebug"'
+ buttonGroup="fieldSimulAdvParamsScriptLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/scriptDebugLevel'
+actionCommand='Update("debug", $SimulationParameter/scriptLogLevel)'
+-->
+ <!--
+ |
+ | libraries Logger level choice
+ |
+ +-->
+
+ <JLabel constraints='"labelSimulAdvParamsLibLogger"' text="isisfish.advancedParams.libLevelLogger"/>
+
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerError" text="isisfish.common.error"
+ constraints='"fieldSimulAdvParamsLibLoggerError"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libErrorLevel'
+actionCommand='Update("error", $SimulationParameter/libLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerWarn" text="isisfish.common.warn"
+ constraints='"fieldSimulAdvParamsLibLoggerWarn"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libWarnLevel'
+actionCommand='Update("warn", $SimulationParameter/libLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerInfo" text="isisfish.common.info"
+ constraints='"fieldSimulAdvParamsLibLoggerInfo"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libInfoLevel'
+actionCommand='Update("info", $SimulationParameter/libLogLevel)'
+-->
+ <JRadioButton id="fieldSimulAdvParamsLibLoggerDebug" text="isisfish.common.debug"
+ constraints='"fieldSimulAdvParamsLibLoggerDebug"'
+ buttonGroup="fieldSimulAdvParamsLibLoggerGroup"/>
+<!--
+ origin='$SimulationParameter/libDebugLevel'
+actionCommand='Update("debug", $SimulationParameter/libLogLevel)'
+-->
+ </JPanel>
+ <!--
+ |
+ | Tags values
+ |
+ +-->
+
+ <JPanel constraints='"panelTagValue"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl")}'>
+<!--
+border="EtchedBorder"
+-->
+ <JLabel constraints='"labelTagValue"' text="isisfish.advancedParams.freeParameters"
+ horizontalAlignment="0"/>
+
+ <JLabel constraints='"labelTag"' text="isisfish.common.tag"/>
+ <JTextField constraints='"fieldTag"' id="fieldTag"/>
+ <JLabel constraints='"labelValue"' text="isisfish.common.value"/>
+ <JTextField constraints='"fieldValue"' id="fieldValue"/>
+
+ <JButton constraints='"buttonTagValueAdd"' text="isisfish.common.add"/>
+<!--
+actionCommand="simulator.SimulatorAction.addTagValue($SimulationParameter, $fieldTag/text, $fieldValue/text);refreshView($tableTagValue)"
+-->
+ <JScrollPane constraints='"tableTagValue"'>
+ <JTable id="tableTagValue">
+
+<!--- Fixme : TableModel
+ <tableModel origin="entrySet($SimulationParameter/tagValue)">
+ <column title="Tag" property="key"/>
+ <column title="Value" property="value"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonTagValueRemove"' text="isisfish.common.remove"/>
+<!--
+actionCommand="simulator.SimulatorAction.removeTagValue($SimulationParameter, getValueAt($tableTagValue, $tableTagValue/selectedRow, 0));refreshView($tableTagValue)"
+-->
+ </JPanel>
+
+ <!--
+ |
+ | Save config
+ |
+ +-->
+
+ <JButton constraints='"buttonAdvancedParamsSave"' text="isisfish.common.saveNextSimulation"/>
+<!--
+actionCommand="simulator.SimulatorAction.saveTagValue($SimulationParameter/tagValue);simulator.SimulatorAction.saveSimulatorChoice($fieldSimulAdvParamsSimulatorSelect/selectedItem, $fieldSimulAdvParamsSimulatorLocal/selected)"
+-->
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Export2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,41 @@
+<JPanel id="simulExport" name="isisfish.export.title" constraints='"simulExport"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Export.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+<!--
+ <ContextDataSource id="ExportNames" context="current" source="ExportNames"/>
+-->
+ <JScrollPane constraints='"listSimulExportChoose"'>
+ <JList id="listSimulExportChoose" selectionMode="2">
+<!-- Fixme : ListModel
+origin="$SimulationParameter/exportNames"
+ <ListModel origin="$ExportNames"/>
+ <ListSelectionEvents onValueChanged="Update($listSimulExportChoose/selectedValues, $SimulationParameter/exportNames)"/>
+ <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createExportClassDocsModel($ExportNames)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulExportFolder"' text="isisfish.export.directory"/>
+
+ <JTextField constraints='"fieldSimulExportFolder"'
+ id="fieldSimulExportFolder">
+<!-- Fixme : DocumentEvents
+origin="$SimulationParameter/exportDirectory"
+ <DocumentEvents onModified="Update($fieldSimulExportFolder/text)"/>
+-->
+ </JTextField>
+
+ <JButton constraints='"buttonSimulExportFolderChoose"' text="isisfish.common.ellipsis"/>
+<!--
+actionCommand="update(org.codelutin.util.FileUtil.getDirectory(), $SimulationParameter/exportDirectory);refreshView($fieldSimulExportFolder)"
+-->
+
+ <JButton constraints='"buttonSimulExportSave"' text="isisfish.common.saveNextSimulation"/>
+<!--
+actionCommand="simulator.SimulatorAction.saveExport($SimulationParameter/exportDirectory, $SimulationParameter/exportNames)"
+-->
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,208 @@
+<JPanel id="simulParams" name="isisfish.params.title" constraints='"simulParams"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Params.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="RuleNames" context="current" source="RuleNames"/>
+-->
+ <JLabel constraints='"labelSimulParamsSelect"' text="isisfish.params.loadOldSimulation"/>
+ <JPanel constraints='"panelSimulParamsSelectFilterActions"'>
+ <JButton text="isisfish.params.filter" id="buttonSimulParamsSelectFilter"/>
+<!--
+actionCommand='xpath:fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil.filterSimulation($SimulationFilterModel);refreshView("fieldSimulParamsSelect");
+-->
+ <JButton text="isisfish.params.clearFilter" id="buttonSimulParamsSelectClearFilter"/>
+<!--
+ actionCommand='xpath:selectAll($SimulationFilterModel);refreshView("fieldSimulParamsSelect")'
+-->
+ </JPanel>
+
+ <JComboBox id="fieldSimulParamsSelect" constraints='"fieldSimulParamsSelect"'>
+<!-- Fixme : ComboBoxModel
+origin="$SimulationFilterModel/filteredResult"
+firstNull="true"
+actionCommand="thread:simulator.SimulatorAction.loadOldSimulation($fieldSimulParamsSelect/selectedItem)"
+ <ComboBoxModel origin="$SimulationFilterModel/filteredResult"/>
+-->
+ </JComboBox>
+
+ <JLabel constraints='"labelSimulParamsName"' text="isisfish.params.simulationName"/>
+ <JTextField constraints='"fieldSimulParamsName"' id="fieldSimulParamsName">
+<!--
+origin="$OldSimulationName"
+-->
+ </JTextField>
+
+ <JLabel constraints='"labelSimulParamsDesc"' text="isisfish.params.description"/>
+ <JScrollPane constraints='"fieldSimulParamsDesc"'>
+ <JTextArea id="fieldSimulParamsDesc">
+<!-- Fixme : DocumentEvents
+origin="$SimulationParameter/description"
+ <DocumentEvents onModified="Update($fieldSimulParamsDesc/text)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulParamsRegion"' text="isisfish.common.region"/>
+ <JComboBox constraints='"fieldSimulParamsRegion"' id="fieldSimulParamsRegion">
+<!-- Fixme : ComboBoxModel
+ origin="$SimulationParameter/regionName"
+ firstNull="true"
+ actionCommand="thread:simulator.SimulatorAction.loadRegion($SimulationParameter, $fieldSimulParamsRegion/selectedItem)"
+ <ComboBoxModel origin="fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames()"/>
+-->
+
+ </JComboBox>
+
+ <JLabel constraints='"labelSimulParamsStrategies"' text="isisfish.common.strategies"/>
+ <JScrollPane constraints='"fieldSimulParamsStrategies"'>
+ <JList id="listSimulParamsStrategies" selectionMode="2">
+<!-- Fixme : ListModel and ListSelectionEvents
+origin="$SimulationParameter/strategies"
+<ListModel origin="$RegionStorage/fisheryRegion/strategy" iterate="true"/>
+ <ListSelectionEvents onValueChanged="Update($listSimulParamsStrategies/selectedValues, $SimulationParameter/strategies)"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulParamsPopulations"' text="isisfish.common.populations"/>
+ <JScrollPane constraints='"fieldSimulParamsPopulations"'>
+ <JList id="listSimulParamsPopulations" selectionMode="2">
+<!-- Fixme : ListModel, ListSelectionEvents and MousEvents
+origin="$SimulationParameter/populations"
+<ListModel origin="$RegionStorage/fisheryRegion/species/population" iterate="true"/>
+<ListSelectionEvents onValueChanged="Update($listSimulParamsPopulations/selectedValues, $SimulationParameter/populations)"/>
+<MouseEvents onClicked="xpath:setMatrix($simulParamsNumbers, getNumberOf($SimulationParameter, $listSimulParamsPopulations/selectedValues))"/>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JLabel constraints='"labelSimulParamsMesures"' text="isisfish.common.rules"/>
+ <JComboBox constraints='"fieldSimulParamsMesuresSelect"' id="fieldSimulParamsMesuresSelect">
+<!-- Fixme : ComboBoxModel and ComboBoxRender
+origin=""
+<ComboBoxModel origin="$RuleNames"/>
+-->
+ <!--<ComboBoxModel origin="fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames()"/>-->
+<!--
+ <ComboBoxRenderer>
+ <SimpleToolTipComboBoxRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createRuleDescriptionsModel($RuleNames)'/>
+ </ComboBoxRenderer>
+-->
+
+ </JComboBox>
+ <JScrollPane constraints='"fieldSimulParamsMesuresList"'>
+ <JList id="listSimulParamsMesuresList" selectionMode="0">
+<!-- Fixme : ListModel, ListSelectionEvents and ListRenderer
+origin=""
+renderer="fr.ifremer.isisfish.datastore.RuleStorage.getName(/)"
+toolTipTextPropertyName="description"
+ <ListModel origin="$SimulationParameter/rules"/>
+ <ListSelectionEvents onValueChanged="fr.ifremer.isisfish.ui.simulator.SimulatorAction.refreshRule($simulParamsRules)"/>
+ <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createRuleDescriptionsModel2($SimulationParameter/rules,$buttonSimulParamsMesuresClear,$listSimulParamsMesuresList)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonSimulParamsMesuresAdd"' id="buttonSimulParamsMesuresAdd"
+ text="isisfish.common.add"/>
+<!--
+ actionCommand="xpath:addRule($SimulationParameter, getNewRuleInstance(fr.ifremer.isisfish.datastore.RuleStorage.getRule($fieldSimulParamsMesuresSelect/selectedItem)));refreshView($listSimulParamsMesuresList)"
+-->
+ <JButton constraints='"buttonSimulParamsMesuresRemove"' id="buttonSimulParamsMesuresRemove"
+ text="isisfish.common.remove"/>
+<!--
+actionCommand="xpath:removeRule($SimulationParameter, $listSimulParamsMesuresList/selectedValue);refreshView($listSimulParamsMesuresList)"
+-->
+ <JButton constraints='"buttonSimulParamsMesuresClear"' id="buttonSimulParamsMesuresClear"
+ text="isisfish.common.clear"/>
+<!--
+actionCommand="xpath:clearRules($SimulationParameter);refreshView($listSimulParamsMesuresList)"
+-->
+ <!--TODO Doest not work! when calling use an AbstractCollection with no clear implementation text="Clear" actionCommand="xpath:clear($SimulationParameter/rules);refreshView($listSimulParamsMesuresList)"/>-->
+
+ <JLabel constraints='"labelSimulParamsNbAnnees"' text="isisfish.params.numberYear"/>
+ <JTextField constraints='"fieldSimulParamsNbAnnees"' id="fieldSimulParamsNbAnnees">
+<!--
+origin="$SimulationParameter/numberOfYear"
+<DocumentEvents onModified="Update($fieldSimulParamsNbAnnees/text)"/>
+-->
+ </JTextField>
+
+ <JTabbedPane constraints='"fieldSimulParamsTabs"'>
+<!-- Fixme : matrixPanel
+<matrixPanel id="simulParamsNumbers" name="isisfish.params.populationNumbers">
+</matrixPanel>
+-->
+ <tab title="isisfish.params.ruleParameters">
+ <JTable id="simulParamsRules" name="isisfish.params.ruleParameters">
+<!-- Fixme : tableModel
+<tableModel origin="fr.ifremer.isisfish.datastore.RuleStorage.getParameterNames($listSimulParamsMesuresList/selectedValue)">
+ <column title="Name" property="/" renderer="key">
+ <tableColumnRenderer>
+ <SimpleToolTipTableColumnRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createRuleParamsModel($listSimulParamsMesuresList/selectedValue)'/>
+-->
+ <!--<RuleParameterColumnRenderer origin="$listSimulParamsMesuresList/selectedValue"/>-->
+<!--
+ </tableColumnRenderer>
+ </column>
+ <column title="Value" editable="true"
+ property="fr.ifremer.isisfish.datastore.RuleStorage.getParameterValue($listSimulParamsMesuresList/selectedValue, /key)"
+ actionEdit="fr.ifremer.isisfish.datastore.RuleStorage.setParameterValue($listSimulParamsMesuresList/selectedValue, $e/object/key, $e/value)">
+ <tableColumnEditor><ParameterColumnEditor origin="$RegionStorage"/></tableColumnEditor>
+ <tableColumnRenderer><SimpleToolTipTableColumnRenderer origin=''/></tableColumnRenderer>
+ </column>
+ </tableModel>
+
+-->
+ </JTable>
+ </tab>
+ </JTabbedPane>
+
+ <JPanel constraints='"dummyPanel"'/>
+ <JPanel id="fieldSimulParamsOptions"
+ constraints='"fieldSimulParamsOptions"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Params.xgl")}'> <!-- TODO la bordure avec le titre -->
+<!--
+text="Options de simulation"
+-->
+ <JCheckBox text="isisfish.params.usePreSimulationScript"
+ constraints='"fieldUseSimulPreScripts"'
+ id="fieldUseSimulPreScripts"/>
+<!--
+origin="$SimulationParameter/usePreScript"
+actionCommand="update($fieldUseSimulPreScripts/selected);xpath:setEnabledAt($simulTabs, 1, $SimulationParameter/usePreScript);simulator.SimulatorAction.selectTab($simulTabs, $SimulationParameter/usePreScript, '1')"
+-->
+ <JCheckBox text="isisfish.params.useAnalysePlan"
+ constraints='"fieldSimulUseAnalysePlan"'
+ id="fieldSimulUseAnalysePlan"/>
+<!--
+origin="$SimulationParameter/useAnalysePlan"
+actionCommand="update($fieldSimulUseAnalysePlan/selected);xpath:setEnabledAt($simulTabs, 2, $SimulationParameter/useAnalysePlan);simulator.SimulatorAction.selectTab($simulTabs, $SimulationParameter/useAnalysePlan, '2')"
+-->
+ <JCheckBox text="isisfish.params.onlyExportSimulation"
+ constraints='"fieldSimulOnlyExport"'
+ id="fieldSimulOnlyExport"/>
+<!--
+origin="$SimulationParameter/onlyExport"
+actionCommand="update($fieldSimulOnlyExport/selected)"
+-->
+ </JPanel>
+
+ <JButton constraints='"buttonSimulParamsSimulate"' id="buttonSimulParamsSimulate"
+ text="isisfish.common.simulate"/>
+<!--
+actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'false', $simulTabs)"
+-->
+
+ <JButton constraints='"buttonSimulParamsAddQueue"' id="buttonSimulParamsAddQueue"
+ text="isisfish.common.addQueue"/>
+<!--
+actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'true', $simulTabs)"
+-->
+
+</JPanel>
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/PreScripts2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,21 @@
+<JPanel id="simulPreScripts" name="isisfish.preScript.title"
+ constraints='"simulPreScripts"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/PreScripts.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JScrollPane constraints='"fieldSimulPreScript"'>
+ <JTextArea id="fieldSimulPreScript">
+<!-- Fixme : DocmumentEvents
+origin="$SimulationParameter/preScript"
+ <DocumentEvents onModified="Update($fieldSimulPreScript/text, $SimulationParameter/preScript)"/>
+-->
+ </JTextArea>
+ </JScrollPane>
+
+ <JButton constraints='"buttonBackToParams"' text="isisfish.preScript.backParameter"/>
+<!--
+actionCommand="simulator.SimulatorAction.selectTab($simulTabs, 'true', '0')"
+-->
+
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,39 @@
+<JPanel id="simulQueue" name="isisfish.queue.title" constraints='"simulQueue"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Queue.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JScrollPane constraints='"queueTable"'>
+ <JTable id="queueTable">
+<!-- Fixme : TableModel a implemanter
+ <tableModel>
+ <SimulationQueueModel id="queueModel"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+ <JScrollPane constraints='"queueTableDone"'>
+ <JTable id="queueTableDone">
+<!--
+ <tableModel>
+ <SimulationDoneQueueModel id="queueModelDone"/>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonSimulQueueStart"' id="buttonSimulQueueStart" text="isisfish.queue.simulationLaunch"/>
+<!--
+actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationManager.getInstance(), 'true')"
+-->
+ <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueueStart($buttonSimulQueueStart)"-->
+ <JButton constraints='"buttonSimulQueueRemove"' id="buttonSimulQueueRemove" text="isisfish.queue.stopSimulation"/>
+<!--
+ actionCommand="xpath:setStopSimulationRequest(getSimulationControl($queueModel, $queueTable/selectedRow), 'true')"
+-->
+ <JButton constraints='"buttonSimulQueueShowLog"' id="buttonSimulQueueShowLog" text="isisfish.queue.showLog"/>
+<!--
+actionCommand="fr.ifremer.isisfish.ui.simulator.SimulatorAction.showLog($queueTableDone,$queueModelDone,$queueTableDone/selectedRow)"
+-->
+ <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueue($buttonSimulQueueShowLog,$queueTableDone)"-->
+ <!--TODO ne fonctionne pas non plusorigin="$queueTableDone/selectedRow!=-1"-->
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/ResultChoice2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,44 @@
+<JPanel id="ResultChoice" name="isisfish.resultChoice.title"
+ constraints='"ResultChoice"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/ResultChoice.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="ResultNames" context="current" source="ResultNames"/>
+-->
+ <!--
+ |
+ | Result enabled
+ |
+ +-->
+
+ <JPanel constraints='"panelResultNames"'
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/ResultChoice.xgl")}'>
+
+ <JLabel constraints='"labelResultNames"' text="isisfish.resultChoice.save"
+ horizontalAlignment="0"/>
+ <JScrollPane constraints='"fieldResultNames"'>
+ <!--list id="listResultNames" SelectionMode="2" renderer="org.codelutin.i18n.I18n._(.)"-->
+ <JList id="listResultNames" selectionMode="2">
+<!-- Fixme : ListModel, ListSelectionEvents and listRender
+ origin="$SimulationParameter/resultEnabled"
+ <ListModel origin="$ResultNames"/>
+ <ListSelectionEvents onValueChanged="Update($listResultNames/selectedValues, $SimulationParameter/resultEnabled)"/>
+ <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createResultFieldsModel($ResultNames)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonResultNamesSave"' text="isisfish.common.saveNextSimulation"/>
+<!--
+ actionCommand="simulator.SimulatorAction.saveResultNames($listResultNames/selectedValues)"
+-->
+ </JPanel>
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Sens2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,84 @@
+<JPanel id="simulSens" name="isisfish.sens.title" constraints='"simulSens"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Sens.xgl")}'>
+
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+
+<!-- Fixme : ContextDataSource
+ <ContextDataSource id="AnalysePlanNames" context="current" source="AnalysePlanNames"/>
+-->
+ <!--JScrollPane constraints='"labelSimulParamsAnalysePlans"'>
+ <JTextArea id="AnalysePlanDescription" editable="false" text="isisfish.sens.planAdd"/>
+ </JScrollPane-->
+ <JComboBox constraints='"fieldSimulParamsAnalysePlansSelect"' id="fieldSimulParamsAnalysePlansSelect">
+<!-- Fixme : ComboBoxModel and ComboBoxRenderer
+origin=""
+ <ComboBoxModel origin="$AnalysePlanNames"/>
+ <ComboBoxRenderer>
+ <SimpleToolTipComboBoxRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createAnalysePlanDescriptionsModel($AnalysePlanNames)'/>
+ </ComboBoxRenderer>
+-->
+ </JComboBox>
+ <JScrollPane constraints='"fieldSimulParamsAnalysePlansList"'>
+ <JList id="listSimulParamsAnalysePlansList" selectionMode="0">
+<!-- Fixme : ListModel, ListSelectionEvents and ListRenderer
+origin=""
+renderer="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getName(/)"
+toolTipTextPropertyName="description"
+ <ListModel origin="$SimulationParameter/analysePlans"/>
+ <ListSelectionEvents onValueChanged="refreshView($simulParamsAnalysePlans)"/>
+-->
+ <!--ListSelectionEvents onValueChanged="xpath:setText($AnalysePlanDescription, $listSimulParamsAnalysePlansList/selectedValue/description)"/-->
+<!-- <ListRenderer>
+ <SimpleToolTipListRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createAnalysePlanDescriptionsModel2($SimulationParameter/analysePlans,$buttonSimulParamsAnalysePlansClear,$listSimulParamsAnalysePlansList)'/>
+ </ListRenderer>
+-->
+ </JList>
+ </JScrollPane>
+
+ <JButton constraints='"buttonSimulParamsAnalysePlansAdd"' id="buttonSimulParamsAnalysePlansAdd"
+ text="isisfish.common.add"/>
+<!--
+actionCommand="xpath:addAnalysePlan($SimulationParameter, getNewAnalysePlanInstance(fr.ifremer.isisfish.datastore.AnalysePlanStorage.getAnalysePlan($fieldSimulParamsAnalysePlansSelect/selectedItem)));refreshView($listSimulParamsAnalysePlansList)"
+-->
+ <JButton constraints='"buttonSimulParamsAnalysePlansRemove"' id="buttonSimulParamsAnalysePlansRemove"
+ text="isisfish.common.remove"/>
+<!--
+ actionCommand="xpath:removeAnalysePlan($SimulationParameter, $listSimulParamsAnalysePlansList/selectedValue);refreshView($listSimulParamsAnalysePlansList)"
+-->
+ <JButton constraints='"buttonSimulParamsAnalysePlansClear"' id="buttonSimulParamsAnalysePlansClear"
+ text="isisfish.common.clear"/>
+<!--
+actionCommand="xpath:clearPlans($SimulationParameter);refreshView($listSimulParamsAnalysePlansList,$simulParamsAnalysePlans)"
+-->
+ <!--TODO Doest not work! when calling use an AbstractCollection with no clear implementation text="Clear" actionCommand="xpath:clear($SimulationParameter/analysePlans);refreshView($listSimulParamsAnalysePlansList)"/>-->
+
+ <JScrollPane constraints="simulParamsAnalysePlans">
+ <JTable id="simulParamsAnalysePlans" name="isisfish.sens.planParameters">
+<!-- Fixme : JTableModel
+ <tableModel origin="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getParameterNames($listSimulParamsAnalysePlansList/selectedValue)">
+ <column title="Name" property="/" renderer="key">
+ <tableColumnRenderer>
+ <SimpleToolTipTableColumnRenderer origin='fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory.createAnalysePlanParamsModel($listSimulParamsAnalysePlansList/selectedValue)'/>
+ </tableColumnRenderer>
+ </column>
+ <column title="Value" editable="true"
+ property="fr.ifremer.isisfish.datastore.AnalysePlanStorage.getParameterValue($listSimulParamsAnalysePlansList/selectedValue, /key)"
+ actionEdit="fr.ifremer.isisfish.datastore.AnalysePlanStorage.setParameterValue($listSimulParamsAnalysePlansList/selectedValue, $e/object/key, $e/value)">
+ <tableColumnEditor><ParameterColumnEditor origin="$RegionStorage"/></tableColumnEditor>
+ <tableColumnRenderer>
+ <SimpleToolTipTableColumnRenderer origin=''/>
+ </tableColumnRenderer>
+ </column>
+ </tableModel>
+-->
+ </JTable>
+ </JScrollPane>
+
+ <JButton constraints='"buttonBackToParams"' text="isisfish.sens.backParameter"/>
+<!--
+actionCommand="simulator.SimulatorAction.selectTab($simulTabs, 'true', '0')"
+-->
+
+</JPanel>
+
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizard2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,34 @@
+<JFrame id="sensWizard" visible="true" size='{new Dimension(400,400)}' title="isisfish.sensibilityWizard.title"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizard.xgl")}'>
+<!--
+bundle="org.codelutin.i18n.I18nBundleBridge"
+-->
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JPanel constraints='"sensWizardPanel"' layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizard.xgl")}'>
+ <!--JPanel constraints='"sensWizardPanelContent"'-->
+<!-- Fixme : WizardPanel
+ <WizardPanel id="wizpnl" constraints="sensWizardPanelContentPanel" xml="simulator/SensWizardPanels.xml" onChange="simulator.SensWizard.newTab($wizardPrev, $wizardNext, $wizardFinish, $wizardTabPane)"/>
+-->
+ <!--/panel-->
+ <JPanel constraints='"sensWizardPanelButtons"'>
+ <JButton id="wizardPrev" text="isisfish.common.previous" enabled="false"/>
+<!--
+actionCommand="prev"
+-->
+ <JButton id="wizardNext" text="isisfish.common.next"/>
+<!--
+actionCommand="next"
+-->
+ <JButton id="wizardFinish" text="isisfish.common.finish" enabled="false"/>
+<!--
+actionCommand="finishSensWizard"
+-->
+ <JButton text="isisfish.common.cancel"/>
+<!--
+actionCommand="cancel"
+-->
+ </JPanel>
+ </JPanel>
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPannels2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,64 @@
+<JPanel name="isisfish.sensWizardPanels.title" id="sensWizardPanels" visible="true"
+ layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <JTabbedPane id="wizardTabPane" constraints='"wizardTabPane"'>
+ <tab title="isisfish.sensWizardPanels.type">
+ <JPanel name="isisfish.sensWizardPanels.type" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <JLabel constraints='"typeSensWizardLabel"' text="isisfish.sensWizardPanels.selectType"/>
+ <JRadioButton constraints='"buttonSimulSensWizardValuesList"' text="isisfish.sensWizardPanels.values" selected="true" buttonGroup="sensWizardPanelsGroup"/>
+ <JRadioButton constraints='"buttonSimulSensWizardScriptsList"' text="isisfish.sensWizardPanels.scripts" buttonGroup="sensWizardPanelsGroup"/>
+ </JPanel>
+ </tab>
+ <tab title="isisfish.sensWizardPanels.values">
+ <JPanel name="isisfish.sensWizardPanels.values" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <JPanel constraints='"valuesSensWizardLabelPanel"'>
+ <JLabel constraints='"valuesSensWizardObjectLabel"' text="isisfish.sensWizardPanels.object"/>
+ <JTextField constraints='"valuesSensWizardObjectField"' editable="false"/>
+<!--
+origin=""
+-->
+ <JLabel constraints='"valuesSensWizardFieldLabel"' text="isisfish.sensWizardPanels.field"/>
+ <JTextField constraints='"valuesSensWizardFieldField"' editable="false"/>
+<!--
+origin=""
+-->
+ <JLabel constraints='"valuesSensWizardTypeLabel"' text="isisfish.sensWizardPanels.type"/>
+ <JTextField constraints='"valuesSensWizardTypeField"' editable="false"/>
+<!--
+origin=""
+-->
+ </JPanel>
+ <JPanel constraints='"valuesSensWizardNewValuePanel"'>
+<!--
+text="New Value"
+-->
+ <JTextArea text="isisfish.common.blabla"/> <!-- TODO Peut dependre du type de l'obet -->
+<!--
+origin=""
+-->
+ </JPanel>
+ <JButton constraints='"buttonValuesSensWizardAdd"' id="buttonValuesSensWizardAdd" text="isisfish.sensWizardPanels.add" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardModify"' id="buttonValuesSensWizardModify" text="isisfish.sensWizardPanels.modify" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardRemove"' id="buttonValuesSensWizardRemove" text="isisfish.sensWizardPanels.remove" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardUp"' id="buttonValuesSensWizardUp" text="isisfish.sensWizardPanels.up" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardDown"' id="buttonValuesSensWizardDown" text="isisfish.sensWizardPanels.down" actionCommand=""/>
+ <JButton constraints='"buttonValuesSensWizardClear"' id="buttonValuesSensWizardClear" text="isisfish.sensWizardPanels.clear" actionCommand=""/>
+ <JScrollPane constraints='"fieldSensWizardList"'>
+ <JList id="listSensWizardList">
+<!-- Fixme : ListModel
+origin="" SelectionMode="1" iterate="false"
+ <ListModel origin=""/>
+-->
+ </JList>
+ </JScrollPane>
+ </JPanel>
+ </tab>
+ <tab title="isisfish.sensWizardPanels.validate">
+ <JPanel name="isisfish.sensWizardPanels.validate" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xgl")}'>
+ <JLabel constraints='"typeSensWizardLabel"' text="isisfish.sensWizardPanels.finish"/>
+ </JPanel>
+ </tab>
+ </JTabbedPane>
+</JPanel>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/Simul2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,57 @@
+<JFrame id="simul" visible="true" size='{new Dimension(700,500)}' location='{new Point(0,139)}' title="isisfish.simulation.title" layout='{new XMLGridLayout("fr/ifremer/isisfish/ui/simulator/Simul.xgl")}'>
+ <script>
+ import org.codelutin.widget.XMLGridLayout;
+ </script>
+ <!--onOpened="simulator.SimulatorAction.opened($simulTabs)"-->
+<!--
+ <WindowEvents id="events"
+ onOpened="simulator.SimulatorAction.opened($simulTabs,$buttonSimulQueueStart,$buttonSimulQueueRemove,$buttonSimulQueueShowLog,$queueTable,$queueTableDone,$buttonSimulParamsAnalysePlansRemove,$listSimulParamsAnalysePlansList,$buttonSimulParamsMesuresRemove,$listSimulParamsMesuresList)"
+ onClosing="UIHelper.closeContext()" />
+
+ <ContextDataSource id="OldSimulationName" context="current" source="OldSimulationName"/>
+ <ContextDataSource id="SimulationFilterModel" context="current" source="SimulationFilterModel"/>
+ <ContextDataSource id="SimulationParameter" context="current" source="SimulationParameter"/>
+ <ContextDataSource id="RegionStorage" context="current" source="RegionStorage"/>
+-->
+ <JMenuBar>
+ <JMenu text="isisfish.simulation.menu.file">
+ <JMenuItem name="miClose" text="isisfish.simulation.menu.close" accelerator="accClose"/>
+<!--
+ icon="imgClose" mnemonic="mnClose"
+-->
+ </JMenu>
+<!--
+ <JMenu text="txtSimulation" mnemonic="mnSimulation">
+ <JMenuItem name="miSimulate" text="txtSimulate" icon="imgSimulate"
+ mnemonic="mnSimulate" ActionCommand="simulate" accelerator="accSimulate"/>
+ <JMenuItem name="miQueue" text="txtQueue" icon="imgQueue"
+ mnemonic="mnQueue" ActionCommand="queue" accelerator="accQueue"/>
+ </JMenu>
+-->
+ <JMenu text="isisfish.simulation.menu.help">
+<!--
+ mnemonic="mnHelp"
+-->
+ <JMenuItem name="miAbout" text="isisfish.simulation.menu.about" accelerator="accAbout"/>
+<!--
+ icon="imgAbout" mnemonic="mnAbout"
+-->
+ </JMenu>
+ </JMenuBar>
+
+ <JTabbedPane id="simulTabs" constraints='"simulTabs"'>
+ <tab title='isisfish.Params.title'><Params2/></tab>
+ <tab title='isisfish.PreScripts.title'><PreScripts2/></tab>
+ <tab title='isisfish.Sens.title'><Sens2/></tab>
+ <tab title='isisfish.Export.title'><Export2/></tab>
+ <tab title='isisfish.ResultChoice.title'><ResultChoice2/></tab>
+ <tab title='isisfish.advancedParameters.title'><AdvancedParams2/></tab>
+ <tab title='isisfish.Queue.title'><Queue2/></tab>
+ </JTabbedPane>
+
+
+<!--
+ <StatutBar2 constraints='"statusBar"'/>
+ <JLabel icon="images/fish.jpg" constraints='"fishIcon"'/>
+-->
+</JFrame>
\ No newline at end of file
Added: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx (rev 0)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue2.jaxx 2008-08-28 08:32:14 UTC (rev 1313)
@@ -0,0 +1,9 @@
+<JFrame visible="true" size='{new Dimension(400,400)}' title="isisfish.simulationQueue.title"
+ layout='{new BorderLayout()}'>
+
+<!--
+bundle="org.codelutin.i18n.I18nBundleBridge"
+<xpanel xml="simulator/Queue.xml"/>
+-->
+
+</JFrame>
1
0
r1312 - in branches/isis-fish-3.2.1: . src/java/fr/ifremer/isisfish src/java/fr/ifremer/isisfish/aspect src/java/fr/ifremer/isisfish/datastore src/java/fr/ifremer/isisfish/datastore/migration src/java/fr/ifremer/isisfish/datastore/update src/java/fr/ifremer/isisfish/entities src/java/fr/ifremer/isisfish/equation src/java/fr/ifremer/isisfish/export src/java/fr/ifremer/isisfish/logging src/java/fr/ifremer/isisfish/map src/java/fr/ifremer/isisfish/simulator src/resources/i18n src/uimodel/fr
by sletellier@users.labs.libre-entreprise.org Aug. 28, 2008
by sletellier@users.labs.libre-entreprise.org Aug. 28, 2008
Aug. 28, 2008
Author: sletellier
Date: 2008-08-28 08:21:07 +0000 (Thu, 28 Aug 2008)
New Revision: 1312
Modified:
branches/isis-fish-3.2.1/go.sh
branches/isis-fish-3.2.1/pom.xml
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java
branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties
branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties
branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml
Log:
Premiere pass vers la migration vers jaxx
Modified: branches/isis-fish-3.2.1/go.sh
===================================================================
--- branches/isis-fish-3.2.1/go.sh 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/go.sh 2008-08-28 08:21:07 UTC (rev 1312)
@@ -59,7 +59,7 @@
fi
aspectwerkz=""
-CL=$rep/target/classes #:$rep/target/isis-fish-3.0.0.jar
+CL=$rep/target/classes:$rep/src/resources #:$rep/target/isis-fish-3.0.0.jar
for f in $rep/target/dependency/*.jar; do
CL=$CL:$f
if [ -n "$(echo $f | grep aspectwerkz-jdk5)" ]; then
@@ -68,5 +68,8 @@
done
LOG="-Dlog4j.configuration=file:$rep/src/resources/log4j.properties" # -Dlog4j.debug"
-$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.IsisFish "$@"
+##$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.IsisFish "$@"
+$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.ui.Welcome2 "$@"
+
+
#$JAVA -Xmx$MX -Xms$MX -classpath $CL $NOaspectwerkz $TRACE_FILE $LOG $JVM_OPT $DEBUG fr.ifremer.isisfish.ui.update.Counter "$@"
Modified: branches/isis-fish-3.2.1/pom.xml
===================================================================
--- branches/isis-fish-3.2.1/pom.xml 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/pom.xml 2008-08-28 08:21:07 UTC (rev 1312)
@@ -63,6 +63,7 @@
</scm>
<build>
+
<plugins>
<!--<plugin>-->
<!--<groupId>lutinplugin</groupId>-->
@@ -246,7 +247,10 @@
<plugin>
<groupId>org.codelutin.jaxx</groupId>
<artifactId>maven-jaxx-plugin</artifactId>
- <version>0.1</version>
+ <version>0.1</version>
+<!-- <configuration>
+ <src>src/uimodel</src>
+ </configuration> -->
<executions>
<execution>
<phase>generate-sources</phase>
@@ -849,7 +853,7 @@
<scope>compile</scope>
</dependency>
- <!-- ssj pour les calculs stockastiques -->
+ <!-- ssj pour les calculs stockastiques
<dependency>
<groupId>ssj</groupId>
<artifactId>ssj</artifactId>
@@ -899,7 +903,7 @@
<scope>compile</scope>
</dependency>
- <!-- fin ssj pour les calculs stockastiques -->
+ < ! - - fin ssj pour les calculs stockastiques -->
<!-- debut svnkit pour communication subversion -->
<dependency>
@@ -1017,4 +1021,4 @@
</profile>
</profiles>
-</project>
\ No newline at end of file
+</project>
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -94,7 +94,7 @@
return databaseVersion;
}
- static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2008";
+ 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 */
@@ -407,7 +407,7 @@
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
+ // 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()) {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -170,7 +170,7 @@
config = new IsisConfig();
- // parsing des options à partir des arguments passés
+ // parsing des options ᅵ partir des arguments passᅵs
config.parse(args);
I18n.init(config.getLocale(), config.getEncoding());
@@ -197,17 +197,17 @@
* l'utilisateur
*/
static public void initVCS() {
- // init vcs
- vcs = VCSFactory.createVCS(config);
-
- // check connection status
- vcs.checkProtocol();
-
- // check release
- vcs.checkRelease();
-
- // check file status
- vcs.checkFileStatus();
+// // init vcs
+// vcs = VCSFactory.createVCS(config);
+//
+// // check connection status
+// vcs.checkProtocol();
+//
+// // check release
+// vcs.checkRelease();
+//
+// // check file status
+// vcs.checkFileStatus();
}
/**
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisFishRuntimeException.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/AspectClassLoader.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Cache.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* Cache.aj
*
- * Created: 25 août 06 22:42:47
+ * Created: 25 aoᅵt 06 22:42:47
*
* @author poussin
* @version $Revision$
@@ -106,8 +106,8 @@
Object result = cache.get(key);
if (result == null) {
result = realCall(jp);
-// addListenerFor(key); // pas necessaire car on a la date et pour une date donnée rien ne peut changer
- if (result != null) { // util pour les methodes retournant void, ne fonctionne pas si on met AND !execute(void *(..)) dans l'aspect. En fait fonction seulement si utilisé avec les traces :(
+// addListenerFor(key); // pas necessaire car on a la date et pour une date donnᅵe rien ne peut changer
+ if (result != null) { // util pour les methodes retournant void, ne fonctionne pas si on met AND !execute(void *(..)) dans l'aspect. En fait fonction seulement si utilisᅵ avec les traces :(
cache.put(key, result);
}
} else {
@@ -136,7 +136,7 @@
/**
* Attention pour avoir une chaine en sortie on prend la reprensentation
- * toString des arguments. Mais en utilisant la methode toString implanté
+ * toString des arguments. Mais en utilisant la methode toString implantᅵ
* dans Object.
* <p>
* Pour les objets de style Number ou String, il faut prendre le vrai
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/aspect/Trace.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,7 +1,7 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -21,7 +21,7 @@
/* *
* Trace.aj
*
- * Created: 25 août 06 22:19:21
+ * Created: 25 aoᅵt 06 22:19:21
*
* @author poussin
* @version $Revision$
@@ -51,7 +51,7 @@
* Permet de tracer les appels aux methodes utilisateur ainsi que l'execution
* a ces methodes. La difference entre les deux est lors de l'utilisation du
* cache les appels seront superieur a l'execution car certaine valeur seront
- * reutilisé dans le cache
+ * reutilisᅵ dans le cache
*
* @author poussin
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -19,7 +19,7 @@
/*******************************************************************************
* AnalysePlan.java
*
- * Created: 17 août 2005 11:11:51 CEST
+ * Created: 17 aoᅵt 2005 11:11:51 CEST
*
* @author Benjamin POUSSIN <poussin at codelutin.com>
*
@@ -103,9 +103,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @return Le storage pour la regle
*/
static public AnalysePlanStorage getAnalysePlan(String name) {
@@ -139,7 +139,7 @@
*/
public Map<String, Class> getParameterNames() throws IsisFishException {
Map<String, Class> result = null;
- // On essai de recuperer les paramètres depuis la classe compilé
+ // On essai de recuperer les paramᅵtres depuis la classe compilᅵ
// si c possible
try {
if (0 == compile(false, null)) {
@@ -149,7 +149,7 @@
} catch (Exception eee) {
log.info(_("isisfish.error.plan.parameter"), eee);
}
- // si on ne reussi pas avec la classe compilé on essai en parsant le
+ // si on ne reussi pas avec la classe compilᅵ on essai en parsant le
// source
if (result == null) {
try {
@@ -258,7 +258,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -270,11 +270,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les rᅵgions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournᅵe est
* vide.
*/
static public List<String> getRemoteAnalysePlanNames() {
@@ -284,7 +284,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -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
@@ -73,7 +73,7 @@
*
* @param rootSrc repertoire racine des sources
* @param directory le repertoire ou devrait se trouver la classe. Ce
- * répertoire doit etre un sous répertoire de rootSrc
+ * rᅵpertoire doit etre un sous rᅵpertoire de rootSrc
* @param name le nom de la classe
* @param suffix l'extension des fichiers
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/DataStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -65,22 +65,22 @@
/** Logger for this class */
private static final Log log = LogFactory.getLog(DataStorage.class);
- /** Le nom du storage (nom du dernier répertoire) */
+ /** Le nom du storage (nom du dernier rᅵpertoire) */
protected String name = null;
- /** Le TopiaContext contenant les données */
+ /** Le TopiaContext contenant les donnᅵes */
protected TopiaContext storage = null;
- /** Le TopiaContext contenant les données en memoire */
+ /** Le TopiaContext contenant les donnᅵes en memoire */
protected TopiaContext memstorage = null;
- /** le répertoire contenant les données sur le disque */
+ /** le rᅵpertoire contenant les donnᅵes sur le disque */
private File storageDirectory = null;
/**
- * Permet de créer un nouveau DataStorage
+ * Permet de crᅵer un nouveau DataStorage
*
* @param directory
* repertoire de base du storage
* @param name
- * nom du storage (nom du dernier répertoire)
+ * nom du storage (nom du dernier rᅵpertoire)
*/
protected DataStorage(File directory, String name) {
super(IsisFish.config.getDatabaseDirectory(), directory);
@@ -99,7 +99,7 @@
}
/**
- * @return le fichier contenant la representation text des données
+ * @return le fichier contenant la representation text des donnᅵes
* de la base
*/
protected File getDataBackupFile() {
@@ -109,7 +109,7 @@
}
/**
- * Sauve toute la base avec le schéma dans ls fichier
+ * Sauve toute la base avec le schᅵma dans ls fichier
* <region>/data-backup.sql
*
* @see fr.ifremer.isisfish.datastore.VersionStorage#prepare()
@@ -157,8 +157,8 @@
}
/**
- * @return Retourne une copie de la base de donnée en memoire seulement
- * Util pour les simulations pour l'acces au données rapide
+ * @return Retourne une copie de la base de donnᅵe en memoire seulement
+ * Util pour les simulations pour l'acces au donnᅵes rapide
*/
public TopiaContext getMemStorage() {
if (memstorage == null || memstorage.isClosed()) {
@@ -178,7 +178,7 @@
}
try {
// il faut absolument faire le prepare, car un script de
- // pre-simulation a pu modifier les données et les données
+ // pre-simulation a pu modifier les donnᅵes et les donnᅵes
// de la region dans le fichier existant ne sont plus forcement
// valide, il faut donc le mettre a jour
prepare();
@@ -258,7 +258,7 @@
*
* @param toName
* le nouveau nom de la region
- * @throws IOException si problème lors de la copie
+ * @throws IOException si problᅵme lors de la copie
* @throws TopiaException ???
*/
public void copy(String toName) throws IOException, TopiaException {
@@ -304,13 +304,13 @@
}
/**
- * Renome juste le repertoire, s'il y a besoin de modifier des données dans
+ * Renome juste le repertoire, s'il y a besoin de modifier des donnᅵes dans
* le TopiaContext il faut surcharger cette methode. Il est surement
* necessaire de surcharger cette methode pour aussi modifier l'entre qu'il
* y a dans le cache.
*
* @param toName le nouveau nom
- * @throws StorageException si problème lors du renommage
+ * @throws StorageException si problᅵme lors du renommage
*/
public void rename(String toName) throws StorageException {
File dir = getDirectory();
@@ -321,10 +321,10 @@
/**
* Cree un zip. Le zip contient les memes fichiers lorsqu'on utilise le CVS.
*
- * @return le fichier contenant les données zippées, ce fichier sera
- * automatiquement supprimé à la sortie de l'application s'il existe
+ * @return le fichier contenant les donnᅵes zippᅵes, ce fichier sera
+ * automatiquement supprimᅵ ᅵ la sortie de l'application s'il existe
* encore.
- * @throws IOException si problème lors de la création du zip
+ * @throws IOException si problᅵme lors de la crᅵation du zip
*/
public File createZip() throws IOException {
File result = File.createTempFile("isis-" + getName(), ".zip");
@@ -339,7 +339,7 @@
* @param file
* le fichier dans lequel l'export doit se faire
* @return l'argument file
- * @throws IOException si problème lors de la création du zip
+ * @throws IOException si problᅵme lors de la crᅵation du zip
*/
public File createZip(File file) throws IOException {
prepare();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2005
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
/* *
* CvsStorage.java
*
- * Created: 18 août 2005 15:07:36 CEST
+ * Created: 18 aoᅵt 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard at codelutin.com>
+ * @author Grᅵgoire DESSARD <dessard at codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -97,9 +97,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @return Le storage pour la regle
*/
static public ExportStorage getExport(String name) {
@@ -113,9 +113,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les rᅵgions disponible en local
*/
static public List<String> getExportNames() {
File dir = getExportDirectory();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -20,7 +20,7 @@
/* *
* FormuleStorage.java
*
- * Created: 4 févr. 2006 16:30:59
+ * Created: 4 fᅵvr. 2006 16:30:59
*
* @author poussin
* @version $Revision$
@@ -147,8 +147,8 @@
}
/**
- * Retourne toutes les categories existantes dans les formules sauvegardées
- * ainsi que dans le TopiaContext passé en parametre
+ * Retourne toutes les categories existantes dans les formules sauvegardᅵes
+ * ainsi que dans le TopiaContext passᅵ en parametre
*
* @param context TODO
* @return TODO
@@ -177,7 +177,7 @@
/**
* Retourne toutes les formules sauvegardees ainsi que dans le TopiaContext
- * passé en parametre
+ * passᅵ en parametre
*
* @param category TODO
* @param context TODO
@@ -204,7 +204,7 @@
}
/**
- * Retourne toutes les categories existantes dans les formules sauvegardées
+ * Retourne toutes les categories existantes dans les formules sauvegardᅵes
*
* @return TODO
*/
@@ -222,9 +222,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @param category TODO
* @return Le storage pour la regle
*/
@@ -244,7 +244,7 @@
}
/**
- * creer une nouvelle formule, si la formule existait deja, elle est ecrasé
+ * creer une nouvelle formule, si la formule existait deja, elle est ecrasᅵ
*
* @param category la category de la formule
* @param name le nom de la formule
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -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
@@ -56,7 +56,7 @@
*
* @param rootSrc repertoire racine des sources
* @param directory le repertoire ou devrait se trouver la classe. Ce
- * répertoire doit etre un sous répertoire de rootSrc
+ * rᅵpertoire doit etre un sous rᅵpertoire de rootSrc
* @param name le nom de la classe
*/
protected JavaSourceStorage(File rootSrc, File directory, String name) {
@@ -84,13 +84,13 @@
}
/**
- * Compile cette classe dans le répertoire par defaut de compilation ({@link IsisConfig#getCompileDirectory()})
+ * Compile cette classe dans le rᅵpertoire par defaut de compilation ({@link IsisConfig#getCompileDirectory()})
*
* @param force si vrai alors meme si le fichier destination est plus recent
* la compilation aura lieu
* @param out le flux sur lequel le resultat de la compilation doit
* apparaitre. Peut-etre null, dans ce cas les sorties standards sont
- * utilisées.
+ * utilisᅵes.
* @return 0 si la compilation a reussi une autre valeur sinon
*/
public int compile(boolean force, PrintWriter out) {
@@ -98,7 +98,7 @@
}
/**
- * Retourne la classe de la rule compilé. Compile le fichier si besoin
+ * Retourne la classe de la rule compilᅵ. Compile le fichier si besoin
*
* @return TODO
* @throws IsisFishException TODO
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -19,7 +19,7 @@
/*******************************************************************************
* RegionsStorage.java
*
- * Created: 17 août 2005 03:44:57 CEST
+ * Created: 17 aoᅵt 2005 03:44:57 CEST
*
* @author Benjamin POUSSIN <poussin at codelutin.com>
*
@@ -168,13 +168,13 @@
}
/**
- * Retourne le nom courant de la région
+ * Retourne le nom courant de la rᅵgion
*
* @return Le nom de la region
* @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
+ // 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);
@@ -196,7 +196,7 @@
* @param name name of region to retrieve
* @throws VCSException if problem with vcs while checkout
* @throws TopiaException if problem while restoring db
- * @return le sotrage après checkout
+ * @return le sotrage aprᅵs checkout
*/
static public RegionStorage checkout(String name) throws VCSException, TopiaException {
checkout(IsisFish.config.getDatabaseDirectory(), REGION_PATH + "/" + name);
@@ -218,7 +218,7 @@
*
* @param name le nom de la region a recuperer
* @return Le TopiaContext contenant la region, si la region n'existait null
- * est retourné
+ * est retournᅵ
*/
static public RegionStorage getRegion(String name) {
RegionStorage result = regions.get(name);
@@ -248,13 +248,13 @@
}
/**
- * Permet de creer une nouvelle region. Si le nom est deja utilisé en local
+ * Permet de creer une nouvelle region. Si le nom est deja utilisᅵ en local
* ou sur le serveur alors une exception est leve. Sinon le repertoire pour
* accueillir la region est cree
*
* @param name Le nom de la nouvelle region
* @return La nouvelle region
- * @throws StorageException Si le nom est deja uitlisé
+ * @throws StorageException Si le nom est deja uitlisᅵ
*/
static public RegionStorage create(String name) throws StorageException {
if (exists(name)) {
@@ -290,9 +290,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les rᅵgions disponible en local
*/
static public List<String> getRegionNames() {
File dir = getRegionDirectory();
@@ -302,9 +302,9 @@
}
/**
- * Retourne la liste de toutes les régions disponible en local
+ * Retourne la liste de toutes les rᅵgions disponible en local
*
- * @return la liste de toutes les régions disponible en local
+ * @return la liste de toutes les rᅵgions disponible en local
*/
static public List<RegionStorage> getRegions() {
List<RegionStorage> result = new ArrayList<RegionStorage>();
@@ -316,7 +316,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -328,11 +328,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les rᅵgions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournᅵe est
* vide.
*/
static public List<String> getRemoteRegionNames() {
@@ -344,7 +344,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2002-2005 Code Lutin, Cédric Pineau,
+ * Copyright (C) 2002-2005 Code Lutin, Cédric Pineau,
Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -77,8 +77,8 @@
import fr.ifremer.isisfish.types.Month;
/**
-* Cette classe permet de conserver des résultats de simulation. Elle permet
-* ensuite de les récupérer.
+* Cette classe permet de conserver des résultats de simulation. Elle permet
+* ensuite de les récupérer.
*/
public class ResultStorage implements SimulationResultListener, SimulationResultGetter{ // ResultStorage
@@ -134,7 +134,7 @@
}
/**
- * Retourne le nom de tous les resultats disponibles le nom est constitué
+ * Retourne le nom de tous les resultats disponibles le nom est constitué
* de la date et du nom du resultat
* @return
*/
@@ -167,7 +167,7 @@
}
/**
- * Verifie si un resultat est disponible pour une date donnée
+ * Verifie si un resultat est disponible pour une date donnée
* @param date
* @param name
* @return
@@ -178,7 +178,7 @@
return result;
}
/**
- * Ajoute un resultat comme etant disponible pour une date donnée
+ * Ajoute un resultat comme etant disponible pour une date donnée
* @param date
* @param name
*/
@@ -189,7 +189,7 @@
/**
* Permet de savoir si lorsque l'on ajoutera ce resultat, il sera
- * sauvé ou non.
+ * sauvé ou non.
*/
public boolean isEnabled(String name){
name = name.trim();
@@ -296,7 +296,7 @@
for(int i=0; i<mat.getNbDim(); i++){
// la semantique n'est pas bonne des qu'il y a un null dedans
if(mat.getSemantics(i).contains(null)){
- throw new SimulationException("Erreur le résultat que vous souhaitez enregistrer n'a pas d'information convenable pour la dimension: " + i + " " + mat.getDimensionName(i) );
+ throw new SimulationException("Erreur le résultat que vous souhaitez enregistrer n'a pas d'information convenable pour la dimension: " + i + " " + mat.getDimensionName(i) );
}
}
@@ -342,9 +342,9 @@
}
/**
- * Retourne la liste de tous les résultats. Si le résultat est categorisé
+ * Retourne la liste de tous les résultats. Si le résultat est categorisé
* par une population alors le nom de la population est automatiquement
- * ajouté au nom du résultat
+ * ajouté au nom du résultat
*/
@SuppressWarnings("unchecked")
public List<String> getResultName(){
@@ -381,7 +381,7 @@
* @param date le pas de temps que l'on souhaite
* @param pop la population pour lequelle on souhaite le resultat
* @param name le nom des resultats dont on veut la matrice
- * @return La matrice demandée ou null si aucune matrice ne correspond a
+ * @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
public MatrixND getMatrix(Date date, Population pop, String name){
@@ -423,7 +423,7 @@
* @param date le pas de temps que l'on souhaite
* @param name le nom des resultats dont on veut la matrice
* @param tx TopiaContext a utiliser pour recuperer les resultats et donc les semantiques
- * @return La matrice demandée ou null si aucune matrice ne correspond a
+ * @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
public MatrixND getMatrix(Date date, String name, TopiaContext tx){
@@ -571,7 +571,7 @@
resultMat = MatrixFactory.getInstance().create(name, sem, dimNames);
- // recuperation du resultat pour chaque date de la simulation, de Date(0) à lastDate
+ // recuperation du resultat pour chaque date de la simulation, de Date(0) Ã lastDate
for(Result result: results){
Date d = result.getResultDate();
mat = result.getMatrix();
@@ -665,8 +665,8 @@
// }
// /**
- // * Retourne pour une date données tous les RegleParam qui ont été activé
- // * a la date demandé.
+ // * Retourne pour une date données tous les RegleParam qui ont été activé
+ // * a la date demandé.
// * @return une list de {@link fr.ifremer.nodb.RegleParam}
// */
// public List getActivatedRule(ResultStorage self, Date date){
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2005 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -19,7 +19,7 @@
/*******************************************************************************
* RuleStorage.java
*
- * Created: 17 août 2005 11:11:51 CEST
+ * Created: 17 aoùt 2005 11:11:51 CEST
*
* @author Benjamin POUSSIN <poussin at codelutin.com>
*
@@ -78,7 +78,7 @@
/**
* Contruit un nouveau rule storage
*
- * @param rootSrc La region auquelle est attaché la rule
+ * @param rootSrc La region auquelle est attaché la rule
* @param directory le repertoire ou devrait se trouver la rule
* @param name le nom de la rule
*/
@@ -104,9 +104,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandée
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitée
* @return Le storage pour la regle
*/
static public RuleStorage getRule(String name) {
@@ -140,7 +140,7 @@
*/
public Map<String, Class> getParameterNames() throws IsisFishException {
Map<String, Class> result = null;
- // On essai de recuperer les paramètres depuis la classe compilé
+ // On essai de recuperer les paramÚtres depuis la classe compilé
// si c possible
try {
if (0 == compile(false, null)) {
@@ -150,7 +150,7 @@
} catch (Exception eee) {
log.info(_("isisfish.error.compiled.parameter"), eee);
}
- // si on ne reussi pas avec la classe compilé on essai en parsant le
+ // si on ne reussi pas avec la classe compilé on essai en parsant le
// source
if (result == null) {
try {
@@ -260,7 +260,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les régions disponible en local qui
* ne sont pas encore sur le serveur VCS
*
* @return liste de noms de regions
@@ -272,11 +272,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur VCS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * VCS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les régions disponible sur le serveur
+ * VCS. Si le serveur n'est pas disponible la liste retournée est
* vide.
*/
static public List<String> getRemoteRuleNames() {
@@ -286,7 +286,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur VCS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2005
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
/* *
* ScriptStorage.java
*
- * Created: 18 août 2005 15:07:36 CEST
+ * Created: 18 aoùt 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard at codelutin.com>
+ * @author Grégoire DESSARD <dessard at codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -95,9 +95,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandée
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitée
* @return Le storage pour la regle
*/
static public ScriptStorage getScript(String name) {
@@ -115,9 +115,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les régions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les régions disponible en local
*/
static public List<String> getScriptNames() {
File dir = getScriptDirectory();
@@ -125,7 +125,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les régions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -137,11 +137,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les régions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournée est
* vide.
*/
static public List<String> getRemoteScriptNames() {
@@ -151,7 +151,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -95,7 +95,7 @@
* Pour la lecture d'une simulation existante
* @param directory repertoire de base du storage
* @param name le nom de la simulation
- * @param parameter les paramètres de la simulation
+ * @param parameter les paramÚtres de la simulation
*/
protected SimulationStorage(File directory, String name, SimulationParameter parameter){
super(directory, name);
@@ -284,7 +284,7 @@
* Permet de force la relecture des parametres et donc que les scripts
* soit charge dans le bon classloader
*
- * @return les paramètres de la simulation après opération
+ * @return les paramÚtres de la simulation aprÚs opération
*/
public SimulationParameter getForceReloadParameter() {
// if parameter allready loaded, write it before reload. To take
@@ -338,9 +338,9 @@
}
/**
- * Indique si la simulation demandée existe ou non
- * @param name le nom de la simulation à tester
- * @return true si la simulation existe déjà
+ * Indique si la simulation demandée existe ou non
+ * @param name le nom de la simulation à tester
+ * @return true si la simulation existe déjÃ
*/
static public boolean exists(String name) {
boolean result;
@@ -350,18 +350,18 @@
}
/**
- * Indique si la simulation demandée existe ou non
- * @param name le nom de la simulation à tester
- * @return true si la simulation existe déjà
+ * Indique si la simulation demandée existe ou non
+ * @param name le nom de la simulation à tester
+ * @return true si la simulation existe déjÃ
*/
static public boolean localyExists(String name) {
return getSimulationNames().contains(name);
}
/**
- * Retourne la simulation demandée.
+ * Retourne la simulation demandée.
* @param name name of the required simulation
- * @return la simulation souhaitée ou null si la simulation n'existe pas
+ * @return la simulation souhaitée ou null si la simulation n'existe pas
*/
static public SimulationStorage getSimulation(String name) {
SimulationStorage result = simulations.get(name);
@@ -380,13 +380,13 @@
}
/**
- * Permet de créer une nouvelle simulation si la simulation existe déjà
- * une exception est levée.
+ * Permet de créer une nouvelle simulation si la simulation existe déjÃ
+ * une exception est levée.
* @param name le nom de la simulation
* @param parameter Les parametres de la simulation
* @return la nouvelle simulation
- * @throws StorageException si problème lors de la création du storage
- * @throws IllegalArgumentException si le nom existe déjà en tant que
+ * @throws StorageException si problÚme lors de la création du storage
+ * @throws IllegalArgumentException si le nom existe déjà en tant que
* simulation
*/
static public SimulationStorage create(String name, SimulationParameter parameter) throws StorageException {
@@ -411,8 +411,8 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
- * @return la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les régions disponible en local
*/
static public List<String> getSimulationNames() {
File dir = getSimulationDirectory();
@@ -420,7 +420,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les régions disponible en local qui
* ne sont pas encore sur le serveur CVS
* @return liste de noms de simulations
*/
@@ -431,10 +431,10 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS
- * @return la liste des noms de toutes les régions disponible sur le
- * serveur CVS. Si le serveur n'est pas disponible la liste retournée
+ * @return la liste des noms de toutes les régions disponible sur le
+ * serveur CVS. Si le serveur n'est pas disponible la liste retournée
* est vide.
*/
static public List<String> getRemoteSimulationNames() {
@@ -443,7 +443,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les régions disponible sur le
* serveur CVS qui ne sont pas encore en local
* @return liste de noms de simulations
*/
@@ -462,8 +462,8 @@
*/
@Deprecated
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
+ // 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);
@@ -503,8 +503,8 @@
* Checkout not existing Simulation localy from server
*
* @param name name of simulation to retrieve
- * @throws VCSException si problème avec le VCS
- * @throws TopiaException si problème lors de l'opération sur la base embarquée
+ * @throws VCSException si problÚme avec le VCS
+ * @throws TopiaException si problÚme lors de l'opération sur la base embarquée
*/
static public void checkout(String name) throws VCSException, TopiaException {
checkout(IsisFish.config.getDatabaseDirectory(), SIMULATION_PATH + "/" + name);
@@ -531,8 +531,8 @@
*
* @param file zipped region file
* @return region storage or null
- * @throws IOException si problème IO lors de la lecture du zip
- * @throws TopiaException si problème lors de la création du contexte
+ * @throws IOException si problÚme IO lors de la lecture du zip
+ * @throws TopiaException si problÚme lors de la création du contexte
*/
public static SimulationStorage importZip(File file) throws IOException, TopiaException {
return importAndRenameZip(file, null);
@@ -544,8 +544,8 @@
* @param file zipped region file
* @param newName new name for the imported simulation
* @return region storage or null
- * @throws IOException si problème IO lors de la lecture du zip
- * @throws TopiaException si problème lors de la création du contexte
+ * @throws IOException si problÚme IO lors de la lecture du zip
+ * @throws TopiaException si problÚme lors de la création du contexte
*/
public static SimulationStorage importAndRenameZip(File file, String newName) throws IOException, TopiaException {
String renameFrom = null;
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2005
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
/* *
* ScriptStorage.java
*
- * Created: 18 août 2005 15:07:36 CEST
+ * Created: 18 aoùt 2005 15:07:36 CEST
*
- * @author Grégoire DESSARD <dessard at codelutin.com>
+ * @author Grᅵgoire DESSARD <dessard at codelutin.com>
* @version $Revision$
*
* Last update: $Date$
@@ -83,9 +83,9 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour la regle demandᅵe
*
- * @param name le nom de la regle souhaitée
+ * @param name le nom de la regle souhaitᅵe
* @return Le storage pour la regle
*/
static public SimulatorStorage getSimulator(String name) {
@@ -103,9 +103,9 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local
*
- * @return la liste des noms de toutes les régions disponible en local
+ * @return la liste des noms de toutes les rᅵgions disponible en local
*/
static public List<String> getSimulatorNames() {
File dir = getSimulatorDirectory();
@@ -114,7 +114,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible en local qui
+ * Retourne la liste des noms de toutes les rᅵgions disponible en local qui
* ne sont pas encore sur le serveur CVS
*
* @return liste de noms de regions
@@ -126,11 +126,11 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS
*
- * @return la liste des noms de toutes les régions disponible sur le serveur
- * CVS. Si le serveur n'est pas disponible la liste retournée est
+ * @return la liste des noms de toutes les rᅵgions disponible sur le serveur
+ * CVS. Si le serveur n'est pas disponible la liste retournᅵe est
* vide.
*/
static public List<String> getRemoteSimulatorNames() {
@@ -141,7 +141,7 @@
}
/**
- * Retourne la liste des noms de toutes les régions disponible sur le
+ * Retourne la liste des noms de toutes les rᅵgions disponible sur le
* serveur CVS qui ne sont pas encore en local
*
* @return liste de noms de regions
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -48,7 +48,7 @@
import java.util.List;
/**
- * Classe permettant de géré l'interaction avec le cvs
+ * Classe permettant de gᅵrᅵ l'interaction avec le cvs
*
* @author poussin
*/
@@ -70,7 +70,7 @@
* il faut que file soit un fichier ou un sous fichiers dans root
*
* @param root le repertoire racine de mise en VCSNone (HOME VCSNone)
- * @param file le fichier a gérer.
+ * @param file le fichier a gᅵrer.
*/
protected VersionStorage(File root, File file) {
this.root = root;
@@ -78,7 +78,7 @@
}
/**
- * Permet de demander la preparation des fichiers pour etre envoyé
+ * Permet de demander la preparation des fichiers pour etre envoyᅵ
* vers le VCSNone
*
*/
@@ -99,7 +99,7 @@
}
/**
- * Indique s'il a deja ete ajouté au cvs. Si file est un repertoire
+ * Indique s'il a deja ete ajoutᅵ au cvs. Si file est un repertoire
* (ex pour Region) alors vrai meme si tous les fichiers du repertoire
* ne sont pas sur le VCSNone
*
@@ -110,26 +110,26 @@
}
/**
- * Permet de savoir si un fichier doit etre géré par le vcs ou non.
- * L'implantation par defaut exclus les répertoires VCSNone, il faut
+ * Permet de savoir si un fichier doit etre gᅵrᅵ par le vcs ou non.
+ * L'implantation par defaut exclus les rᅵpertoires VCSNone, il faut
* toujours appeler le super si on surcharge la methode.
*
* @param file le fichier a tester
- * @return <code>true</code> si le fichier est versionné
+ * @return <code>true</code> si le fichier est versionnᅵ
*/
protected boolean isVersionnableAbleFile(File file) {
return !getVCS().isVersionnableAbleFile(file);
}
/**
- * Donne la liste de tous les fichiers que le VCSNone doit gérer.
+ * Donne la liste de tous les fichiers que le VCSNone doit gᅵrer.
* Par defaut parcours tous les repertoires et ajouter tous les fichiers
- * et repertoire trouvé. Il est possible d'exclure des fichiers et/ou
+ * et repertoire trouvᅵ. Il est possible d'exclure des fichiers et/ou
* repertoire en surchargeant {@link #isVersionnableAbleFile(File)}
*
* @param current le fichier
- * @param result la liste des fichiers à traiter
- * @return La liste des fichiers a géré par le CVS pour un add, remove
+ * @param result la liste des fichiers ᅵ traiter
+ * @return La liste des fichiers a gᅵrᅵ par le CVS pour un add, remove
* update
*/
protected List<File> getFiles(File current, List<File> result) {
@@ -145,12 +145,12 @@
}
/**
- * Donne la liste de tous les fichiers à gérer par le VCSNone.
- * Ceci inclu la liste des répertoires pour aller de ce storage
+ * Donne la liste de tous les fichiers ᅵ gᅵrer par le VCSNone.
+ * Ceci inclu la liste des rᅵpertoires pour aller de ce storage
* jusqu'a la racine VCSNone si withParent est vrai
*
* @param withParent si vrai inclu les parents
- * @return la liste des fichiers trouvés
+ * @return la liste des fichiers trouvᅵs
*/
protected List<File> getFiles(boolean withParent) {
List<File> result = new ArrayList<File>();
@@ -188,7 +188,7 @@
/**
* Permet de supprimer une classe
*
- * @param cvsDelete si vrai alors la classe sera aussi supprimé sur le
+ * @param cvsDelete si vrai alors la classe sera aussi supprimᅵ sur le
* cvs si elle existait. Cela prend effet immediatement (un commit est fait)
* @throws StorageException si pb pendant l'op
*/
@@ -240,12 +240,12 @@
}
/**
- * Permet de ramener tout un répertoire du VCSNone. Utile seulement pour le
+ * Permet de ramener tout un rᅵpertoire du VCSNone. Utile seulement pour le
* premier lancement pour scipts et exports.
*
* @param destDir le repertoire parent
* @param module le repertoire qui peut etre scripts ou exports
- * @throws VCSException si pb pendant l'opération
+ * @throws VCSException si pb pendant l'opᅵration
*
*/
static public void checkout(File destDir, String module) throws VCSException {
@@ -255,7 +255,7 @@
/**
* Retourne la liste des noms de toutes les storages disponible en local
*
- * @param directory le répertoire dans lequel vie l'ensemble des storage
+ * @param directory le rᅵpertoire dans lequel vie l'ensemble des storage
* @return la liste des noms de toutes les storages disponible en local
*/
static public List<String> getStorageNames(File directory) {
@@ -277,10 +277,10 @@
* Retourne la liste des noms de tous les storages disponibles sur le
* serveur VCSNone
*
- * @param directory le répertoire sur le VCSNone ou doivent se trouver
+ * @param directory le rᅵpertoire sur le VCSNone ou doivent se trouver
* les storages (regions, simulations)
* @return la liste des noms de tous les storages disponibles sur le
- * serveur VCSNone. Si le serveur n'est pas disponible la liste retournée
+ * serveur VCSNone. Si le serveur n'est pas disponible la liste retournᅵe
* est vide.
*/
static public List<String> getRemoteStorageNames(File directory) {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -70,7 +70,7 @@
result = MigrationChoice.NO_MIGRATION;
// ouverture d'une connexion direct JDBC sur la base
try {
- Connection conn = dbManager.getConnection();
+ Connection conn = null;//dbManager.getConnection();
try {
conn.setAutoCommit(false);
if (VersionNumberUtil.smallerThan(dbVersion, "3.2")) {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -154,7 +154,7 @@
* Commence par nettoyer le fichier en supprimant les simulations, script
* et regle de gestion
*
- * Converti ensuite le fichier dans la version 2.3 des données
+ * Converti ensuite le fichier dans la version 2.3 des données
*
* @param file
* @return le nouveau fichier converti et propre
@@ -188,7 +188,7 @@
/**
* Verifie la version du fichier, et le modifie si besoin avant de retourner
- * le flux. Si le fichier est plus récent que la version d'isis, une
+ * le flux. Si le fichier est plus récent que la version d'isis, une
* exception est leve.
* @param file
* @param versionStart
@@ -223,7 +223,7 @@
/**
* Retourne les fichiers xsl qu'il faut appliquer dans l'ordre qu'il faut.
- * @param versionStart la version de départ du fichier
+ * @param versionStart la version de départ du fichier
* @param versionEnd la version auquel doit arriver le fichier
* @return la liste des URLs des fichiers XSL a appliquer, ou null s'il est impossible de trouver les fichiers necessaire.
*/
@@ -251,7 +251,7 @@
/**
* Converti un fichier XML en lui applicant un fichier XSL
* @param sourceFile le fichier source XML
- * @param destFile le fichier résultat de l'opération
+ * @param destFile le fichier résultat de l'opération
* @param stylesheetURL l'url de la feuille de style a appliquer
* @throws Exception
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/CellImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Cell.
+ * Implantation des operations pour l'entité Cell.
*/
public class CellImpl extends CellAbstract implements Serializable, Cell {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/EquationImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -56,7 +56,7 @@
private static final long serialVersionUID = -2195404062556810283L;
/**
- * Evalue l'equation et retourne le résultat
+ * Evalue l'equation et retourne le résultat
* @param param
* @return
* @throws IsisFishException
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/Formule.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -20,7 +20,7 @@
/* *
* Formule.java
*
- * Created: 14 févr. 2006 11:32:40
+ * Created: 14 févr. 2006 11:32:40
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/GearImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -8,7 +8,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Gear.
+ * Implantation des operations pour l'entité Gear.
*/
public class GearImpl extends GearAbstract implements Serializable, Gear {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -9,7 +9,7 @@
import fr.ifremer.isisfish.types.Month;
/**
- * Implantation des operations pour l'entité Metier.
+ * Implantation des operations pour l'entité Metier.
*/
public class MetierImpl extends fr.ifremer.isisfish.entities.MetierAbstract implements Serializable, fr.ifremer.isisfish.entities.Metier {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* MetierSeasonInfoImpl.java
*
- * Created: 23 août 2006 16:25:40
+ * Created: 23 aoùt 2006 16:25:40
*
* @author poussin
* @version $Revision$
@@ -56,7 +56,7 @@
*/
public double getTargetFactor(PopulationGroup group) {
// Par defaut on retourne 1 si dans les donnes rien n'est
- // precisé (20041108: Stef + dom)
+ // precisé (20041108: Stef + dom)
double result = 1;
Species species = group.getPopulation().getSpecies();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/PortImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Port.
+ * Implantation des operations pour l'entité Port.
*/
public class PortImpl extends fr.ifremer.isisfish.entities.PortAbstract implements Serializable, fr.ifremer.isisfish.entities.Port {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -16,7 +16,7 @@
import org.codelutin.topia.TopiaException;
/**
- * Implantation des operations pour l'entité SetOfVessels.
+ * Implantation des operations pour l'entité SetOfVessels.
*/
public class SetOfVesselsImpl extends fr.ifremer.isisfish.entities.SetOfVesselsAbstract implements Serializable, fr.ifremer.isisfish.entities.SetOfVessels {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/SpeciesImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Species.
+ * Implantation des operations pour l'entité Species.
*/
public class SpeciesImpl extends fr.ifremer.isisfish.entities.SpeciesAbstract implements Serializable, fr.ifremer.isisfish.entities.Species {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -19,7 +19,7 @@
import fr.ifremer.isisfish.types.Month;
/**
- * Implantation des operations pour l'entité Strategy.
+ * Implantation des operations pour l'entité Strategy.
*/
public class StrategyImpl extends fr.ifremer.isisfish.entities.StrategyAbstract implements Serializable, fr.ifremer.isisfish.entities.Strategy {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* StrategyMonthInfoImpl.java
*
- * Created: 29 août 06 11:30:27
+ * Created: 29 aoùt 06 11:30:27
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* TargetSpeciesImpl.java
*
- * Created: 23 août 2006 16:38:23
+ * Created: 23 aoùt 2006 16:38:23
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/TripTypeImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -10,7 +10,7 @@
import fr.ifremer.isisfish.types.TimeUnit;
/**
- * Implantation des operations pour l'entité TripType.
+ * Implantation des operations pour l'entité TripType.
*/
public class TripTypeImpl extends fr.ifremer.isisfish.entities.TripTypeAbstract implements Serializable, fr.ifremer.isisfish.entities.TripType {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/VesselTypeImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -10,7 +10,7 @@
import fr.ifremer.isisfish.types.TimeUnit;
/**
- * Implantation des operations pour l'entité VesselType.
+ * Implantation des operations pour l'entité VesselType.
*/
public class VesselTypeImpl extends fr.ifremer.isisfish.entities.VesselTypeAbstract implements Serializable, fr.ifremer.isisfish.entities.VesselType {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/entities/ZoneImpl.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -7,7 +7,7 @@
import fr.ifremer.isisfish.datastore.StorageException;
/**
- * Implantation des operations pour l'entité Zone.
+ * Implantation des operations pour l'entité Zone.
*/
public class ZoneImpl extends fr.ifremer.isisfish.entities.ZoneAbstract implements Serializable, fr.ifremer.isisfish.entities.Zone {
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/EmigrationEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* EmigrationEquation.java
*
- * Created: 23 août 2006 12:06:02
+ * Created: 23 aoùt 2006 12:06:02
*
* @author poussin
* @version $Revision$
@@ -55,7 +55,7 @@
* @param group le group pour lequel on souhaite le coffecient d'emigration
* @param departureZone la zone de depart
* @return la proportion d'individu a emigrer de la zone de depart
- * pour le groupe passé en argument
+ * pour le groupe passé en argument
*/
@Args({"context", "N", "pop", "group", "departureZone"})
public double compute(SimulationContext context,
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/ImmigrationEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cᅵdric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* ImmigrationEquation.java
*
- * Created: 23 août 2006 12:06:32
+ * Created: 23 aoùt 2006 12:06:32
*
* @author poussin
* @version $Revision$
@@ -53,9 +53,9 @@
* @param N effectif de la population
* @param pop la population pour lequel on souhaite le nombre d'immigration
* @param group le group pour lequel on souhaite le nombre d'immigration
- * @param arrivalZone la zone d'arrivé de l'immigration
+ * @param arrivalZone la zone d'arrivé de l'immigration
* @return le nombre d'individu a immigrer dans la zone
- * d'arrivé pour le groupe passé en argument
+ * d'arrivé pour le groupe passé en argument
*/
@Args({"context", "N", "pop", "group", "arrivalZone"})
public double compute(SimulationContext context,
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/Language.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* Language.java
*
- * Created: 23 août 2006 01:18:19
+ * Created: 23 aoùt 2006 01:18:19
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/MigrationEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* MigrationEquation.java
*
- * Created: 23 août 2006 12:05:14
+ * Created: 23 aoùt 2006 12:05:14
*
* @author poussin
* @version $Revision$
@@ -54,9 +54,9 @@
* @param pop la population pour lequel on souhaite le coffecient de migration
* @param group le group pour lequel on souhaite le coffecient de migration
* @param departureZone la zone de depart de migration
- * @param arrivalZone la zone d'arrivé de migration
+ * @param arrivalZone la zone d'arrivé de migration
* @return la proportion d'individu a migrer de la zone de depart a la zone
- * d'arrivé pour le groupe passé en argument
+ * d'arrivé pour le groupe passé en argument
*/
@Args({"context", "N", "pop", "group", "departureZone", "arrivalZone"})
public double compute(SimulationContext context,
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowth.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationGrowthReverse.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationGrowthReverse.java
*
- * Created: 23 août 2006 01:26:37
+ * Created: 23 aoùt 2006 01:26:37
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationMeanWeight.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationMeanWeight.java
*
- * Created: 23 août 2006 11:14:46
+ * Created: 23 aoùt 2006 11:14:46
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationNaturalDeathRate.java
*
- * Created: 23 août 2006 11:13:57
+ * Created: 23 aoùt 2006 11:13:57
*
* @author poussin
* @version $Revision$
@@ -48,11 +48,11 @@
/**
*
* @param context
- * @param pop la population pour lequel il faut calculer la mortalité naturelle
- * @param group le groupe pour lequel il faut calculer la mortalité naturelle
- * null, si on souhaite la mortalité naturelle du group des naissances
- * @param zone la zone du groupe pour lequel on souhaite la mortalité natrurelle
- * seulement utilisé pour la mortalité naturelle du group des naissances,
+ * @param pop la population pour lequel il faut calculer la mortalité naturelle
+ * @param group le groupe pour lequel il faut calculer la mortalité naturelle
+ * null, si on souhaite la mortalité naturelle du group des naissances
+ * @param zone la zone du groupe pour lequel on souhaite la mortalité natrurelle
+ * seulement utilisé pour la mortalité naturelle du group des naissances,
* sinon null
* @return
*/
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationPrice.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationPrice.java
*
- * Created: 23 août 2006 11:15:17
+ * Created: 23 aoùt 2006 11:15:17
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/PopulationReproductionEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* PopulationReproductionEquation.java
*
- * Created: 23 août 2006 11:11:40
+ * Created: 23 aoùt 2006 11:11:40
*
* @author poussin
* @version $Revision$
@@ -63,7 +63,7 @@
* @param zones la liste des zones de la population (dimension 1 de N)
* @param result la matrice resultat que l'equation doit remplir, il s'agit
* d'un vecteur avec comme semantique la liste des zones de reproduction
- * @return la valeur retournée n'est pas utilisée, par exemple 'return 0;'
+ * @return la valeur retournée n'est pas utilisée, par exemple 'return 0;'
* convient.
*/
@Args({"context", "N", "pop", "month", "prepro", "zoneRepro", "groups", "zones", "result"})
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/SelectivityEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* SelectivityEquation.java
*
- * Created: 23 août 2006 11:39:38
+ * Created: 23 aoùt 2006 11:39:38
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/equation/TargetSpeciesTargetFactorEquation.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,7 @@
/* *
* TargetSpeciesTargetFactorEquation.java
*
- * Created: 23 août 2006 16:44:40
+ * Created: 23 aoùt 2006 16:44:40
*
* @author poussin
* @version $Revision$
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/Export.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -39,7 +39,7 @@
/**
* Interface que doivent implanter les classes d'export de resultats
*
- * Le nom du fichier d'export qui sera utilisé sera le basé sur le nom de la
+ * Le nom du fichier d'export qui sera utilisé sera le basé sur le nom de la
* classe d'export
*
* @author poussin
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/export/ExportHelper.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2006
- * Code Lutin, Cédric Pineau, Benjamin Poussin
+ * 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
@@ -62,7 +62,7 @@
* @param simulation La simulation pour lequel il faut faire les exports
* @param destdir le repertoire dans lequel il faut ecrire les exports
* @param exportNames le nom des exports a faire
- * @param compileDir le nom du répertoire ou les classes d'export sont compilées
+ * @param compileDir le nom du répertoire ou les classes d'export sont compilées
*/
static public void doExport(SimulationStorage simulation, File destdir, List<String> exportNames, File compileDir) {
Map<String, Integer> usingFilename = new HashMap<String, Integer>();
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -72,12 +72,12 @@
/** pattern to use for simulation appender */
public static final String LOG_PATTERN = "%p|%d{ABSOLUTE}|%F|%L|%M|%m%n";
- /** les catégories rattachées au logger de simulation. */
+ /** les catégories rattachées au logger de simulation. */
private static final String[] simulLoggerToChange = {
"fr.ifremer.isisfish",
};
- /** les catégories rattachées au logger de script. */
+ /** les catégories rattachées au logger de script. */
private static final String[] scriptLoggerToChange = {
"scripts",
"simulators",
@@ -85,7 +85,7 @@
"formules"
};
- /** les catégories rattachées au logger de librairies. */
+ /** les catégories rattachées au logger de librairies. */
private static final String[] libLoggerToChange = {
"org.codelutin"
};
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/map/IsisMapBean.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,6 +1,6 @@
/* *##%
* Copyright (C) 2002, 2003, 2004, 2005 Code Lutin,
- * Cédric Pineau, Benjamin Poussin
+ * Cédric Pineau, Benjamin Poussin
*
*
* This program is free software; you can redistribute it and/or
@@ -182,7 +182,7 @@
}
/**
- * Retourne la liste des mailles selectionnées
+ * Retourne la liste des mailles selectionnᅵes
*/
public List<Cell> getSelectedCells(){
try {
@@ -368,7 +368,7 @@
}
if(!shapeLoaded){
- // a pas reussi a charger les fichiers demandés, on charge la
+ // a pas reussi a charger les fichiers demandᅵs, on charge la
// carte du monde
String filename = IsisFish.config.getDefaultMapFilename();
String shp = filename + ".shp";
Modified: branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2002-2005 Code Lutin, Cédric Pineau, Benjamin Poussin
+ * *##% Copyright (C) 2002-2005 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
@@ -97,26 +97,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...)
*/
static public File prepareSimulationZipFile(SimulationControl control,
SimulationParameter param, boolean compile) throws SimulationException {
@@ -150,7 +150,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"));
@@ -202,16 +202,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
*/
static public void compileAllFile(SimulationControl control, File directory) {
@@ -220,9 +220,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>();
@@ -249,14 +249,14 @@
}
/**
- * Modifie le classloader du thread passé en paramètre.
+ * Modifie le classloader du thread pass? en param?tre.
* <p>
* Sert pour les simulations pour qu'elles puissent trouver les
* script, rule et export
*
* @param thread le thread dont on souhaite modifier le classloader ou null
- * @param directory le répertoire qui servira pour le classloader
- * @return le classe loader modifié
+ * @param directory le r?pertoire qui servira pour le classloader
+ * @return le classe loader modifi?
*/
static public AspectClassLoader changeClassLoader(Thread thread, File directory) {
try {
@@ -328,7 +328,7 @@
* souhaite pas controler la simulation
* @param simulation la simulation a faire
*
- * @return le storage après simulation
+ * @return le storage apr?s simulation
* @throws Exception pour toute erreur
*/
static public SimulationStorage remoteSimulate(SimulationControl control,
@@ -344,9 +344,9 @@
// envoie le zip au serveur de simulation
// appel synchrone pour attendre la fin de la simulation
- // recuperation du zip de la simulation terminé
+ // recuperation du zip de la simulation termin?
Vector<Object> a = new Vector<Object>();
- //fixme : on peut avori control à null ?
+ //fixme : on peut avori control ? null ?
a.add(control.getId());
a.add(FileUtil.fileToByte(zip));
@@ -409,7 +409,7 @@
* @param control le controleur de simulation, peut-etre null si on ne
* souhaite pas controler la simulation
* @param simulation la simulation a faire
- * @return le storage après simulation en locale
+ * @return le storage apr?s simulation en locale
*/
static public SimulationStorage localSimulate(SimulationControl control, SimulationStorage simulation) {
SimThread simThread = new SimThread(control, simulation);
@@ -464,7 +464,7 @@
* @param control le controleur de simulation, peut-etre null si on ne
* souhaite pas controler la simulation
* @param simulation la simulation a faire
- * @return le storage après simulation en locale
+ * @return le storage apr?s simulation en locale
*/
static public SimulationStorage localSimulateSameThread(SimulationControl control, SimulationStorage simulation) {
SimulationStorage result = null;
@@ -500,7 +500,7 @@
parameters = simulation.getForceReloadParameter();
//
- // Activation de l'OAP demandée
+ // Activation de l'OAP demand?e
//
if (parameters.getUseStatistic()) {
message(control, _("isisfish.message.setting.trace.aspects"));
@@ -534,7 +534,7 @@
initSimulationListener(context);
//
- // Lancement du script de simulation selectionné
+ // Lancement du script de simulation selectionn?
//
message(control, _("isisfish.message.simulation.execution"));
@@ -545,7 +545,7 @@
simulatorObject.simulate(context);
//
- // Ajout des nouveaux objets créées durant la simulation
+ // Ajout des nouveaux objets cr??es durant la simulation
//
message(control, _("isisfish.message.add.objets.simulation"));
// on ajoute sur le DBResult car pour les exports peut-etre auront
@@ -709,9 +709,9 @@
public void rollback(TopiaTransactionEvent event) {
log.debug("Transaction rollback " + event.getEntities().size() + " object(s)");
// FIXME le jour ou on aura l'isolation on pourra directement
- // ajouter dans un autre TopiaContext les objets ajouté durant la
+ // ajouter dans un autre TopiaContext les objets ajout? durant la
// simulation de cette maniere les objets creer au pas de temps
- // N seront dispo pour etre utilisé au pas de temps N+1
+ // N seront dispo pour etre utilis? au pas de temps N+1
// Sinon une autre methode est de faire cette ajout
// dans l'event rollback qui est leve a la fin de chaque pas de temps
for (TopiaEntity entity : event.getEntities()) {
Modified: branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-en_GB.properties 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,17 +1,25 @@
+$labelStatus=
Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
+Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ evaluate\ simulation\ prescript=Can't evaluate simulation prescript
Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
-Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
Checkout\ pom.xml\ to\ %1$s=
Info=Info
Region\ %1$s\ allready\ exist\ in\ repository.\ Can't\ import=
+Stop\ the\ process=
could\ not\ close\ reader\ %1$s=could not close reader %1$s
could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
could\ not\ filter\ on\ simulations=could not filter on simulations
could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
+isisfish.Export.title=
+isisfish.Params.title=
+isisfish.PreScripts.title=
+isisfish.Queue.title=
+isisfish.ResultChoice.title=
+isisfish.Sens.title=
isisfish.about.site=site
isisfish.about.text=text
isisfish.about.title=title
@@ -230,7 +238,7 @@
isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
isisfish.error.import.scripts.force=Some files already exist, you MUST use option [force] pour force overwrite.
isisfish.error.init.map=Can't init map.
-isisfish.error.init.remove.button=could not init remove button (button or list is null) button : %1$s, list : %2$s
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
isisfish.error.instanciate=Can't instanciate %1$s
isisfish.error.instanciate.export=Can't instanciate export %1$s
isisfish.error.integer.positif=Your input must be a positif integer (>1)
Modified: branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/resources/i18n/isis-fish-fr_FR.properties 2008-08-28 08:21:07 UTC (rev 1312)
@@ -1,17 +1,25 @@
+$labelStatus=
Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
+Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ evaluate\ simulation\ prescript=Can't evaluate simulation prescript
Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
-Can't\ create\ simulation\ logger=Can't create simulation logger
Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
Checkout\ pom.xml\ to\ %1$s=
Info=Info
Region\ %1$s\ allready\ exist\ in\ repository.\ Can't\ import=
+Stop\ the\ process=
could\ not\ close\ reader\ %1$s=could not close reader %1$s
could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
could\ not\ filter\ on\ simulations=could not filter on simulations
could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
+isisfish.Export.title=
+isisfish.Params.title=
+isisfish.PreScripts.title=
+isisfish.Queue.title=
+isisfish.ResultChoice.title=
+isisfish.Sens.title=
isisfish.about.site=http\://isisfish.labs.libre-entreprise.org - by B.Poussin
isisfish.about.text=Simulateur Isis-Fish
isisfish.about.title=A propos...
@@ -230,7 +238,7 @@
isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
isisfish.error.import.scripts.force=Certains fichiers existent, vous devez utiliser l'option [force] pour forcer l'\u00E9crasement.
isisfish.error.init.map=Can't init map.
-isisfish.error.init.remove.button=could not init remove button (button or list is null) button : %1$s, list : %2$s
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button \: %1$s, list \: %2$s
isisfish.error.instanciate=Can't instanciate %1$s
isisfish.error.instanciate.export=Can't instanciate export %1$s
isisfish.error.integer.positif=Your input must be a positif integer (>1)
Modified: branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml
===================================================================
--- branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml 2008-08-27 17:07:00 UTC (rev 1311)
+++ branches/isis-fish-3.2.1/src/uimodel/fr/ifremer/isisfish/ui/simulator/SensWizardPanels.xml 2008-08-28 08:21:07 UTC (rev 1312)
@@ -20,7 +20,7 @@
<textfield constraints="valuesSensWizardTypeField" origin="" editable="false"/>
</panel>
<panel contraints="valuesSensWizardNewValuePanel" text="New Value">
- <textarea origin="" text="isisfish.common.blabla"/> <!-- TODO Peut dépendre du type de l'obet -->
+ <textarea origin="" text="isisfish.common.blabla"/> <!-- TODO Peut dependre du type de l'obet -->
</panel>
<button constraints="buttonValuesSensWizardAdd" id="buttonValuesSensWizardAdd" text="isisfish.sensWizardPanels.add" actionCommand=""/>
<button constraints="buttonValuesSensWizardModify" id="buttonValuesSensWizardModify" text="isisfish.sensWizardPanels.modify" actionCommand=""/>
1
0
r1311 - in trunk/isis-fish/src/java/fr/ifremer/isisfish: datastore simulator/launcher simulator/launcher/doc-files ui/simulator ui/widget
by bpoussin@users.labs.libre-entreprise.org Aug. 27, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 27, 2008
Aug. 27, 2008
Author: bpoussin
Date: 2008-08-27 17:07:00 +0000 (Wed, 27 Aug 2008)
New Revision: 1311
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/isis-simulation.png
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.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
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
Log:
- nouvelle implantation de la queue pour permettre a l'utilisateur d'utiliser le bon executor lorsqu'il choisi un launcher
- ajout de doc sur le nouveau simulation service
- modif d'erreur dans le model de table de queue
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -94,7 +94,7 @@
protected boolean useLog;
/**
* Pour la lecture d'une simulation existante
- * @param directory repertoire de base du storage
+ * @param directory repertoire de base du storage (inclu le nom de la sim)
* @param name le nom de la simulation
* @param parameter les paramètres de la simulation
*/
@@ -579,9 +579,13 @@
renameFrom = "^.*?/(.*)$";
renameTo = newName + "/$1";
}
+ log.info(_("Import simulation file %s in directory %s and rename from %s to %s",
+ file, directory, renameFrom, renameTo));
String lastEntry = ZipUtil.uncompressAndRename(file, directory, renameFrom, renameTo);
String name = lastEntry.substring(0, lastEntry.indexOf("/"));
- SimulationStorage result = new SimulationStorage(directory, name, null);
+ log.info(_("Last entry was %s extract name %s", lastEntry, name));
+ File simDir = new File(directory, name);
+ SimulationStorage result = new SimulationStorage(simDir, name, null);
if (result != null) {
File data = result.getDataBackupFile();
if (file.exists()) {
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -75,7 +75,7 @@
SimulationControl control, File simulationZip)
throws RemoteException{
String id = control.getId();
-
+ log.info(_("simulate %s with file %s", id, simulationZip));
SimulationStorage simulation = null;
try {
simulation = SimulationStorage.importAndRenameZip(simulationZip, id);
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/JDKPriorityBlockingQueue.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,553 @@
+/* *##%
+ * 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.simulator.launcher;
+
+
+import java.util.AbstractQueue;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.PriorityQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.ReentrantLock;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+///////////////////////////////////////////////////////////////////////////
+//
+// not modified code from PriorityBlockingQueue
+//
+///////////////////////////////////////////////////////////////////////////
+/**
+ * It's based on PriorityBlockingQueue code,
+ * because PriorityBlockingQueue use private field for ReentrantLock :(
+ *
+ * @author poussin
+ * @param E
+ */
+public class JDKPriorityBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable {
+
+ private static final long serialVersionUID = 5595510919245408276L;
+ protected final PriorityQueue<E> q;
+ protected final ReentrantLock lock = new ReentrantLock(true);
+ protected final Condition notEmpty = lock.newCondition();
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> with the default
+ * initial capacity (11) that orders its elements according to
+ * their {@linkplain Comparable natural ordering}.
+ */
+ public JDKPriorityBlockingQueue() {
+ q = new PriorityQueue<E>();
+ }
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> with the specified
+ * initial capacity that orders its elements according to their
+ * {@linkplain Comparable natural ordering}.
+ *
+ * @param initialCapacity the initial capacity for this priority queues
+ * @throws IllegalArgumentException if <tt>initialCapacity</tt> is less
+ * than 1
+ */
+ public JDKPriorityBlockingQueue(int initialCapacity) {
+ q = new PriorityQueue<E>(initialCapacity, null);
+ }
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> with the specified initial
+ * capacity that orders its elements according to the specified
+ * comparator.
+ *
+ * @param initialCapacity the initial capacity for this priority queues
+ * @param comparator the comparator that will be used to order this
+ * priority queues. If {@code null}, the {@linkplain Comparable
+ * natural ordering} of the elements will be used.
+ * @throws IllegalArgumentException if <tt>initialCapacity</tt> is less
+ * than 1
+ */
+ public JDKPriorityBlockingQueue(int initialCapacity,
+ Comparator<? super E> comparator) {
+ q = new PriorityQueue<E>(initialCapacity, comparator);
+ }
+
+ /**
+ * Creates a <tt>PriorityBlockingQueue</tt> containing the elements
+ * in the specified collection. If the specified collection is a
+ * {@link SortedSet} or a {@link PriorityQueue}, this
+ * priority queues will be ordered according to the same ordering.
+ * Otherwise, this priority queues will be ordered according to the
+ * {@linkplain Comparable natural ordering} of its elements.
+ *
+ * @param c the collection whose elements are to be placed
+ * into this priority queues
+ * @throws ClassCastException if elements of the specified collection
+ * cannot be compared to one another according to the priority
+ * queues's ordering
+ * @throws NullPointerException if the specified collection or any
+ * of its elements are null
+ */
+ public JDKPriorityBlockingQueue(Collection<? extends E> c) {
+ q = new PriorityQueue<E>(c);
+ }
+
+ /**
+ * Inserts the specified element into this priority queues.
+ *
+ * @param e the element to add
+ * @return <tt>true</tt> (as specified by {@link Collection#add})
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public boolean add(E e) {
+ return offer(e);
+ }
+
+ /**
+ * Inserts the specified element into this priority queues.
+ *
+ * @param e the element to add
+ * @return <tt>true</tt> (as specified by {@link Queue#offer})
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public boolean offer(E e) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ boolean ok = q.offer(e);
+ assert ok;
+ notEmpty.signal();
+ return true;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Inserts the specified element into this priority queues. As the queues is
+ * unbounded this method will never block.
+ *
+ * @param e the element to add
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public void put(E e) {
+ offer(e); // never need to block
+ }
+
+ /**
+ * Inserts the specified element into this priority queues. As the queues is
+ * unbounded this method will never block.
+ *
+ * @param e the element to add
+ * @param timeout This parameter is ignored as the method never blocks
+ * @param unit This parameter is ignored as the method never blocks
+ * @return <tt>true</tt>
+ * @throws ClassCastException if the specified element cannot be compared
+ * with elements currently in the priority queues according to the
+ * priority queues's ordering
+ * @throws NullPointerException if the specified element is null
+ */
+ public boolean offer(E e, long timeout, TimeUnit unit) {
+ return offer(e); // never need to block
+ }
+
+ public E poll() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.poll();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public E take() throws InterruptedException {
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ try {
+ try {
+ while (q.size() == 0) {
+ notEmpty.await();
+ }
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ E x = q.poll();
+ assert x != null;
+ return x;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public E poll(long timeout, TimeUnit unit) throws InterruptedException {
+ long nanos = unit.toNanos(timeout);
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ try {
+ for (;;) {
+ E x = q.poll();
+ if (x != null) {
+ return x;
+ }
+ if (nanos <= 0) {
+ return null;
+ }
+ try {
+ nanos = notEmpty.awaitNanos(nanos);
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public E peek() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.peek();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns the comparator used to order the elements in this queues,
+ * or <tt>null</tt> if this queues uses the {@linkplain Comparable
+ * natural ordering} of its elements.
+ *
+ * @return the comparator used to order the elements in this queues,
+ * or <tt>null</tt> if this queues uses the natural
+ * ordering of its elements
+ */
+ public Comparator<? super E> comparator() {
+ return q.comparator();
+ }
+
+ public int size() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.size();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Always returns <tt>Integer.MAX_VALUE</tt> because
+ * a <tt>PriorityBlockingQueue</tt> is not capacity constrained.
+ * @return <tt>Integer.MAX_VALUE</tt>
+ */
+ public int remainingCapacity() {
+ return Integer.MAX_VALUE;
+ }
+
+ /**
+ * Removes a single instance of the specified element from this queues,
+ * if it is present. More formally, removes an element {@code e} such
+ * that {@code o.equals(e)}, if this queues contains one or more such
+ * elements. Returns {@code true} if and only if this queues contained
+ * the specified element (or equivalently, if this queues changed as a
+ * result of the call).
+ *
+ * @param o element to be removed from this queues, if present
+ * @return <tt>true</tt> if this queues changed as a result of the call
+ */
+ public boolean remove(Object o) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.remove(o);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns {@code true} if this queues contains the specified element.
+ * More formally, returns {@code true} if and only if this queues contains
+ * at least one element {@code e} such that {@code o.equals(e)}.
+ *
+ * @param o object to be checked for containment in this queues
+ * @return <tt>true</tt> if this queues contains the specified element
+ */
+ public boolean contains(Object o) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.contains(o);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns an array containing all of the elements in this queues.
+ * The returned array elements are in no particular order.
+ *
+ * <p>The returned array will be "safe" in that no references to it are
+ * maintained by this queues. (In other words, this method must allocate
+ * a new array). The caller is thus free to modify the returned array.
+ *
+ * <p>This method acts as bridge between array-based and collection-based
+ * APIs.
+ *
+ * @return an array containing all of the elements in this queues
+ */
+ public Object[] toArray() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.toArray();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public String toString() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.toString();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * @throws UnsupportedOperationException {@inheritDoc}
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+ */
+ public int drainTo(Collection<? super E> c) {
+ if (c == null) {
+ throw new NullPointerException();
+ }
+ if (c == this) {
+ throw new IllegalArgumentException();
+ }
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ int n = 0;
+ E e;
+ while ((e = q.poll()) != null) {
+ c.add(e);
+ ++n;
+ }
+ return n;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * @throws UnsupportedOperationException {@inheritDoc}
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+ */
+ public int drainTo(Collection<? super E> c, int maxElements) {
+ if (c == null) {
+ throw new NullPointerException();
+ }
+ if (c == this) {
+ throw new IllegalArgumentException();
+ }
+ if (maxElements <= 0) {
+ return 0;
+ }
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ int n = 0;
+ E e;
+ while (n < maxElements && (e = q.poll()) != null) {
+ c.add(e);
+ ++n;
+ }
+ return n;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Atomically removes all of the elements from this queues.
+ * The queues will be empty after this call returns.
+ */
+ public void clear() {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ q.clear();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns an array containing all of the elements in this queues; the
+ * runtime type of the returned array is that of the specified array.
+ * The returned array elements are in no particular order.
+ * If the queues fits in the specified array, it is returned therein.
+ * Otherwise, a new array is allocated with the runtime type of the
+ * specified array and the size of this queues.
+ *
+ * <p>If this queues fits in the specified array with room to spare
+ * (i.e., the array has more elements than this queues), the element in
+ * the array immediately following the end of the queues is set to
+ * <tt>null</tt>.
+ *
+ * <p>Like the {@link #toArray()} method, this method acts as bridge between
+ * array-based and collection-based APIs. Further, this method allows
+ * precise control over the runtime type of the output array, and may,
+ * under certain circumstances, be used to save allocation costs.
+ *
+ * <p>Suppose <tt>x</tt> is a queues known to contain only strings.
+ * The following code can be used to dump the queues into a newly
+ * allocated array of <tt>String</tt>:
+ *
+ * <pre>
+ * String[] y = x.toArray(new String[0]);</pre>
+ *
+ * Note that <tt>toArray(new Object[0])</tt> is identical in function to
+ * <tt>toArray()</tt>.
+ *
+ * @param a the array into which the elements of the queues are to
+ * be stored, if it is big enough; otherwise, a new array of the
+ * same runtime type is allocated for this purpose
+ * @return an array containing all of the elements in this queues
+ * @throws ArrayStoreException if the runtime type of the specified array
+ * is not a supertype of the runtime type of every element in
+ * this queues
+ * @throws NullPointerException if the specified array is null
+ */
+ public <T> T[] toArray(T[] a) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ return q.toArray(a);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /**
+ * Returns an iterator over the elements in this queues. The
+ * iterator does not return the elements in any particular order.
+ * The returned <tt>Iterator</tt> is a "weakly consistent"
+ * iterator that will never throw {@link
+ * ConcurrentModificationException}, and guarantees to traverse
+ * elements as they existed upon construction of the iterator, and
+ * may (but is not guaranteed to) reflect any modifications
+ * subsequent to construction.
+ *
+ * @return an iterator over the elements in this queues
+ */
+ public Iterator<E> iterator() {
+ return new Itr(toArray());
+ }
+
+ /**
+ * Snapshot iterator that works off copy of underlying q array.
+ */
+ private class Itr implements Iterator<E> {
+
+ final Object[] array; // Array of all elements
+ int cursor; // index of next element to return;
+ int lastRet; // index of last element, or -1 if no such
+
+ Itr(Object[] array) {
+ lastRet = -1;
+ this.array = array;
+ }
+
+ public boolean hasNext() {
+ return cursor < array.length;
+ }
+
+ public E next() {
+ if (cursor >= array.length) {
+ throw new NoSuchElementException();
+ }
+ lastRet = cursor;
+ return (E) array[cursor++];
+ }
+
+ public void remove() {
+ if (lastRet < 0) {
+ throw new IllegalStateException();
+ }
+ Object x = array[lastRet];
+ lastRet = -1;
+ // Traverse underlying queues to find == element,
+ // not just a .equals element.
+ lock.lock();
+ try {
+ for (Iterator it = q.iterator(); it.hasNext();) {
+ if (it.next() == x) {
+ it.remove();
+ return;
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+ }
+
+ /**
+ * Saves the state to a stream (that is, serializes it). This
+ * merely wraps default serialization within lock. The
+ * serialization strategy for items is left to underlying
+ * Queue. Note that locking is not needed on deserialization, so
+ * readObject is not defined, just relying on default.
+ */
+ private void writeObject(java.io.ObjectOutputStream s)
+ throws java.io.IOException {
+ lock.lock();
+ try {
+ s.defaultWriteObject();
+ } finally {
+ lock.unlock();
+ }
+ }
+}
+
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -61,10 +61,11 @@
/** le launcher a utilise pour les simulations */
protected SimulatorLauncher launcher;
- public SimulationExecutor(SimulationService simulationService, SimulatorLauncher launcher,
- BlockingQueue<Runnable> workQueue) {
+ public SimulationExecutor(SimulationService simulationService,
+ SimulatorLauncher launcher,
+ SimulationQueue workQueue) {
super(launcher.maxSimulationThread(), launcher.maxSimulationThread(),
- 0L, TimeUnit.MILLISECONDS, workQueue);
+ 0L, TimeUnit.MILLISECONDS, (BlockingQueue)workQueue);
this.simulationService = simulationService;
this.launcher = launcher;
lastCorePoolSize = prestartAllCoreThreads();
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -52,6 +52,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SimulationJob.class);
+ transient protected String id;
/** l'ensemble des post actions a effectuer pour ce job */
protected Set<PostAction> postActions = new HashSet<PostAction>();
/** Le {@link SimulationService} dans lequel a ete cree ce job */
@@ -85,6 +86,13 @@
this.postActions.remove(postAction);
}
+ public String getId() {
+ if (id == null) {
+ id = getItem().getControl().getId();
+ }
+ return id;
+ }
+
/**
* demande l'annulation/arret de ce job. Si ce job n'etait pas encore actif
* un {@link SimulationServiceListener#simulationStop} est leve. Sinon
@@ -97,11 +105,11 @@
// on essaie d'enlever ce job de la queue, au cas ou il ne serait pas
// encore lance
if (simulationService.cancel(this)) {
- // on a pu annuler avec le lancement, on notify un stop puisqu'on
+ // on a pu annuler avant le lancement, on notify un stop puisqu'on
// ne passera jamais dans le run()
simulationService.fireStopEvent(this);
}
- item.getControl().stopSimulation();
+ item.getControl().setStopSimulationRequest(true);
}
public SimulationJob getParentJob() {
@@ -125,7 +133,11 @@
}
public int compareTo(SimulationJob o) {
- return this.priority - o.priority;
+ int result = this.priority - o.priority;
+ if (result == 0) {
+ result = this.getId().compareTo(o.getId());
+ }
+ return result;
}
/**
@@ -137,8 +149,12 @@
public void run() {
try {
SimulationControl control = item.getControl();
+ String id = control.getId();
+ if (control.isStopSimulationRequest()) {
+ log.info(_("Not start simulation %s because user ask stop", id));
+ return ;
+ }
SimulationParameter param = item.getParameter();
- String id = control.getId();
log.debug("Start simulation: " + id);
simulationService.fireStartEvent(this);
@@ -147,7 +163,7 @@
// simulation les unes apres les autres
Iterator<SimulationJob> i =
new SimulationService.PrepareSimulationJob(simulationService, this);
- while (i.hasNext()) {
+ while (!control.isStopSimulationRequest() && i.hasNext()) {
log.info(_("Generate next simulation"));
SimulationJob subjob = i.next();
subjob.setLauncher(getLauncher());
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,160 @@
+/* *##%
+ * 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.simulator.launcher;
+
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.ReentrantLock;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Multi tail PriorityBlockingQueue.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationQueue extends JDKPriorityBlockingQueue<SimulationJob> {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationQueue.class);
+ protected SimulationQueue parent = null;
+ protected List<SimulationQueue> childs = new LinkedList<SimulationQueue>();
+
+ public SimulationQueue() {
+ }
+
+
+ public SimulationQueue(SimulationQueue parent) {
+ parent.addChild(this);
+ }
+
+ public void addChild(SimulationQueue c) {
+ childs.add(c);
+ c.parent = this;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ final ReentrantLock lock = this.lock;
+ lock.lock();
+ try {
+ boolean result = false;
+ for (SimulationQueue child : childs) {
+ result = child.remove(o) || result;
+ }
+ result = q.remove(o) || result;
+ return result;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+
+ @Override
+ public boolean offer(SimulationJob e) {
+ boolean result = super.offer(e);
+ for (SimulationQueue child : childs) {
+ final ReentrantLock lock = child.lock;
+ lock.lock();
+ try {
+ child.notEmpty.signal();
+ } finally {
+ lock.unlock();
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public SimulationJob peek() {
+ SimulationJob result = super.peek();
+ if (result == null && parent != null) {
+ result = parent.peek();
+ }
+ return result;
+ }
+
+ @Override
+ public SimulationJob poll() {
+ SimulationJob result = super.poll();
+ if (result == null && parent != null) {
+ result = parent.peek();
+ }
+ return result;
+ }
+
+ @Override
+ public SimulationJob take() throws InterruptedException {
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ SimulationJob result = null;
+ try {
+ try {
+ while (q.size() == 0 && parent != null && null == parent.poll()) {
+ notEmpty.await();
+ }
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ if (result == null) {
+ result = q.poll();
+ }
+ assert result != null;
+ return result;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public SimulationJob poll(long timeout, TimeUnit unit) throws InterruptedException {
+ long nanos = unit.toNanos(timeout);
+ final ReentrantLock lock = this.lock;
+ lock.lockInterruptibly();
+ try {
+ for (;;) {
+ SimulationJob result = poll();
+ if (result != null) {
+ return result;
+ }
+ if (nanos <= 0) {
+ return null;
+ }
+ try {
+ nanos = notEmpty.awaitNanos(nanos);
+ } catch (InterruptedException ie) {
+ notEmpty.signal(); // propagate to non-interrupted thread
+ throw ie;
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+
+
+}
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -117,14 +117,19 @@
// (sans doute ajoute un boolean, simulationListAsQueue = true|false)
protected boolean autoLaunch = true;
- /** L'executor utilise pour creer toutes les sous simulations des plans independants */
- protected ExecutorService subSimulationComputationExecutor = Executors.newSingleThreadExecutor();
- /** Tous les types de {@link SimulatorLauncher} disponibles, et leur executors associe */
- protected Map<SimulatorLauncher, SimulationExecutor> executors;
+ /** L'executor utilise pour creer toutes les sous simulations des plans
+ * independants */
+ protected ExecutorService subSimulationComputationExecutor =
+ Executors.newSingleThreadExecutor();
+ /** Tous les types de {@link SimulatorLauncher} disponibles, et leur
+ * executors associe */
+ protected Map<SimulatorLauncher, SimulationExecutor> executors =
+ new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
/** Le nombre d'erreur pour les SimulatorLauncher */
- protected Map<SimulatorLauncher, MutableInt> launcherError;
+ protected Map<SimulatorLauncher, MutableInt> launcherError =
+ new HashMap<SimulatorLauncher, MutableInt>();
/** La queue contenant toutes les simulations a faire */
- protected PriorityBlockingQueue<Runnable> queue = new PriorityBlockingQueue<Runnable>();
+ protected SimulationQueue queue = new SimulationQueue();
/** Contient les identifiants des simulations presentes dans {@ link #jobs}*/
protected Set<String> idJobs = new HashSet<String>();
@@ -139,21 +144,30 @@
*/
protected SimulationService() {
// on cree un executor par type SimulatorLauncher
- executors = new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
- launcherError = new HashMap<SimulatorLauncher, MutableInt>();
Properties prop = IsisFish.config.getOptionStartsWith(SIMULATION_LAUNCHER);
for (String key : prop.stringPropertyNames()) {
String value = prop.getProperty(key);
try {
SimulatorLauncher sl = (SimulatorLauncher) ObjectUtil.newInstance(value);
- SimulationExecutor se = new SimulationExecutor(this, sl, queue);
- executors.put(sl, se);
- launcherError.put(sl, new MutableInt(0));
+ addSimulationLauncher(sl);
} catch (Exception eee) {
log.warn(_("Can't instantiate %s", value), eee);
}
}
}
+
+ /**
+ * Permet d'ajouter un nouveau SimulatorLauncher. Cela cree automatiquement
+ * un executor pour ce SimulatorLauncher. S'il y avait deja un
+ * SimulatorLauncher de ce type un nouveau est ajoute.
+ * @param sl le SimulatorLauncher a ajouter
+ */
+ public void addSimulationLauncher(SimulatorLauncher sl) {
+ SimulationQueue executorQueue = new SimulationQueue(queue);
+ SimulationExecutor se = new SimulationExecutor(this, sl, executorQueue);
+ executors.put(sl, se);
+ launcherError.put(sl, new MutableInt(0));
+ }
public Collection<SimulationExecutor> getSimulationExecutors() {
return executors.values();
@@ -313,11 +327,27 @@
// l'item est fini d'etre initialise, on peut l'ajouter a la queue
// sauf si c'etait un plan independant ou se seront les sous simu
// qui seront dans la queue
- queue.add(job);
+ submit(job);
}
}
+ protected void submit(SimulationJob job) {
+ SimulatorLauncher launcher = job.getLauncher();
+ // on ajoute a la queue qui utilise le launcher defini dans le job
+ if (launcher != null) {
+ for (SimulatorLauncher l : executors.keySet()) {
+ if (launcher == l) {
+ SimulationExecutor executor = executors.get(l);
+ executor.execute(job);
+ return;
+ }
+ }
+ }
+ // dernier recours on ajoute a la queue sans launcher
+ queue.add(job);
+ }
+
/**
* Permet de resoumettre un job qui a ete pris par un thread mais qu'il
* ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou
@@ -327,7 +357,7 @@
* @param item l'item a resoumettre
*/
protected void resubmit(SimulationJob job) {
- queue.add(job);
+ submit(job);
}
/**
@@ -337,7 +367,7 @@
* @param job
*/
protected void submitSubJob(SimulationJob job) {
- queue.add(job);
+ submit(job);
}
/**
@@ -377,7 +407,8 @@
e.pause();
}
// il faut bien penser a supprimer le launcher pour qu'un autre executor
- // puisse y mettre le sien
+ // 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);
}
@@ -526,13 +557,6 @@
}
}
- static public void message(SimulationControl control, String message) {
- log.info(message);
- if (control != null) {
- control.setText(message);
- }
- }
-
/**
* Prepare les fichiers qui seront utils à la simulation:
* <li> scripts
@@ -573,12 +597,12 @@
// backup pour toutes les simulations, pour eviter que l'utilisateur
// ne puisse le modifier en meme temps
- message(control, _("isisfish.message.backup.database.progress"));
+ control.setText(_("isisfish.message.backup.database.progress"));
RegionStorage region = RegionStorage.getRegion(param.getRegionName());
TopiaContext tc = region.getStorage().beginTransaction();
tc.backup(regionXML, true);
tc.closeContext();
- message(control, _("isisfish.message.backup.database.finished"));
+ control.setText(_("isisfish.message.backup.database.finished"));
// copie de toutes regles a utiliser
List<Rule> rules = param.getRules();
@@ -652,7 +676,7 @@
*/
protected void compileAllFile(SimulationControl control, File directory) {
- message(control, "Scripts and rules Compilation");
+ control.setText("Scripts and rules Compilation");
long currentTime = System.nanoTime();
//
@@ -681,7 +705,7 @@
CompileHelper.compile(directory, fileToCompile, directory, null);
long time = System.nanoTime() - currentTime;
- message(control, _("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
+ control.setText(_("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
}
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -19,13 +19,15 @@
package fr.ifremer.isisfish.simulator.launcher;
+import static org.codelutin.i18n.I18nf._;
+
import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Map;
-import static org.codelutin.i18n.I18nf._;
-
-import java.util.Set;
import java.util.WeakHashMap;
import javax.swing.JProgressBar;
import javax.swing.table.AbstractTableModel;
@@ -33,6 +35,11 @@
import org.apache.commons.logging.LogFactory;
/**
+ * Model de table pour suivre l'evolution des differentes simulations en cours.
+ *
+ * <p>
+ * <b>ATTENTION</b> Cette classe doit supporter les acces concurrents car
+ * plusieurs threads peuvent etre simultanement en train de faire de simulation
*
* @author poussin
* @version $Revision$
@@ -52,17 +59,85 @@
_("isisfish.queue.status"),
_("isisfish.queue.progression"),
};
+ /** columns types */
+ protected Class[] columnClass = new Class[]{
+ String.class, // id
+ String.class, // analyse plan number
+ String.class, // local, remote, batch
+ String.class, // text
+ JProgressBar.class // progress
+ };
+
+
protected SimulationService simulationService;
protected ArrayList<SimulationJob> jobs;
- /** progress bar (one for each row) */
+ protected Map<String, SimulationJob> jobIds;
+ /** progress bar (one for each row) */
protected Map<SimulationJob, JProgressBar> progress =
new WeakHashMap<SimulationJob, JProgressBar>();
- public SimulationServiceTableModel(SimulationService simulationService, Set<SimulationJob> jobs) {
+ protected AbstractJobListener jobListener;
+ protected ControlListener controlListener;
+
+ public SimulationServiceTableModel(SimulationService simulationService,
+ boolean forDoToJobs) {
this.simulationService = simulationService;
- this.jobs = new ArrayList<SimulationJob>(jobs);
+ if (forDoToJobs) {
+ jobListener = new JobToDoListener(simulationService, this);
+ } else {
+ jobListener = new JobDoneListener(simulationService, this);
+ }
+ controlListener = new ControlListener(simulationService, this);
+ simulationService.addSimulationServiceListener(jobListener);
+ jobListener.setData();
}
+
+ 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);
+ if (index >= 0) {
+ jobs.remove(index);
+ fireTableRowsDeleted(index, index);
+ }
+ }
+ }
+ public ArrayList<SimulationJob> getJobs() {
+ return jobs;
+ }
+
+ public void setJobs(ArrayList<SimulationJob> jobs) {
+ this.jobs = jobs;
+ synchronized(jobs) {
+ jobIds = new HashMap<String, SimulationJob>(jobs.size());
+ for (SimulationJob job : jobs) {
+ jobIds.put(job.getItem().getControl().getId(), job);
+ }
+ fireTableDataChanged();
+ }
+ }
+
+ public boolean contains(SimulationJob job) {
+ String id = job.getItem().getControl().getId();
+ synchronized (jobs) {
+ boolean result = jobIds.containsKey(id);
+ return result;
+ }
+ }
+
protected JProgressBar getProgressBar(SimulationJob job) {
JProgressBar result = progress.get(job);
if (result == null) {
@@ -88,6 +163,16 @@
return result;
}
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ return columnClass[columnIndex];
+ }
+
+ @Override
+ public String getColumnName(int column) {
+ return columnHeader[column];
+ }
+
public Object getValueAt(int rowIndex, int columnIndex) {
SimulationJob job = jobs.get(rowIndex);
SimulationControl control = job.getItem().getControl();
@@ -107,7 +192,11 @@
}
break;
case 2:
- result = job.getLauncher().toString();
+ if (job.getLauncher() == null) {
+ result = "not started";
+ } else {
+ result = job.getLauncher().toString();
+ }
break;
case 3:
if (control != null) {
@@ -131,4 +220,91 @@
return result;
}
+ protected interface AbstractJobListener extends SimulationServiceListener {
+ public void setData();
+ }
+
+ class JobDoneListener implements AbstractJobListener, SimulationServiceListener {
+
+ protected SimulationService simulationService;
+ protected SimulationServiceTableModel model;
+
+ public JobDoneListener(SimulationService simulationService,
+ SimulationServiceTableModel model) {
+ this.simulationService = simulationService;
+ this.model = model;
+ setData();
+ }
+
+ public void setData() {
+ model.setJobs(new ArrayList<SimulationJob>(simulationService.getJobDones()));
+ }
+
+ public void simulationStart(SimulationJob job) {
+ // nothing to do
+ }
+
+ public void simulationStop(SimulationJob job) {
+ model.addJob(job);
+ }
+
+ }
+
+ class JobToDoListener implements AbstractJobListener, SimulationServiceListener {
+
+ protected SimulationService simulationService;
+ protected SimulationServiceTableModel model;
+
+ public JobToDoListener(SimulationService simulationService,
+ SimulationServiceTableModel model) {
+ this.simulationService = simulationService;
+ this.model = model;
+ setData();
+ }
+
+ public void setData() {
+ model.setJobs(new ArrayList<SimulationJob>(simulationService.getJobs()));
+ for (SimulationJob job : model.getJobs()) {
+ job.getItem().getControl().addPropertyChangeListener(
+ controlListener);
+ }
+ }
+
+ public void simulationStart(SimulationJob job) {
+ model.addJob(job);
+ job.getItem().getControl().addPropertyChangeListener(
+ model.controlListener);
+ }
+
+ public void simulationStop(SimulationJob job) {
+ model.removeJob(job);
+ job.getItem().getControl().removePropertyChangeListener(
+ model.controlListener);
+ }
+
+ }
+
+ class ControlListener implements PropertyChangeListener {
+
+ protected SimulationService simulationService;
+ protected SimulationServiceTableModel model;
+
+ public ControlListener(SimulationService simulationService, SimulationServiceTableModel model) {
+ this.simulationService = simulationService;
+ this.model = model;
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ SimulationControl control = (SimulationControl)evt.getSource();
+ String id = control.getId();
+ synchronized(model.jobs) {
+ SimulationJob jobs = model.jobIds.get(id);
+ int index = model.getJobs().indexOf(id);
+ if (index >= 0) {
+ fireTableRowsUpdated(index, index);
+ }
+ }
+ }
+
+ }
}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/isis-simulation.png
===================================================================
(Binary files differ)
Property changes on: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/doc-files/isis-simulation.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/package.html 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,118 @@
+<h1>Launcher</h1>
+
+<h2>To do</h2>
+<li> voir pourquoi l'interface de visu des simulations en cours ne se
+rafraichi pas
+<li> supprimer le SimulationItem et tout mettre dans SimulationJob (reflechir
+si au niveau design c'est une bonne chose
+<li> faire une interface graphique de monitoring des Executors (nombre de
+threads actif, nombre de simulations terminer, nombre de simulation
+explicitement pour cet executor, afficher l'etat pause/resume/error et
+permettre de modifier l'etat. Avec le nombre
+de jobs dans la queue pour tous les Executors. Permettre de soumettre toutes
+les simulations d'un executor sur un autre executor. (par exemple si un
+executor est mis en pause a cause des erreurs, cela permet a l'utilisateur
+d'utiliser un autre executor sans devoir annuler/relancer toutes ces
+simulations.
+<li> ajouter dans l'interface de vision des simulations en cours, de
+modifier le launcher des simulations non lancee.
+<li> tester les differents launcher
+<li> trouver une solution pour que les jobs soumis pour un launcher
+particulier soit bien executer par l'executor de ce launcher. (penser au
+changement de priority avec resoumission si ce choix est pris, c-a-d que le
+job s'appercoit qu'il va etre utilise par le mauvais Executor, il ne fait
+pas la simu et la resoumet a queue en augmentant la priority pour que le job
+qui devait etre fait maintenant ne le soit pas dans 10ans).
+Une autre possibilite d'implantation est que chaque executor est une queue
+propre, et lorsque celle-ci est vide il vont piocher dans la queue commune.
+Pour cela, simplement implanter un nouveau type de queue qui permette
+d'avoir une queue mere. Lors de la soumission au SimulationService soit le
+job est directement soumis au bon executor soit ajoute a la queue general.
+(ajouter un bool qui permette lors de report d'erreur de resoumettre un job
+avec launcher fixe par l'utilisateur sur la queue general ou non.
+
+<h2>Architecture global</h2>
+<img src="doc-files/isis-simulation.png" alt="archi"/>
+
+<h2>Principe general</h2>
+<p>
+Les simulations sont soumises au {@link SimulationService} via sa methode
+submit. Un objet {@link SimulationJob} est alors cree et ajoute a la liste
+des simulations presentes ({@link SimulationService#getJobs}). Si la
+simulation est une simple simulation ou une simulation avec plan d'analyse
+dependant, elle est alors directement ajoutee a la queue de simulation
+(simulation a faire). Si
+la simulation utilise un plan d'analyse independant, un thread est
+specialement utilise pour generer toutes les simulations du plan, celles-ci
+sont alors ajoutee a la queue, mais n'apparaitront dans la liste des
+simulations qu'au moment ou un thread de simulation executera reellement le
+job.
+</p>
+
+<p>
+Lorsqu'un thread recupere un job dans la queue, il leve un event {@link
+SimulationListener#start}, la simulation est alors ajoutee a la liste des
+simulations visibles si elle ne l'etait pas encore.
+</p>
+
+<p>
+Une fois terminees, les simulations finissent dans la liste des simulations
+terminees.
+</p>
+
+<p>
+Le {@link SimulationService#autoLaunch} permet d'indique si le service est
+actif ou non. S'il n'est pas actif, il accepte les simulations mais ne les
+execute pas (elles sont en attente). S'il est actif alors les differents
+{@link SimulationExecutor}) prenent les jobs de la queue pour faire les
+simulations.
+</p>
+
+<h2>SimulationExecutor</h2>
+<p>
+Lors de sa creation le {@link SimulationService} a initialise different
+{@link SimulationExecutor} en fonction de la configuration. Ces {@link
+SimulationExecutor} sont responsable de l'execution des simulations de la
+queue. Chaque {@link SimulationExecutor} a un {@link SimulatorLauncher}
+qu'il utilise si la simulation n'a pas encore de {@link SimulatorLauncher}
+d'assigne.
+</p>
+<p>
+Un {@link SimulationExecutor} peut etre mis en pause puis relance. Lorsqu'il
+est en pause, il termine les simulations en cours mais n'en reprend pas de
+nouvelle. Cela permet d'arrete un {@link SimulationExecutor} particulier
+sans devoir arreter tout le service de simulation.
+</p>
+<p>Si un {@link SimulationExecutor} prend un job ayant deja un {@link
+SimulatorLauncher} d'assigne, il utilise alors ce launcher plutot que le
+sien. Ce choix est derangeant lorsque l'on souhaite utilise un nombre de
+thread limite pour un launcher particulier, mais il est le plus raisonnable
+car l'autre possibilite est que le job soit resoumis au {@link
+SimulationService} jusqu'a ce que le bon {@link SimulationExecutor} le
+prenne pour l'executer. On risque dans ce cas d'arriver a une forte
+consommation CPU si le seul {@link SimulationExecutor} disponible ne gere
+pas les jobs en queue.
+</p>
+
+<h2>SimulationJob</h2>
+
+<p>
+Le simulation Job encapsule l'appel pour que les implantantations des {@link
+SimulatorLauncher} soit la plus simple possible. Il gere les simulations
+avec plan dependant, les exports depandes par l'utilisateur, ainsi que
+l'effacement des simulations si seul les exports interessait l'utilisateur.
+</p>
+
+<p>
+Si le job n'arrive pas a utilise le {@link SimulatorLauncher} il en notifie
+le {@link SimulationService} qui resoumet le job dans la queue pour qu'un
+autre {@link SimulationExecutor} prenne ce job. Si trop d'erreurs sont
+notifiees pour un meme {@link SimulatorLauncher}, le {@link
+SimulatorService} prend alors la decision d'arreter l'executor associe.
+</p>
+<p>
+Pour les simulations ou l'utilisateur avait fixe un {@link
+SimulatorLauncher} particulier en cas de notification d'erreur au {@link
+SimulationService} ce {@link SimulatorLauncher} n'est plus pris en compte et
+n'importe quel {@link SimulatorLauncher} peut faire cette simulation.
+</p>
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -6,8 +6,31 @@
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;
import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTableModel;
+import java.awt.Component;
+import javax.swing.GroupLayout;
+import javax.swing.JProgressBar;
+import javax.swing.JTable;
+import javax.swing.LayoutStyle;
+import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.TableCellRenderer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.log.UserLog;
+import org.jdesktop.beansbinding.AutoBinding;
+import org.jdesktop.beansbinding.BeanProperty;
+import org.jdesktop.beansbinding.Binding;
+import org.jdesktop.beansbinding.BindingGroup;
+import org.jdesktop.beansbinding.Bindings;
+import org.jdesktop.beansbinding.ELProperty;
/**
*
@@ -15,19 +38,60 @@
*/
public class Queue extends javax.swing.JPanel {
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationServiceTableModel.class);
+
+ public class JProgressBarTableCellRenderer implements TableCellRenderer {
+ public Component getTableCellRendererComponent(JTable table,
+ Object value, boolean isSelected, boolean hasFocus,
+ int row, int column) {
+ return (JProgressBar) value;
+ }
+ }// JProgressBarTableCellRenderer
+
/** Creates new form Queue */
public Queue() {
initComponents();
SimulationService ss = SimulationService.getService();
- modelJobs = new SimulationServiceTableModel(ss, ss.getJobs());
- modelJobDones = new SimulationServiceTableModel(ss, ss.getJobDones());
+
+ modelJobs = new SimulationServiceTableModel(ss, true);
+ modelJobDones = new SimulationServiceTableModel(ss, false);
+
+ tableJobs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ tableJobs.setDefaultRenderer(JProgressBar.class,
+ new JProgressBarTableCellRenderer());
+ tableJobDones.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ tableJobDones.setDefaultRenderer(JProgressBar.class,
+ new JProgressBarTableCellRenderer());
+
tableJobs.setModel(modelJobs);
tableJobDones.setModel(modelJobDones);
}
+ private void stopSimulation(java.awt.event.ActionEvent evt) {
+ int i = tableJobs.getSelectedRow();
+ if (i >= 0) {
+ SimulationJob job = modelJobs.getJob(i);
+ job.stop();
+ log.info(_("User stop simulation %s", job.getItem().getControl().getId()));
+ }
+ }
+
+ private void viewLog(java.awt.event.ActionEvent evt) {
+ int i = tableJobs.getSelectedRow();
+ if (i >= 0) {
+ SimulationJob job = modelJobs.getJob(i);
+ String id = job.getItem().getControl().getId();
+ try {
+ SimulationLoggerUtil.showSimulationLogConsole(id);
+ } catch (Exception eee) {
+ UserLog.error(_("Can't open log for %s", id), eee);
+ }
+ }
+ }
private void initComponents() {
- bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
+ bindingGroup = new BindingGroup();
tableJobsScroll = new javax.swing.JScrollPane();
tableJobs = new javax.swing.JTable();
@@ -43,12 +107,18 @@
autoLaunchButton.setText("Auto Launch");
- org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jButton1, org.jdesktop.beansbinding.ELProperty.create("${action.enabled}"), autoLaunchButton, org.jdesktop.beansbinding.BeanProperty.create("selected"));
+ Binding binding = Bindings.createAutoBinding(
+ AutoBinding.UpdateStrategy.READ_WRITE,
+ SimulationService.getService(), ELProperty.create("${autoLaunch}"),
+ autoLaunchButton, BeanProperty.create("selected"));
bindingGroup.addBinding(binding);
jButton1.setText("Stop simulation");
- binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobs, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton1, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding = Bindings.createAutoBinding(
+ AutoBinding.UpdateStrategy.READ,
+ tableJobs, ELProperty.create("${selectedElement != null}"),
+ jButton1, BeanProperty.create("enabled"));
binding.setSourceNullValue(false);
binding.setSourceUnreadableValue(false);
bindingGroup.addBinding(binding);
@@ -61,7 +131,10 @@
jButton2.setText("View log");
- binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobDones, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton2, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding = Bindings.createAutoBinding(
+ AutoBinding.UpdateStrategy.READ,
+ tableJobDones, ELProperty.create("${selectedElement != null}"),
+ jButton2, BeanProperty.create("enabled"));
binding.setSourceNullValue(false);
binding.setSourceUnreadableValue(false);
bindingGroup.addBinding(binding);
@@ -72,33 +145,33 @@
}
});
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(autoLaunchButton)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2))
- .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
- .addComponent(tableJobsScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
+ .addComponent(tableJobDonesScroll, GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
+ .addComponent(tableJobsScroll, GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addComponent(tableJobsScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(tableJobsScroll, GroupLayout.PREFERRED_SIZE, 140, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(tableJobDonesScroll, GroupLayout.PREFERRED_SIZE, 140, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(autoLaunchButton)
.addComponent(jButton1)
.addComponent(jButton2))
@@ -108,17 +181,6 @@
bindingGroup.bind();
}
- private void stopSimulation(java.awt.event.ActionEvent evt) {
- int i = tableJobs.getSelectedRow();
- if (i >= 0) {
- modelJobs.getJob(i).stop();
- }
- }
-
- private void viewLog(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
-
protected SimulationServiceTableModel modelJobs;
protected SimulationServiceTableModel modelJobDones;
protected javax.swing.JToggleButton autoLaunchButton;
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-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -62,6 +62,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.codelutin.log.UserLog;
/**
@@ -76,8 +77,8 @@
static public Object opened(Context uiContext, AbstractFrame frame,
TopiaContext isisContext, JTabbedPane tabs,
- JButton start, JButton remove,JButton showLog,
- JTable table,JTable tableDone,
+// JButton start, JButton remove,JButton showLog,
+// JTable table,JTable tableDone,
JButton removeAnalysePlan,
JList listAnalysePlan,
JButton removeRule,
@@ -124,14 +125,14 @@
tabs.setEnabledAt(1, false); // disable prescript tab
tabs.setEnabledAt(2, false); // disable analyse plan tab
- // add simulation queue button listeners
- SimulatorListeners.initSimulQueueButtonsListener(
- start,
- remove,
- showLog,
- table,
- tableDone
- );
+// // add simulation queue button listeners
+// SimulatorListeners.initSimulQueueButtonsListener(
+// start,
+// remove,
+// showLog,
+// table,
+// tableDone
+// );
// add rule around button listeners
SimulatorListeners.initButtonRemoveIfItemSelected(removeRule, listRule);
@@ -266,17 +267,14 @@
if (simulId == null || "".equals(simulId) ||
SimulationStorage.localyExists(simulId) ||
SimulationService.getService().exists(simulId)) {
- log.error("Can't start simulation, bad id: " + simulId);
- throw new SimulationException(_("isisfish.error.start"));
- }
- SimulationParameter p = param.copy();
+ UserLog.error(_("Can't start simulation, bad id: %s", simulId));
+ } else {
+ SimulationParameter p = param.copy();
- SimulationService.getService().submit(simulId, p, 0);
-
- selectTab(tabs, true, 6);
- //TODO Voir si cela fonctionne
- frame.refreshView("buttonSimulQueueShowLog");
- frame.refreshView("buttonSimulQueueRemove");
+ SimulationService.getService().submit(simulId, p, 0);
+
+ selectTab(tabs, true, 6);
+ }
} catch (Exception eee) {
log.error("Can't start simulation", eee);
return new OutputView("Error.xml", "error", eee.getMessage());
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-22 22:46:00 UTC (rev 1310)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -44,44 +44,44 @@
}
- public static void initSimulQueueButtonsListener(
- final JButton start, final JButton remove, final JButton showLog,
- final JTable table, final JTable tableDone) {
+// public static void initSimulQueueButtonsListener(
+// final JButton start, final JButton remove, final JButton showLog,
+// final JTable table, final JTable tableDone) {
+//
+// SimulationService.getService().addPropertyChangeListener("autoLaunch",
+// new PropertyChangeListener() {
+// public void propertyChange(PropertyChangeEvent evt) {
+// start.setEnabled(isSimulStartButtonEnabled(table));
+// }
+// });
+//
+// table.getModel().addTableModelListener(new TableModelListener() {
+// public void tableChanged(TableModelEvent e) {
+// start.setEnabled(isSimulStartButtonEnabled(table));
+// }
+// });
+//
+// table.getSelectionModel().addListSelectionListener(
+// new ListSelectionListener() {
+// public void valueChanged(ListSelectionEvent e) {
+// remove.setEnabled(isSimulRemoveButtonEnabled(table));
+// }
+// });
+//
+// tableDone.getSelectionModel().addListSelectionListener(
+// new ListSelectionListener() {
+// public void valueChanged(ListSelectionEvent e) {
+// showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
+// }
+// }
+// );
+//
+// // apply it now
+// start.setEnabled(isSimulStartButtonEnabled(table));
+// remove.setEnabled(isSimulRemoveButtonEnabled(table));
+// showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
+// }
- SimulationService.getService().addPropertyChangeListener("autoLaunch",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- start.setEnabled(isSimulStartButtonEnabled(table));
- }
- });
-
- table.getModel().addTableModelListener(new TableModelListener() {
- public void tableChanged(TableModelEvent e) {
- start.setEnabled(isSimulStartButtonEnabled(table));
- }
- });
-
- table.getSelectionModel().addListSelectionListener(
- new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- remove.setEnabled(isSimulRemoveButtonEnabled(table));
- }
- });
-
- tableDone.getSelectionModel().addListSelectionListener(
- new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
- }
- }
- );
-
- // apply it now
- start.setEnabled(isSimulStartButtonEnabled(table));
- remove.setEnabled(isSimulRemoveButtonEnabled(table));
- showLog.setEnabled(isSimulShowLogButtonEnabled(tableDone));
- }
-
public static void initButtonRemoveIfItemSelected(
final JButton button, final JList list) {
if (button == null || list == null) {
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/VCSConnectionState.java 2008-08-27 17:07:00 UTC (rev 1311)
@@ -0,0 +1,54 @@
+/* *##%
+ * 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.ui.widget;
+
+
+import fr.ifremer.isisfish.IsisFish;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.Resource;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class VCSConnectionState extends JLabel {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(VCSConnectionState.class);
+
+ public VCSConnectionState() {
+ Icon icon;
+ boolean connected = IsisFish.vcs.isConnected();
+ if (connected) {
+ icon = Resource.getIcon("images/stock_connect.png");
+ } else {
+ icon = Resource.getIcon("images/stock_disconnect.png");
+ }
+ setIcon(icon);
+ }
+
+}
1
0
r1310 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/actions java/fr/ifremer/isisfish/datastore java/fr/ifremer/isisfish/simulator java/fr/ifremer/isisfish/simulator/launcher java/fr/ifremer/isisfish/ui/simulator uimodel/fr/ifremer/isisfish/ui uimodel/fr/ifremer/isisfish/ui/simulator
by bpoussin@users.labs.libre-entreprise.org Aug. 22, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 22, 2008
Aug. 22, 2008
Author: bpoussin
Date: 2008-08-22 22:46:00 +0000 (Fri, 22 Aug 2008)
New Revision: 1310
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.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/SimulatorLauncher.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
Removed:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
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/SimulationStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml
Log:
- tout reecrit le SimulationManager qui se nome maintenent SimulationService
Il permet facilement de pluger de nouvelle facon de simuler (obligatoire pour
caparmor)
tout ca n'est pas encore tester, mais ca compile
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -27,8 +27,9 @@
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 fr.ifremer.isisfish.vcs.VCSNone;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
@@ -572,7 +573,7 @@
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("simulator.launcher", _("isisfish.config.main.localSimulator.description"), "local"),
+ 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) */
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -31,7 +31,6 @@
package fr.ifremer.isisfish;
-import com.sun.tools.internal.xjc.generator.util.ExistingBlockReference;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.FormuleStorage;
@@ -40,7 +39,7 @@
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.simulator.SimulationManager;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.swix.LayoutConverter;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.types.Month;
@@ -55,7 +54,6 @@
import fr.ifremer.isisfish.vcs.VCSActionEvent;
import fr.ifremer.isisfish.vcs.VCSException;
import fr.ifremer.isisfish.vcs.VCSFactory;
-import fr.ifremer.isisfish.vcs.VCSNone;
import fr.ifremer.isisfish.vcs.VetoableActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
@@ -78,6 +76,7 @@
import org.codelutin.topia.TopiaException;
import org.codelutin.util.LocaleConverter;
import org.codelutin.util.VersionNumber;
+import org.swixml.SwingEngine;
import static javax.swing.JOptionPane.showOptionDialog;
@@ -369,7 +368,7 @@
*/
static public void launchUI() {
// init simulater manager
- SimulationManager.getInstance();
+ SimulationService.getService();
if (config.isLaunchUI()) {
// init IsisTray
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -53,9 +53,9 @@
import org.jdesktop.jdic.tray.TrayIcon;
import fr.ifremer.isisfish.simulator.SimulationControl;
-import fr.ifremer.isisfish.simulator.SimulationManager;
-import fr.ifremer.isisfish.simulator.SimulationQueueEvent;
-import fr.ifremer.isisfish.simulator.SimulationQueueListener;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener;
/**
@@ -63,7 +63,7 @@
*
*/
-public abstract class IsisTray implements SimulationQueueListener, PropertyChangeListener {
+public abstract class IsisTray implements SimulationServiceListener, PropertyChangeListener {
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(IsisTray.class);
@@ -95,35 +95,25 @@
}
log.info("Use System tray: " + instance.getClass().getName());
instance.setToolTip(_(NO_SIMULATION_TEXT));
- SimulationManager.getInstance().addSimulationQueueListener(instance);
+ SimulationService.getService().addSimulationServiceListener(instance);
}
return instance;
}
/* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- }
- /* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationWillBeRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- }
- /* (non-Javadoc)
* @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
*/
- public void simulationStart(SimulationQueueEvent e) {
- SimulationControl control = SimulationManager.getInstance().getControl(e.getId());
+ public void simulationStart(SimulationJob job) {
+ SimulationControl control = job.getItem().getControl();
control.addPropertyChangeListener(this);
- getInstance().setToolTip(_(SIMULATION_TEXT, e.getId(), control.getProgress(), control.getProgressMax()));
+ getInstance().setToolTip(_(SIMULATION_TEXT, control.getId(), control.getProgress(), control.getProgressMax()));
getInstance().setImage(TRAY_IMAGE_START);
}
/* (non-Javadoc)
* @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
*/
- public void simulationStop(SimulationQueueEvent e) {
- SimulationControl control = SimulationManager.getInstance().getControl(e.getId());
+ public void simulationStop(SimulationJob job) {
+ SimulationControl control = job.getItem().getControl();
control.removePropertyChangeListener(this);
getInstance().setToolTip(_(NO_SIMULATION_TEXT));
getInstance().setImage(TRAY_IMAGE_STOP);
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-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/SimulationAction.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -24,8 +24,11 @@
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.simulator.SimulationHelper;
+import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher;
import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
@@ -72,7 +75,7 @@
}
}
- SimulationHelper.simulate(simulId, params, false);
+ SimulationService.getService().submit(simulId, params, 0);
}
/**
@@ -81,32 +84,17 @@
* @param zip Zip de la simulation
* @param parameterFile parametre optionnel pour la simulation
*/
- public static void simulateWithSimulation(String simulId, File parameterFile, File simulationZip) throws Exception {
- SimulationParameter params = null;
- if (parameterFile != null && parameterFile.exists()) {
- Properties props = new Properties();
- FileInputStream inStream = new FileInputStream(parameterFile);
- props.load(inStream);
- inStream.close();
+ public static void simulateWithSimulation(String simulId, File simulationZip) throws Exception {
+ log.info("id:" + simulId + ", zip:" + simulationZip);
- params = new SimulationParameter();
- params.fromProperties(props);
- }
- log.info("id:" + simulId + ", zip:" + simulationZip + (params!=null?" with parameters":""));
-
- // import de cette simulation
String name = simulId + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
- // import de la simulation avec un autre nom
- SimulationStorage sim = SimulationStorage.importAndRenameZip(simulationZip, name);
- if (params != null) {
- sim.setParameter(params);
- }
+ SimulationControl control = new SimulationControl(name);
// lancement de la simulation
- SimulationHelper.simulate(null, sim);
+ SimulatorLauncher launcher = new InProcessSimulatorLauncher();
+ SimulationStorage simulation = launcher.simulate(null, control, simulationZip);
- sim.getStorage().closeContext();
-
+ simulation.getStorage().closeContext();
}
}
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-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -78,6 +78,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SimulationStorage.class);
+ /** cache des simulation storage */
@SuppressWarnings("unchecked")
static protected Map<String, SimulationStorage> simulations =
(Map<String, SimulationStorage>) new ReferenceMap();
@@ -548,15 +549,39 @@
* @throws TopiaException si problème lors de la création du contexte
*/
public static SimulationStorage importAndRenameZip(File file, String newName) throws IOException, TopiaException {
+ SimulationStorage result = importAndRenameZip(getSimulationDirectory(), file, newName);
+ // put result in cache
+ simulations.put(result.getName(), result);
+ return result;
+ }
+
+ /**
+ * import zipped simulation in specific directory, result is not put in cache
+ *
+ * @param directory where we want new simulation storage
+ * @param file zipped region file
+ * @param newName new name for the imported simulation
+ * @return region storage or null
+ * @throws IOException si problème IO lors de la lecture du zip
+ * @throws TopiaException si problème lors de la création du contexte
+ */
+ public static SimulationStorage importAndRenameZip(File directory, File file, String newName) throws IOException, TopiaException {
+ if (!directory.exists()) {
+ directory.mkdirs();
+ }
+ if(!directory.isDirectory()) {
+ throw new IllegalArgumentException(_("directory %s must be a directory",
+ directory.getAbsolutePath()));
+ }
String renameFrom = null;
String renameTo = null;
if (newName != null) {
renameFrom = "^.*?/(.*)$";
renameTo = newName + "/$1";
}
- String lastEntry = ZipUtil.uncompressAndRename(file, getSimulationDirectory(), renameFrom, renameTo);
+ String lastEntry = ZipUtil.uncompressAndRename(file, directory, renameFrom, renameTo);
String name = lastEntry.substring(0, lastEntry.indexOf("/"));
- SimulationStorage result = SimulationStorage.getSimulation(name);
+ SimulationStorage result = new SimulationStorage(directory, name, null);
if (result != null) {
File data = result.getDataBackupFile();
if (file.exists()) {
@@ -568,7 +593,7 @@
}
return result;
}
-
+
/**
* Extract the region of a given simulation in a
* @param regionName the name of the region to export
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,454 +0,0 @@
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18nf._;
-import org.codelutin.log.LutinLog;
-import org.codelutin.log.LutinLogFactory;
-
-import javax.swing.JComponent;
-import javax.swing.JProgressBar;
-import javax.swing.JTable;
-import javax.swing.event.EventListenerList;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableModel;
-import java.awt.Component;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstract model for a set of simulation (should not be named QueueModel but SetModel).
- * <p/>
- * This layer implememnts TableModel and PropertyChangeListener logic.
- * <p/>
- * Sub class should normally just implements SimulationQueueListener interface
- * (and the two abstract methods to obtain data from {@link #queue}
- *
- * @author chemit
- */
-public abstract class AbstractSimulationQueueModel extends JComponent
- implements TableModel, SimulationQueueListener, PropertyChangeListener {
-
- /** @return list of ids of simulations contained in this model */
- protected abstract List<String> getSimulationIds();
-
- /** @return map of QueueItems (indexed by id) */
- protected abstract Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap();
-
- /** to use log facility, just put in your code: log.info("..."); */
- protected static LutinLog log = LutinLogFactory.getLutinLog(AbstractSimulationQueueModel.class);
-
- /** List of listeners */
- protected EventListenerList listenerList = new EventListenerList();
-
- /** the simulator manager */
- protected SimulationManager queue;
-
- /** header names */
- protected String[] header = new String[]{_("isisfish.queue.id"), _("isisfish.queue.plan"), _("isisfish.queue.name"), _("isisfish.queue.local"), _("isisfish.queue.status"), _("isisfish.queue.progression")};
-
- /** columns types */
- protected Class[] columnClass = new Class[]{
- String.class, // id
- String.class, // analyse plan number
- Boolean.class, // in queue
- String.class, // local, remote, batch
- String.class, // text
- JProgressBar.class // progress
- };
-
- /** progress bar (one for each row) */
- protected Map<String, JProgressBar> progress = new HashMap<String, JProgressBar>();
-
- protected AbstractSimulationQueueModel() {
- this(SimulationManager.getInstance());
- }
-
- protected AbstractSimulationQueueModel(SimulationManager queue) {
- this.queue = queue;
- if (queue == null) {
- this.queue = SimulationManager.getInstance();
- }
- this.queue.addSimulationQueueListener(this);
-
- // add this model as listener on all already done simulations
- for (String id : this.getSimulationIds()) {
- SimulationControl control = getSimulationControl(id);
- if (control != null) {
- control.addPropertyChangeListener(this);
- }
- }
- }
-
- /** @param queue The queue to set. */
- public void setQueue(SimulationManager queue) {
- this.queue = queue;
- fireTableDataChanged();
- }
-
- /** @return the manager used */
- protected SimulationManager getQueue() {
- return queue;
- }
-
- /**
- * @param index rowIndex to check
- * @return <code>true</code> if this is a valid rowIndex,
- * <code>false</code> otherwise
- */
- protected boolean isRowIndexValid(int index) {
- return index > -1 && index < getRowCount();
- }
-
- /**
- * @param id id of the simulation to use
- * @return the rowIndex of the given simulation,
- */
- protected int getSimulationIndex(String id) {
- return getSimulationIds().indexOf(id);
- }
-
- /**
- * @param rowIndex the rowIndex of the simulation in table
- * @return the id of the simulation given
- */
- protected String getSimulationId(int rowIndex) {
- if (rowIndex < 0 || rowIndex >= getSimulationIds().size()) return "";
- return getSimulationIds().get(rowIndex);
- }
-
- /**
- * @param id id of the QueueItem to find
- * @return the queueItem found via his id
- */
- protected SimulationManager.SimulationItem getItem(String id) {
- return getQueueItemsAsMap().get(id);
- }
-
- /**
- * @param rowIndex rowIndex of the QueueItem to find
- * @return the queueItem found via his rowIndex
- */
- protected SimulationManager.SimulationItem getItem(int rowIndex) {
- String id = getSimulationId(rowIndex);
- return id == null ? null : getQueueItemsAsMap().get(id);
- }
-
- /**
- * @param id id of simulation to use
- * @return the SimulationControl of the given simulation
- */
- protected SimulationControl getSimulationControl(String id) {
- SimulationControl result = queue.getControl(id);
- if (result == null) {
- log.user(_("isisfish.error.invalid.simulation.id", id, getSimulationIds()));
- }
- return result;
- }
-
- public SimulationControl getSimulationControl(int rowIndex) {
- String id = getSimulationId(rowIndex);
- SimulationControl result = getSimulationControl(id);
- return result;
- }
- /**
- * @param id id of the simulation used
- * @return the SimulationParameter associated to the simulation given
- */
- protected SimulationParameter getSimulationParameter(String id) {
- SimulationParameter result = null;
- SimulationManager.SimulationItem item = getItem(id);
- if (item != null) {
- result = item.param;
- } else {
- log.user(_("isisfish.error.invalid.simulation.index.availables", id, getSimulationIds()));
- }
- return result;
- }
-
- protected JProgressBar getProgressBar(String id) {
- JProgressBar result = progress.get(id);
- if (result == null) {
- result = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
- result.setStringPainted(true);
- progress.put(id, result);
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent evt) {
- SimulationControl control = (SimulationControl) evt.getSource();
- int row = getSimulationIndex(control.getId());
- fireTableRowsUpdated(row, row);
- }
-
- /////////////////////////////////////////////
- // SimulationQueueListener implementation
- /////////////////////////////////////////////
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStart(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStop(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /////////////////////////////////////////////
- // TableModel implementation
- /////////////////////////////////////////////
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getRowCount()
- */
-
- public int getRowCount() {
- return getSimulationIds().size();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- public int getColumnCount() {
- return header.length;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnName(int)
- */
- public String getColumnName(int column) {
- return header[column];
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnClass(int)
- */
- public Class<?> getColumnClass(int columnIndex) {
- return columnClass[columnIndex];
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#isCellEditable(int, int)
- */
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return false;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- public Object getValueAt(int rowIndex, int columnIndex) {
- if (rowIndex >= getSimulationIds().size()) {
- return "error";
- }
-
- String id = getSimulationId(rowIndex);
-
- SimulationControl control = getSimulationControl(id);
-
- SimulationParameter param = getSimulationParameter(id);
-
- Object result = "";
-
- switch (columnIndex) {
- case 0:
- result = id;
- break;
- case 1:
- int number = param.getAnalysePlanNumber();
- if (number >= 0) {
- result = number;
- } else {
- result = _("isisfish.common.no");
- }
- break;
- case 2:
- result = param.getInQueue();
- break;
- case 3:
- if (param.getLocal()) {
- if (param.isSubProcess()) {
- result = "batch";
- } else {
- result = "local";
- }
- } else {
- result = "remote";
- }
- break;
- case 4:
- if (control != null) {
- if (control.isStopSimulationRequest()) {
- result = _("isisfish.launch.stop");
- } else {
- result = control.getText();
- }
- }
- break;
- case 5:
- JProgressBar pb = getProgressBar(id);
- if (control != null) {
- pb.setMaximum(control.getProgressMax());
- pb.setValue(control.getProgress());
- pb.setString(control.date.getMonth() + "/" + control.date.getYear());
- }
- result = pb;
- break;
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
- */
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- // table is not editable
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#addTableModelListener(javax.swing.event.TableModelListener)
- */
- public void addTableModelListener(TableModelListener l) {
- listenerList.add(TableModelListener.class, l);
- if (l instanceof JTable) {
- ((JTable) l).setDefaultRenderer(JProgressBar.class, new JProgressBarTableCellRenderer());
- }
-
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#removeTableModelListener(javax.swing.event.TableModelListener)
- */
- public void removeTableModelListener(TableModelListener l) {
- listenerList.remove(TableModelListener.class, l);
- }
-
- /**
- * Notifies all listeners that all cell values in the table's
- * rows may have changed. The number of rows may also have changed
- * and the <code>JTable</code> should redraw the
- * table from scratch. The structure of the table (as in the order of the
- * columns) is assumed to be the same.
- *
- * @see TableModelEvent
- * @see EventListenerList
- * @see JTable#tableChanged(TableModelEvent)
- */
- public void fireTableDataChanged() {
- fireTableChanged(new TableModelEvent(this));
- }
-
- /**
- * Notifies all listeners that the table's structure has changed.
- * The number of columns in the table, and the names and types of
- * the new columns may be different from the previous state.
- * If the <code>JTable</code> receives this event and its
- * <code>autoCreateColumnsFromModel</code>
- * flag is set it discards any table columns that it had and reallocates
- * default columns in the order they appear in the model. This is the
- * same as calling <code>setModel(TableModel)</code> on the
- * <code>JTable</code>.
- *
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableStructureChanged() {
- fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been inserted.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsInserted(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been updated.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsUpdated(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.UPDATE));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been deleted.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsDeleted(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.DELETE));
- }
-
- /**
- * Notifies all listeners that the value of the cell at
- * <code>[row, column]</code> has been updated.
- *
- * @param row row of cell which has been updated
- * @param column column of cell which has been updated
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableCellUpdated(int row, int column) {
- fireTableChanged(new TableModelEvent(this, row, row, column));
- }
-
- /**
- * Forwards the given notification event to all
- * <code>TableModelListeners</code> that registered
- * themselves as listeners for this table model.
- *
- * @param e the event to be forwarded
- * @see #addTableModelListener
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableChanged(TableModelEvent e) {
- // Guaranteed to return a non-null array
- Object[] listeners = listenerList.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event
- for (int i = listeners.length - 2; i >= 0; i -= 2) {
- if (listeners[i] == TableModelListener.class) {
- ((TableModelListener) listeners[i + 1]).tableChanged(e);
- }
- }
- }
-
- public class JProgressBarTableCellRenderer implements TableCellRenderer {
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- return (JProgressBar) value;
- }
- }// JProgressBarTableCellRenderer
-}// AbstractSimulationQueueModel
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,171 +0,0 @@
-/* *##%
- * Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * PlanManager.java
- *
- * Created: 5 janv. 07 12:39:28
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18nf._;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Iterator;
-
-import bsh.Interpreter;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-
-/**
- * Permet de generer les parametres des simulations utilisant une plan d'analyse
- *
- * La methode hasNext appelle toutes les methodes beforeSimulation des plans
- * d'analyse. Apres une simulation il faut aussi appeler setLastSimulation
- * pour que les méthodes afterSimulation des plans d'analyses soit executes.
- *
- * Si une des methodes afterSimulation retourne false alors il n'y aura
- * pas de prochaine simulation.
- *
- * @author poussin
- */
-public class PlanGenerator implements Iterable<SimulationStorage>, Iterator<SimulationStorage> {
-
- protected String id = null;
- protected SimulationControl control = null;
- protected SimulationParameter param = null;
- protected File zip = null;
- protected AnalysePlanContext planContext = null;
- protected SimulationStorage nextSimulation = null;
- protected int lastSimulationNumber = -1;
- /** contient la valeur retourne par les methodes afterSimulation de tous les plans */
- protected boolean doNext = true;
-
- public PlanGenerator(String id, SimulationControl control, SimulationParameter param) {
- this.id = id;
- this.control = control;
- this.param = param;
- this.planContext = new AnalysePlanContext(id, param);
- try {
- // appel de init sur chaque plan
- for (AnalysePlan plan : param.getAnalysePlans()) {
- plan.init(planContext);
- }
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.preplan.script"), eee);
- }
- }
-
- /**
- * @param zip The zip to set.
- */
- public void setZip(File zip) {
- this.zip = zip;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Iterable#iterator()
- */
- public Iterator<SimulationStorage> iterator() {
- return this;
- }
-
- /* (non-Javadoc)
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext() {
- try {
- // if user request stop simulation, stop all futur planned simulation
- // and if last doNext is false not do next simulation
- boolean result = !control.isStopSimulationRequest() && doNext;
- if (result) {
- // si deja creer on ne le refet pas
- if (nextSimulation == null) {
- // Prepration de la simulation a faire
- // create next id simulation
- int number = param.getAnalysePlanNumber() + 1;
- String simId = id + "_" + number;
- param.setAnalysePlanNumber(number);
-
- nextSimulation = SimulationStorage.importAndRenameZip(zip, simId);
- nextSimulation.getParameter().setAnalysePlanNumber(number);
-
- // appel de tous les plans pour modifier la simulation
- for (AnalysePlan plan : param.getAnalysePlans()) {
- result = result && plan.beforeSimulation(planContext, nextSimulation);
- if (!result) {
- // delete created simulation, that don't be done
- nextSimulation.delete(false);
- nextSimulation = null;
- break;
- }
- }
- doNext = result;
- }
- }
- return result;
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evalute.plan.script"), eee);
- }
- }
-
- public void setLastSimulation(SimulationStorage lastSimulation) {
- try {
- doNext = true;
- boolean result = true;
-
- // appel de tous les plans pour modifier la simulation
- for (AnalysePlan plan : param.getAnalysePlans()) {
- result = plan.afterSimulation(planContext, lastSimulation);
- doNext = doNext && result;
- }
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(_("isisfish.error.evaluate.plan.script"), eee);
- }
-
- }
-
- /* (non-Javadoc)
- * @see java.util.Iterator#next()
- */
- public SimulationStorage next() {
- hasNext(); // pour etre sur qu'il a ete appele au moins une fois
- SimulationStorage result = nextSimulation;
- nextSimulation = null;
- return result;
- }
-
- /* (non-Javadoc)
- * @see java.util.Iterator#remove()
- */
- public void remove() {
- throw new UnsupportedOperationException();
- }
-}
-
-
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,81 +0,0 @@
-/**
-* SimulationCheckpointThread.java
-*
-* Created: Wed Aug 28 2002
-*
-* @author <poussin at codelutin.com>
-* Copyright Code Lutin
-* @version $Revision: 1187 $
-*
-* Mise a jour: $Date: 2008-03-19 01:26:10 +0100 (mer, 19 mar 2008) $
-* par : $Author: tchemit $
-*/
-
-package fr.ifremer.isisfish.simulator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-import java.io.InputStream;
-
-/**
- * This thread is responsable to synchronized SimulationControl used localy with
- * remote simulation control for remote simulation.
- *
- * This thread dead when {@link SimulationControl#isRunning()} is false
- *
- * @author poussin
- */
-public class SimulationCheckpointExternalProcessThread extends Thread { // SimulationCheckpointThread
-
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory
- .getLog(SimulationCheckpointExternalProcessThread.class);
-
- protected SimulationControl control = null;
- protected SimulationStorage simulation = 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) {
- this.control = control;
- this.simulation = simulation;
- this.process = process;
- out = process.getInputStream();
-
- }
-
- public void run(){
- int sleepTime = 2000;
- int error = 0;
- while(true){
- 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");
-
- if (control.isStopSimulationRequest()) {
- // FIXME, un destroy du process est peut-etre un peu violent ?
- process.destroy();
- // passe artificiellement le control a fini
- control.stopSimulation();
- }
- if (!control.isRunning()) {
- return;
- }
- } catch (Exception eee) {
- log.debug("Can't update control for " + control.getId(), eee);
- }
- }
-
- }
-
-} // SimulationCheckpointThread
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,92 +0,0 @@
-/**
-* SimulationCheckpointRemoteThread.java
-*
-* Created: Wed Aug 28 2002
-*
-* @author <poussin at codelutin.com>
-* Copyright Code Lutin
-* @version $Revision$
-*
-* Mise a jour: $Date$
-* par : $Author$
-*/
-
-package fr.ifremer.isisfish.simulator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.apache.xmlrpc.XmlRpcClient;
-
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-
-/**
- * This thread is responsable to synchronized SimulationControl used localy with
- * remote simulation control for remote simulation.
- *
- * This thread dead when {@link SimulationControl#isRunning()} is false
- *
- * @author poussin
- */
-public class SimulationCheckpointRemoteThread extends Thread { // SimulationCheckpointRemoteThread
-
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory
- .getLog(SimulationCheckpointRemoteThread.class);
-
- protected SimulationControl control = null;
- int badId = 0;
-
- public SimulationCheckpointRemoteThread(SimulationControl control) {
- this.control = control;
- }
-
- public void run(){
- int sleepTime = 2000;
- while(true){
- try{
- Thread.sleep(sleepTime);
-
- updateControl(control);
- // on remet de le temps normal, vu que la connexion a reussi
- sleepTime = 2000;
-
- if (!control.isRunning()) {
- return;
- }
-
- } catch (Exception eee) {
- // on supporte 10 erreurs puis ensuite on quitte le thread.
- if ( badId++ > 10){
- log.error("Error !!! ", eee);
- break;
- }else{
- // on a echouer sur une tentative, on allonge un
- // peu le temps
- sleepTime += 2000;
- }
- }
- }
-
- }
-
- public void updateControl(SimulationControl control) throws Exception {
- // essai l'ancienne etait en dur: "http://localhost:9090"
- IsisConfig config = IsisFish.config;
- XmlRpcClient c = new XmlRpcClient(config.getSimulatorServer());
- c.setBasicAuthentication(config.getSimulatorUsername(), config.getSimulatorPassword());
-
- Vector a = new Vector();
- a.add(control.getUpdateHashtable());
- Hashtable<String, Object> result = (Hashtable<String, Object>)c.execute("checkPoint", a);
- // on remet de le temps normal, vu que la connexion a reussi
- control.updateFromHashtable(result);
- }
-
-} // SimulationCheckpointRemoteThread
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -117,6 +117,31 @@
getResultManager().addSimulationResultListener((SimulationResultListener)l);
}
}
+
+ public void closeDB() {
+ if (db != null) {
+ try {
+ db.closeContext();
+ } catch (TopiaException eee) {
+ if (log.isDebugEnabled()) {
+ log.debug("Can't close simulation topia context", eee);
+ }
+ }
+ }
+ }
+
+ public void closeDBResult() {
+ if (dbResult != null) {
+ try {
+ dbResult.commitTransaction();
+ dbResult.closeContext();
+ } catch (TopiaException eee) {
+ if (log.isDebugEnabled()) {
+ log.debug("Can't close simulation result topia context", eee);
+ }
+ }
+ }
+ }
/**
* Remove simulation listener, if listener is {@link SimulationResultListener}, it's
@@ -130,12 +155,12 @@
}
}
- protected void fireBeforeSimulation() {
+ public void fireBeforeSimulation() {
for(SimulationListener l : simulationListeners) {
l.beforeSimulation(this);
}
}
- protected void fireAfterSimulation() {
+ public void fireAfterSimulation() {
for(SimulationListener l : simulationListeners) {
l.afterSimulation(this);
}
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,120 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * SimulationQueueModel.java
- *
- * Created: 18 août 2006 00:05:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import fr.ifremer.isisfish.datastore.SimulationInformation;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-import static org.codelutin.i18n.I18nf._;
-
-/**
- * Model that represents a set of done or stopped simulations
- *
- * @author tchemit
- */
-
-public class SimulationDoneQueueModel extends AbstractSimulationQueueModel {
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel()
- */
- public SimulationDoneQueueModel() {
- super();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel(SimulationManager)
- */
- public SimulationDoneQueueModel(SimulationManager queue) {
- super(queue);
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getSimulationIds()
- */
- protected java.util.List<String> getSimulationIds() {
- return getQueue().getDoneIds();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getQueueItemsAsMap()
- */
- protected java.util.Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap() {
- return getQueue().mapDones;
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationAdded(SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationRemoved(SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- // when a simulation is removed from first model
- // it could appear here (if it checks certain conditions : see
- // the options dedicated to done simulation in
- // IsisConfig.SIMULATION_SHOW_ONLY_XXX properties)
- int pos = getSimulationIndex(e.getId());
- if (isRowIndexValid(pos)) {
- log.info(" in done model for " + e.getId() + " pos " + pos);
- fireTableRowsInserted(pos, pos);
-
- // on indique si la simulation a ete annulee
- SimulationControl control = getSimulationControl(e.getId());
- log.info("isStopSimulationRequest : "+control.isStopSimulationRequest());
- if (control.isStopSimulationRequest()) {
- control.setText(_("isisfish.queue.cancelled"));
- }
-
- // on change le message pour dire qu'il y a eu une erreur
- try {
- SimulationManager.SimulationItem item = getQueueItemsAsMap().get(e.getId());
- if (!item.hasSimulation()) {
- SimulationInformation infos = item.getSimulation().getInformation();
- if (infos.hasError()) {
- log.error(_("isisfish.error.while.simulation", infos.getException()));
- control.setText(_("isisfish.message.stop.with.error"));
- }
- }
- } catch (Exception eee) {
- log.warn(_("isisfish.error.obtain.information.file", e.getId()), eee);
- }
- control.addPropertyChangeListener(this);
- }
-
- }
-
-}// SimulationDoneQueueModel
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,730 +0,0 @@
-/*
- * *##% Copyright (C) 2002-2005 Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307, USA. ##%
- */
-
-/*******************************************************************************
- * SimulatorHelper.java
- *
- * Created: Wed Aug 14 2002
- *
- * @author <poussin at codelutin.com> Copyright Code Lutin
- *
- * @version $Revision$
- *
- * Mise a jour: $Date$ par : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18nf._;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-import java.util.Vector;
-
-import org.apache.commons.lang.time.DurationFormatUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.xmlrpc.XmlRpcClient;
-import org.codelutin.profiling.LutinTrace;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.topia.event.TopiaTransactionEvent;
-import org.codelutin.topia.event.TopiaTransactionListener;
-import org.codelutin.topia.persistence.TopiaEntity;
-import org.codelutin.util.FileUtil;
-import org.codelutin.util.ObjectUtil;
-import org.codelutin.util.StringUtil;
-import org.codelutin.util.ZipUtil;
-
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.aspect.AspectClassLoader;
-import fr.ifremer.isisfish.aspect.Cache;
-import fr.ifremer.isisfish.aspect.Trace;
-import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
-import fr.ifremer.isisfish.datastore.ExportStorage;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
-import fr.ifremer.isisfish.datastore.ScriptStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.util.CompileHelper;
-
-/**
- * <p>
- * Objet permettant de faire une simulation. Pour l'utiliser il faut creer une
- * instance de l'objet, puis appeler la methode simulate avec tous les
- * arguements qu'elle attend.
- *
- */
-public class SimulationHelper { // SimulatorHelper
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(SimulationHelper.class);
-
- static private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
-
- static public void message(SimulationControl control, String message) {
- log.info(message);
- if (control != null) {
- control.setText(message);
- }
- }
-
- /**
- * 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
- * importAndRenameZip).
- * <p>
- * 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...)
- */
- static public File prepareSimulationZipFile(SimulationControl control,
- SimulationParameter param, boolean compile) throws SimulationException {
- try {
- File tmpDirectory = FileUtil.createTempDirectory("isisfish-simultation-", "-preparation");
- //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
- File regionXML = new File(tmpDirectory, SimulationStorage.DATA_BACKUP_FILENAME);
-
- // sauvegarde des parametres
- Properties prop = param.toProperties();
- //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
- File f = new File(tmpDirectory, SimulationStorage.PARAMETERS_FILENAME);
- FileOutputStream out = new FileOutputStream(f);
- //FileOutputStream out = new FileOutputStream(new File(tmpDirectory, IsisConfig.SIMULATION_PARAMETERS));
- prop.store(out, "Parameters");
- out.close();
-
- // backup pour toutes les simulations, pour eviter que l'utilisateur
- // ne puisse le modifier en meme temps
- message(control, _("isisfish.message.backup.database.progress"));
- RegionStorage region = RegionStorage.getRegion(param.getRegionName());
- TopiaContext tc = region.getStorage().beginTransaction();
- tc.backup(regionXML, true);
- tc.closeContext();
- message(control, _("isisfish.message.backup.database.finished"));
-
- // copie de toutes regles a utiliser
- List<Rule> rules = param.getRules();
- for (Rule rule : rules) {
- String name = RuleStorage.getName(rule);
- FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
- new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
- }
- // copie des regles reclamées par les plans d'analyse
- for(String name : param.getExtraRules()) {
- FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
- new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
- }
-
- // copie de toutes regles a utiliser
- List<AnalysePlan> plans = param.getAnalysePlans();
- for (AnalysePlan plan : plans) {
- String name = AnalysePlanStorage.getName(plan);
- FileUtil.copy(new File(AnalysePlanStorage.getAnalysePlanDirectory(), name + ".java"),
- new File(tmpDirectory, AnalysePlanStorage.ANALYSE_PLAN_PATH + File.separator + name + ".java"));
- }
-
- // copie de tous les exports a utiliser
- for (String name : param.getExportNames()) {
- name = name.endsWith(".java")?name:name + ".java";
- FileUtil.copy(new File(ExportStorage.getExportDirectory(), name),
- new File(tmpDirectory, ExportStorage.EXPORT_PATH + File.separator + name));
- }
-
- // copie de tous les scripts a utiliser
- FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(), tmpDirectory, ".*\\.java$");
-
- // copie de tous les simulateurs a utiliser
- FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(), param.getSimulatorName()),
- new File(tmpDirectory, SimulatorStorage.SIMULATOR_PATH + File.separator + param.getSimulatorName()));
-
- if (compile) {
- compileAllFile(control, tmpDirectory);
- }
-
- // creation du zip
- File result = new File(tmpDirectory.getPath() + ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, tmpDirectory, null);
-
- // poussin 20071015: remove temp directory
- if (!FileUtil.deleteRecursively(tmpDirectory)) {
- log.warn(_("isisfish.error.remove.directory", tmpDirectory));
- }
-
- return result;
- } catch (IOException eee) {
- throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
- } catch (TopiaException eee) {
- throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
- }
-
- }
-
- /**
- * 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
- */
- static public void compileAllFile(SimulationControl control, File directory) {
-
- message(control, "Scripts and rules Compilation");
- long currentTime = System.nanoTime();
-
- //
- // Recherche des fichiers a compiler
- // On ne prend pas les scripts, car ils sont tous copiés mais pas
- // forcément util. Lors de la compilation des autres fichiers, les
- // script servant réellement seront automatiquement compilé
-
- List<File> fileToCompile = new ArrayList<File>();
-
- List<File> tmp = FileUtil.find(new File(directory, ExportStorage.EXPORT_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, SimulatorStorage.SIMULATOR_PATH), ".*\\.java$", true);
- fileToCompile.addAll(tmp);
-
- //
- // Compilation
- //
-
- CompileHelper.compile(directory, fileToCompile, directory, null);
- long time = System.nanoTime() - currentTime;
- message(control, _("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
-
- }
-
- /**
- * Modifie le classloader du thread passé en paramètre.
- * <p>
- * Sert pour les simulations pour qu'elles puissent trouver les
- * script, rule et export
- *
- * @param thread le thread dont on souhaite modifier le classloader ou null
- * @param directory le répertoire qui servira pour le classloader
- * @return le classe loader modifié
- */
- static public AspectClassLoader changeClassLoader(Thread thread, File directory) {
- try {
-// String [] urls = System.getProperty("java.class.path","").split(File.pathSeparator);
-// URL [] classpath = new URL[urls.length + 1];
-// for (int i=0; i<urls.length; i++) {
-// classpath[i] = new File(urls[i]).toURL();
-// }
-// classpath[classpath.length - 1] = directory.toURL();
-// URLClassLoader loader = new URLClassLoader(classpath, null);
- URL [] classpath = new URL[]{directory.toURI().toURL(),
- // poussin 20080821
- // il semble ne plus trouve les formules, est-ce mieux avec le compile dir ?
- IsisFish.config.getCompileDirectory().toURI().toURL()
- };
- //URL [] classpath = new URL[]{directory.toURL()};
- AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath);
- thread.setContextClassLoader(loader);
- log.info("Classloader used for simulation: " + loader + " " + Arrays.toString(loader.getURLs()));
- return loader;
- } catch (MalformedURLException eee) {
- // on leve un runtime, car normalement cette erreur est pratiquement
- // impossible car on creer l'url a partir d'un File ce qui ne pose
- // noralement pas de probleme
- throw new IsisFishRuntimeException(_("isisfish.error.change.classloader", directory), eee);
- }
- }
-
- /**
- * Ajoute dans le Simulation manager une nouvelle simulation avec les
- * elements passes en parametre
- * @param simulId l'id de la simulation (la date est automatiquement ajoutee)
- * @param param les parametres de la simulation
- * @param inQueue si la simulation doit etre faite en queue
- * @throws SimulationException si l'identifiant n'est pas correct
- */
- static public void simulate(String simulId, SimulationParameter param,
- boolean inQueue) throws SimulationException {
- try {
- simulId += " " + dateFormat.format(new java.util.Date());
-
- if (simulId == null || "".equals(simulId) || SimulationStorage.localyExists(simulId) || SimulationManager.getInstance().exists(simulId)) {
- log.error("Can't start simulation, bad id: " + simulId);
- throw new SimulationException(_("isisfish.error.start"));
- }
- SimulationParameter p = param.copy();
- p.setInQueue(inQueue);
-
- SimulationManager.getInstance().addSimulation(simulId, p);
- } catch (Exception eee) {
- throw new SimulationException("Can't add simulation", eee);
- }
- }
-
- static public SimulationStorage simulate(SimulationControl control, SimulationStorage simulation) throws Exception {
- SimulationStorage result;
- if (simulation.getParameter().getLocal()) {
- if (simulation.getParameter().isSubProcess()) {
- result = subProcessSimulate(control, simulation);
- } else {
- result = localSimulate(control, simulation);
- }
- } else {
- result = remoteSimulate(control, simulation);
- }
- return result;
- }
-
- /**
- * execute la simulation en remote
- *
- * @param control le controleur de simulation, peut-etre null si on ne
- * souhaite pas controler la simulation
- * @param simulation la simulation a faire
- *
- * @return le storage après simulation
- * @throws Exception pour toute erreur
- */
- static public SimulationStorage remoteSimulate(SimulationControl control,
- SimulationStorage simulation) throws Exception {
- // export en zip du storage
- File zip = simulation.createZip();
-
- if (control != null) {
- // creation du thread de surveillance de la simulation distante
- // qui sert a mettre a jour les valeurs de control
- new SimulationCheckpointRemoteThread(control).start();
- }
-
- // envoie le zip au serveur de simulation
- // appel synchrone pour attendre la fin de la simulation
- // recuperation du zip de la simulation terminé
- Vector<Object> a = new Vector<Object>();
- //fixme : on peut avori control à null ?
- a.add(control.getId());
- a.add(FileUtil.fileToByte(zip));
-
- // lancement de la simulation
- XmlRpcClient c = new XmlRpcClient(IsisFish.config.getSimulatorServer());
- c.setBasicAuthentication(IsisFish.config.getSimulatorUsername(),
- IsisFish.config.getSimulatorPassword());
- byte[] callResult = (byte[])c.execute("simulate", a);
-
- // ecriture du resultat dans un fichier
- File tmpzip = FileUtil.byteToFile(callResult);
-
- // remplacement du storage local par le storage recu
- simulation.closeStorage();
- simulation.delete(false);
- SimulationStorage result;
- result = SimulationStorage.importAndRenameZip(tmpzip, control.getId());
- return result;
- }
-
- static public SimulationStorage subProcessSimulate(SimulationControl control,
- SimulationStorage simulation) throws Exception {
-
- String simulationId = simulation.getName();
-
- // on ferme le SimulationStorage pour ne pas interferer avec le process
- simulation.closeStorage();
-
- String java = System.getProperty("java.home") +
- File.separator + "bin" + File.separator + "java";
- String classpath = System.getProperty("java.class.path");
-
- // prepare le process
- ProcessBuilder processBuilder = new ProcessBuilder(java, "-classpath", classpath,
- IsisFish.class.getName(),
- "--simulate", simulationId);
- processBuilder.redirectErrorStream(true);
-
- // demarrage du process
- Process process = processBuilder.start();
-
- if (control != null) {
- // prepare de thread de surveillance du process si control n'est pas null
- Thread monitor = new SimulationCheckpointExternalProcessThread(control, simulation, process);
- }
-
- // on attend que la simulation soit fini
- process.waitFor();
-
- // on retourne directement le simulation storage passe en argument
- // car la simulation a ete faite avec
- return simulation;
- }
-
- /**
- * fait la simulation en local dans un nouveau thread, cela permet
- * pour chaque simulation d'avoir les bons scripts dans le classloader
- * et non pas d'utiliser les scripts d'une autre simulation
- *
- * @param control le controleur de simulation, peut-etre null si on ne
- * souhaite pas controler la simulation
- * @param simulation la simulation a faire
- * @return le storage après simulation en locale
- */
- static public SimulationStorage localSimulate(SimulationControl control, SimulationStorage simulation) {
- SimThread simThread = new SimThread(control, simulation);
- // add simulation logger, we can't make it before since we need thread name
- // anyway since if accept only log from simThread, no need to init it before
- String simulLogLevel = simulation.getParameter().getSimulLogLevel();
- String scriptLogLevel = simulation.getParameter().getScriptLogLevel();
- String libLogLevel = simulation.getParameter().getLibLogLevel();
- try {
- simulation.addSimulationLogger(simulLogLevel,scriptLogLevel,libLogLevel,simThread.getName());
- } catch (Exception e) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.add.logger.simulation ", e));
- }
- }
- try {
- simThread.start();
- try {
- simThread.join();
- } catch (InterruptedException eee) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.wait.simThread"), eee);
- }
- }
- } finally {
- // remove simulation logger (no more need since thread is dead)
- simulation.removeSimulationLogger();
- }
- return simulation;
- }
-
- static public class SimThread extends Thread {
- protected SimulationControl control;
- protected SimulationStorage simulation;
-
- public SimThread(SimulationControl control, SimulationStorage simulation) {
- super("SimThread " + (control!=null?control.getId():""));
- this.control = control;
- this.simulation = simulation;
- }
- @Override
- public void run() {
- simulation = localSimulateSameThread(control, simulation);
- }
- }
-
- /**
- * Cree le simulation context, creer le ClassLoader, met en place les AOP,
- * met a jour des informations sur la simulation et lance la simulation en
- * local
- *
- * @param control le controleur de simulation, peut-etre null si on ne
- * souhaite pas controler la simulation
- * @param simulation la simulation a faire
- * @return le storage après simulation en locale
- */
- static public SimulationStorage localSimulateSameThread(SimulationControl control, SimulationStorage simulation) {
- SimulationStorage result = null;
- String jvmVersion = System.getProperty("java.runtime.version");
- log.info(SimpleDateFormat.getInstance().format(new java.util.Date())
- + " Java version: " + jvmVersion + " Isis-fish version: "
- + IsisFish.config.getVersion());
- long start = System.nanoTime();
- simulation.getInformation().setSimulationStart(new java.util.Date());
- AspectClassLoader classLoader;
-// DeploymentHandle traceHandle = null;
-// DeploymentHandle cacheHandle = null;
- try {
- File rootDirectory = simulation.getDirectory();
-
- //
- // changement de classloader
- //
- classLoader = changeClassLoader(Thread.currentThread(), rootDirectory);
-
- //
- // Creation et initialisation du context de simulation
- //
- SimulationContext context = SimulationContext.get();
- context.setClassLoader(classLoader);
- context.setScriptDirectory(rootDirectory);
- context.setSimulationStorage(simulation);
- context.setSimulationControl(control!=null?control:new SimulationControl(simulation.getName()));
-
- SimulationParameter parameters = simulation.getParameter();
- parameters.setIsisFishVersion(IsisFish.config.getVersion());
- // forceReload, save all modification in parameter and reread it
- parameters = simulation.getForceReloadParameter();
-
- //
- // Activation de l'OAP demandée
- //
- if (parameters.getUseStatistic()) {
- message(control, _("isisfish.message.setting.trace.aspects"));
-//// SystemDefinition def = SystemDefinitionContainer.getDefinitionFor(
-//// Thread.currentThread().getContextClassLoader(), "tests"
-//// );
-//// DeploymentScope deploymentScope = def.getDeploymentScope("deployUndeployUsingPreparedPointcut");
-//
-// traceHandle = Deployer.deploy(Trace.class, classLoader);
- classLoader.deploy(Trace.class);
- }
- if (parameters.getUseOptimization()) {
- message(control, _("isisfish.message.setting.cache.aspects"));
-// cacheHandle = Deployer.deploy(Cache.class, classLoader);
- classLoader.deploy(Cache.class);
- }
-
- // recherche du simulateur a utiliser
- String simulatorName = parameters.getSimulatorName();
- SimulatorStorage simulator = SimulatorStorage
- .getSimulator(simulatorName);
- Simulator simulatorObject = simulator.getNewSimulatorInstance();
-
- // on se met listener sur tc pour connaitre tous les nouveaux objets
- ObjectCreationListener objectCreationListener = new ObjectCreationListener();
- context.getDB().addTopiaTransactionListener(objectCreationListener);
-
- //
- // Ajout des listeners pour la simulation
- //
- initSimulationListener(context);
-
- //
- // Lancement du script de simulation selectionné
- //
- message(control, _("isisfish.message.simulation.execution"));
-
- //
- // Call listener simulation (used per example for prescript)
- //
- context.fireBeforeSimulation();
- simulatorObject.simulate(context);
-
- //
- // Ajout des nouveaux objets créées durant la simulation
- //
- message(control, _("isisfish.message.add.objets.simulation"));
- // on ajoute sur le DBResult car pour les exports peut-etre auront
- // nous besoin de ces nouveaux objets, et durant la simulation
- // les resultats sont recuperer dans le DBResult
- TopiaContext add = context.getDbResult();
- for (TopiaEntity e : objectCreationListener.getNewObjects()) {
- log.debug("Add new object: " + e + "(" + e.getClass().getName() + ")");
- add.add(e);
- }
- add.commitTransaction();
-
- //
- // Call listener simulation (used per example for export)
- //
- context.fireAfterSimulation();
-
- message(control, _("isisfish.message.simulation.ended"));
-
- simulation.getInformation().setSimulationEnd(new java.util.Date());
-
- } catch (OutOfMemoryError eee) {
- log.error(_("isisfish.error.during.simulation"),eee);
- simulation.getInformation().setException(eee);
- throw new SimulationException(_("isisfish.error.out.memory"), eee);
- } catch (Exception eee) {
- log.error(_("isisfish.error.during.simulation"),eee);
- simulation.getInformation().setException(eee);
- throw new SimulationException(_("isisfish.error.during.simulation"), eee);
- } finally {
- //
- // Finaly close all TopiaContext used during simulation
- //
-
- SimulationContext context = SimulationContext.get();
- TopiaContext tx;
-
- tx = context.db;
- if (tx != null) {
- try {
- tx.closeContext();
- } catch (TopiaException eee) {
- if (log.isDebugEnabled()) {
- log.debug("Can't close simulation topia context", eee);
- }
- }
- }
- tx = context.dbResult;
- if (tx != null) {
- try {
- tx.commitTransaction();
- tx.closeContext();
- } catch (TopiaException eee) {
- if (log.isDebugEnabled()) {
- log.debug("Can't close simulation result topia context", eee);
- }
- }
- }
-
- try {
- // close all transaction
- if (context != null && context.getSimulationStorage() != null) {
- context.getSimulationStorage().closeMemStorage();
- context.getSimulationStorage().closeStorage();
- }
- } catch (TopiaException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Can't close all transaction", eee);
- }
- }
-
-// //
-// // disassociate SimulationContext
-// //
-// if (cacheHandle != null) {
-// try {
-// Deployer.undeploy(cacheHandle);
-// } catch (Exception eee) {
-// log.warn("Can't undeploy Cache", eee);
-// }
-// }
-// // undeploy trace after cache, because is registered before
-// if (traceHandle != null) {
-// try {
-// Deployer.undeploy(traceHandle);
-// } catch (Exception eee) {
-// log.warn("Can't undeploy Trace", eee);
-// }
-// }
- SimulationContext.remove();
-
- //
- // Affichage des statistiques
- //
- long end = System.nanoTime();
- log.info("Simulation time: " + DurationFormatUtils.formatDuration((end-start)/1000000, "s'.'S"));
- SimulationParameter param = simulation.getParameter();
- if (param.getUseStatistic()) {
- String trace = Trace.printStatistiqueAndClear();
- simulation.getInformation().setStatistic(trace);
- }
- if (param.getUseOptimization()) {
- String cache = Cache.printStatistiqueAndClear();
- simulation.getInformation().setOptimizationUsage(cache);
- }
-
- LutinTrace.printStatistiqueAndClear();
-
- }
- return result;
- }
-
-
- static public void initSimulationListener(SimulationContext context) throws Exception {
- SimulationStorage simulation = context.getSimulationStorage();
- // enregistrement des listeners de resultat
- // - ResultStorage
- context.addSimulationListener(simulation.getResultStorage());
-
- // - TODO: mexico xml result
- // - TODO: vle result
- String simListener = context.getSimulationStorage().getParameter().getTagValue().get("SimulationListener");
- if (simListener != null) {
- String [] simListeners = StringUtil.split(simListener, ",");
- for (String l : simListeners) {
- context.addSimulationListener((SimulationListener)ObjectUtil.create(l));
- }
- }
-
- // enregistrement des listeners de simulation
- // - prescript (before simulation)
- // - export (after simulation)
- context.addSimulationListener(new SimulationPreScript());
- // si le simulateur est de type SimulationStep il faut ajouter les regles
- context.addSimulationListener(new SimulationExportResultWrapper());
- }
-
- static public class ObjectCreationListener implements TopiaTransactionListener {
-
- /** List qui contient tous les objets creer durant la simulation */
- protected List<TopiaEntity> newObjects = new ArrayList<TopiaEntity>();
-
- /**
- * @return Returns the newObjects.
- */
- public List<TopiaEntity> getNewObjects() {
- return this.newObjects;
- }
-
- /* (non-Javadoc)
- * @see org.codelutin.topia.event.TopiaTransactionListener#commit(org.codelutin.topia.event.TopiaTransactionEvent)
- */
- public void commit(TopiaTransactionEvent event) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.codelutin.topia.event.TopiaTransactionListener#rollback(org.codelutin.topia.event.TopiaTransactionEvent)
- */
- public void rollback(TopiaTransactionEvent event) {
- log.debug("Transaction rollback " + event.getEntities().size() + " object(s)");
- // FIXME le jour ou on aura l'isolation on pourra directement
- // ajouter dans un autre TopiaContext les objets ajouté durant la
- // simulation de cette maniere les objets creer au pas de temps
- // N seront dispo pour etre utilisé au pas de temps N+1
- // Sinon une autre methode est de faire cette ajout
- // dans l'event rollback qui est leve a la fin de chaque pas de temps
- for (TopiaEntity entity : event.getEntities()) {
- if (event.isCreate(entity)) {
- log.debug("New object detected during simulation: " + entity + "(" + entity.getClass().getName() + ")");
- newObjects.add(entity);
- }
- }
- }
- }
-
-} // SimulatorHelper
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,1110 +0,0 @@
-/* *##%
- * Copyright (C) 2007
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * SimulationManager.java
- *
- * Created: 5 janv. 07 11:12:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.types.Date;
-import java.beans.PropertyChangeEvent;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18nf._;
-import org.codelutin.util.FileUtil;
-import org.codelutin.util.ListenerSet;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-
-/**
- * Singleton servant a lancer les simulations au travers d'un thread unique
- *
- * @author poussin
- */
-public class SimulationManager {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(SimulationManager.class);
-
- static protected SimulationManager instance = null;
-
- // FIXME pouvoir configurer ceci en fichier de config
- // FIXME ainsi que la mise a false, lors de la simulation de la derniere
- // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
- protected boolean autoLaunch = true;
-
- protected ListenerSet<SimulationQueueListener> listeners = new ListenerSet<SimulationQueueListener>();
- protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
-
-// protected SimulationThread localThread;
-// protected SimulationThread remoteThread;
-
- protected ExecutorService localExecutor;
- protected ExecutorService remoteExecutor;
-
-// /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation local*/
-// protected PriorityBlockingQueue<QueueItem> localQueue = new PriorityBlockingQueue<QueueItem>();
-// /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation remote*/
-// protected PriorityBlockingQueue<QueueItem> remoteQueue = new PriorityBlockingQueue<QueueItem>();
-// /** La liste des simulations terminées */
-// protected LinkedHashSet<SimulationItem> dones = new LinkedHashSet<SimulationItem>();
-
-// /** une liste des id (local et remote) */
-// protected ArrayList<String> ids = new ArrayList<String>();
- /** une map id->simItem pour accelerer les acces */
- protected Map<String, SimulationItem> map = new LinkedHashMap<String, SimulationItem>();
-
-// /** une liste des id des simulations terminées */
-// protected ArrayList<String> idDones = new ArrayList<String>();
- /** une map id->simItem pour accelerer les acces aux simulation terminées */
- protected Map<String, SimulationItem> mapDones = new LinkedHashMap<String, SimulationItem>();
-
- static public SimulationManager getInstance() {
- if (instance == null) {
- instance = new SimulationManager();
- }
- return instance;
- }
-
- /**
- * Cree l'objet et lance les deux threads de simulation (local/remote)
- */
- protected SimulationManager() {
-// localThread = new SimulationThread("local", this, localQueue);
-// remoteThread = new SimulationThread("remote", this, remoteQueue);
-//
-// localThread.start();
-// remoteThread.start();
-
- // TODO passer ces valeurs en valeur configurable
- int cpus = 1; // FIXME les logs ne sont pas multi-thread (il se melange a priori)
-// int cpus = Runtime.getRuntime().availableProcessors();
- int MAX_REMOTE_SIMULATION = 1;
- log.info(_("Launch Simulation executor with %s cpu(s) for local, and %s" +
- " process for remote", cpus, MAX_REMOTE_SIMULATION));
- localExecutor = Executors.newFixedThreadPool(cpus);
- remoteExecutor = Executors.newFixedThreadPool(MAX_REMOTE_SIMULATION);
- }
-
-
- /**
- * @return Returns the autoLaunch.
- */
- public boolean isAutoLaunch() {
- return this.autoLaunch;
- }
-
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertyListeners.addPropertyChangeListener(listener);
- }
-
- public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- propertyListeners.addPropertyChangeListener(propertyName, listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertyListeners.removePropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- propertyListeners.removePropertyChangeListener(propertyName, listener);
- }
-
- /**
- * @param autoLaunch The autoLaunch to set.
- */
- public void setAutoLaunch(boolean autoLaunch) {
- synchronized (this) {
- boolean oldValue = this.autoLaunch;
- this.autoLaunch = autoLaunch;
- if (this.autoLaunch) {
- this.notifyAll();
- }
- propertyListeners.firePropertyChange("autoLaunch", oldValue, autoLaunch);
- }
- }
-
- public void waitAutoLaunch() {
- synchronized(this) {
- while (!isAutoLaunch()) {
- try {
- log.info("autoLaunch is false waiting queue start");
- this.wait();
- } catch (InterruptedException eee) {
- log.warn("Error during wait autoLaunch flag", eee);
- }
- }
- }
- }
-
- /**
- * Cree l'objet de gestion de la simulation en interne et le place dans la
- * bonne queue de simulation (local/remote). Appel le
- * {@link #fireAddEvent(String, SimulationItem)}
- * @param id l'id de simulation
- * @param param les paramètres de la simulation
- */
- public void addSimulation(String id, SimulationParameter param) throws Exception {
- ExecutorService executor = null;
- Runnable job = null;
- if (param.getLocal()) {
- executor = localExecutor;
- log.debug(_("isisfish.message.add.queue", id));
- } else {
- executor = remoteExecutor;
- log.debug(_("isisfish.message.add.queue.remote", id));
- }
-
-
-
- // on construit le bon type de SimulationItem pour le job
- SimulationItem item = null;
- if (param.getUseAnalysePlan()) {
- // c un plan d'analyse, il peut etre independant ou dependant
- if (!param.isIndependentPlan()) {
- item = new SimulationItemPlan(id, param);
- job = new SimulationJob(this, item);
- } else {
- // on met dans la queue local le process de generation de toutes
- // les simus
- item = new SimulationItemPlanIndependent(id, param);
- job = new PrepareIndependentSimulationJob(this, executor, item);
- executor = localExecutor; // change after job creation, because job need reel executor
- }
- } else {
- // une simulation normal
- item = new SimulationItem(id, param);
- log.info("Simulation added to executor: " + executor.isShutdown() + ", " + executor.isTerminated());
- job = new SimulationJob(this, item);
- }
- fireAddEvent(id, item); // must be before thread notification because thread look in map
- executor.execute(job);
- }
-
- /**
- * Envoie le signal stop a la simulation et la supprime de la liste des
- * simulation disponible en appelant {@link #fireRemoveEvent(String)}
- *
- * @param id l'id de simulation
- */
- public void removeSimulation(String id) {
- SimulationItem item = map.get(id);
- if (item != null) {
- item.control.setStopSimulationRequest(true);
- }
- fireRemoveEvent(id);
- }
-
- /**
- * Retourne une liste toujours dans le meme ordre des ids de simulation
- * a faire
- * @return
- */
- public List<String> getIds() {
- List<String> result = new ArrayList<String>(map.keySet());
- return result;
- }
-
- /**
- * Retourne une liste toujours dans le meme ordre des ids de simulation
- * a faire
- * @return
- */
- public List<String> getDoneIds() {
- List<String> result = new ArrayList<String>(mapDones.keySet());
- return result;
- }
-
- /**
- * @param id l'id de simulation
- * @return <code>true</code> si un identifiant est utilisé pour une simulation
- */
- public boolean exists(String id) {
- //TODO Doit-on tenir compte des simulations terminées ?
- boolean result;
- result = map.containsKey(id);
- return result;
- }
- /**
- * @param id l'id de simulation
- * @return <code>true</code> si l'identifiant est utilisé pour une simulation terminée
- */
- public boolean existsDone(String id) {
- boolean result;
- result = mapDones.containsKey(id);
- return result;
- }
-
-
- public void addSimulationQueueListener(SimulationQueueListener l) {
- listeners.add(l);
- }
-
- public void removeSimulationQueueListener(SimulationQueueListener l) {
- listeners.remove(l);
- }
-
- protected void fireAddEvent(String id, SimulationItem item) {
-// ids.add(id);
- map.put(id, item);
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationAdded(e);
- }
- }
-
- protected void fireRemoveEvent(String id) {
- if (map.containsKey(id)) {
- // add the simulation in done model
- // check if we should keep the simulation in done model
- if (mustShowSimulationDone(id)) {
-// idDones.add(id);
- SimulationItem queueItem = map.get(id);
-// dones.add(queueItem);
- mapDones.put(id, queueItem);
- }
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationWillBeRemoved(e);
- }
-// ids.remove(id);
- map.remove(id);
- }
- }
-
- protected void fireStartEvent(String id, SimulationItem item) {
- if (!exists(id) && item.isIndependent()) {
- // la simulation qui vient d'etre lancee n'existe pas, c parce qu'il
- // s'agit d'une simulation de plan, on l'ajoute a la liste pour que
- // l'utilisateur puisse la visualiser. On ne le fait pas pour les
- // plan dependant car, il partage le meme controleur, donc
- // l'utilisateur voit deja ce qui se passe
- fireAddEvent(id, item);
- }
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationStart(e);
- }
- }
-
- protected void fireStopEvent(String id) {
- SimulationQueueEvent e = new SimulationQueueEvent(this, id);
- for (SimulationQueueListener l : listeners) {
- l.simulationStop(e);
- }
- }
-
- /**
- * @param id id of simulation
- * @return Returns the parameters.
- */
- public SimulationParameter getParameter(String id) {
- return map.get(id).param;
- }
-
- /**
- * @param id id of simulation
- * @return Returns the controls.
- */
- public SimulationControl getControl(String id) {
- SimulationControl result = null;
- SimulationItem item = map.get(id);
- if (item == null) {
- // try to find it in done simulation
- item = mapDones.get(id);
- }
- if (item != null) {
- result = item.control;
- }
- return result;
- }
-
- /**
- * @param id simulation id
- * @return <code>tru</code> if we should add in simulation done model
- * the corresponding simulation
- */
- protected boolean mustShowSimulationDone(String id) {
- IsisConfig config = IsisFish.config;
-
- boolean result = !config.isSimulationShowOnlyError();
- try {
-
- SimulationItem item = map.get(id);
-
- if (result || (!(item instanceof SimulationItemPlan) &&
- item.getSimulation().getInformation().hasError())) {
- result = true;
- }
-
-// if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
-// // on ne met jamais dans la queue done les simulations de plan
-// // sauf si elle echoue
-// result = false;
-//// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
-// } else if (!(config.isSimulationShowOnlyError() &&
-// !(item instanceof SimulationItemPlan) &&
-// item.getSimulation().getInformation().hasError())) {
-// result = false;
-// }
- } catch (Exception eee) {
- log.debug("Ne devrait pas arriver", eee);
- // I don't known how it could appear, but in doubt, show it!
- }
- return result;
- }
-
-// /**
-// * Thread permettant de faire les simulations se trouvant dans la queue
-// * passée en parametre.
-// * <p>
-// * Si la simulation prise dans la queue n'existe plus, au moment ou on
-// * souhaite l'utiliser dans le {@link SimulationManager} alors elle est
-// * passée et on en recherche une autre.
-// *
-// * @author poussin
-// */
-// static class SimulationThread extends Thread {
-// protected SimulationManager simulationManager;
-// protected BlockingQueue<QueueItem> queue;
-//
-// /**
-// *
-// * @param name just small name to differenciate thread (local/remote)
-// * @param simulationManager le manager de simulation
-// * @param queue la queue de simulations
-// */
-// public SimulationThread(String name, SimulationManager simulationManager, BlockingQueue<QueueItem> queue) {
-// super("Simulation Thread " + name);
-// this.simulationManager = simulationManager;
-// this.queue = queue;
-// }
-//
-// /* (non-Javadoc)
-// * @see java.lang.Thread#run()
-// */
-// @Override
-// public void run() {
-// log.info("Start simulation thread");
-// while (true) {
-// // simItem qui sert a faire la simulation courante
-// QueueItem simItem = null;
-// try {
-// //
-// // recheche d'une simulation
-// //
-// while (simItem == null) {
-// log.debug("try to take simulation");
-// simItem = queue.take();
-// log.debug("Just take " + simItem.id);
-// if (!simulationManager.exists(simItem.id)) {
-// // on ne le retrouve pas dans la map, la simulation
-// // a donc ete supprimée par l'utilisateur on passe a la
-// // suivante
-// simItem = null;
-// } else if (!simulationManager.isAutoLaunch() && simItem.param.getInQueue()) {
-// // don't use simItem, because is queue and queue is not launched
-// queue.add(simItem);
-// simItem = null;
-// // sleep 1s. Because all other simItem is in queue too
-// // this sleep permit to user to put not queue simItem,
-// // with out eat cpu
-// sleep(1000);
-// }
-// }
-//
-// log.debug("use if has next simulation: " + simItem.id);
-// if (simItem.hasNext()) {
-// SimulationStorage sim = simItem.getSimulation();
-// String simId = sim.getName();
-// log.debug("Start simulation: " + simId);
-// SimulationControl control = simItem.control;
-// // set date to 0 at beginning of simulation
-// control.setDate(new Date());
-// control.setProgress(0);
-// control.setStarted(true);
-//
-// simulationManager.fireStartEvent(simItem.id);
-// try {
-// sim = SimulationHelper.simulate(control, sim);
-// simItem.setLastSimulation(sim);
-// } finally {
-// simulationManager.fireStopEvent(simItem.id);
-// }
-// // copie les exports de simulation dans le repertoire
-// // souhaiter par l'utilisateur
-// SimulationParameter param = sim.getParameter();
-// if (param.getExportNames() != null && param.getExportNames().size() > 0) {
-// File exportDir = IsisConfig.getResultExportDirectory(sim.getDirectory());
-// FileUtil.copyAndRenameRecursively(
-// exportDir,
-// new File(param.getExportDirectory()),
-// exportDir.getName(), simItem.id);
-//// FileUtil.copyAndRenameRecursively(
-//// exportDir,
-//// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-//// IsisConfig.RESULT_EXPORT, simItem.id);
-// }
-//
-// if (simItem.hasNext() && simulationManager.exists(simItem.id)) {
-// // il y a encore des simulations a faire pour cet simItem
-// // on le remet dans la queue (on ne fait pas les autres
-// // simulations de cet simItem
-// // tout de suite car l'simItem peut-etre un simItem de queue
-// // moins prioritaire que les autres simulations
-// // il faut donc qu'il reprenne sa place dans l'ordre)
-//
-// queue.add(simItem);
-// } else {
-// // Si l'utilisateur souhaite seulement les exports
-// // on supprimer la/les simulations. Il faut le faire
-// // lorsqu'il n'y a plus de next car le calcul des plans
-// // peut avoir besoin des simulations precedentes
-// if (param.getOnlyExport()) {
-// if (param.getUseAnalysePlan()) {
-// for(File file : FileUtil.find(
-// IsisConfig.getSimulationDirectory(),
-// simItem.id + "_[0-9]+$", false)) {
-// log.debug("Delete simulation " + file);
-// FileUtil.deleteRecursively(file);
-// }
-// } else {
-// sim.delete(false);
-// }
-// }
-// simulationManager.fireRemoveEvent(simItem.id);
-//
-// if (simulationManager.isAutoLaunch() && simItem.param.getInQueue()) {
-// // if simItem is last in queue, stop the queue after that
-// QueueItem [] items = queue.toArray(new QueueItem[queue.size()]);
-// if (items.length > 0) {
-// QueueItem last = items[items.length-1];
-// if (!last.param.getInQueue()) {
-// // la derniere n'est pas en queue, donc plus de simulation en queue
-// simulationManager.setAutoLaunch(false);
-// }
-// } else {
-// // aucun simulation, donc forcement plus en queue non plus
-// simulationManager.setAutoLaunch(false);
-// }
-// }
-// }
-// }
-//
-//// } catch (Exception eee) {
-// } catch (Throwable eee) {
-// try {
-// // on sauvegarde l'erreur rencontrée, elle sera traité lors
-// // du fireRemoveEvent
-// simItem.lastSimulation.getInformation().setException(eee);
-// } catch (Exception e) {
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation.information.file", simItem.id), eee);
-// }
-// } finally {
-// // error during simulation, remove bad simulation
-// simulationManager.fireRemoveEvent(simItem.id);
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation", simItem.id), eee);
-// }
-// }
-//
-// } finally {
-// simItem = null;
-// }
-// }
-// }
-// }
-
-// /**
-// * Utilise pour les simulations avec plan d'analyse dependant
-// */
-// static class SimulationPlanJob implements Runnable {
-//
-// protected SimulationManager simulationManager;
-// protected SimulationItemPlan item;
-//
-// public SimulationPlanJob(SimulationManager simulationManager, SimulationItemPlan item) {
-// this.simulationManager = simulationManager;
-// this.item = item;
-// }
-//
-// public void run() {
-// try {
-// log.debug("use if has next simulation: " + item.id);
-// // on traite tout l'simItem dans le meme thread
-// while (simulationManager.exists(item.id) && item.hasNext()) {
-// SimulationStorage sim = item.getSimulation();
-// String simId = sim.getName();
-// log.debug("Start simulation: " + simId);
-// SimulationControl control = item.control;
-// // set date to 0 at beginning of simulation
-// control.setDate(new Date());
-// control.setProgress(0);
-// control.setStarted(true);
-//
-// simulationManager.fireStartEvent(item.id);
-// try {
-// sim = SimulationHelper.simulate(control, sim);
-// item.setLastSimulation(sim);
-// } finally {
-// simulationManager.fireStopEvent(item.id);
-// }
-// // copie les exports de simulation dans le repertoire
-// // souhaiter par l'utilisateur
-// SimulationParameter param = sim.getParameter();
-// if (param.getExportNames() != null &&
-// param.getExportNames().size() > 0) {
-// File exportDir = IsisConfig.getResultExportDirectory(
-// sim.getDirectory());
-// FileUtil.copyAndRenameRecursively(
-//
-// exportDir,
-// new File(param.getExportDirectory()),
-// exportDir.getName(), item.id);
-//// FileUtil.copyAndRenameRecursively(
-//// exportDir,
-//// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-//// IsisConfig.RESULT_EXPORT, simItem.id);
-// }
-// }
-//
-// if (item.lastSimulation != null) {
-// SimulationParameter param = item.param;
-// // Si l'utilisateur souhaite seulement les exports
-// // on supprimer la/les simulations. Il faut le faire
-// // lorsqu'il n'y a plus de next car le calcul des plans
-// // peut avoir besoin des simulations precedentes
-// if (param.getOnlyExport()) {
-// if (param.getUseAnalysePlan()) {
-// for (File file : FileUtil.find(
-// IsisConfig.getSimulationDirectory(),
-// item.id + "_[0-9]+$", false)) {
-// log.debug("Delete simulation " + file);
-// FileUtil.deleteRecursively(file);
-// }
-// } else {
-// item.lastSimulation.delete(false);
-// }
-// }
-// }
-// // on previent que c la fin de la simulation
-// simulationManager.fireRemoveEvent(item.id);
-// } catch (Throwable eee) {
-// try {
-// // on sauvegarde l'erreur rencontrée, elle sera traité lors
-// // du fireRemoveEvent
-// if (item.lastSimulation != null) {
-// item.lastSimulation.getInformation().setException(eee);
-// }
-// } catch (Exception e) {
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
-// }
-// } finally {
-// // error during simulation, remove bad simulation
-// simulationManager.fireRemoveEvent(item.id);
-// if (log.isWarnEnabled()) {
-// log.warn(_("isisfish.error.during.simulation", item.id), eee);
-// }
-// }
-//
-// } finally {
-// item = null;
-// }
-// }
-//
-// }
-
- class PrepareIndependentSimulationJob implements Runnable {
-
- protected SimulationManager simulationManager;
- protected ExecutorService executor;
- protected SimulationItem item;
-
- public PrepareIndependentSimulationJob(SimulationManager simulationManager,
- ExecutorService executor,
- SimulationItem item) {
- this.simulationManager = simulationManager;
- this.executor = executor;
- this.item = item;
- }
-
- public void run() {
- simulationManager.waitAutoLaunch();
- // l'item est independant, on ajoute toutes ces simulations en plus
- // mais pas dans la map pour qu'il n'y ait bien que l'initiale
- // plus celles en cours d'affichees
- while (item.hasNext()) {
- try {
- executor.execute(new SimulationJob(simulationManager, item.next()));
- } catch (Exception eee) {
- log.error("Can't add simulation: " + item, eee);
- }
- }
-
- }
-
- }
-
- /**
- * Utilise pour les simulations sans plan d'analyse ou des plans independant
- */
- class SimulationJob implements Runnable {
-
- protected SimulationManager simulationManager;
- protected SimulationItem simItem;
-
- /**
- *
- * @param simulationManager
- * @param parentId si ce job est le resulat d'un plan d'analyse
- * independant, sinon null ou la meme valeur que id
- * @param id l'identifiant de la simulation (avec _N pour ceux qui
- * proviennent d'un plan d'analyse)
- * @param zip le zip contenant la simulation
- */
- public SimulationJob(SimulationManager simulationManager,
- SimulationItem item) {
- this.simulationManager = simulationManager;
- this.simItem = item;
- }
-
- public void run() {
- log.info("Start simulation : " + simItem.id);
- simulationManager.waitAutoLaunch();
- try {
- // si l'simItem exist encore (que l'utilisateur ne la pas retire)
- log.info("id: " + simItem.getPlanIdOrId() + " exists ? " +
- simulationManager.exists(simItem.getPlanIdOrId()) +
- " hasNext ? " + simItem.hasNext());
- while (simulationManager.exists(simItem.getPlanIdOrId()) &&
- simItem.hasNext()) {
- SimulationItem item = simItem.next();
- try {
- String id = item.id;
-
- log.debug("Start simulation: " + id);
- SimulationStorage simulation = item.getSimulation();
- SimulationControl control = item.control;
- // set date to 0 at beginning of simulation
- control.setDate(new Date());
- control.setProgress(0);
- control.setStarted(true);
-
- simulationManager.fireStartEvent(id, item);
- try {
- simulation = SimulationHelper.simulate(control, simulation);
- item.setLastSimulation(simulation);
- } finally {
- simulationManager.fireStopEvent(id);
- }
- // copie les exports de simulation dans le repertoire
- // souhaiter par l'utilisateur
- SimulationParameter param = simulation.getParameter();
- if (param.getExportNames() != null &&
- param.getExportNames().size() > 0) {
- File exportDir = SimulationStorage.getResultExportDirectory(
- simulation.getDirectory());
- FileUtil.copyAndRenameRecursively(
- exportDir,
- new File(param.getExportDirectory()),
- // FIXME, est-ce bien parentId et pas id ?
- exportDir.getName(), id);
-// FileUtil.copyAndRenameRecursively(
-// exportDir,
-// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-// IsisConfig.RESULT_EXPORT, simItem.id);
- }
- // Si l'utilisateur souhaite seulement les exports
- // on supprimer la/les simulations.
- // pour les plan dependant il faut le faire apres toutes
- // les simulations
- if (simItem.isIndependent() && param.getOnlyExport()) {
- simulation.delete(false);
- }
- // on previent que c la fin de la simulation
- simulationManager.fireRemoveEvent(id);
- } catch (Throwable eee) {
- try {
- // on sauvegarde l'erreur rencontrée, elle sera traité lors
- // du fireRemoveEvent
- item.getSimulation().getInformation().setException(eee);
- } catch (Exception e) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
- }
- } finally {
- // error during simulation, remove bad simulation
- simulationManager.fireRemoveEvent(item.id);
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.during.simulation", item.id), eee);
- }
- }
- }
- }
- } catch (Exception eee) {
- log.error("Can't take next simulation: " + simItem.id, eee);
- }
- // suppression des simulations pour les plans dependants
- // Si l'utilisateur souhaite seulement les exports
- // on supprimer la/les simulations. Il faut le faire
- // lorsqu'il n'y a plus de next car le calcul des plans
- // peut avoir besoin des simulations precedentes
- if (!simItem.isIndependent() && simItem.param.getOnlyExport()) {
- for (File file : FileUtil.find(
- SimulationStorage.getSimulationDirectory(),
- simItem.id + "_[0-9]+$", false)) {
- log.debug("Delete simulation " + file);
- FileUtil.deleteRecursively(file);
- }
- }
-
- if (!simItem.control.isRunning() && simItem.hasSimulation()) {
- // c'etait la derniere simulation du plan, on arrete le plan
- simulationManager.fireStopEvent(simItem.id);
- simulationManager.fireRemoveEvent(simItem.id);
- }
- }
- }
-
- /**
- * Une simulation a faire sans plan d'experience
- */
- public class SimulationItem {
-
- protected String id;
- protected SimulationParameter param;
- protected SimulationItemPlan planItem = null;
- protected File zip;
- protected SimulationControl control;
- protected SimulationStorage lastSimulation = null;
-
- protected SimulationItem() {
- }
-
- public boolean isIndependent() {
- return true;
- }
-
- /**
- * Utilise pour servir sous simItem pour les items de plan d'experience
- * @param id
- * @param control
- * @param sim
- */
- public SimulationItem(SimulationItemPlan planItem, SimulationControl control,
- SimulationStorage sim) {
- this.planItem = planItem;
- this.id = sim.getName();
- param = sim.getParameter();
- this.control = control;
- lastSimulation = sim;
- }
-
- /**
- * Retourne l'id du plan qui a genere cet item, si cet item n'est
- * pas genere par un plan, retourne directement l'id
- * @return
- */
- public String getPlanIdOrId() {
- String result = id;
- if (hasPlanItem()) {
- result = getPlanItem().id;
- }
- return result;
- }
-
- public SimulationItemPlan getPlanItem() {
- return planItem;
- }
-
- /**
- * Si renvoi vrai, cela veut dire que cette simulation a ete generee
- * par un plan d'experience
- *
- * @return
- */
- public boolean hasPlanItem() {
- boolean result = planItem != null;
- return result;
- }
-
- /**
- * creer un simItem de simulation et prepare le zip
- * @param id
- * @param param
- */
- public SimulationItem(String id, SimulationParameter param) {
- this.id = id;
- this.param = param;
- this.control = new SimulationControl(id);
- zip = SimulationHelper.prepareSimulationZipFile(control, param, true);
- }
-
- public boolean hasSimulation() {
- boolean result = lastSimulation != null;
- return result;
- }
-
- /**
- * Retourne la simulation qu'il faut faire
- * @return le storage de simulation
- * @throws Exception si problème pendant l'import de la simulation
- */
- public SimulationStorage getSimulation() throws Exception {
- if (lastSimulation == null) {
- lastSimulation = SimulationStorage.importAndRenameZip(zip, id);
- }
- return lastSimulation;
- }
-
- /**
- * Appelé apres que la simulation est vraiment eu lieu. On en a besoin
- * car pour une simulation distante apres la simulation le storage
- * a ete changé par rapport au storage initialement cree pour la
- * simulation
- *
- * @param lastSimulation The lastSimulation to set.
- */
- public void setLastSimulation(SimulationStorage lastSimulation) {
- this.lastSimulation = lastSimulation;
- if (hasPlanItem()) {
- getPlanItem().setLastSimulation(lastSimulation);
- }
- }
-
- /**
- * @return <code>true</code> s'il y a encore une simulation si on
- * utilise un plan et qu'il dit qu'il y en a encore, ou si la simulation
- * n'a pas encore ete faite.
- */
- public boolean hasNext() {
- boolean result;
- result = !control.isStarted();
- return result;
- }
-
- /**
- * Ce retourne lui meme, car il n'y a pas de plan
- * @return
- */
- public SimulationItem next() throws Exception {
- return this;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- boolean result = false;
- if (obj instanceof SimulationItem) {
- result = param.equals(((SimulationItem)obj).param);
- }
- return result;
- }
-
- @Override
- public int hashCode() {
- int hash = 3;
- hash = 53 * hash + (this.param != null ? this.param.hashCode() : 0);
- return hash;
- }
-
- }
-
- /**
- * Une simulation a faire qui contient un plan d'experience dependant
- */
- public class SimulationItemPlan extends SimulationItem
- implements PropertyChangeListener {
- // FIXME a mettre en config MAX_SIMULATION_PLAN
- // nombre maximal de simulation de plan par simulation
- // (pour eviter les plans qui ne retroune jamais faux
- protected static final int MAX_SIMULATION_PLAN = 10000;
-
- protected int simulationNumber = 0;
- protected int simulationFinished = 0;
- protected PlanGenerator plan = null;
-
- public SimulationItemPlan(String id, SimulationParameter param) {
- this.id = id;
- this.param = param;
- this.control = new SimulationControl(id);
- // ne pas inverser la creation de PlanGenerator et du zip.
- // car le init des plans est fait dans le constructeur de
- // PlanGenerator, et le init peut modifier les parametres
- // de simulation
- if (!param.getUseAnalysePlan()) {
- throw new SimulationException("Your simulation is not a plan:" + id);
- }
-
- plan = new PlanGenerator(id, control, param);
- zip = SimulationHelper.prepareSimulationZipFile(control, param, true);
- plan.setZip(zip);
- }
-
- @Override
- public boolean isIndependent() {
- return false;
- }
-
- /**
- * Retourne la simulation qu'il faut faire
- * @return le storage de simulation
- * @throws Exception si problème pendant l'import de la simulation
- */
- @Override
- public SimulationStorage getSimulation() throws Exception {
- throw new UnsupportedOperationException("Plan item don't have simulation");
- }
-
- /**
- * Retourne la simulation qu'il faut faire
- * @return le storage de simulation
- * @throws Exception si problème pendant l'import de la simulation
- */
- public SimulationStorage getNextSimulation() throws Exception {
- SimulationStorage result;
- result = plan.next();
- simulationNumber++;
- lastSimulation = result;
- return result;
- }
-
- /**
- * Appelé apres que la simulation est vraiment eu lieu. On en a besoin
- * car pour une simulation distante apres la simulation le storage
- * a ete changé par rapport au storage initialement cree pour la
- * simulation
- *
- * @param lastSimulation The lastSimulation to set.
- */
- @Override
- public void setLastSimulation(SimulationStorage lastSimulation) {
- this.lastSimulation = lastSimulation;
- plan.setLastSimulation(lastSimulation);
- }
-
- /**
- * @return <code>true</code> s'il y a encore une simulation si on
- * utilise un plan et qu'il dit qu'il y en a encore, ou si la simulation
- * n'a pas encore ete faite.
- */
- @Override
- public boolean hasNext() {
- boolean result;
- result = simulationNumber < MAX_SIMULATION_PLAN &&
- ((plan != null && plan.hasNext()) || lastSimulation == null);
- return result;
- }
-
- /**
- * On utilise le meme control pour les plans dependants
- * @return
- */
- @Override
- public SimulationItem next() throws Exception {
- SimulationStorage sim = getNextSimulation();
- SimulationItem result = new SimulationItem(this, control, sim);
- return result;
- }
-
- public void propertyChange(PropertyChangeEvent evt) {
- // Attention il faut bien que toutes les simultions soit
- // genere (ou qu'il en reste au moins une en cours
- // sinon, la condition est tout de suite vrai et la simulation
- // s'arrete. Ce qui est normalement le cas ici, car on utilise
- // le meme executor pour genere les simultions que pour les faire
- // et les generes est mis en premier dans l'executor, mais si
- // on est multi cpu, et que le temps de simulation est inferieur
- // au temps de generation des simulations, on pourrai finir par
- // avoir un probleme.
-
- if (Boolean.FALSE.equals(evt.getNewValue())) {
- simulationFinished++;
- control.setProgress(simulationFinished);
- control.setText(simulationFinished + " / " + simulationNumber);
- if (simulationFinished >= simulationNumber) {
- log.info("All simulations have been executed: " + simulationFinished);
- control.stopSimulation();
- String id = control.getId();
- SimulationManager.this.fireStopEvent(id);
- SimulationManager.this.fireRemoveEvent(id);
- }
- }
- }
-
- }
-
- /**
- * Une simulation a faire qui contient un plan d'experience independant
- */
- public class SimulationItemPlanIndependent extends SimulationItemPlan {
-
- public SimulationItemPlanIndependent(String id, SimulationParameter param) {
- super(id, param);
- }
-
- @Override
- public boolean isIndependent() {
- return true;
- }
-
- /**
- * On utilise un nouveau control pour les plans independants
- * @return
- */
- @Override
- public SimulationItem next() throws Exception {
- SimulationStorage sim = getNextSimulation();
- control.setProgressMax(simulationNumber);
- SimulationControl control = new SimulationControl(sim.getName());
- control.addPropertyChangeListener("running", this);
- SimulationItem result = new SimulationItem(this, control, sim);
- return result;
- }
-
- }
-
-}
-
-
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-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -124,15 +124,6 @@
protected String exportDirectory = "/tmp";
- /** La simulation doit etre faite en local */
- protected boolean local = true;
-
- /** La simulation doit etre faite dans un sous process */
- protected boolean subProcess = false;
-
- /** La simulation doit etre lancé dans la queue de simulation (non prioritaire)*/
- protected boolean inQueue = false;
-
/** utilisation du script de pre simulation */
protected boolean usePreScript = false;
@@ -275,9 +266,6 @@
}
result.setProperty("exports", exportList);
- result.setProperty("local", String.valueOf(local));
- result.setProperty("subProcess", String.valueOf(subProcess));
- result.setProperty("inQueue", String.valueOf(inQueue));
result.setProperty("usePreScript", String.valueOf(usePreScript));
result.setProperty("preScript", preScript);
result.setProperty("useAnalysePlan", String.valueOf(useAnalysePlan));
@@ -418,9 +406,6 @@
}
}
- local = Boolean.parseBoolean(props.getProperty("local", "true"));
- subProcess = Boolean.parseBoolean(props.getProperty("subProcess", "false"));
- inQueue = Boolean.parseBoolean(props.getProperty("inQueue", "false"));
usePreScript = Boolean.parseBoolean(props.getProperty("usePreScript",
"false"));
preScript = props.getProperty("preScript");
@@ -672,42 +657,6 @@
}
/**
- * @return Returns the local.
- */
- public boolean getLocal() {
- return this.local;
- }
-
- /**
- * @param local The local to set.
- */
- public void setlocal(boolean local) {
- this.local = local;
- }
-
- public void setSubProcess(boolean subProcess) {
- this.subProcess = subProcess;
- }
-
- public boolean isSubProcess() {
- return subProcess;
- }
-
- /**
- * @return Returns the inQueue.
- */
- public boolean getInQueue() {
- return this.inQueue;
- }
-
- /**
- * @param inQueue The inQueue to set.
- */
- public void setInQueue(boolean inQueue) {
- this.inQueue = inQueue;
- }
-
- /**
* @return Returns the useOptimization.
*/
public boolean getUseOptimization() {
@@ -972,8 +921,6 @@
result.simulatorName = simulatorName;
result.useOptimization = useOptimization;
result.useStatistic = useStatistic;
- result.local = local;
- result.inQueue = inQueue;
result.usePreScript = usePreScript;
result.preScript = preScript;
result.useAnalysePlan = useAnalysePlan;
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueEvent.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,64 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * SimulationQueueEvent.java
- *
- * Created: 17 août 2006 22:00:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.EventObject;
-
-
-/**
- * @author poussin
- *
- */
-
-public class SimulationQueueEvent extends EventObject {
-
- /** simulation id */
- protected String id;
-
- /**
- * @param source
- */
- public SimulationQueueEvent(Object source, String id) {
- super(source);
- this.id = id;
- }
-
- /**
- * @return Returns the id.
- */
- public String getId() {
- return this.id;
- }
-
-}
-
-
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueListener.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,55 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * SimulationQueueListener.java
- *
- * Created: 17 août 2006 21:59:02
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.EventListener;
-
-
-/**
- * @author poussin
- *
- */
-
-public interface SimulationQueueListener extends EventListener {
-
- /** call when one simulation is added to the queue */
- public void simulationAdded(SimulationQueueEvent e);
- /** call when one simulation will be removed from the queue */
- public void simulationWillBeRemoved(SimulationQueueEvent e);
- /** call when one simulation begin */
- public void simulationStart(SimulationQueueEvent e);
- /** call when one simulation stop */
- public void simulationStop(SimulationQueueEvent e);
-
-}
-
-
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,99 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * SimulationQueueModel.java
- *
- * Created: 18 août 2006 00:05:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/** @author poussin */
-
-public class SimulationQueueModel extends AbstractSimulationQueueModel {
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel()
- */
- public SimulationQueueModel() {
- super();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel(SimulationManager)
- */
- public SimulationQueueModel(SimulationManager queue) {
- super(queue);
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getSimulationIds()
- */
- protected java.util.List<String> getSimulationIds() {
- return getQueue().getIds();
- }
-
- /* (non-Javadoc)
- * @see AbstractSimulationQueueModel at getQueueItemsAsMap()
- */
- protected java.util.Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap() {
- return getQueue().map;
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- int row = getRowCount();
- fireTableRowsInserted(row, row);
- SimulationControl control = getSimulationControl(e.getId());
- if (control != null) {
- control.addPropertyChangeListener(this);
- } else {
- log.warn("Simulation without controler: " + e.getId());
- }
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- String id = e.getId();
- SimulationControl control = getSimulationControl(e.getId());
- if (control != null) {
- control.removePropertyChangeListener(this);
- }
- int row = getSimulationIndex(id);
- if (isRowIndexValid(row)) {
- fireTableRowsDeleted(row, row);
- }
- progress.remove(id);
- }
-
-} // SimulationQueueModel
\ No newline at end of file
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/Simulator.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -34,8 +34,6 @@
/**
* This interface is used when simulator have all code for simulation.
- * This is the old interface for simulator, now we prefer to used
- * {@link SimulatorStep}
*
* @author poussin
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -44,6 +44,8 @@
import org.codelutin.util.FileUtil;
import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher;
+import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher;
/**
* Cette classe permet de lancer un serveur XML-RPC qui attend des demandes
@@ -121,12 +123,13 @@
String id = (String) params.get(0);
File zip = FileUtil.byteToFile((byte[]) params.get(1));
- SimulationStorage simulation = SimulationStorage.importAndRenameZip(zip, id);
SimulationControl control = new SimulationControl(id);
+ SimulationStorage simulation = null;
simulationControls.put(id, control);
try {
- simulation = SimulationHelper.localSimulate(control, simulation);
+ SimulatorLauncher launcher = new InProcessSimulatorLauncher();
+ simulation = launcher.simulate(null, control, zip);
zip = simulation.createZip();
byte [] result = FileUtil.fileToByte(zip);
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,413 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.aspect.AspectClassLoader;
+import fr.ifremer.isisfish.aspect.Cache;
+import fr.ifremer.isisfish.aspect.Trace;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationException;
+import fr.ifremer.isisfish.simulator.SimulationExportResultWrapper;
+import fr.ifremer.isisfish.simulator.SimulationListener;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.SimulationPreScript;
+import fr.ifremer.isisfish.simulator.Simulator;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.rmi.RemoteException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+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;
+import org.codelutin.topia.event.TopiaTransactionListener;
+import org.codelutin.topia.persistence.TopiaEntity;
+import org.codelutin.util.ObjectUtil;
+import org.codelutin.util.StringUtil;
+
+/**
+ * Fait une simulation dans la meme jvm
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class InProcessSimulatorLauncher implements SimulatorLauncher {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(InProcessSimulatorLauncher.class);
+
+ public SimulationStorage simulate(SimulationService simulationService,
+ SimulationControl control, File simulationZip)
+ throws RemoteException{
+ String id = control.getId();
+
+ SimulationStorage simulation = null;
+ try {
+ simulation = SimulationStorage.importAndRenameZip(simulationZip, id);
+ simulation = localSimulate(control, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do simulation %s", id), eee);
+ simulation.getInformation().setException(eee);
+ }
+ return simulation;
+ }
+
+ public int maxSimulationThread() {
+ return 1;
+ }
+
+ @Override
+ public String toString() {
+ return _("in Process");
+ }
+
+ protected void message(SimulationControl control, String message) {
+ log.info(message);
+ if (control != null) {
+ control.setText(message);
+ }
+ }
+
+ /**
+ * fait la simulation en local dans un nouveau thread, cela permet
+ * pour chaque simulation d'avoir les bons scripts dans le classloader
+ * et non pas d'utiliser les scripts d'une autre simulation
+ *
+ * @param control le controleur de simulation, peut-etre null si on ne
+ * souhaite pas controler la simulation
+ * @param simulation la simulation a faire
+ * @return le storage après simulation en locale
+ */
+ protected SimulationStorage localSimulate(SimulationControl control, SimulationStorage simulation) {
+ SimThread simThread = new SimThread(control, simulation);
+ // add simulation logger, we can't make it before since we need thread name
+ // anyway since if accept only log from simThread, no need to init it before
+ String simulLogLevel = simulation.getParameter().getSimulLogLevel();
+ String scriptLogLevel = simulation.getParameter().getScriptLogLevel();
+ String libLogLevel = simulation.getParameter().getLibLogLevel();
+ try {
+ simulation.addSimulationLogger(simulLogLevel,scriptLogLevel,libLogLevel,simThread.getName());
+ } catch (Exception e) {
+ if (log.isWarnEnabled()) {
+ log.warn(_("isisfish.error.add.logger.simulation ", e));
+ }
+ }
+ try {
+ simThread.start();
+ try {
+ simThread.join();
+ } catch (InterruptedException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn(_("isisfish.error.wait.simThread"), eee);
+ }
+ }
+ } finally {
+ // remove simulation logger (no more need since thread is dead)
+ simulation.removeSimulationLogger();
+ }
+ return simulation;
+ }
+
+ protected class SimThread extends Thread {
+ protected SimulationControl control;
+ protected SimulationStorage simulation;
+
+ public SimThread(SimulationControl control, SimulationStorage simulation) {
+ super("SimThread " + (control!=null?control.getId():""));
+ this.control = control;
+ this.simulation = simulation;
+ }
+ @Override
+ public void run() {
+ simulation = localSimulateSameThread(control, simulation);
+ }
+ }
+
+ /**
+ * Modifie le classloader du thread passé en paramètre.
+ * <p>
+ * Sert pour les simulations pour qu'elles puissent trouver les
+ * script, rule et export
+ *
+ * @param thread le thread dont on souhaite modifier le classloader ou null
+ * @param directory le répertoire qui servira pour le classloader
+ * @return le classe loader modifié
+ */
+ protected AspectClassLoader changeClassLoader(Thread thread, File directory) {
+ try {
+ URL [] classpath = new URL[]{directory.toURI().toURL(),
+ // poussin 20080821
+ // il semble ne plus trouve les formules, est-ce mieux avec le compile dir ?
+ IsisFish.config.getCompileDirectory().toURI().toURL()
+ };
+ //URL [] classpath = new URL[]{directory.toURL()};
+ AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath);
+ thread.setContextClassLoader(loader);
+ log.info("Classloader used for simulation: " + loader + " " +
+ Arrays.toString(loader.getURLs()));
+ return loader;
+ } catch (MalformedURLException eee) {
+ // on leve un runtime, car normalement cette erreur est pratiquement
+ // impossible car on creer l'url a partir d'un File ce qui ne pose
+ // noralement pas de probleme
+ throw new IsisFishRuntimeException(_("isisfish.error.change.classloader", directory), eee);
+ }
+ }
+
+ /**
+ * Cree le simulation context, creer le ClassLoader, met en place les AOP,
+ * met a jour des informations sur la simulation et lance la simulation en
+ * local
+ *
+ * @param control le controleur de simulation, peut-etre null si on ne
+ * souhaite pas controler la simulation
+ * @param simulation la simulation a faire
+ * @return le storage après simulation en locale
+ */
+ protected SimulationStorage localSimulateSameThread(SimulationControl control, SimulationStorage simulation) {
+ SimulationStorage result = null;
+ String jvmVersion = System.getProperty("java.runtime.version");
+ log.info(SimpleDateFormat.getInstance().format(new java.util.Date())
+ + " Java version: " + jvmVersion + " Isis-fish version: "
+ + IsisConfig.getVersion());
+ long start = System.nanoTime();
+ simulation.getInformation().setSimulationStart(new java.util.Date());
+ AspectClassLoader classLoader;
+ try {
+ File rootDirectory = simulation.getDirectory();
+
+ //
+ // changement de classloader
+ //
+ classLoader = changeClassLoader(Thread.currentThread(), rootDirectory);
+
+ //
+ // Creation et initialisation du context de simulation
+ //
+ SimulationContext context = SimulationContext.get();
+ context.setClassLoader(classLoader);
+ context.setScriptDirectory(rootDirectory);
+ context.setSimulationStorage(simulation);
+ context.setSimulationControl(control!=null?control:new SimulationControl(simulation.getName()));
+
+ SimulationParameter parameters = simulation.getParameter();
+ parameters.setIsisFishVersion(IsisConfig.getVersion());
+ // forceReload, save all modification in parameter and reread it
+ parameters = simulation.getForceReloadParameter();
+
+ //
+ // Activation de l'OAP demandée
+ //
+ if (parameters.getUseStatistic()) {
+ message(control, _("isisfish.message.setting.trace.aspects"));
+ classLoader.deploy(Trace.class);
+ }
+ if (parameters.getUseOptimization()) {
+ message(control, _("isisfish.message.setting.cache.aspects"));
+ classLoader.deploy(Cache.class);
+ }
+
+ // recherche du simulateur a utiliser
+ String simulatorName = parameters.getSimulatorName();
+ SimulatorStorage simulator = SimulatorStorage
+ .getSimulator(simulatorName);
+ Simulator simulatorObject = simulator.getNewSimulatorInstance();
+
+ // on se met listener sur tc pour connaitre tous les nouveaux objets
+ ObjectCreationListener objectCreationListener = new ObjectCreationListener();
+ context.getDB().addTopiaTransactionListener(objectCreationListener);
+
+ //
+ // Ajout des listeners pour la simulation
+ //
+ initSimulationListener(context);
+
+ //
+ // Lancement du script de simulation selectionné
+ //
+ message(control, _("isisfish.message.simulation.execution"));
+
+ //
+ // Call listener simulation (used per example for prescript)
+ //
+ context.fireBeforeSimulation();
+ simulatorObject.simulate(context);
+
+ //
+ // Ajout des nouveaux objets créées durant la simulation
+ //
+ message(control, _("isisfish.message.add.objets.simulation"));
+ // on ajoute sur le DBResult car pour les exports peut-etre auront
+ // nous besoin de ces nouveaux objets, et durant la simulation
+ // les resultats sont recuperer dans le DBResult
+ TopiaContext add = context.getDbResult();
+ for (TopiaEntity e : objectCreationListener.getNewObjects()) {
+ log.debug("Add new object: " + e + "(" + e.getClass().getName() + ")");
+ add.add(e);
+ }
+ add.commitTransaction();
+
+ //
+ // Call listener simulation (used per example for export)
+ //
+ context.fireAfterSimulation();
+
+ message(control, _("isisfish.message.simulation.ended"));
+
+ simulation.getInformation().setSimulationEnd(new java.util.Date());
+
+ } catch (OutOfMemoryError eee) {
+ log.error(_("isisfish.error.during.simulation"),eee);
+ simulation.getInformation().setException(eee);
+ throw new SimulationException(_("isisfish.error.out.memory"), eee);
+ } catch (Exception eee) {
+ log.error(_("isisfish.error.during.simulation"),eee);
+ simulation.getInformation().setException(eee);
+ throw new SimulationException(_("isisfish.error.during.simulation"), eee);
+ } finally {
+ //
+ // Finaly close all TopiaContext used during simulation
+ //
+
+ SimulationContext context = SimulationContext.get();
+ TopiaContext tx;
+
+ context.closeDB();
+ context.closeDBResult();
+
+ try {
+ // close all transaction
+ if (context != null && context.getSimulationStorage() != null) {
+ context.getSimulationStorage().closeMemStorage();
+ context.getSimulationStorage().closeStorage();
+ }
+ } catch (TopiaException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't close all transaction", eee);
+ }
+ }
+
+ SimulationContext.remove();
+
+ //
+ // Affichage des statistiques
+ //
+ long end = System.nanoTime();
+ log.info("Simulation time: " + DurationFormatUtils.formatDuration(
+ (end-start)/1000000, "s'.'S"));
+ SimulationParameter param = simulation.getParameter();
+ if (param.getUseStatistic()) {
+ String trace = Trace.printStatistiqueAndClear();
+ simulation.getInformation().setStatistic(trace);
+ }
+ if (param.getUseOptimization()) {
+ String cache = Cache.printStatistiqueAndClear();
+ simulation.getInformation().setOptimizationUsage(cache);
+ }
+
+ LutinTrace.printStatistiqueAndClear();
+
+ }
+ return result;
+ }
+
+ protected void initSimulationListener(SimulationContext context) throws Exception {
+ SimulationStorage simulation = context.getSimulationStorage();
+ // enregistrement des listeners de resultat
+ // - ResultStorage
+ context.addSimulationListener(simulation.getResultStorage());
+
+ // - TODO: mexico xml result
+ // - TODO: vle result
+ String simListener = context.getSimulationStorage().getParameter().getTagValue().get("SimulationListener");
+ if (simListener != null) {
+ String [] simListeners = StringUtil.split(simListener, ",");
+ for (String l : simListeners) {
+ context.addSimulationListener((SimulationListener)ObjectUtil.create(l));
+ }
+ }
+
+ // enregistrement des listeners de simulation
+ // - prescript (before simulation)
+ // - export (after simulation)
+ context.addSimulationListener(new SimulationPreScript());
+ // si le simulateur est de type SimulationStep il faut ajouter les regles
+ context.addSimulationListener(new SimulationExportResultWrapper());
+ }
+
+ protected class ObjectCreationListener implements TopiaTransactionListener {
+
+ /** List qui contient tous les objets creer durant la simulation */
+ protected List<TopiaEntity> newObjects = new ArrayList<TopiaEntity>();
+
+ /**
+ * @return Returns the newObjects.
+ */
+ public List<TopiaEntity> getNewObjects() {
+ return this.newObjects;
+ }
+
+ /* (non-Javadoc)
+ * @see org.codelutin.topia.event.TopiaTransactionListener#commit(org.codelutin.topia.event.TopiaTransactionEvent)
+ */
+ public void commit(TopiaTransactionEvent event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.codelutin.topia.event.TopiaTransactionListener#rollback(org.codelutin.topia.event.TopiaTransactionEvent)
+ */
+ public void rollback(TopiaTransactionEvent event) {
+ log.debug("Transaction rollback " + event.getEntities().size() + " object(s)");
+ // FIXME le jour ou on aura l'isolation on pourra directement
+ // ajouter dans un autre TopiaContext les objets ajouté durant la
+ // simulation de cette maniere les objets creer au pas de temps
+ // N seront dispo pour etre utilisé au pas de temps N+1
+ // Sinon une autre methode est de faire cette ajout
+ // dans l'event rollback qui est leve a la fin de chaque pas de temps
+ for (TopiaEntity entity : event.getEntities()) {
+ if (event.isCreate(entity)) {
+ log.debug("New object detected during simulation: " + entity + "(" + entity.getClass().getName() + ")");
+ newObjects.add(entity);
+ }
+ }
+ }
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,179 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.File;
+import java.rmi.RemoteException;
+import java.util.Hashtable;
+import java.util.Vector;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.xmlrpc.XmlRpcClient;
+import org.codelutin.util.FileUtil;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class IsisFishServerSimulationLauncher implements SimulatorLauncher {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(IsisFishServerSimulationLauncher.class);
+
+ 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 = remoteSimulate(control, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do simulation %s", simulationId), eee);
+ simulation.getInformation().setException(eee);
+ }
+
+ // on retourne directement le simulation storage passe en argument
+ // car la simulation a ete faite avec
+ return simulation;
+
+ }
+
+ public int maxSimulationThread() {
+ // FIXME a rendre configurable
+ return 1;
+ }
+
+ /**
+ * execute la simulation en remote
+ *
+ * @param control le controleur de simulation, peut-etre null si on ne
+ * souhaite pas controler la simulation
+ * @param simulation la simulation a faire
+ *
+ * @return le storage après simulation
+ * @throws Exception pour toute erreur
+ */
+ public SimulationStorage remoteSimulate(SimulationControl control,
+ SimulationStorage simulation) throws Exception {
+ // export en zip du storage
+ File zip = simulation.createZip();
+
+ if (control != null) {
+ // creation du thread de surveillance de la simulation distante
+ // qui sert a mettre a jour les valeurs de control
+ new SimulationCheckpointRemoteThread(control).start();
+ }
+
+ // envoie le zip au serveur de simulation
+ // appel synchrone pour attendre la fin de la simulation
+ // recuperation du zip de la simulation terminé
+ Vector<Object> a = new Vector<Object>();
+ //fixme : on peut avori control à null ?
+ a.add(control.getId());
+ a.add(FileUtil.fileToByte(zip));
+
+ // lancement de la simulation
+ XmlRpcClient c = new XmlRpcClient(IsisFish.config.getSimulatorServer());
+ c.setBasicAuthentication(IsisFish.config.getSimulatorUsername(),
+ IsisFish.config.getSimulatorPassword());
+ byte[] callResult = (byte[])c.execute("simulate", a);
+
+ // ecriture du resultat dans un fichier
+ File tmpzip = FileUtil.byteToFile(callResult);
+
+ // remplacement du storage local par le storage recu
+ simulation.closeStorage();
+ simulation.delete(false);
+ SimulationStorage result;
+ result = SimulationStorage.importAndRenameZip(tmpzip, control.getId());
+ return result;
+ }
+
+ /**
+ * This thread is responsable to synchronized SimulationControl used localy with
+ * remote simulation control for remote simulation.
+ *
+ * This thread dead when {@link SimulationControl#isRunning()} is false
+ *
+ * @author poussin
+ */
+ protected class SimulationCheckpointRemoteThread extends Thread { // SimulationCheckpointRemoteThread
+
+ protected SimulationControl control = null;
+ int badId = 0;
+
+ public SimulationCheckpointRemoteThread(SimulationControl control) {
+ this.control = control;
+ }
+
+ public void run() {
+ int sleepTime = 2000;
+ while (true) {
+ try {
+ Thread.sleep(sleepTime);
+
+ updateControl(control);
+ // on remet de le temps normal, vu que la connexion a reussi
+ sleepTime = 2000;
+
+ if (!control.isRunning()) {
+ return;
+ }
+
+ } catch (Exception eee) {
+ // on supporte 10 erreurs puis ensuite on quitte le thread.
+ if (badId++ > 10) {
+ log.error("Error !!! ", eee);
+ break;
+ } else {
+ // on a echouer sur une tentative, on allonge un
+ // peu le temps
+ sleepTime += 2000;
+ }
+ }
+ }
+
+ }
+
+ public void updateControl(SimulationControl control) throws Exception {
+ // essai l'ancienne etait en dur: "http://localhost:9090"
+ IsisConfig config = IsisFish.config;
+ XmlRpcClient c = new XmlRpcClient(config.getSimulatorServer());
+ c.setBasicAuthentication(config.getSimulatorUsername(), config.getSimulatorPassword());
+
+ Vector a = new Vector();
+ a.add(control.getUpdateHashtable());
+ Hashtable<String, Object> result = (Hashtable<String, Object>) c.execute("checkPoint", a);
+ // on remet de le temps normal, vu que la connexion a reussi
+ control.updateFromHashtable(result);
+ }
+ } // SimulationCheckpointRemoteThread
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,189 @@
+/*
+ * 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.simulator.launcher;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import static org.codelutin.i18n.I18nf._;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Un executor qui utilise un certain type de {@link SimulatorLauncher} pour
+ * executer les jobs soumis dans la queue de {@link SimulationService}
+ * <p>
+ * Les fonctionnalites en plus par rapport a un {@link ThreadPoolExecutor} sont:
+ * <li> la possibilite de suspendre l'executor puis ensuite de le relancer
+ * <li> l'utilisation de beforeExecute pour fixer le {@link SimulationLauncher}
+ * du job
+ * <p>
+ * Il est aussi possible d'ecoute l'etat de l'attribut pause
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationExecutor extends ThreadPoolExecutor {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationExecutor.class);
+
+ protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
+ /** vrai si cet executor est en pause */
+ protected boolean pause = false;
+ /** le nombre de thread utilise avant la pause */
+ protected int lastCorePoolSize;
+ /** le simulation service qui a cree cet executor */
+ protected SimulationService simulationService;
+ /** le launcher a utilise pour les simulations */
+ protected SimulatorLauncher launcher;
+
+ public SimulationExecutor(SimulationService simulationService, SimulatorLauncher launcher,
+ BlockingQueue<Runnable> workQueue) {
+ super(launcher.maxSimulationThread(), launcher.maxSimulationThread(),
+ 0L, TimeUnit.MILLISECONDS, workQueue);
+ this.simulationService = simulationService;
+ this.launcher = launcher;
+ lastCorePoolSize = prestartAllCoreThreads();
+ log.info(_("SimulationExecutor started with %s thread for %s", lastCorePoolSize, launcher));
+ }
+
+ public SimulationService getSimulationService() {
+ return simulationService;
+ }
+
+ public SimulatorLauncher getLauncher() {
+ return launcher;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(propertyName, listener);
+ }
+
+ /**
+ * Met les threads en attente si pause est vrai, et fixe le
+ * {@link SimulatorLauncher} a utiliser pour par la tache.
+ * Si la tache a deja un {@link SimulatorLauncher} d'assigne, on ne fait
+ * pas la tache
+ *
+ * @param t le thread qui va executer la tache
+ * @param r
+ */
+ @Override
+ protected void beforeExecute(Thread t, Runnable r) {
+ super.beforeExecute(t, r);
+
+ // en premier lieu il faut que SimulationService autorise le lancement
+ getSimulationService().waitAutoLaunch();
+
+ // ensuite si cet executor est en pause, on tu le thread apres avoir
+ // resoumis la simulation
+ if (isPause()) {
+ // on est en pause, il faut remettre la tache et tuer le thread
+ // un simple suspend du thread n'est pas bon, car la tache ne
+ // serait alors jamais executer et ce n'est pas forcement ce que
+ // l'on souhaite
+ if (r instanceof SimulationItem) {
+ SimulationService.getService().resubmit((SimulationJob)r);
+ }
+ throw new RuntimeException(_("Normal stop thread, this is not an error"));
+ }
+ if (r instanceof SimulationJob) {
+ SimulationJob job = (SimulationJob)r;
+ if (job.getLauncher() == null) {
+ // si la tache a deja un launcher, on l'utilise sinon on lui
+ // indique d'utilise le notre. C'est seul facon propre et sans
+ // risque de pouvoir choisir un launcher (en l'assignant au job
+ // avant d'arriver ici). Car l'autre solution serait de remettre
+ // la tache dans la queue et d'attendre que le bon executor
+ // la prenne, mais en fait cela impliquerait que dans le
+ // launcher on puisse refaire un test pour savoir si on doit
+ // reellement faire la tache ou non (trop compliquer pour
+ // l'implantation de launcher). et surtout on risquerait de
+ // boucler sans jamais executer la tache, s'il n'existe pas
+ // d'executor avec ce launcher ou qu'il est arrete. Dans ce
+ // dernier cas s'etait a l'utilisateur d'etre coherant, c-a-d
+ // de ne pas arreter un executor puis ensuite de demander
+ // explicitement a l'utiliser
+ job.setLauncher(launcher);
+ }
+ } else {
+ log.warn(_("Jobs submited is not ItemSimulation but was %s", r.getClass().getName()));
+ }
+ }
+
+ public boolean isPause() {
+ return pause;
+ }
+
+ /**
+ * demande au thread d'arreter de prendre de nouvelle tache
+ */
+ public void pause() {
+ setPause(true);
+ }
+
+ /**
+ * indique au thread de recommencer a prendre de nouvelle tache
+ */
+ public void resume() {
+ setPause(false);
+ }
+
+ /**
+ * Change la valeur de la variable pause, si pause est alors vrai
+ * notifie tous les threads en attente
+ * @param autoLaunch The autoLaunch to set.
+ */
+ public void setPause(boolean pause) {
+ boolean oldValue = this.pause;
+ synchronized (this) {
+ this.pause = pause;
+ if (this.pause) {
+ lastCorePoolSize = getCorePoolSize();
+ setCorePoolSize(0);
+ } else {
+ setCorePoolSize(lastCorePoolSize);
+ // on recree tous les threads qui avait ete tue par la pause
+ prestartAllCoreThreads();
+ }
+ }
+ propertyListeners.firePropertyChange("pause", oldValue, this.pause);
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,83 @@
+/* *##%
+ * 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.simulator.launcher;
+
+
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import java.io.File;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Objet representant un simulation qui doit etre faite
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationItem {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationItem.class);
+
+ /** le control pour la simulation */
+ protected SimulationControl control;
+ protected SimulationParameter parameter;
+ /** le zip contenant la simulation prete a etre executee */
+ protected File simulationZip;
+
+ public SimulationItem(SimulationControl control, SimulationParameter param,
+ File simulationZip) {
+ this.control = control;
+ this.parameter = param;
+ this.simulationZip = simulationZip;
+ }
+
+ public SimulationControl getControl() {
+ return control;
+ }
+
+ /**
+ * Permet de mettre le zip apres construction de l'objet. Cela est util
+ * car la construction du zip prend du temps, et on souhaite pouvoir le
+ * monitorer et donc il faut que l'item exist pour etre vu dans la console
+ * de queue de simulation.
+ * <p>
+ * Normalement seul l'objet SimulationService doit pouvoir appeler cette
+ * method, elle est donc protected
+ *
+ * @param simulationZip
+ */
+ protected void setSimulationZip(File simulationZip) {
+ this.simulationZip = simulationZip;
+ }
+
+ public SimulationParameter getParameter() {
+ return parameter;
+ }
+
+ public File getSimulationZip() {
+ return simulationZip;
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,254 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.types.Date;
+import java.io.File;
+import static org.codelutin.i18n.I18nf._;
+
+import java.rmi.RemoteException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.FileUtil;
+
+/**
+ * Classe responsable de la simulation d'un {@link SimulationItem}. Pour cela
+ * il utilise le {@link SimulatorLauncher}. Si la simulation echoue
+ * a cause d'une RemoteException alors le job est resoumis dans la queue
+ * de simulation par l'appel de la methode
+ * {@link SimulationService#reportError}.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationJob implements Runnable, Comparable<SimulationJob> {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationJob.class);
+
+ /** l'ensemble des post actions a effectuer pour ce job */
+ protected Set<PostAction> postActions = new HashSet<PostAction>();
+ /** Le {@link SimulationService} dans lequel a ete cree ce job */
+ protected SimulationService simulationService;
+ /** si non null contient le {@link SimulationJob} qui a genere ce job, ca
+ * veut dire que ce job est du a un plan d'analyse*/
+ protected SimulationJob parentJob;
+ /** item contenant les infos de la simulation */
+ protected SimulationItem item;
+ /** la priorite de cet item dans la queue */
+ protected int priority;
+ /** Le launcher a utiliser pour simuler cet item */
+ protected SimulatorLauncher launcher;
+
+ public SimulationJob(SimulationService simulationService, SimulationItem item, int priority) {
+ this(simulationService, null, item, priority);
+ }
+
+ public SimulationJob(SimulationService simulationService, SimulationJob parentJob, SimulationItem item, int priority) {
+ this.simulationService = simulationService;
+ this.parentJob = parentJob;
+ this.item = item;
+ this.priority = priority;
+ }
+
+ public void addPostAction(PostAction postAction) {
+ this.postActions.add(postAction);
+ }
+
+ public void removePostAction(PostAction postAction) {
+ this.postActions.remove(postAction);
+ }
+
+ /**
+ * demande l'annulation/arret de ce job. Si ce job n'etait pas encore actif
+ * un {@link SimulationServiceListener#simulationStop} est leve. Sinon
+ * il le sera lorsque la simulation se sera convenablement arretee.
+ * <p>
+ * Dans tous les cas une demande d'arret sur le control de la simulation
+ * est fait.
+ */
+ public void stop() {
+ // on essaie d'enlever ce job de la queue, au cas ou il ne serait pas
+ // encore lance
+ if (simulationService.cancel(this)) {
+ // on a pu annuler avec le lancement, on notify un stop puisqu'on
+ // ne passera jamais dans le run()
+ simulationService.fireStopEvent(this);
+ }
+ item.getControl().stopSimulation();
+ }
+
+ public SimulationJob getParentJob() {
+ return parentJob;
+ }
+
+ public SimulationItem getItem() {
+ return item;
+ }
+
+ public void setLauncher(SimulatorLauncher launcher) {
+ this.launcher = launcher;
+ }
+
+ public SimulatorLauncher getLauncher() {
+ return launcher;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public int compareTo(SimulationJob o) {
+ return this.priority - o.priority;
+ }
+
+ /**
+ * Fait la simulation. La simulation en elle meme est delegue au
+ * {@link SimulatorLauncher}. Le travail restant ici est le nettoyage,
+ * la gestion des erreurs ou l'iteration s'il sagit de plan d'analyse
+ * dependant.
+ */
+ public void run() {
+ try {
+ SimulationControl control = item.getControl();
+ SimulationParameter param = item.getParameter();
+ String id = control.getId();
+ log.debug("Start simulation: " + id);
+ simulationService.fireStartEvent(this);
+
+ if (getParentJob() == null && param.getUseAnalysePlan() && !param.isIndependentPlan()) {
+ // on est sur un plan d'analyse dependant, il faut generer les
+ // simulation les unes apres les autres
+ Iterator<SimulationJob> i =
+ new SimulationService.PrepareSimulationJob(simulationService, this);
+ while (i.hasNext()) {
+ log.info(_("Generate next simulation"));
+ SimulationJob subjob = i.next();
+ subjob.setLauncher(getLauncher());
+ subjob.run();
+ }
+
+ // nettoyage si besoin apres toutes les simulations
+ if (param.getOnlyExport()) {
+ for (File file : FileUtil.find(
+ SimulationStorage.getSimulationDirectory(),
+ id + "_[0-9]+$", false)) {
+ log.debug("Delete simulation " + file);
+ FileUtil.deleteRecursively(file);
+ }
+ }
+ } else {
+ // on est sur une simple simulation, ou le resultat d'un plan
+
+ // set date to 0 at beginning of simulation
+ control.setDate(new Date());
+ control.setProgress(0);
+ control.setStarted(true);
+
+ File zip = item.getSimulationZip();
+ SimulationStorage simulation = launcher.simulate(simulationService, control, zip);
+
+ try {
+ // copie les exports de simulation dans le repertoire
+ // souhaiter par l'utilisateur
+ if (param.getExportNames() != null &&
+ param.getExportNames().size() > 0) {
+ File exportDir = SimulationStorage.getResultExportDirectory(
+ simulation.getDirectory());
+ // FIXME verifier que pour les plans on a bien tous les
+ // export, c-a-d que les export son fait dans un sous rep
+ // portant le nom de la simu
+ FileUtil.copyAndRenameRecursively(exportDir,
+ new File(param.getExportDirectory()),
+ exportDir.getName(), id);
+ }
+ } catch (Exception eee) {
+ log.error(_("Can't export simulation %s", id), eee);
+ }
+
+ try {
+ // Si l'utilisateur souhaite seulement les exports
+ // on supprimer la/les simulations.
+ if (param.getOnlyExport()) {
+ // pour les plan dependant il faut le faire apres toutes
+ // les simulations donc pas ici
+ if (getParentJob() == null ||
+ param.getUseAnalysePlan() && param.isIndependentPlan()) {
+ simulation.delete(false);
+ }
+ }
+ } catch (Exception eee) {
+ log.error(_("Can't delete simulation %s ", id), eee);
+ }
+
+ for (PostAction action : postActions) {
+ try {
+ action.finished(this, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do post action %s", action), eee);
+ }
+ }
+ }
+
+ } catch (Throwable eee) {
+ log.warn(_("Can't simulate %s", item.getControl().getId()), eee);
+ if (eee instanceof RemoteException) {
+ simulationService.reportError(getLauncher(), this);
+ } else {
+ // on ne le fait pas pour RemoteException, car la simulation
+ // va etre resoumise
+ for (PostAction action : postActions) {
+ action.exception(this, eee);
+ }
+ }
+ } finally {
+ simulationService.fireStopEvent(this);
+ }
+ }
+
+ /**
+ * Interface permettant d'implanter des actions a faire apres la simulation,
+ * Ces action ne se declenche pas pour les job de plan d'analyse pere
+ */
+ public static interface PostAction {
+ /**
+ * appeler lorsque la simulation s'arrete normalement
+ * @param job le job qui a fait la simulation
+ * @param sim la simulation qui vient d'etre faite
+ */
+ public void finished(SimulationJob job, SimulationStorage sim);
+ /**
+ * appeler lorsque la simulation a echouee
+ * @param job le job qui a fait la simulation
+ * @param eee l'exception qui a ete levee
+ */
+ public void exception(SimulationJob job, Throwable eee);
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,688 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.AnalysePlan;
+import fr.ifremer.isisfish.simulator.AnalysePlanContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationException;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.util.CompileHelper;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.PriorityBlockingQueue;
+import org.apache.commons.lang.mutable.MutableInt;
+import org.apache.commons.lang.time.DurationFormatUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.topia.TopiaException;
+import org.codelutin.util.FileUtil;
+import org.codelutin.util.ListenerSet;
+import org.codelutin.util.ObjectUtil;
+import org.codelutin.util.ZipUtil;
+
+/**
+ * Cette classe est responsable de conservation de toutes les simulations faites
+ * ou a faire. Pour ajouter une nouvelle simulation on appelle la methode
+ * {@link #submit}.
+ * <p>
+ * Cette classe sert aussi de modele pour le moniteur de queue
+ * <p>
+ * Il existe une instance unique pour toute l'application
+ * <p>
+ * Lors de l'instanciation de la classe, l'ensemble des
+ * {@link SimulationLauncher} disponible est recherche dans la configuration
+ * et un executor est cree pour chaque.
+ * <p>
+ * Si un {@link SimulationLauncher} genere trop d'erreur (RemoteException)
+ * Il est alors suspendu pour ne plus etre utilise pour les simulations.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationService {
+
+ static final public String SIMULATION_LAUNCHER = "simulation.launcher";
+ /** nombre maximal de simulation autoriser pour un plan */
+ // FIXME a rendre configurable MAX_PLAN_SIMULATION
+ static final public int MAX_PLAN_SIMULATION = 20000;
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationService.class);
+
+ static protected SimulationService instance = new SimulationService();
+
+ /**
+ * Retourne l'instance du SimulationService a utiliser
+ * @return
+ */
+ static public SimulationService getService() {
+ return instance;
+ }
+
+ protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
+ protected ListenerSet<SimulationServiceListener> listeners = new ListenerSet<SimulationServiceListener>();
+
+ // FIXME pouvoir configurer ceci en fichier de config
+ // FIXME ainsi que la mise a false, lors de la simulation de la derniere
+ // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
+ protected boolean autoLaunch = true;
+
+ /** L'executor utilise pour creer toutes les sous simulations des plans independants */
+ protected ExecutorService subSimulationComputationExecutor = Executors.newSingleThreadExecutor();
+ /** Tous les types de {@link SimulatorLauncher} disponibles, et leur executors associe */
+ protected Map<SimulatorLauncher, SimulationExecutor> executors;
+ /** Le nombre d'erreur pour les SimulatorLauncher */
+ protected Map<SimulatorLauncher, MutableInt> launcherError;
+ /** La queue contenant toutes les simulations a faire */
+ protected PriorityBlockingQueue<Runnable> queue = new PriorityBlockingQueue<Runnable>();
+
+ /** Contient les identifiants des simulations presentes dans {@ link #jobs}*/
+ protected Set<String> idJobs = new HashSet<String>();
+ /** La liste des jobs existant (queue + job demarre) */
+ protected Set<SimulationJob> jobs = new TreeSet<SimulationJob>();
+
+ /** La liste des jobs termines */
+ protected Set<SimulationJob> jobDones = new TreeSet<SimulationJob>();
+
+ /**
+ * Cree une instance et initialise les executors ainsi que le launcherError
+ */
+ protected SimulationService() {
+ // on cree un executor par type SimulatorLauncher
+ executors = new LinkedHashMap<SimulatorLauncher, SimulationExecutor>();
+ launcherError = new HashMap<SimulatorLauncher, MutableInt>();
+ Properties prop = IsisFish.config.getOptionStartsWith(SIMULATION_LAUNCHER);
+ for (String key : prop.stringPropertyNames()) {
+ String value = prop.getProperty(key);
+ try {
+ SimulatorLauncher sl = (SimulatorLauncher) ObjectUtil.newInstance(value);
+ SimulationExecutor se = new SimulationExecutor(this, sl, queue);
+ executors.put(sl, se);
+ launcherError.put(sl, new MutableInt(0));
+ } catch (Exception eee) {
+ log.warn(_("Can't instantiate %s", value), eee);
+ }
+ }
+ }
+
+ public Collection<SimulationExecutor> getSimulationExecutors() {
+ return executors.values();
+ }
+
+ public Set<SimulationJob> getJobs() {
+ return jobs;
+ }
+
+ public Set<SimulationJob> getJobDones() {
+ return jobDones;
+ }
+
+ /**
+ * Retourne la liste de tous les {@link SimulatorLauncher} disponible
+ * @return
+ */
+ protected Set<SimulatorLauncher> getSimulatorLaunchers() {
+ return executors.keySet();
+ }
+
+ public void addSimulationServiceListener(SimulationServiceListener l) {
+ listeners.add(l);
+ }
+
+ public void removeSimulationServiceListener(SimulationServiceListener l) {
+ listeners.remove(l);
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ propertyListeners.removePropertyChangeListener(propertyName, listener);
+ }
+
+ /**
+ * Ajoute le job au job en cours previent s'il n'etait pas deja present
+ * les listener {@link SimulationServiceListener#simulationStart}.
+ * @param job
+ */
+ protected void fireStartEvent(SimulationJob job) {
+ // on ajoute au cas on il n'y serait pas
+ if (jobs.add(job)) {
+ idJobs.add(job.getItem().getControl().getId());
+ for (SimulationServiceListener l : listeners) {
+ l.simulationStart(job);
+ }
+ }
+ }
+
+ /**
+ * Supprime le job de la liste des jobs en cours et l'ajoute le job si
+ * besoin a la liste des jobs faits (s'il y a une erreur ou qu'il ne sagit
+ * pas d'une simulation lancer par un plan d'analyse).
+ * Les listener sont prevenu par la methode
+ * {@link SimulationServiceListener#simulationStop}.
+ * @param job
+ */
+ protected void fireStopEvent(SimulationJob job) {
+ jobs.remove(job);
+ idJobs.remove(job.getItem().getControl().getId());
+
+ // on ajout au jobDones que les simulations avec erreur ou les
+ // simulation reellement demande par l'utilisateur (pas de simulation
+ // de plan
+ jobDones.add(job);
+ for (SimulationServiceListener l : listeners) {
+ l.simulationStop(job);
+ }
+ }
+
+ /**
+ * Nettoie la liste des jobs faits
+ */
+ public void clearJobDone() {
+ jobDones.clear();
+ // FIXME prevoir quelque chose pour prevenir la console de queue
+ }
+
+ /**
+ * @return Returns the autoLaunch.
+ */
+ public boolean isAutoLaunch() {
+ return this.autoLaunch;
+ }
+
+ /**
+ * @param autoLaunch The autoLaunch to set.
+ */
+ public void setAutoLaunch(boolean autoLaunch) {
+ synchronized (this) {
+ boolean oldValue = this.autoLaunch;
+ this.autoLaunch = autoLaunch;
+ if (this.autoLaunch) {
+ this.notifyAll();
+ }
+ propertyListeners.firePropertyChange("autoLaunch", oldValue, autoLaunch);
+ }
+ }
+
+ /**
+ * Permet de mettre en attente les threads de simulation si l'utilisateur
+ * a suspendu la queue
+ */
+ protected void waitAutoLaunch() {
+ synchronized(this) {
+ while (!isAutoLaunch()) {
+ try {
+ log.info("autoLaunch is false waiting queue start");
+ this.wait();
+ } catch (InterruptedException eee) {
+ log.warn("Error during wait autoLaunch flag", eee);
+ }
+ }
+ }
+ }
+
+ /**
+ * Permet d'ajouter une nouvelle simulation a la queue. Si la simulation est
+ * simple ou avec un plan d'experience dependant, un nouveau job est cree
+ * et directement ajout a la queue de jobs. S'il la simulation est un plan
+ * ou les simulations sont independantes, toutes les simulations sont
+ * genere et toute ajoute a la queue de simulation. Mais dans ce cas seul
+ * la simulation de depart est ajoute au jobs en cours, les simulations
+ * generees seront ajoutees lors de leur reel execution
+ *
+ * @param id l'identifiant de la simulation
+ * @param param les parametres de la simulation
+ * @param priority la priorite de la simulation
+ */
+ public void submit(String id, SimulationParameter param, 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);
+ fireStartEvent(job);
+
+ // on construit le zip de la simulation
+ File zip = prepareSimulationZipFile(control, param, true);
+ item.setSimulationZip(zip);
+
+ if (param.getUseAnalysePlan() && param.isIndependentPlan()) {
+ // c un plan d'analyse independant, on construit toute les sous simu
+ Runnable task = new PrepareSimulationJob(this, job);
+ subSimulationComputationExecutor.execute(task);
+ } else {
+ // l'item est fini d'etre initialise, on peut l'ajouter a la queue
+ // sauf si c'etait un plan independant ou se seront les sous simu
+ // qui seront dans la queue
+ queue.add(job);
+ }
+
+ }
+
+ /**
+ * Permet de resoumettre un job qui a ete pris par un thread mais qu'il
+ * ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou
+ * que le launcher de l'executor ne fonctionne plus (il se met en pause
+ * tout seul)
+ *
+ * @param item l'item a resoumettre
+ */
+ protected void resubmit(SimulationJob job) {
+ queue.add(job);
+ }
+
+ /**
+ * Permet de soumettre a la queue un job provenant d'un plan.
+ * Ce plan ne doit pas apparaitre dans la console de queue.
+ *
+ * @param job
+ */
+ protected void submitSubJob(SimulationJob job) {
+ queue.add(job);
+ }
+
+ /**
+ * Supprime un job de la queue (annulation d'une simulation). Appele
+ * depuis {@link SimulationJob#stop}
+ *
+ * @param job le job a annuler
+ * @return vrai si la simulation a pu etre annulee avant sont lancement
+ * (encore presente dans la queue), faux si la simulation a deja ete
+ * prise par un thread de simulation ou quelle est terminee
+ */
+ protected boolean cancel(SimulationJob job) {
+ boolean result = queue.remove(job);
+ return result;
+ }
+
+ public boolean exists(String id) {
+ boolean result = idJobs.contains(id);
+ return result;
+ }
+
+ /**
+ * Report une erreur pour un launcher, on resoumet le job en supprimant
+ * le launcher utilise
+ *
+ * @param launcher le launcher posant probleme
+ * @param job le job qui n'a pas reussi a se faire
+ */
+ protected void reportError(SimulatorLauncher launcher, SimulationJob job) {
+ MutableInt i = launcherError.get(launcher);
+ i.setValue(i.intValue() + 1);
+ // si on a plus de N error, on stop l'executor associe
+ if (i.intValue() >= 5) {
+ log.error(_("Launcher %s will be stopped because there are too many error (%s)",
+ launcher, i.intValue()));
+ SimulationExecutor e = executors.get(launcher);
+ e.pause();
+ }
+ // il faut bien penser a supprimer le launcher pour qu'un autre executor
+ // puisse y mettre le sien
+ job.setLauncher(null);
+ resubmit(job);
+ }
+
+ /**
+ * Permet de genere les sous simulations d'un plan d'analyse. Pour les
+ * plan independant, on l'utilise en Runnable pour genere tous les plans
+ * possible et les soumettre a la queue. Pour les plans dependant
+ * on l'utilise seulement comme iterator. La methode afterSimulation des plans
+ * est appelee automatiquement a la fin de la simulation grace au mecanisme
+ * de PostAction sur les {@link SimulationJob}.
+ */
+ public static class PrepareSimulationJob implements Runnable, Iterator<SimulationJob>, SimulationJob.PostAction {
+
+ protected SimulationService simulationService;
+ protected AnalysePlanContext planContext;
+ protected SimulationJob job;
+ protected SimulationJob nextJob;
+ protected boolean doNext = true;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected int planNumber = 0;
+
+ public PrepareSimulationJob(SimulationService simulationService,
+ SimulationJob job) {
+ this.simulationService = simulationService;
+ this.job = job;
+ id = job.getItem().getControl().getId();
+ control = job.getItem().getControl();
+ param = job.getItem().getParameter();
+ this.planContext = new AnalysePlanContext(control.getId(), param);
+ }
+
+ /**
+ * genere toutes les sous simulations et les places dans la queue
+ */
+ public void run() {
+ while (hasNext()) {
+ try {
+ SimulationJob subJob = next();
+ simulationService.submitSubJob(subJob);
+ } catch (Exception eee) {
+ log.error(_("Can't add simulation: ", job.getItem().getControl().getId()), eee);
+ }
+ }
+
+ }
+
+ /**
+ * Indique s'il y a encore des simulations dans le plan. Par defaut pour
+ * Eviter les plans sans fin, le nombre de plan genere par simulation
+ * est limite a {@link MAX_PLAN_SIMULATION}
+ *
+ * @return
+ */
+ public boolean hasNext() {
+ try {
+ // if user request stop simulation, stop all futur planned simulation
+ // and if last doNext is false not do next simulation
+ boolean result = !control.isStopSimulationRequest() && doNext;
+ if (result) {
+ // si deja creer on ne le refet pas
+ if (nextJob == null) {
+ // Prepration de la simulation a faire
+ // create next id simulation
+ planNumber++;
+ if (planNumber > MAX_PLAN_SIMULATION) {
+ log.error(_("Analyse plan error, too many simulation for %s : %s", id, planNumber));
+ doNext = false;
+ result = false;
+ } else {
+ String simId = id + "_" + planNumber;
+ param.setAnalysePlanNumber(planNumber);
+
+ File tmpDirectory = FileUtil.createTempDirectory(
+ "isisfish-simultation-", "-preparation");
+ SimulationStorage sim = SimulationStorage.importAndRenameZip(
+ tmpDirectory, job.getItem().getSimulationZip(), simId);
+ sim.getParameter().setAnalysePlanNumber(planNumber);
+
+ // appel de tous les plans pour modifier la simulation
+ for (AnalysePlan plan : param.getAnalysePlans()) {
+ result = result && plan.beforeSimulation(planContext, sim);
+ if (!result) {
+ nextJob = null;
+ break;
+ }
+ }
+ doNext = result;
+ if (result) {
+ File zip = sim.createZip();
+ SimulationItem item = new SimulationItem(control, param, zip);
+ nextJob = new SimulationJob(simulationService, job, item, job.getPriority());
+ nextJob.addPostAction(this); // pour l'appel des after des plans
+ }
+ // quoi qu'il arrive on supprime le repertoire temporaire
+ if (!FileUtil.deleteRecursively(tmpDirectory)) {
+ log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ }
+ }
+ }
+ }
+ return result;
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException(_("isisfish.error.evalute.plan.script"), eee);
+ }
+
+ }
+
+ public SimulationJob next() {
+ hasNext(); // pour etre sur qu'il a ete appele au moins une fois
+ SimulationJob result = nextJob;
+ nextJob = null;
+ return result;
+
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("Not supported.");
+ }
+
+ public void finished(SimulationJob job, SimulationStorage sim) {
+ doNext = true;
+ boolean result = true;
+
+ // appel de tous les plans pour modifier la simulation
+ for (AnalysePlan plan : sim.getParameter().getAnalysePlans()) {
+ try {
+ result = plan.afterSimulation(planContext, sim);
+ doNext = doNext && result;
+ } catch (Exception eee) {
+ log.error(_("Stop simulation plan, because can't call afterSimulation correctly on plan %s",
+ plan.getClass().getName()), eee);
+ doNext = false;
+ }
+ }
+
+ }
+
+ public void exception(SimulationJob job, Throwable eee) {
+ // il y a une simulation d'echoue, on ne fait pas les suivantes
+ // cela n'impacte pas les plan independant puisque toutes les
+ // simulation on deja ete generee
+ doNext = false;
+ }
+ }
+
+ static public void message(SimulationControl control, String message) {
+ log.info(message);
+ if (control != null) {
+ control.setText(message);
+ }
+ }
+
+ /**
+ * 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
+ * importAndRenameZip).
+ * <p>
+ * 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...)
+ */
+ protected File prepareSimulationZipFile(SimulationControl control,
+ SimulationParameter param, boolean compile) throws SimulationException {
+ try {
+ File tmpDirectory = FileUtil.createTempDirectory("isisfish-simultation-", "-preparation");
+ //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
+ File regionXML = new File(tmpDirectory, SimulationStorage.DATA_BACKUP_FILENAME);
+
+ // sauvegarde des parametres
+ Properties prop = param.toProperties();
+ //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
+ File f = new File(tmpDirectory, SimulationStorage.PARAMETERS_FILENAME);
+ FileOutputStream out = new FileOutputStream(f);
+ //FileOutputStream out = new FileOutputStream(new File(tmpDirectory, IsisConfig.SIMULATION_PARAMETERS));
+ prop.store(out, "Parameters");
+ out.close();
+
+ // backup pour toutes les simulations, pour eviter que l'utilisateur
+ // ne puisse le modifier en meme temps
+ message(control, _("isisfish.message.backup.database.progress"));
+ RegionStorage region = RegionStorage.getRegion(param.getRegionName());
+ TopiaContext tc = region.getStorage().beginTransaction();
+ tc.backup(regionXML, true);
+ tc.closeContext();
+ message(control, _("isisfish.message.backup.database.finished"));
+
+ // copie de toutes regles a utiliser
+ List<Rule> rules = param.getRules();
+ for (Rule rule : rules) {
+ String name = RuleStorage.getName(rule);
+ FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
+ new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
+ }
+ // copie des regles reclamées par les plans d'analyse
+ for(String name : param.getExtraRules()) {
+ FileUtil.copy(new File(RuleStorage.getRuleDirectory(), name + ".java"),
+ new File(tmpDirectory, RuleStorage.RULE_PATH + File.separator + name + ".java"));
+ }
+
+ // copie de toutes regles a utiliser
+ List<AnalysePlan> plans = param.getAnalysePlans();
+ for (AnalysePlan plan : plans) {
+ String name = AnalysePlanStorage.getName(plan);
+ FileUtil.copy(new File(AnalysePlanStorage.getAnalysePlanDirectory(), name + ".java"),
+ new File(tmpDirectory, AnalysePlanStorage.ANALYSE_PLAN_PATH + File.separator + name + ".java"));
+ }
+
+ // copie de tous les exports a utiliser
+ for (String name : param.getExportNames()) {
+ name = name.endsWith(".java")?name:name + ".java";
+ FileUtil.copy(new File(ExportStorage.getExportDirectory(), name),
+ new File(tmpDirectory, ExportStorage.EXPORT_PATH + File.separator + name));
+ }
+
+ // copie de tous les scripts a utiliser
+ FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(), tmpDirectory, ".*\\.java$");
+
+ // copie de tous les simulateurs a utiliser
+ FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(), param.getSimulatorName()),
+ new File(tmpDirectory, SimulatorStorage.SIMULATOR_PATH + File.separator + param.getSimulatorName()));
+
+ if (compile) {
+ compileAllFile(control, tmpDirectory);
+ }
+
+ // creation du zip
+ File result = new File(tmpDirectory.getPath() + ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, tmpDirectory, null);
+
+ // poussin 20071015: remove temp directory
+ if (!FileUtil.deleteRecursively(tmpDirectory)) {
+ log.warn(_("isisfish.error.remove.directory", tmpDirectory));
+ }
+
+ return result;
+ } catch (IOException eee) {
+ throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
+ } catch (TopiaException eee) {
+ throw new SimulationException(_("isisfish.error.prepare.information.simulation"), eee);
+ }
+
+ }
+
+ /**
+ * 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
+ */
+ protected void compileAllFile(SimulationControl control, File directory) {
+
+ message(control, "Scripts and rules Compilation");
+ long currentTime = System.nanoTime();
+
+ //
+ // Recherche des fichiers a compiler
+ // On ne prend pas les scripts, car ils sont tous copiés mais pas
+ // forcément util. Lors de la compilation des autres fichiers, les
+ // script servant réellement seront automatiquement compilé
+
+ List<File> fileToCompile = new ArrayList<File>();
+
+ List<File> tmp = FileUtil.find(new File(directory, ExportStorage.EXPORT_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, AnalysePlanStorage.ANALYSE_PLAN_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ tmp = FileUtil.find(new File(directory, SimulatorStorage.SIMULATOR_PATH), ".*\\.java$", true);
+ fileToCompile.addAll(tmp);
+
+ //
+ // Compilation
+ //
+
+ CompileHelper.compile(directory, fileToCompile, directory, null);
+ long time = System.nanoTime() - currentTime;
+ message(control, _("isisfish.message.compilation.time", DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
+
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,44 @@
+/*
+ * 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.simulator.launcher;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface SimulationServiceListener {
+
+ /**
+ * Notifie start of simulation
+ * @param job job that responsable to simulation
+ */
+ public void simulationStart(SimulationJob job);
+
+ /**
+ * Notifie end of simulation
+ * @param job job that responsable to simulation
+ */
+ public void simulationStop(SimulationJob job);
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,134 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import java.util.ArrayList;
+import java.util.Map;
+import static org.codelutin.i18n.I18nf._;
+
+import java.util.Set;
+import java.util.WeakHashMap;
+import javax.swing.JProgressBar;
+import javax.swing.table.AbstractTableModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SimulationServiceTableModel extends AbstractTableModel {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SimulationServiceTableModel.class);
+
+ protected final static String[] columnHeader = new String[]{
+ _("isisfish.queue.id"),
+ _("isisfish.queue.plan"),
+ _("isisfish.queue.launcher"),
+ _("isisfish.queue.status"),
+ _("isisfish.queue.progression"),
+ };
+ protected SimulationService simulationService;
+ protected ArrayList<SimulationJob> jobs;
+ /** progress bar (one for each row) */
+ protected Map<SimulationJob, JProgressBar> progress =
+ new WeakHashMap<SimulationJob, JProgressBar>();
+
+ public SimulationServiceTableModel(SimulationService simulationService, Set<SimulationJob> jobs) {
+ this.simulationService = simulationService;
+ this.jobs = new ArrayList<SimulationJob>(jobs);
+ }
+
+ protected JProgressBar getProgressBar(SimulationJob job) {
+ JProgressBar result = progress.get(job);
+ if (result == null) {
+ result = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
+ result.setStringPainted(true);
+ progress.put(job, result);
+ }
+ return result;
+ }
+
+ public SimulationJob getJob(int row) {
+ SimulationJob result = jobs.get(row);
+ return result;
+ }
+
+ public int getRowCount() {
+ int result = jobs.size();
+ return result;
+ }
+
+ public int getColumnCount() {
+ int result = columnHeader.length;
+ return result;
+ }
+
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ SimulationJob job = jobs.get(rowIndex);
+ SimulationControl control = job.getItem().getControl();
+ String id = control.getId();
+ SimulationParameter param = job.getItem().getParameter();
+
+ Object result = "";
+
+ switch (columnIndex) {
+ case 0:
+ result = id;
+ break;
+ case 1:
+ if (param.getUseAnalysePlan()) {
+ int number = param.getAnalysePlanNumber();
+ result = number;
+ }
+ break;
+ case 2:
+ result = job.getLauncher().toString();
+ break;
+ case 3:
+ if (control != null) {
+ if (control.isStopSimulationRequest()) {
+ result = _("isisfish.launch.stop");
+ } else {
+ result = control.getText();
+ }
+ }
+ break;
+ case 4:
+ JProgressBar pb = getProgressBar(job);
+ if (control != null) {
+ pb.setMaximum(control.getProgressMax());
+ pb.setValue(control.getProgress());
+ pb.setString(control.getDate().getMonth() + "/" + control.getDate().getYear());
+ }
+ result = pb;
+ break;
+ }
+ return result;
+ }
+
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,67 @@
+/*
+ * 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.simulator.launcher;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.File;
+import java.rmi.RemoteException;
+
+/**
+ * Interface devant etre implanter par les classes souhaitants etre utilisees
+ * comme plugin de simulation (CapArmor, SubProcess, ...)
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface SimulatorLauncher {
+
+ /**
+ * Execute une simulation et retourne le storage ou est stocker la
+ * simulation
+ *
+ * @param simulationService le {@link SimulationService} qui a initie
+ * la simulation
+ * @param control le control de la simulation
+ * @param simulationZip le zip contenant la simulation prete a etre executee
+ * @return le storage contenant la simulation qui vient d'etre faite
+ * ou null en fait au lieu de faire une seul simulation, plusieurs ou ete
+ * faite par exemple tout un plan d'analyse. Cette classe est tout de meme
+ * responsable du stockage de chaque simulation dans des storages.
+ * <b>IMPORTANT</b> Quoi qu'il arrive
+ *
+ * @throws java.rmi.RemoteException Si pour l'execution de la simulation
+ * on utilise des resources distantes (serveurs) et que ceux si non pas pu
+ * etre contacte. Dans ce cas la simulation n'a pas ete faite et cette
+ * exception est levee.
+ */
+ public SimulationStorage simulate(SimulationService simulationService,
+ SimulationControl control, File simulationZip)
+ throws RemoteException;
+
+ /**
+ * Retourne le nombre maximal de thread de simulation simultane supporte
+ * @return un nombre superieur a 0
+ */
+ public int maxSimulationThread();
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,158 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import java.io.File;
+import java.io.InputStream;
+import java.rmi.RemoteException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SubProcessSimulationLauncher implements SimulatorLauncher {
+
+ /** 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 {
+ String simulationId = control.getId();
+ SimulationStorage simulation = null;
+ try {
+ simulation = SimulationStorage.importAndRenameZip(
+ simulationZip, simulationId);
+ simulation = subProcessSimulate(control, simulation);
+ } catch (Exception eee) {
+ log.error(_("Can't do simulation %s", simulationId), eee);
+ simulation.getInformation().setException(eee);
+ }
+
+ // on retourne directement le simulation storage passe en argument
+ // car la simulation a ete faite avec
+ return simulation;
+
+ }
+
+ public int maxSimulationThread() {
+ int result = Runtime.getRuntime().availableProcessors();
+ return result;
+ }
+
+ public SimulationStorage subProcessSimulate(SimulationControl control,
+ SimulationStorage simulation) throws Exception {
+
+ String simulationId = control.getId();
+ // on ferme le SimulationStorage pour ne pas interferer avec le process
+ simulation.closeStorage();
+
+ String java = System.getProperty("java.home") +
+ File.separator + "bin" + File.separator + "java";
+ String classpath = System.getProperty("java.class.path");
+
+ // prepare le process
+ ProcessBuilder processBuilder = new ProcessBuilder(
+ java, "-classpath", classpath,
+ IsisFish.class.getName(),
+ "--simulate", simulationId);
+ processBuilder.redirectErrorStream(true);
+
+ // demarrage du process
+ Process process = processBuilder.start();
+
+ if (control != null) {
+ // prepare de thread de surveillance du process si control n'est pas null
+ Thread monitor = new SimulationCheckpointExternalProcessThread(
+ control, simulation, process);
+ monitor.start();
+ }
+
+ // on attend que la simulation soit fini
+ process.waitFor();
+ return simulation;
+ }
+
+ /**
+ * This thread is responsable to synchronized SimulationControl used localy with
+ * remote simulation control for remote simulation.
+ *
+ * This thread dead when {@link SimulationControl#isRunning()} is false
+ *
+ * @author poussin
+ */
+ protected class SimulationCheckpointExternalProcessThread extends Thread { // SimulationCheckpointThread
+
+ /**
+ * Logger for this class
+ */
+ protected SimulationControl control = null;
+ protected SimulationStorage simulation = 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) {
+ this.control = control;
+ this.simulation = simulation;
+ this.process = process;
+ out = process.getInputStream();
+
+ }
+
+ @Override
+ public void run() {
+ int sleepTime = 2000;
+ int error = 0;
+ while (true) {
+ 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");
+
+ if (control.isStopSimulationRequest()) {
+ // FIXME, un destroy du process est peut-etre un peu violent ?
+ process.destroy();
+ // passe artificiellement le control a fini
+ control.stopSimulation();
+ }
+ if (!control.isRunning()) {
+ return;
+ }
+ } catch (Exception eee) {
+ log.debug("Can't update control for " + control.getId(), eee);
+ }
+ }
+
+ }
+ }
+}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/Queue.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -0,0 +1,133 @@
+/*
+ * Queue.java
+ *
+ * Created on 22 août 2008, 23:01
+ */
+
+package fr.ifremer.isisfish.ui.simulator;
+
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTableModel;
+
+/**
+ *
+ * @author poussin
+ */
+public class Queue extends javax.swing.JPanel {
+
+ /** Creates new form Queue */
+ public Queue() {
+ initComponents();
+ SimulationService ss = SimulationService.getService();
+ modelJobs = new SimulationServiceTableModel(ss, ss.getJobs());
+ modelJobDones = new SimulationServiceTableModel(ss, ss.getJobDones());
+ tableJobs.setModel(modelJobs);
+ tableJobDones.setModel(modelJobDones);
+ }
+
+
+ private void initComponents() {
+ bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
+
+ tableJobsScroll = new javax.swing.JScrollPane();
+ tableJobs = new javax.swing.JTable();
+ 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();
+
+ tableJobsScroll.setViewportView(tableJobs);
+
+ tableJobDonesScroll.setViewportView(tableJobDones);
+
+ autoLaunchButton.setText("Auto Launch");
+
+ org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jButton1, org.jdesktop.beansbinding.ELProperty.create("${action.enabled}"), autoLaunchButton, org.jdesktop.beansbinding.BeanProperty.create("selected"));
+ bindingGroup.addBinding(binding);
+
+ jButton1.setText("Stop simulation");
+
+ binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobs, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton1, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding.setSourceNullValue(false);
+ binding.setSourceUnreadableValue(false);
+ bindingGroup.addBinding(binding);
+
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ stopSimulation(evt);
+ }
+ });
+
+ jButton2.setText("View log");
+
+ binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, tableJobDones, org.jdesktop.beansbinding.ELProperty.create("${selectedElement}"), jButton2, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
+ binding.setSourceNullValue(false);
+ binding.setSourceUnreadableValue(false);
+ bindingGroup.addBinding(binding);
+
+ jButton2.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ viewLog(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGap(12, 12, 12)
+ .addComponent(autoLaunchButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jButton1)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jButton2))
+ .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
+ .addComponent(tableJobsScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(tableJobsScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(tableJobDonesScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(autoLaunchButton)
+ .addComponent(jButton1)
+ .addComponent(jButton2))
+ .addContainerGap())
+ );
+
+ bindingGroup.bind();
+ }
+
+ private void stopSimulation(java.awt.event.ActionEvent evt) {
+ int i = tableJobs.getSelectedRow();
+ if (i >= 0) {
+ modelJobs.getJob(i).stop();
+ }
+ }
+
+ private void viewLog(java.awt.event.ActionEvent evt) {
+ // TODO add your handling code here:
+ }
+
+ protected SimulationServiceTableModel modelJobs;
+ protected SimulationServiceTableModel modelJobDones;
+ protected javax.swing.JToggleButton autoLaunchButton;
+ protected javax.swing.JButton jButton1;
+ protected javax.swing.JButton jButton2;
+ protected javax.swing.JTable tableJobDones;
+ protected javax.swing.JScrollPane tableJobDonesScroll;
+ protected javax.swing.JTable tableJobs;
+ protected javax.swing.JScrollPane tableJobsScroll;
+ private org.jdesktop.beansbinding.BindingGroup bindingGroup;
+
+}
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-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -41,10 +41,10 @@
import static fr.ifremer.isisfish.datastore.SimulationStorage.getSimulation;
import static fr.ifremer.isisfish.datastore.SimulationStorage.getSimulationNames;
import fr.ifremer.isisfish.logging.SimulationLoggerUtil;
-import fr.ifremer.isisfish.simulator.SimulationHelper;
-import fr.ifremer.isisfish.simulator.SimulationManager;
+import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationProperties;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil;
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import org.apache.commons.logging.Log;
@@ -58,6 +58,7 @@
import javax.swing.*;
import javax.swing.table.TableModel;
import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -68,6 +69,7 @@
*/
public class SimulatorAction {
+ static private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SimulatorAction.class);
@@ -96,9 +98,7 @@
uiContext.setData("RuleNames", RuleStorage.getRuleNames());
// put default value in param
- param.setlocal(true);
param.setSimulatorName(IsisFish.config.getSimulatorClassfile());
- param.setlocal(IsisFish.config.isSimulatorLocal());
param.setTagValue(IsisFish.config.getDefaultTagValueAsMap());
param.setExportDirectory(IsisFish.config.getDefaultExportDirectory().toString());
param.setExportNames(IsisFish.config.getDefaultExportNamesAsList());
@@ -261,7 +261,17 @@
try {
uiContext.setData("SimulationLaunched", false);
- SimulationHelper.simulate(simulId, param, inQueue);
+ simulId += " " + dateFormat.format(new java.util.Date());
+
+ if (simulId == null || "".equals(simulId) ||
+ SimulationStorage.localyExists(simulId) ||
+ SimulationService.getService().exists(simulId)) {
+ log.error("Can't start simulation, bad id: " + simulId);
+ throw new SimulationException(_("isisfish.error.start"));
+ }
+ SimulationParameter p = param.copy();
+
+ SimulationService.getService().submit(simulId, p, 0);
selectTab(tabs, true, 6);
//TODO Voir si cela fonctionne
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.ui.simulator;
-import fr.ifremer.isisfish.simulator.SimulationManager;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import fr.ifremer.isisfish.ui.widget.EnabledIfListNotEmpty;
import fr.ifremer.isisfish.ui.widget.EnabledIfItemSelectedInList;
@@ -48,7 +48,7 @@
final JButton start, final JButton remove, final JButton showLog,
final JTable table, final JTable tableDone) {
- SimulationManager.getInstance().addPropertyChangeListener("autoLaunch",
+ SimulationService.getService().addPropertyChangeListener("autoLaunch",
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
start.setEnabled(isSimulStartButtonEnabled(table));
@@ -114,7 +114,7 @@
* <code>false</code> otherwise
*/
public static boolean isSimulStartButtonEnabled(JTable table) {
- return !SimulationManager.getInstance().isAutoLaunch() &&
+ return !SimulationService.getService().isAutoLaunch() &&
(table.getRowCount() > 0);
}
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/context.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -66,6 +66,7 @@
<map>
<!-- Les composants ajoutés pour isis -->
<!-- panel -->
+ <entry key="Queue"><value>fr.ifremer.isisfish.ui.simulator.Queue</value></entry>
<entry key="MatrixPanel"><value>org.codelutin.math.matrix.gui.MatrixPanelEditor</value></entry>
<entry key="OpenMapToolPanel"><value>fr.ifremer.isisfish.map.OpenMapToolPanel</value></entry>
<entry key="SeasonIntervalPanel"><value>fr.ifremer.isisfish.ui.widget.IntervalPanel</value></entry>
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-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Params.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -144,9 +144,9 @@
<button constraints="buttonSimulParamsSimulate" id="buttonSimulParamsSimulate"
text="isisfish.common.simulate"
actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'false', $simulTabs)"/>
-
+<!-- La queue n'existe plus
<button constraints="buttonSimulParamsAddQueue" id="buttonSimulParamsAddQueue"
text="isisfish.common.addQueue"
actionCommand="simulator.SimulatorAction.simulate($fieldSimulParamsName/text, $SimulationParameter, 'true', $simulTabs)"/>
-
+ -->
</panel>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/Queue.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-15"?>
+<Queue/>
+<!--
<panel id="simulQueue" name="isisfish.queue.title" constraints="simulQueue" layout="XMLGridLayout(fr/ifremer/isisfish/ui/simulator/Queue.xgl)">
<scrollPane constraints="queueTable">
@@ -18,13 +20,11 @@
</scrollPane>
<button constraints="buttonSimulQueueStart" id="buttonSimulQueueStart" text="isisfish.queue.simulationLaunch"
- actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationManager.getInstance(), 'true')"/>
- <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueueStart($buttonSimulQueueStart)"-->
+ actionCommand="xpath:setAutoLaunch(fr.ifremer.isisfish.simulator.SimulationService.getService(), 'true')"/>
<button constraints="buttonSimulQueueRemove" id="buttonSimulQueueRemove" text="isisfish.queue.stopSimulation"
- actionCommand="xpath:setStopSimulationRequest(getSimulationControl($queueModel, $queueTable/selectedRow), 'true')"/>
+ actionCommand="xpath:stop(getJob($queueModel, $queueTable/selectedRow), 'true')"/>
<button constraints="buttonSimulQueueShowLog" id="buttonSimulQueueShowLog" text="isisfish.queue.showLog"
actionCommand="fr.ifremer.isisfish.ui.simulator.SimulatorAction.showLog($queueTableDone,$queueModelDone,$queueTableDone/selectedRow)"/>
- <!--TODO ne fonctionne pas init="simulator.SimulatorAction.initButtonSimulQueue($buttonSimulQueueShowLog,$queueTableDone)"-->
- <!--TODO ne fonctionne pas non plusorigin="$queueTableDone/selectedRow!=-1"-->
</panel>
+-->
\ No newline at end of file
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml 2008-08-21 16:23:06 UTC (rev 1309)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/SimulQueue.xml 2008-08-22 22:46:00 UTC (rev 1310)
@@ -4,7 +4,9 @@
layout="BorderLayout" Maximizable="true" Closable="true"
bundle="org.codelutin.i18n.I18nBundleBridge">
+ <Queue/>
+<!--
<xpanel xml="simulator/Queue.xml"/>
-
+-->
</Frame>
1
0
Author: bpoussin
Date: 2008-08-21 16:23:06 +0000 (Thu, 21 Aug 2008)
New Revision: 1309
Modified:
trunk/isis-fish/doc/Todo.rst
Log:
mise a jour du todo
Modified: trunk/isis-fish/doc/Todo.rst
===================================================================
--- trunk/isis-fish/doc/Todo.rst 2008-08-21 16:22:26 UTC (rev 1308)
+++ trunk/isis-fish/doc/Todo.rst 2008-08-21 16:23:06 UTC (rev 1309)
@@ -1,22 +1,40 @@
-Pour la version 3.2.0:
-- parsing d'option
-- vcs
-- equation 1
-- equation 2
-- algo avec maille
+Pour la version 3.2.0.0:
+- 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
+- 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 la version 3.2.0.1:
+- jaxx + validator
+- utilisation de velocity pour les templates de script
+- interface de saisie des configs
+- import/export de script
+- supprimer la dependance a lutinXML qui est du a MatrixHelper qui l'utilise encore (a supprimer du code, normalement plus personne ne l'utilise)
+- option de lancement -d --debug (voir meme --logLevel [debug,info,warn,error,fatal])
+- icone dans la status bar de l'etat de connexion au svn/serveur
+- Lors de la saisie d'un champs, mettre un message d'information dans la bar de status ou autre pour
+ expliquer ce que l'on souhaite, l'utiliser aussi pour avertir qu'un champs n'est pas utilise dans les calcules
+- expliquer comment debugguer avec NetBeans
+- mettre les valeurs pas defaut sur les champs
+
Pour la version 4.0.0.0:
- db4o (test de perf pour simulation, sauvegarde/rendu des resultats)
-- jaxx + validator
-Pour la version 4.0.0.1:
-- utilisation de velocity pour les templates de script
-
- dans interface de demande de config, proposer le choix de l'emplacement de la base (montre la place disque restante)
- Ajouter dans le wiki, la signification du 3eme chiffre de version (version API de script)
2
1
Aug. 21, 2008
Author: bpoussin
Date: 2008-08-21 16:22:26 +0000 (Thu, 21 Aug 2008)
New Revision: 1308
Modified:
trunk/isis-fish/src/xmi/isis-fish.zargo
Log:
- modification de StrategyMonthInfo.[numberOfTrips|minInactivityDays] de int en double
Modified: trunk/isis-fish/src/xmi/isis-fish.zargo
===================================================================
(Binary files differ)
1
0
r1307 - in trunk/isis-fish/src/java/fr/ifremer/isisfish: . datastore datastore/migration entities simulator ui/widget vcs
by bpoussin@users.labs.libre-entreprise.org Aug. 21, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 21, 2008
Aug. 21, 2008
Author: bpoussin
Date: 2008-08-21 16:21:52 +0000 (Thu, 21 Aug 2008)
New Revision: 1307
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
Log:
- modification de StrategyMonthInfo.[numberOfTrips|minInactivityDays] de int en double
- correction du lanceur de simulation pour que les threads de l'executor retrouve bien la simu a faire
- amelioration des logs
- vcs fonctionnel
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -123,6 +123,7 @@
protected long startingTime = System.nanoTime();
public IsisConfig() {
+
for (Option o : Option.values()) {
setDefaultOption(o.key, o.defaultValue);
}
@@ -268,10 +269,10 @@
setOption(Option.SIMULATOR_LAUNCHER.key, value);
}
- public boolean isSimulationShowOnlyQueue() {
- Boolean result = getOptionAsBoolean(Option.SIMULATION_SHOW_ONLY_QUEUE.key);
- return result;
- }
+// 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);
@@ -498,7 +499,7 @@
"password", Option.SIMULATOR_PASSWORD.key,
"simulationServer", Option.SIMULATOR_SERVER.key,
"simulationShowOnlyError", Option.SIMULATION_SHOW_ONLY_ERROR.key,
- "simulationShowOnlyQueue", Option.SIMULATION_SHOW_ONLY_QUEUE.key,
+ "simulationShowOnlyQueue", null, // Option.SIMULATION_SHOW_ONLY_QUEUE.key,
"smtpServer", Option.SMTP_SERVER.key,
"userMail", Option.USER_MAIL.key,
"userName", Option.USER_NAME.key,
@@ -515,8 +516,13 @@
"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++];
@@ -524,10 +530,9 @@
String value = getOption(oldKey);
if (value != null) {
mustSave = true;
- if (newKey == null) {
- // pas d'equivalent a la cle, on la supprime
- homefile.remove(oldKey);
- } else {
+ // quoi qu'il arrive on enleve l'ancienne cle
+ homefile.remove(oldKey);
+ if (newKey != null) {
setOption(newKey, value);
}
}
@@ -535,7 +540,16 @@
}
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();
+ }
}
//////////////////////////////////////////////////
@@ -545,7 +559,7 @@
static public enum Option {
COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
- CONFIG_FILE("config.file", _("isisfish.config.main.configFileName.description"), getUserHome() + File.separator + "." + CONFIG_FILENAME),
+ 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"),
@@ -568,8 +582,8 @@
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"), "true"),
- SIMULATION_SHOW_ONLY_QUEUE("simulationShowOnlyQueue", _("isisfish.config.main.simulationShowOnlyQueue.description"), "true"),
+ 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"),
@@ -582,11 +596,11 @@
// 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 http or ssh
- VCS_PROTOCOLE(VCS.VCS_PROTOCOLE, _("isisfish.config.vcs.useSshConnexion.description"), "http"),
+ // 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"), "anonymous"),
+ 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"),
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -74,6 +74,7 @@
import org.swixml.ConverterLibrary;
import org.codelutin.i18n.I18n;
+import org.codelutin.log.UserLog;
import org.codelutin.topia.TopiaException;
import org.codelutin.util.LocaleConverter;
import org.codelutin.util.VersionNumber;
@@ -125,7 +126,11 @@
// action after init
config.doAction(IsisConfig.Step.AfterInit.ordinal());
- initVCS();
+ try {
+ initVCS();
+ } catch (Exception eee) {
+ log.warn(_("Error during vcs initialisation"), eee);
+ }
log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
@@ -187,21 +192,11 @@
}
-// public static void initVCS() {
-// StringBuilder sb = new StringBuilder();
-// sb.append("connectionState : ").append(vcsConfig.getConnectionState());
-// sb.append("\nhasPreviousConfig : ").append(vcsConfig.hasPreviousConfig());
-// sb.append("\nisTypeChanged : ").append(vcsConfig.isTypeChanged());
-// sb.append("\nneedMigration : ").append(vcsConfig.needMigration());
-// if (vcsConfig.needMigration()) {
-// sb.append("\nmigrationType ").append(vcsConfig.getMigrationType());
-// }
-// for (String s : sb.toString().split("\n")) {
-// log.info(s);
-// }
-//
-// }
-
+ /**
+ * Veto utilise lors de l'init du vcs pour permettre a l'utilisateur de
+ * refuser certaine action. S'il refuse les switchs le vcs est passe en
+ * readonly.
+ */
static class VCSActionAsker implements VetoableActionListener {
public boolean canDoAction(VCS vcs, VCSActionEvent action, File... files) {
@@ -233,23 +228,37 @@
}
+ /**
+ * Permet de faire une demande a l'utilisateur. S'il repond annuler, on
+ * quit l'application
+ *
+ * @param msg
+ * @return
+ */
public static boolean ask(String msg) {
boolean result = true;
int value = JOptionPane.showConfirmDialog(null, msg);
+ if (value == JOptionPane.CANCEL_OPTION) {
+ quit();
+ }
result = value == JOptionPane.OK_OPTION;
return result;
}
+ /**
+ * Switch le vcs vers VCSNone et le sauvegarde pour le prochain lancement
+ */
protected static void switchToNoneVCS() {
- config.setOption(IsisConfig.Option.VCS_PROTOCOLE.key, "none");
+ log.info(_("Switch repository type to none"));
+ config.setOption(IsisConfig.Option.VCS_TYPE.key, VCS.TYPE_NONE);
config.saveForUser();
vcs = VCSFactory.createVCS(config);
}
/**
- * Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
+ * Initialise le VCS et check s'il y a des mises a jour pour prevenir
* l'utilisateur
*/
- static public void initVCS() throws VCSException {
+ static public void initVCS() throws VCSException {
// init vcs
vcs = VCSFactory.createVCS(config);
VCSActionAsker asker = new VCSActionAsker();
@@ -257,12 +266,18 @@
// 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()) {
- if (ask(_("Your database repository don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?"))) {
+ 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().format(new Date()));
+ 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");
@@ -275,12 +290,12 @@
// Si le repo local n'existe pas on fait un check out complet
if (!local.exists()) {
- if (vcs instanceof VCSNone) {
- JOptionPane.showMessageDialog(null, _(
- "No database found and can't get it.\n" +
- "You must go to ISIS-Fish web site and download database manualy."),
- _("Database needed %s", IsisConfig.getVersion()),
- JOptionPane.WARNING_MESSAGE);
+ 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();
@@ -316,31 +331,37 @@
throw new IsisFishRuntimeException("Can't find local repository");
}
- // check protocol, user, host
- vcs.checkProtocol();
+ // on s'arrete la si on est pas connecte
+ if (vcs.isConnected()) {
+
+ // 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
+ // 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")) {
-
- // 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);
+ // 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);
}
/**
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-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -423,6 +423,8 @@
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/migration/SwingMigrationCallbackHandler.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -109,6 +109,8 @@
"alter table SETOFVESSELS add column TECHNICALEFFICIENCYEQUATION VARCHAR(255);",
"alter table STRATEGY add column INACTIVITYEQUATIONUSED BIT default false;",
"alter table STRATEGY add column INACTIVITYEQUATION VARCHAR(255);",
+ "alter table STRATEGYMONTHINFO alter NUMBEROFTRIPS double;",
+ "alter table STRATEGYMONTHINFO alter MININACTIVITYDAYS double;",
};
for (String sql : sqls) {
log.info("try " + sql);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -145,7 +145,7 @@
* @see fr.ifremer.isisfish.entities.StrategyMonthInfoAbstract#setMinInactivityDays(int)
*/
@Override
- public void setMinInactivityDays(int value) {
+ public void setMinInactivityDays(double value) {
super.setMinInactivityDays(value);
computeNumberOfTrips();
}
@@ -158,8 +158,8 @@
double inactivity = getStrategy().getInactivityDays(getMonth());
if(tripType != null && tripType.getTripDuration() != null && inactivity >= 0){
int nbDayMonth = getMonth().getNumbersOfDays();
- double result = (int)((nbDayMonth - inactivity) / tripType.getTripDuration().getDay());
- setNumberOfTrips((int)result);
+ double result = (nbDayMonth - inactivity) / tripType.getTripDuration().getDay();
+ setNumberOfTrips(result);
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -267,7 +267,11 @@
// }
// classpath[classpath.length - 1] = directory.toURL();
// URLClassLoader loader = new URLClassLoader(classpath, null);
- URL [] classpath = new URL[]{directory.toURI().toURL()};
+ URL [] classpath = new URL[]{directory.toURI().toURL(),
+ // poussin 20080821
+ // il semble ne plus trouve les formules, est-ce mieux avec le compile dir ?
+ IsisFish.config.getCompileDirectory().toURI().toURL()
+ };
//URL [] classpath = new URL[]{directory.toURL()};
AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath);
thread.setContextClassLoader(loader);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -114,7 +114,8 @@
// remoteThread.start();
// TODO passer ces valeurs en valeur configurable
- int cpus = Runtime.getRuntime().availableProcessors();
+ int cpus = 1; // FIXME les logs ne sont pas multi-thread (il se melange a priori)
+// int cpus = Runtime.getRuntime().availableProcessors();
int MAX_REMOTE_SIMULATION = 1;
log.info(_("Launch Simulation executor with %s cpu(s) for local, and %s" +
" process for remote", cpus, MAX_REMOTE_SIMULATION));
@@ -182,6 +183,7 @@
*/
public void addSimulation(String id, SimulationParameter param) throws Exception {
ExecutorService executor = null;
+ Runnable job = null;
if (param.getLocal()) {
executor = localExecutor;
log.debug(_("isisfish.message.add.queue", id));
@@ -198,21 +200,22 @@
// c un plan d'analyse, il peut etre independant ou dependant
if (!param.isIndependentPlan()) {
item = new SimulationItemPlan(id, param);
- executor.execute(new SimulationJob(this, item));
+ job = new SimulationJob(this, item);
} else {
// on met dans la queue local le process de generation de toutes
// les simus
item = new SimulationItemPlanIndependent(id, param);
- localExecutor.execute(
- new PrepareIndependentSimulationJob(this, executor, item));
+ job = new PrepareIndependentSimulationJob(this, executor, item);
+ executor = localExecutor; // change after job creation, because job need reel executor
}
} else {
// une simulation normal
item = new SimulationItem(id, param);
log.info("Simulation added to executor: " + executor.isShutdown() + ", " + executor.isTerminated());
- executor.execute(new SimulationJob(this, item));
+ job = new SimulationJob(this, item);
}
fireAddEvent(id, item); // must be before thread notification because thread look in map
+ executor.execute(job);
}
/**
@@ -359,22 +362,28 @@
* the corresponding simulation
*/
protected boolean mustShowSimulationDone(String id) {
+ IsisConfig config = IsisFish.config;
- boolean result = true;
+ boolean result = !config.isSimulationShowOnlyError();
try {
- IsisConfig config = IsisFish.config;
SimulationItem item = map.get(id);
- if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
- // on ne met jamais dans la queue done les simulations de plan
- // sauf si elle echoue
- result = false;
-// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
- } else if (!(config.isSimulationShowOnlyError() &&
- !(item instanceof SimulationItemPlan) &&
+
+ if (result || (!(item instanceof SimulationItemPlan) &&
item.getSimulation().getInformation().hasError())) {
- result = false;
+ result = true;
}
+
+// if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
+// // on ne met jamais dans la queue done les simulations de plan
+// // sauf si elle echoue
+// result = false;
+//// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
+// } else if (!(config.isSimulationShowOnlyError() &&
+// !(item instanceof SimulationItemPlan) &&
+// item.getSimulation().getInformation().hasError())) {
+// result = false;
+// }
} catch (Exception eee) {
log.debug("Ne devrait pas arriver", eee);
// I don't known how it could appear, but in doubt, show it!
@@ -703,6 +712,9 @@
simulationManager.waitAutoLaunch();
try {
// si l'simItem exist encore (que l'utilisateur ne la pas retire)
+ log.info("id: " + simItem.getPlanIdOrId() + " exists ? " +
+ simulationManager.exists(simItem.getPlanIdOrId()) +
+ " hasNext ? " + simItem.hasNext());
while (simulationManager.exists(simItem.getPlanIdOrId()) &&
simItem.hasNext()) {
SimulationItem item = simItem.next();
@@ -844,6 +856,12 @@
return planItem;
}
+ /**
+ * Si renvoi vrai, cela veut dire que cette simulation a ete generee
+ * par un plan d'experience
+ *
+ * @return
+ */
public boolean hasPlanItem() {
boolean result = planItem != null;
return result;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/Interval.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -35,16 +35,13 @@
import java.util.Iterator;
import java.util.Observable;
-import org.codelutin.xml.XMLable;
-
/**
* Classe permettant de d'ecrire un interval. Cette interval est un peu
* particulier car il est circulaire. Par exemple si min=0, max=100, first=75 et
* bien last peut etre egal à 25 donc inferieur a first. Dans ce cas si l'on
* demande contains 50 il repond faux et contains 99 retourne vrai.
*/
-public class Interval extends Observable implements Serializable, Cloneable,
- XMLable { // Interval
+public class Interval extends Observable implements Serializable, Cloneable { // Interval
/**
*
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -44,7 +44,7 @@
/**
* can be http, ssh, pserver, ...
*/
- public static final String VCS_PROTOCOLE = "vcs.protocole";
+ public static final String VCS_PROTOCOLE = "vcs.protocol";
/**
* ssh key file
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -51,7 +51,7 @@
* @param config
* @return usable VCSNone
*/
- static public VCSNone createVCS(IsisConfig config) {
+ static public VCS createVCS(IsisConfig config) {
Properties aliases = new Properties();
// for empty and TYPE_NONE we used this class
aliases.setProperty("", VCSNone.class.getName());
@@ -60,7 +60,7 @@
// FIXME active this line when svn and CVS are implemented
// aliases.setProperty(TYPE_CVS, VCSCVS.class.getName());
- VCSNone result = null;
+ VCS result = null;
String type = config.getOption(VCS.VCS_TYPE);
// try to convert if type is not class name but an alias
String classname = aliases.getProperty(type, type);
@@ -75,7 +75,7 @@
try {
Class clazz = (Class) ConvertUtils.convert(classname, Class.class);
- result = (VCSNone) ConstructorUtils.invokeConstructor(clazz,
+ result = (VCS) ConstructorUtils.invokeConstructor(clazz,
new Object[]{dataDir, protocol, host, path, sshKeyFile, login, password});
} catch (Exception eee) {
log.error(_("Can't instanciate wanted VCS (%s), use default",
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-20 13:06:19 UTC (rev 1306)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-21 16:21:52 UTC (rev 1307)
@@ -61,8 +61,13 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VCSSVN.class);
-
+
+ static enum ConnectionState {
+ NOT_TESTED, OFF_LINE, ON_LINE
+ }
+
protected SVNClientManager svnManager = null;
+ protected ConnectionState connectionState = ConnectionState.NOT_TESTED;
public VCSSVN(File localRepository,
String protocol, String host, String path,
@@ -109,38 +114,66 @@
boolean result = svn.exists();
return result;
}
-
+
+ public boolean isConnected() {
+ if (connectionState == ConnectionState.NOT_TESTED) {
+ try {
+ SVNURL url = getRemoteURL();
+ getSVNManager().getWCClient().doGetProperty(url, "",
+ SVNRevision.HEAD,
+ SVNRevision.HEAD, false);
+ connectionState = ConnectionState.ON_LINE;
+ log.info(_("Connection to serveur available, switch on line: %s",
+ getRemoteRepository()));
+ } catch(SVNException eee) {
+ log.info(_("Can't connect to serveur, switch to off line: %s",
+ getRemoteRepository()));
+ connectionState = ConnectionState.OFF_LINE;
+ }
+ }
+ boolean result = connectionState == ConnectionState.ON_LINE;
+ return result;
+ }
+
@Override
public void checkProtocol() throws VCSException {
try {
File localRoot = getLocalRepository();
- SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ SVNInfo info = getSVNManager().getWCClient().doInfo(
+ localRoot, SVNRevision.WORKING);
SVNURL url = info.getURL();
+ SVNURL rootUrl = info.getRepositoryRootURL();
+ String path = url.toDecodedString().substring(rootUrl.toDecodedString().length());
- // si un des constituants de l'url a change on fait un switch relocate
- boolean mustSwitch = false;
- if (!url.getProtocol().equals(getProtocol())) {
- log.info(_("repository protocol change from %s to %s",
- url.getProtocol(), getProtocol()));
- mustSwitch = true;
- }
- if (!url.getUserInfo().equals(getLogin())) {
- log.info(_("repository user change from %s to %s",
- url.getUserInfo(), getLogin()));
- mustSwitch = true;
- }
- if (!url.getHost().equals(getHost())) {
- log.info(_("repository host change from %s to %s",
- url.getHost(), getHost()));
- mustSwitch = true;
- }
-
- if (mustSwitch) {
+// // si un des constituants de l'url a change on fait un switch relocate
+// boolean mustSwitch = false;
+// if (!url.getProtocol().equals(getProtocol())) {
+// log.info(_("repository protocol change from %s to %s",
+// url.getProtocol(), getProtocol()));
+// mustSwitch = true;
+// }
+// if (!url.getUserInfo() != null !url.getUserInfo().equals(getLogin())) {
+// log.info(_("repository user change from %s to %s",
+// url.getUserInfo(), getLogin()));
+// mustSwitch = true;
+// }
+// if (!url.getHost().equals(getHost())) {
+// log.info(_("repository host change from %s to %s",
+// url.getHost(), getHost()));
+// mustSwitch = true;
+// }
+//
+// if (mustSwitch) {
+ SVNURL newUrl = getRemoteURL();
+ newUrl = newUrl.appendPath(path, false);
+ if (!url.equals(newUrl)) {
if (fireAction(VCSActionEvent.SWITCH_PROTOCOL)) {
- String path = url.getPath();
- int port = url.getPort();
- SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
- getHost(), port, path, true);
+// String path = url.getPath();
+// int port = url.getPort();
+// SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
+// getHost(), port, path, true);
+ log.info(_("Switch repository %s from %s to %s",
+ localRoot, url, newUrl));
getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
}
}
@@ -158,14 +191,12 @@
* fichiers
*/
public void checkFileStatus() throws VCSException {
- if (isConnected()) {
- Map<File, SVNStatus> status = getRemoteStatus(null, true);
+ Map<File, SVNStatus> status = getRemoteStatus(null, true);
// si des fichiers ont ete mis a jour sur le serveur on se synchronise
- if (status.size() > 0) {
- if (fireAction(VCSActionEvent.UPDATE_REPOSITORY,
- status.keySet().toArray(new File[status.size()]))) {
- update(null, true);
- }
+ if (status.size() > 0) {
+ if (fireAction(VCSActionEvent.UPDATE_REPOSITORY,
+ status.keySet().toArray(new File[status.size()]))) {
+ update(null, true);
}
}
}
@@ -355,7 +386,7 @@
handler);
return result;
} catch (SVNException eee) {
- throw new VCSException("Can't add file", eee);
+ throw new VCSException("Can't status file", eee);
}
}
@@ -396,7 +427,7 @@
handler);
return result;
} catch (SVNException eee) {
- throw new VCSException("Can't add file", eee);
+ throw new VCSException("Can't status file", eee);
}
}
@@ -420,10 +451,6 @@
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean isConnected() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
public boolean isOnRemote(File file) throws VCSException {
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -511,7 +538,8 @@
public String getTag() throws VCSException {
try {
File localRoot = getLocalRepository();
- SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ SVNInfo info = getSVNManager().getWCClient().doInfo(
+ localRoot, SVNRevision.WORKING);
String url = info.getURL().toDecodedString();
String result = "/trunk";
if (!url.endsWith("/trunk")) {
@@ -545,7 +573,10 @@
SVNURL newUrl = getRemoteURL();
newUrl = newUrl.appendPath(tag, true);
- getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ log.info(_("Switch repository tag from %s to %s",
+ currantTag, tag));
+ getSVNManager().getUpdateClient().doSwitch(
+ localRoot, newUrl, SVNRevision.HEAD, true);
}
}
} catch (SVNException eee) {
1
0
r1306 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/vcs test/fr/ifremer/isisfish/vcs
by bpoussin@users.labs.libre-entreprise.org Aug. 20, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 20, 2008
Aug. 20, 2008
Author: bpoussin
Date: 2008-08-20 13:06:19 +0000 (Wed, 20 Aug 2008)
New Revision: 1306
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
Log:
tout est code, et teste en test unitaire, y'a plus qu'a tester en grandeur nature (vcs, option)
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -52,10 +52,14 @@
import fr.ifremer.isisfish.util.StringConverter;
import fr.ifremer.isisfish.util.TimeUnitConverter;
import fr.ifremer.isisfish.vcs.VCS;
+import fr.ifremer.isisfish.vcs.VCSActionEvent;
import fr.ifremer.isisfish.vcs.VCSException;
import fr.ifremer.isisfish.vcs.VCSFactory;
+import fr.ifremer.isisfish.vcs.VCSNone;
+import fr.ifremer.isisfish.vcs.VetoableActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
+import java.util.Arrays;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.logging.LogFactory;
import static org.codelutin.i18n.I18nf._;
@@ -63,6 +67,7 @@
import org.codelutin.math.matrix.DoubleBigVector;
import org.codelutin.math.matrix.MatrixFactory;
import java.util.Locale;
+import javax.swing.JOptionPane;
import org.apache.commons.logging.Log;
import org.swixat.SwiXAT;
import org.swixat.model.Context;
@@ -197,6 +202,49 @@
//
// }
+ static class VCSActionAsker implements VetoableActionListener {
+
+ public boolean canDoAction(VCS vcs, VCSActionEvent action, File... files) {
+ boolean result = true;
+ if (action == VCSActionEvent.SWITCH_PROTOCOL) {
+ result = ask(_("Protocol to access repository script has changed.\n" +
+ "Do you want to switch your repository ?"));
+ if (!result) {
+ // l'utilisateur ne souhaite pas changer de protocol,
+ // on force le repo en read-only pour eviter les erreurs
+ vcs.setWriteable(false);
+ }
+ } else if (action == VCSActionEvent.SWITCH) {
+ result = ask(_("You don't use correction repository script for" +
+ " your application version %s.\nDo you want to switch" +
+ " your repository ?", IsisConfig.getVersion()));
+ if (!result) {
+ // l'utilisateur ne souhaite pas changer de branche,
+ // on force le repo en read-only pour eviter les erreurs
+ vcs.setWriteable(false);
+ }
+ } else if (action == VCSActionEvent.UPDATE_REPOSITORY) {
+ result = ask(_("Your repository is not up to date.\n" +
+ "Do you want to update your repository ?\n\n" +
+ "Remote modified file is\n%s", Arrays.toString(files)));
+ }
+ return result;
+ }
+
+ }
+
+ public static boolean ask(String msg) {
+ boolean result = true;
+ int value = JOptionPane.showConfirmDialog(null, msg);
+ result = value == JOptionPane.OK_OPTION;
+ return result;
+ }
+
+ protected static void switchToNoneVCS() {
+ config.setOption(IsisConfig.Option.VCS_PROTOCOLE.key, "none");
+ config.saveForUser();
+ vcs = VCSFactory.createVCS(config);
+ }
/**
* Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
* l'utilisateur
@@ -204,49 +252,67 @@
static public void initVCS() throws VCSException {
// init vcs
vcs = VCSFactory.createVCS(config);
+ VCSActionAsker asker = new VCSActionAsker();
+ vcs.addVetoableActionListener(asker);
// Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
File local = config.getDatabaseDirectory();
if (local.exists()) {
if(!vcs.isValidLocalRepository()) {
- File localBackup = new File(local.getParentFile(),
- local.getName() + "-" +
- new SimpleDateFormat().format(new Date()));
- if (!local.renameTo(localBackup)) {
- throw new IsisFishRuntimeException(
- "Can rename local repository that don't use svn");
+ if (ask(_("Your database repository don't use correct protocol.\nDo you want to make backup of your database and take the correct one ?"))) {
+ File localBackup = new File(local.getParentFile(),
+ local.getName() + "-" +
+ new SimpleDateFormat().format(new Date()));
+ if (!local.renameTo(localBackup)) {
+ throw new IsisFishRuntimeException(
+ "Can't rename local repository that don't use svn");
+ }
+ } else {
+ switchToNoneVCS();
}
}
}
// Si le repo local n'existe pas on fait un check out complet
if (!local.exists()) {
- // 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;
- }
+ if (vcs instanceof VCSNone) {
+ JOptionPane.showMessageDialog(null, _(
+ "No database found and can't get it.\n" +
+ "You must go to ISIS-Fish web site and download database manualy."),
+ _("Database needed %s", IsisConfig.getVersion()),
+ JOptionPane.WARNING_MESSAGE);
+ } 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;
+ }
- vcs.checkout(tag, false);
+ // initialise le repo local
+ vcs.checkout(tag, false);
- AnalysePlanStorage.checkout();
- ExportStorage.checkout();
- FormuleStorage.checkout();
- RuleStorage.checkout();
- ScriptStorage.checkout();
- SimulatorStorage.checkout();
+ // ajoute les repertoires qu'il faut
+ AnalysePlanStorage.checkout();
+ ExportStorage.checkout();
+ FormuleStorage.checkout();
+ RuleStorage.checkout();
+ ScriptStorage.checkout();
+ SimulatorStorage.checkout();
- 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);
+ // 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");
}
@@ -274,6 +340,7 @@
// check file status
vcs.checkFileStatus();
+
}
/**
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -20,24 +20,11 @@
package fr.ifremer.isisfish.vcs;
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
-import fr.ifremer.isisfish.datastore.ExportStorage;
-import fr.ifremer.isisfish.datastore.FormuleStorage;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
-import fr.ifremer.isisfish.datastore.ScriptStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.SimulatorStorage;
import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.topia.TopiaException;
-import org.codelutin.util.VersionNumber;
/**
*
@@ -52,6 +39,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(AbstractVCS.class);
+ protected Set<VetoableActionListener> listeners = new HashSet<VetoableActionListener>();
protected File localRepository;
protected String protocol;
protected String host;
@@ -59,6 +47,7 @@
protected File sshKeyFile;
protected String login;
protected String password;
+ protected boolean writeable = true;
public AbstractVCS(File localRepository,
String protocol, String host, String path,
@@ -72,6 +61,39 @@
this.password = password;
}
+ public void addVetoableActionListener(VetoableActionListener l) {
+ listeners.add(l);
+ }
+
+ public void remoteVetoableActionListener(VetoableActionListener l) {
+ listeners.remove(l);
+ }
+
+ public void setWriteable(boolean value) {
+ this.writeable = value;
+ }
+
+ protected boolean fireAction(VCSActionEvent e, File ... files) {
+ boolean result = true;
+ if (listeners.size() > 0) {
+ // on evite la concurrence
+ VetoableActionListener[] ls =
+ listeners.toArray(new VetoableActionListener[listeners.size()]);
+ for (VetoableActionListener l : ls) {
+ result = result && l.canDoAction(this, e, files);
+ if (!result) {
+ // on s'arrete des qu'il y en a un qui ne souhaite pas
+ // qu'on fasse l'action
+ break;
+ }
+ }
+ }
+ if (!result) {
+ log.info("Canceled action: " + e);
+ }
+ return result;
+ }
+
public File getLocalRepository() {
return localRepository;
}
@@ -156,22 +178,9 @@
String filename = file.getName();
return !".svn".equals(filename) && !"CVS".equals(filename) &&
!filename.endsWith("~") &&
- // si le fichier n'appartient pas a loca repository, il ne pourra pas etre versionne
+ // si le fichier n'appartient pas a loca repository,
+ // il ne pourra pas etre versionne
file.getAbsolutePath().startsWith(getLocalRepository().getAbsolutePath());
}
- /**
- * Verifie si tous les fichiers du repository local sont les dernieres
- * version par rapport au serveur. Si ce n'est pas le cas et que l'on est
- * en mode interactif (mode graphique), on lui propose de mettre a jour
- * les fichiers, avec la possibilite de voir les changements sur les
- * fichiers
- */
- public void checkFileStatus() throws VCSException {
- if (isConnected()) {
- // si des fichiers ont ete mis a jour sur le serveur on se synchronise
- // FIXME a faire
- }
- }
-
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -67,6 +67,18 @@
public static final String VCS_USER_PASSWORD = "vcs.password";
/**
+ * Ajout un listener pouvant interdire les actions du vcs
+ * @param l
+ */
+ public void addVetoableActionListener(VetoableActionListener l);
+
+ /**
+ * Supprime un listener pouvant interdire les actions du vcs
+ * @param l
+ */
+ public void remoteVetoableActionListener(VetoableActionListener l);
+
+ /**
* Get local repository directory
*/
public File getLocalRepository();
@@ -83,24 +95,14 @@
* @return
*/
public boolean isWriteable() throws VCSException;
+
+ /**
+ * Permit to force repository to read-only if value is false, otherwize
+ * use normal rules.
+ * @param value
+ */
+ public void setWriteable(boolean value);
-// /**
-// * Get the server address of the local file
-// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
-// *
-// * @param f file that we want to know the source
-// * @return
-// */
-// public String getLocalRepositorySource(File f) throws VCSException;
-//
-// /**
-// * Get the root server address of the local repository
-// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
-// *
-// * @return
-// */
-// public String getLocalRepositoryRoot() throws VCSException;
-
/**
* Commit specified files, if files is null, all files are commited
* @param files files to commit
@@ -125,14 +127,6 @@
*/
public void checkout(VersionNumber tag, boolean recurse) throws VCSException;
-// /**
-// * switch to new protocole, can be used to switch between anonymous and
-// * authenticate protocole
-// * @param protocoleType
-// * @throws fr.ifremer.isisfish.vcs.VCSException
-// */
-// public void switchProtocole(String protocoleType) throws VCSException;
-
/**
* Delete and commit files in server repository
* @param files file to delete
@@ -223,7 +217,7 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(File file, boolean recurse) throws VCSException;
+ public List<File> update(File file, boolean recurse) throws VCSException;
/**
* Verifie la connexion et si le protocole a change, switch le repository
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSActionEvent.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -0,0 +1,42 @@
+/* *##%
+ * 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.vcs;
+
+/**
+ * Represente une action VCS que l'on souhaite faire
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public enum VCSActionEvent {
+
+ CHECKOUT, // when checkout
+ COMMIT, // when commit
+ UPDATE, // when update
+ UPDATE_REPOSITORY, // when checkFileStatus
+ SWITCH, // when setTag
+ SWITCH_PROTOCOL, // when checkProtocol
+ DELETE, // when delete
+ ADD // when add
+
+}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -19,7 +19,6 @@
package fr.ifremer.isisfish.vcs;
-import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
@@ -181,26 +180,18 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(File file, boolean recurse) throws VCSException {
+ public List<File> update(File file, boolean recurse) throws VCSException {
throw new VCSException("Can't update file with dummy VCS");
}
-// public String getLocalRepositorySource(File f) throws VCSException {
-// throw new VCSException("Not supported.");
-// }
-//
-// public String getLocalRepositoryRoot() throws VCSException {
-// throw new VCSException("Not supported.");
-// }
-//
-// public String getLocalRepositoryTag() throws VCSException {
-// throw new VCSException("Not supported.");
-// }
-
public void checkProtocol() throws VCSException {
// nothing to do
}
+ public void checkFileStatus() throws VCSException {
+ // nothing to do
+ }
+
public boolean isWriteable() throws VCSException {
return false;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -22,9 +22,14 @@
import static org.codelutin.i18n.I18nf._;
import java.io.File;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.VersionNumber;
@@ -36,9 +41,12 @@
import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.wc.ISVNOptions;
+import org.tmatesoft.svn.core.wc.ISVNStatusHandler;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNInfo;
import org.tmatesoft.svn.core.wc.SVNRevision;
+import org.tmatesoft.svn.core.wc.SVNStatus;
+import org.tmatesoft.svn.core.wc.SVNStatusType;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
/**
@@ -128,11 +136,13 @@
}
if (mustSwitch) {
- String path = url.getPath();
- int port = url.getPort();
- SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
- getHost(), port, path, true);
- getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
+ if (fireAction(VCSActionEvent.SWITCH_PROTOCOL)) {
+ String path = url.getPath();
+ int port = url.getPort();
+ SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
+ getHost(), port, path, true);
+ getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
+ }
}
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
@@ -140,37 +150,31 @@
}
-
-
+ /**
+ * Verifie si tous les fichiers du repository local sont les dernieres
+ * version par rapport au serveur. Si ce n'est pas le cas et que l'on est
+ * en mode interactif (mode graphique), on lui propose de mettre a jour
+ * les fichiers, avec la possibilite de voir les changements sur les
+ * fichiers
+ */
+ public void checkFileStatus() throws VCSException {
+ if (isConnected()) {
+ Map<File, SVNStatus> status = getRemoteStatus(null, true);
+ // si des fichiers ont ete mis a jour sur le serveur on se synchronise
+ if (status.size() > 0) {
+ if (fireAction(VCSActionEvent.UPDATE_REPOSITORY,
+ status.keySet().toArray(new File[status.size()]))) {
+ update(null, true);
+ }
+ }
+ }
+ }
+
protected SVNURL getRemoteURL() throws SVNException {
SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
return remoteURL;
}
-
-// public String getLocalRepositoryRoot() throws VCSException {
-// try {
-// File localRoot = getLocalRepository();
-// SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
-// SVNURL url = info.getCopyFromURL();
-// String result = url.toDecodedString();
-// return result;
-// } catch (SVNException eee) {
-// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
-// }
-// }
-//
-// public String getLocalRepositorySource(File f) throws VCSException {
-// try {
-// // TODO perhaps, check if file is in getLocalRepository() file ?
-// SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
-// SVNURL url = info.getURL();
-// String result = url.toDecodedString();
-// return result;
-// } catch (SVNException eee) {
-// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
-// }
-// }
-
+
/**
* Retourne l'url du repository distant
* ex: ssh+svn://labs.le.org/svnroot/isis-fish/data/branches/3.2
@@ -206,10 +210,19 @@
}
public void commit(List<File> files, String msg) throws VCSException {
+ if (!isWriteable()) {
+ throw new VCSException("You can't commit file, this repository is readonly");
+ }
+ if (files == null) {
+ files = Arrays.asList(getLocalRepository());
+ }
+ if (fireAction(VCSActionEvent.COMMIT, files.toArray(new File[files.size()]))) {
+ commitWithoutCheck(files, msg);
+ }
+ }
+
+ protected void commitWithoutCheck(List<File> files, String msg) throws VCSException {
try {
- if (files == null) {
- files = Arrays.asList(getLocalRepository());
- }
SVNCommitInfo commitInfo = getSVNManager().getCommitClient()
.doCommit(files.toArray(new File[files.size()]),
false, // keep lock
@@ -220,20 +233,25 @@
} catch (SVNException eee) {
throw new VCSException("Can't commit files", eee);
}
- }
+ }
public void add(List<File> files, String msg) throws VCSException {
+ if (!isWriteable()) {
+ throw new VCSException("You can't add file, this repository is readonly");
+ }
try {
- for (File file : files) {
- // FIXME ajoute dans le ignore les fichiers regions/<region>/data/*
- getSVNManager().getWCClient().doAdd(file,
- true, // force add to allready added file (no error)
- false, // don't create dir if not exist
- true, // add parent dir if is not versionned
- false, // no recurse
- false); // don't add ignore file
+ if (fireAction(VCSActionEvent.ADD, files.toArray(new File[files.size()]))) {
+ for (File file : files) {
+ // FIXME ajoute dans le ignore les fichiers regions/<region>/data/*
+ getSVNManager().getWCClient().doAdd(file,
+ true, // force add to allready added file (no error)
+ false, // don't create dir if not exist
+ true, // add parent dir if is not versionned
+ false, // no recurse
+ false); // don't add ignore file
+ }
+ commitWithoutCheck(files, msg);
}
- commit(files, msg);
} catch (SVNException eee) {
throw new VCSException("Can't add file", eee);
}
@@ -241,35 +259,147 @@
public void checkout(VersionNumber tag, boolean recurse) throws VCSException {
try {
- String tagPath = "/trunk/";
- if (tag != null) {
- tagPath = "/tags/" + tag + "/";
- }
+ if (fireAction(VCSActionEvent.CHECKOUT, getLocalRepository())) {
+ String tagPath = "/trunk/";
+ if (tag != null) {
+ tagPath = "/tags/" + tag + "/";
+ }
- SVNURL source = getRemoteURL().appendPath(tagPath, false);
+ SVNURL source = getRemoteURL().appendPath(tagPath, false);
- File destDir = getLocalRepository();
- destDir.mkdirs();
-
- getSVNManager().getUpdateClient().doCheckout(source, destDir, null,
- SVNRevision.HEAD, recurse);
+ File destDir = getLocalRepository();
+ destDir.mkdirs();
+
+ getSVNManager().getUpdateClient().doCheckout(source, destDir, null,
+ SVNRevision.HEAD, recurse);
+ }
} catch (SVNException eee) {
throw new VCSException(_("Can't checkout"), eee);
}
}
public void delete(List<File> files, String msg) throws VCSException {
- try {
- for (File file : files) {
- // FIXME check argument in documentation
- getSVNManager().getWCClient().doDelete(file, true, msg != null, false);
+ if (!isWriteable()) {
+ throw new VCSException("You can't delete file, this repository is readonly");
+ }
+ try {
+ if (fireAction(VCSActionEvent.DELETE, files.toArray(new File[files.size()]))) {
+ for (File file : files) {
+ getSVNManager().getWCClient().doDelete(file,
+ true, // force la deletion
+ true, // delete local file too
+ false); // is not just a test
+ }
+ commitWithoutCheck(files, msg);
}
- commit(files, msg);
} catch (SVNException eee) {
throw new VCSException("Can't add file", eee);
}
}
+// protected String statusToString(SVNStatus status) {
+// SVNStatusType type = status.getRemoteContentsStatus();
+//
+// String result = "'" + type.getCode() + "' '" + type.getID() + "' " + type.toString();
+// type = status.getContentsStatus();
+// result += "|'" + type.getCode() + "' '" + type.getID() + "' " + type.toString();
+//
+// return result;
+// }
+
+ /**
+ * Recherhce le status des fichiers locaux, ne retourne jamais les fichiers
+ * NOMAL ou NONE sauf si demande explicitement via wanted
+ *
+ * @param file le repertoire a partir duquel on souhaite le status
+ * @param recurse si l'on souhaite le faire recursivement
+ * @param wanted l'ensemble des status type que l'on recheche, si vide
+ * recherche tous les statuts
+ * @return une map avec comme cle le File local et en valeur le status
+ * @throws fr.ifremer.isisfish.vcs.VCSException
+ */
+ protected Map<File, SVNStatus> getLocalStatus(File file, boolean recurse, SVNStatusType ... wanted) throws VCSException {
+ try {
+ if (file == null) {
+ file = getLocalRepository();
+ }
+
+ final Map<File, SVNStatus> result = new HashMap<File, SVNStatus>();
+ final Set<SVNStatusType> acceptedStatusType =
+ new HashSet<SVNStatusType>(Arrays.asList(wanted));
+
+ ISVNStatusHandler handler = new ISVNStatusHandler() {
+ public void handleStatus(SVNStatus status) throws SVNException {
+ if ((acceptedStatusType.size() == 0 &&
+ status.getContentsStatus() != SVNStatusType.STATUS_NONE &&
+ status.getContentsStatus() != SVNStatusType.STATUS_NORMAL) ||
+ acceptedStatusType.contains(status.getContentsStatus())) {
+ File statusFile = status.getFile();
+ if (statusFile.exists() && (!statusFile.isDirectory() ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED)) {
+ // on ne met pas les repertoires pere dans le status
+ // car en fait ca veut dire qu'un fichier/rep dans ce
+ // repertoire a ete ajout/modifier/delete, et on l'aura
+ // aussi dans les resultats et ca suffit
+ result.put(statusFile, status);
+ }
+ }
+ }
+ };
+ getSVNManager().getStatusClient().doStatus(file,
+ recurse,
+ false, // on remote
+ !acceptedStatusType.contains(SVNStatusType.STATUS_NORMAL), // report only change file,
+ acceptedStatusType.contains(SVNStatusType.STATUS_IGNORED), // includeIgnored,
+ handler);
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
+ }
+
+ protected Map<File, SVNStatus> getRemoteStatus(File file, boolean recurse, SVNStatusType ... wanted) throws VCSException {
+ try {
+ if (file == null) {
+ file = getLocalRepository();
+ }
+
+ final Map<File, SVNStatus> result = new HashMap<File, SVNStatus>();
+ final Set<SVNStatusType> acceptedStatusType =
+ new HashSet<SVNStatusType>(Arrays.asList(wanted));
+
+ ISVNStatusHandler handler = new ISVNStatusHandler() {
+ public void handleStatus(SVNStatus status) throws SVNException {
+ if ((acceptedStatusType.size() == 0 &&
+ status.getRemoteContentsStatus() != SVNStatusType.STATUS_NONE &&
+ status.getRemoteContentsStatus() != SVNStatusType.STATUS_NORMAL) ||
+ acceptedStatusType.contains(status.getRemoteContentsStatus())) {
+ File statusFile = status.getFile();
+ if (statusFile.exists() && (!statusFile.isDirectory() ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED ||
+ status.getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED)) {
+ // on ne met pas les repertoires pere dans le status
+ // car en fait ca veut dire qu'un fichier/rep dans ce
+ // repertoire a ete ajout/modifier/delete, et on l'aura
+ // aussi dans les resultats et ca suffit
+ result.put(statusFile, status);
+ }
+ }
+ }
+ };
+ getSVNManager().getStatusClient().doStatus(file,
+ recurse,
+ true, // on remote
+ !acceptedStatusType.contains(SVNStatusType.STATUS_NORMAL), // report only change file,
+ acceptedStatusType.contains(SVNStatusType.STATUS_IGNORED), // includeIgnored,
+ handler);
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
+ }
+
public Map<File, String> getChanglog(List<File> files) {
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -299,31 +429,65 @@
}
public boolean isUpToDate(File file) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ try {
+ SVNStatus status = getSVNManager().getStatusClient().doStatus(file,
+ true); // on remote
+ boolean result = true; // FIXME status.getContentsStatus().
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
}
- public boolean update(File file, boolean recurse) throws VCSException {
+ public List<File> update(File file, boolean recurse) throws VCSException {
+ List<File> result = new ArrayList<File>();
try {
+ if (file == null) {
+ file = getLocalRepository();
+ }
if (!accept(file)) {
throw new VCSException("Can't update file that not in local repository");
}
- while (!file.getParentFile().exists()) {
- update(file.getParentFile(), false);
+ if (fireAction(VCSActionEvent.UPDATE, file)) {
+ // si le repertoire pere, n'est pas encore dans le repo local
+ // il faut aussi l'ajouter
+ if (!file.getParentFile().exists()) {
+ update(file.getParentFile(), false);
+ }
+ getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, recurse);
+
+ // recherche de tous les fichiers locaux en conflit
+ Map<File, SVNStatus> status = getLocalStatus(file, recurse, SVNStatusType.STATUS_CONFLICTED);
+ if (status.size() > 0) {
+ result.addAll(status.keySet());
+ // on supprime les conflits pour pouvoir commiter convenablement
+ // les fichiers
+ getSVNManager().getWCClient().doResolve(file, recurse);
+ }
}
- getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, recurse);
} catch (SVNException eee) {
throw new VCSException("Can't update files", eee);
}
- return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
+ return result;
}
public boolean isWriteable() throws VCSException {
- String login = getLogin();
- String tag = getTag();
+
+ // si on est clairement en anonyme
+ boolean result = writeable;
+ if (writeable) {
+ // check normal rules
+ String login = getLogin();
+ result = result && login != null && !"".equals(login) && !"anonymous".equals(login);
+ // meme s'il n'y a pas d'utilisateur, mais qu'on utilise le protocole file:// on est writeable
+ result = result || getProtocol().startsWith("file");
+ // ou que le repertoire n'est pas utilisable pour ce type de vcs
+ result = result && isValidLocalRepository();
+ // ou que l'on est dans un tag, donc par convention not writeable
+ result = result && !getTag().startsWith("/tags");
+ }
- boolean result = login != null && !"".equals(login) && !"anonymous".equals(login);
- result = result && !tag.startsWith("/tags");
-
+ // on indique que l'utilisateur n'a pas le droit d'ecrire
return result;
}
@@ -348,9 +512,15 @@
try {
File localRoot = getLocalRepository();
SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
- String root = info.getCopyFromURL().toDecodedString();
String url = info.getURL().toDecodedString();
- String result = url.substring(root.length());
+ String result = "/trunk";
+ if (!url.endsWith("/trunk")) {
+ // on est pas sur le trunk, on est soit sur un tag ou une
+ // branche, dans les deux cas, il faut descendre de 2 /
+ int i = url.lastIndexOf("/");
+ i = url.lastIndexOf("/", i-1);
+ result = url.substring(i);
+ }
return result;
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
@@ -363,13 +533,21 @@
if (version != null) {
tag = "/tags/" + version;
}
+
+ String currantTag = getTag();
+ if (!tag.equals(currantTag)) {
+ // on ne fait le switch que si le tag change rellement, sinon
+ // c equivalent a faire un update, ce que l'on ne souhaite pas
+ // forcement
+ if (fireAction(VCSActionEvent.SWITCH)) {
+ File localRoot = getLocalRepository();
- File localRoot = getLocalRepository();
-
- SVNURL newUrl = getRemoteURL();
- newUrl = newUrl.appendPath(tag, true);
-
- getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ SVNURL newUrl = getRemoteURL();
+ newUrl = newUrl.appendPath(tag, true);
+
+ getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ }
+ }
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
}
Added: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VetoableActionListener.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -0,0 +1,46 @@
+/*
+ * 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.vcs;
+
+import java.io.File;
+
+/**
+ * Permet a une action d'etre interdite avant qu'elle ne soit faite. Pour cela
+ * Il faut implanter cette classe pour surveiller les actions, et l'enregistrer
+ * en tant que listener d'action sur le vcs.
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface VetoableActionListener {
+
+ /**
+ * Permet d'arreter l'action qui souhaite etre faite, si on retourne false
+ * @param vcs le vcs qui va faire l'action
+ * @param action l'action que l'on souhaite faire
+ * @param files les fichiers impactes par l'action
+ * @return vrai si l'action peut-etre faite, false pour interdire l'action
+ */
+ public boolean canDoAction(VCS vcs, VCSActionEvent action, File ... files);
+
+}
Modified: trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-19 18:37:13 UTC (rev 1305)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-20 13:06:19 UTC (rev 1306)
@@ -52,6 +52,7 @@
static File template = new File("/tmp/testsvn-template");
static File remoteRepo = new File("/tmp/testsvn-repo");
static File localRepo = new File("/tmp/testsvn-local");
+ static File localRepoTrunk = new File("/tmp/testsvn-localTrunk");
static {
try {
@@ -65,6 +66,9 @@
if (localRepo.exists()) {
FileUtil.deleteRecursively(localRepo);
}
+ if (localRepoTrunk.exists()) {
+ FileUtil.deleteRecursively(localRepoTrunk);
+ }
// creation de l'instance de notre VCS pour les tests
// on le fait au debut pour que la l'init de la lib svn soit fait
@@ -200,9 +204,21 @@
@Test
public void testAll() throws Exception {
System.out.println("checkout");
+ // trunk contient une copie complete de trunk, elle permet de test
+ // status lors que l'on fait des commits sur le trunk sur instance
+ VCSSVN trunk = new VCSSVN(
+ localRepoTrunk,
+ "file",
+ "",
+ remoteRepo.getAbsolutePath() + "/" + "isis-fish-data",
+ null,
+ "", "");
+ trunk.checkout(null, true);
+
// on ne checkout rien juste le .svn dans le repertoire racine
instance.checkout(null, false);
assertTrue(instance.getLocalRepository().exists());
+ assertTrue(instance.getTag().startsWith("/trunk"));
// update scripts dir
instance.update(new File(instance.getLocalRepository(), "scripts"), true);
@@ -224,11 +240,56 @@
instance.delete(Arrays.asList(demo), "suppression d'une region");
assertFalse(demo.exists());
+ // ajout d'un fichier sur le trunk avant passage sur le tag
+ File fileToAdd = new File(instance.getLocalRepository(), "newfile.txt");
+ String lecontent = "Le nouveau fichier";
+ FileUtil.writeString(fileToAdd, lecontent);
+ instance.add(Arrays.asList(fileToAdd), "ajout d'un fichier");
+
// test switchTag
instance.setTag(new VersionNumber(3, 1, 0));
+ assertTrue(instance.getTag().startsWith("/tags/3.1.0"));
assertEquals(fileContentTag, FileUtil.readAsString(version));
assertTrue(demo.exists());
+ // recherche du status des fichiers
+ File fileVersion = new File(trunk.getLocalRepository(), "scripts" + File.separator + "version.txt");
+ File fileDeleted = new File(trunk.getLocalRepository(), "regions" + File.separator + "DemoRegion");
+ Map map = trunk.getRemoteStatus(trunk.getLocalRepository(), true);
+ assertEquals(2, map.size()); // version.txt modifie, DemoRegion supprimee
+ assertTrue(map.containsKey(fileVersion));
+ assertTrue(map.containsKey(fileDeleted));
+
+ // modif dans repo trunk de version pour qu'il y ait un conflit
+ FileUtil.writeString(fileVersion, "Le nouveau content de version");
+
+ // update global du repo trunk
+ List<File> conflictFile = trunk.update(null, true);
+ System.out.println("conflictFile: " + conflictFile);
+ assertEquals(1, conflictFile.size());
+ assertTrue(conflictFile.contains(fileVersion));
+
+ File fileAdded = new File(trunk.getLocalRepository(), "newfile.txt");
+ assertEquals(lecontent, FileUtil.readAsString(fileAdded));
+ assertFalse(fileDeleted.exists());
+
+ // recherche du status des fichiers en remote, il ne doit plus y avoir de diff
+ Map map2 = trunk.getRemoteStatus(trunk.getLocalRepository(), true);
+ assertEquals(0, map2.size());
+
+ // il doit toujours y avoir version.txt qui est modifier localement
+ Map map3 = trunk.getLocalStatus(trunk.getLocalRepository(), true);
+ assertEquals(1, map3.size());
+ assertTrue(map3.containsKey(fileVersion));
+
+ // on commit le fichier version.txt pour verifier qu'en local et remote
+ // il n'y a plus de modif
+ trunk.commit(Arrays.asList(fileVersion), "Commit fichier version, avec les conflits");
+ Map map4 = trunk.getRemoteStatus(trunk.getLocalRepository(), true);
+ assertEquals(0, map4.size());
+ Map map5 = trunk.getLocalStatus(trunk.getLocalRepository(), true);
+ assertEquals(0, map5.size());
+
}
@@ -240,7 +301,14 @@
System.out.println("add");
List<File> files = new ArrayList<File>();
String msg = "";
- instance.add(files, msg);
+ instance.setTag(new VersionNumber(3, 1, 0));
+ try {
+ instance.add(files, msg);
+ assertFalse("Une exception aurait du etre leve, car instance est" +
+ " sur un tag, donc en readonly", true);
+ } catch(VCSException eee) {
+ assertTrue("On a bien pas la droit d'ajouter des fichiers", true);
+ }
}
/**
1
0
r1305 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/actions java/fr/ifremer/isisfish/datastore java/fr/ifremer/isisfish/vcs test/fr/ifremer/isisfish/vcs
by bpoussin@users.labs.libre-entreprise.org Aug. 19, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 19, 2008
Aug. 19, 2008
Author: bpoussin
Date: 2008-08-19 18:37:13 +0000 (Tue, 19 Aug 2008)
New Revision: 1305
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
Log:
Nouvelle implantation de vcs fonctionne avec les tests unitaires pour:
- checkout
- update
- delete
- setTag
- isTag
Par contre svn+ssh n'arrive pas a s'authentifier
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -80,19 +80,37 @@
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);
@@ -572,7 +590,7 @@
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"),
+// 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"),
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -33,6 +33,7 @@
import com.sun.tools.internal.xjc.generator.util.ExistingBlockReference;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.FormuleStorage;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.RuleStorage;
@@ -51,8 +52,10 @@
import fr.ifremer.isisfish.util.StringConverter;
import fr.ifremer.isisfish.util.TimeUnitConverter;
import fr.ifremer.isisfish.vcs.VCS;
+import fr.ifremer.isisfish.vcs.VCSException;
import fr.ifremer.isisfish.vcs.VCSFactory;
import java.io.File;
+import java.text.SimpleDateFormat;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.logging.LogFactory;
import static org.codelutin.i18n.I18nf._;
@@ -66,7 +69,9 @@
import org.swixml.ConverterLibrary;
import org.codelutin.i18n.I18n;
+import org.codelutin.topia.TopiaException;
import org.codelutin.util.LocaleConverter;
+import org.codelutin.util.VersionNumber;
import static javax.swing.JOptionPane.showOptionDialog;
@@ -196,16 +201,77 @@
* Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
* l'utilisateur
*/
- static public void initVCS() {
+ static public void initVCS() throws VCSException {
// init vcs
vcs = VCSFactory.createVCS(config);
- // check connection status
+ // Si le repo local exist mais n'est pas du bon type, on renome ce repertoire
+ File local = config.getDatabaseDirectory();
+ if (local.exists()) {
+ if(!vcs.isValidLocalRepository()) {
+ File localBackup = new File(local.getParentFile(),
+ local.getName() + "-" +
+ new SimpleDateFormat().format(new Date()));
+ if (!local.renameTo(localBackup)) {
+ throw new IsisFishRuntimeException(
+ "Can rename local repository that don't use svn");
+ }
+ }
+ }
+
+ // Si le repo local n'existe pas on fait un check out complet
+ if (!local.exists()) {
+ // 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;
+ }
+
+ vcs.checkout(tag, false);
+
+ AnalysePlanStorage.checkout();
+ ExportStorage.checkout();
+ FormuleStorage.checkout();
+ RuleStorage.checkout();
+ ScriptStorage.checkout();
+ SimulatorStorage.checkout();
+
+ 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()) {
+ throw new IsisFishRuntimeException("Can't find local repository");
+ }
+
+ // check protocol, user, host
vcs.checkProtocol();
- // check release
- vcs.checkRelease();
+ // 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")) {
+
+ // 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();
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -57,7 +57,7 @@
File dest = config.getDatabaseDirectory();
File file = new File(dest, "pom.xml");
log.info(_("Checkout pom.xml to %s", file));
- vcs.update(Arrays.asList(file));
+ vcs.update(file, false);
}
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-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -199,7 +199,7 @@
* @return le sotrage après checkout
*/
static public RegionStorage checkout(String name) throws VCSException, TopiaException {
- checkout(IsisFish.config.getDatabaseDirectory(), REGION_PATH + "/" + name);
+ checkout(IsisFish.config.getDatabaseDirectory(), REGION_PATH + File.separator + name);
RegionStorage region = getRegion(name);
if (region != null) {
File file = region.getDataBackupFile();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -31,6 +31,7 @@
package fr.ifremer.isisfish.datastore;
+import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.vcs.VCS;
import fr.ifremer.isisfish.vcs.VCSException;
@@ -46,6 +47,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import org.codelutin.util.VersionNumber;
/**
* Classe permettant de géré l'interaction avec le cvs
@@ -231,7 +233,7 @@
*/
public void update() throws VCSException {
prepare();
- getVCS().update(Arrays.asList(getFile()));
+ getVCS().update(getFile(), true);
}
public boolean isUpToDate() throws VCSException {
@@ -240,7 +242,7 @@
}
/**
- * Permet de ramener tout un répertoire du VCSNone. Utile seulement pour le
+ * Permet de ramener tout un répertoire du VCS. Utile seulement pour le
* premier lancement pour scipts et exports.
*
* @param destDir le repertoire parent
@@ -249,7 +251,15 @@
*
*/
static public void checkout(File destDir, String module) throws VCSException {
- getVCS().checkout(destDir, module, true);
+ // Si on utilise pas le bon tag on change de tag
+ VersionNumber tag = IsisConfig.getApiVersion();
+ if (!getVCS().isTag(tag)) {
+ // pas de tag pour cette version, on checkout le trunk
+ tag = null;
+ }
+
+ File file = new File(destDir, module);
+ getVCS().update(file, true);
}
/**
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -37,6 +37,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.topia.TopiaException;
+import org.codelutin.util.VersionNumber;
/**
*
@@ -55,19 +56,17 @@
protected String protocol;
protected String host;
protected String path;
- protected String tag;
protected File sshKeyFile;
protected String login;
protected String password;
public AbstractVCS(File localRepository,
- String protocol, String host, String path, String tag,
+ String protocol, String host, String path,
File sshKeyFile, String login, String password) {
this.localRepository = localRepository;
this.protocol = protocol;
this.host = host;
this.path = path;
- this.tag = tag;
this.sshKeyFile = sshKeyFile;
this.login = login;
this.password = password;
@@ -85,34 +84,41 @@
return protocol;
}
- public void setProtocol(String protocol) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setProtocol(String protocol) throws VCSException {
this.protocol = protocol;
+ checkProtocol();
}
public String getHost() {
return host;
}
- public void setHost(String host) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setHost(String host) throws VCSException {
this.host = host;
+ checkProtocol();
}
public String getPath() {
return path;
}
- public void setPath(String path) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setPath(String path) throws VCSException {
this.path = path;
+ checkProtocol();
}
- public String getTag() {
- return tag;
- }
-
- public void setTag(String tag) {
- this.tag = tag;
- }
-
public File getSshKeyFile() {
return sshKeyFile;
}
@@ -125,8 +131,13 @@
return login;
}
- public void setLogin(String login) {
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ public void setLogin(String login) throws VCSException {
this.login = login;
+ checkProtocol();
}
public String getPassword() {
@@ -143,74 +154,13 @@
public boolean isVersionnableAbleFile(File file) {
String filename = file.getName();
- return !".svn".equals(filename) && !"CVS".equals(filename) && !filename.endsWith("~");
+ return !".svn".equals(filename) && !"CVS".equals(filename) &&
+ !filename.endsWith("~") &&
+ // si le fichier n'appartient pas a loca repository, il ne pourra pas etre versionne
+ file.getAbsolutePath().startsWith(getLocalRepository().getAbsolutePath());
}
/**
- * Verifie la connexion et si le protocole a change, switch le repository
- * pour utiliser le nouveau protocole. Si on est en mode interface (mode
- * graphique) et que le switch se passe mal, demande a l'utilisateur
- * de nouvelle valeur pour le protocole (+ identifiant, ...)
- */
- public void checkProtocol() throws VCSException {
- if (isConnected()) {
- // Si le repo local exist mais n'est pas en svn, on renome ce repertoire
- // FIXME a faire
- File local = getLocalRepository();
- if(local.exists()) {
- File svn = new File(local, ".svn");
- if (!svn.exists()) {
- File localBackup = new File(local.getParentFile(),
- local.getName() + "-" +
- new SimpleDateFormat().format(new Date()));
- if(!local.renameTo(localBackup)) {
- throw new IsisFishRuntimeException("Can rename local repository that don't use svn");
- }
- }
- }
-
- // Si le repo local n'existe pas on fait un check out complet
- if (!local.exists()) {
- // On modifie la version a a checkouter pour etre sur d'avoir la bonne
-
- AnalysePlanStorage.checkout();
- ExportStorage.checkout();
- FormuleStorage.checkout();
- RuleStorage.checkout();
- ScriptStorage.checkout();
- SimulatorStorage.checkout();
-
- checkout(getLocalRepository(), SimulationStorage.SIMULATION_PATH, false);
- checkout(getLocalRepository(), RegionStorage.REGION_PATH, false);
- try {
- RegionStorage.checkout("DemoRegion");
- } catch (TopiaException eee) {
- log.warn("Can't checkout DemoRegion", eee);
- }
- }
-
- if (!local.exists()) {
- throw new IsisFishRuntimeException("Can't find local repository");
- }
- // si le protocole a change on le change
-// if (getLocalTag() != )
- // FIXME a faire
- }
- }
-
- /**
- * Verifie que l'utilisateur utilise la bonne version de script en fonction
- * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
- * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
- */
- public void checkRelease() throws VCSException {
- if (isConnected()) {
- // Si on utilise pas la bonne branche on change de branche
- // FIXME a faire
- }
- }
-
- /**
* Verifie si tous les fichiers du repository local sont les dernieres
* version par rapport au serveur. Si ce n'est pas le cas et que l'on est
* en mode interactif (mode graphique), on lui propose de mettre a jour
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -58,10 +58,6 @@
*/
public static final String VCS_PATH = "vcs.path";
/**
- * repository tag to used ex: "/branches/3.2" or "HEAD", "/trunk" or ""
- */
- public static final String VCS_TAG = "vcs.tag";
- /**
* user login to access vcs ex: bpoussin
*/
public static final String VCS_USER_NAME = "vcs.username";
@@ -74,33 +70,39 @@
* Get local repository directory
*/
public File getLocalRepository();
-
+
/**
- * Get the server address of the local file
- * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
- *
- * @param f file that we want to know the source
+ * Return true, if local repository is valid repository for actuel vcs
* @return
*/
- public String getLocalRepositorySource(File f) throws VCSException;
+ public boolean isValidLocalRepository();
/**
- * Get the root server address of the local repository
- * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
- *
+ * Return true, if local repository is writeable
+ * (use trunk and is not anonymous)
* @return
*/
- public String getLocalRepositoryRoot() throws VCSException;
+ public boolean isWriteable() throws VCSException;
+// /**
+// * Get the server address of the local file
+// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
+// *
+// * @param f file that we want to know the source
+// * @return
+// */
+// public String getLocalRepositorySource(File f) throws VCSException;
+//
+// /**
+// * Get the root server address of the local repository
+// * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
+// *
+// * @return
+// */
+// public String getLocalRepositoryRoot() throws VCSException;
+
/**
- * Usefull to permit to use VCSNone as filter
- * @param pathname
- * @return
- */
- public boolean accept(File pathname);
-
- /**
- * Commit specified files
+ * Commit specified files, if files is null, all files are commited
* @param files files to commit
* @param msg message used to commit
* @throws fr.ifremer.isisfish.vcs.VCSException
@@ -116,32 +118,22 @@
public void add(List<File> files, String msg) throws VCSException;
/**
- * get repository module on server and put it in destDir
- * @param destDir destination directory
- * @param module module name
+ * get repository on server and put it in localdir
+ * @param tag tag to used, null = /trunk other is tags/[tag]
* @param recurse if file is directory checkout sub file
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public void checkout(File destDir, String module, boolean recurse) throws VCSException;
+ public void checkout(VersionNumber tag, boolean recurse) throws VCSException;
+// /**
+// * switch to new protocole, can be used to switch between anonymous and
+// * authenticate protocole
+// * @param protocoleType
+// * @throws fr.ifremer.isisfish.vcs.VCSException
+// */
+// public void switchProtocole(String protocoleType) throws VCSException;
+
/**
- * Change repository tag, used when we use some tag and we want to go to
- * trunk.
- * @param version version to go, if null trunk is used, otherwize
- * tags/version is used
- * @throws fr.ifremer.isisfish.vcs.VCSException
- */
- public void switchTag(VersionNumber version) throws VCSException;
-
- /**
- * switch to new protocole, can be used to switch between anonymous and
- * authenticate protocole
- * @param protocoleType
- * @throws fr.ifremer.isisfish.vcs.VCSException
- */
- public void switchProtocole(String protocoleType) throws VCSException;
-
- /**
* Delete and commit files in server repository
* @param files file to delete
* @param msg message for commit
@@ -155,7 +147,7 @@
* @param files
* @return changelog for each file
*/
- public Map<File, String> getChanglog(List<File> files);
+ public Map<File, String> getChanglog(List<File> files) throws VCSException;
/**
* show diff between local file and repository file
@@ -176,13 +168,13 @@
* get list of new or modified files on server
* @return list of modified or new files
*/
- public List<File> getUpdatedFile();
+ public List<File> getUpdatedFile() throws VCSException;
/**
* Ask if there are some new or modified files on server
* @return true if new file available
*/
- public boolean haveUpdate();
+ public boolean haveUpdate() throws VCSException;
/**
* Get connection state.
@@ -203,7 +195,7 @@
* @param version version number like 3.2
* @return true if tag found with this name
*/
- public boolean isTag(VersionNumber version);
+ public boolean isTag(VersionNumber version) throws VCSException;
/**
* Check if file is uptodate
@@ -231,7 +223,7 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(List<File> files) throws VCSException;
+ public boolean update(File file, boolean recurse) throws VCSException;
/**
* Verifie la connexion et si le protocole a change, switch le repository
@@ -250,11 +242,69 @@
*/
void checkFileStatus() throws VCSException;
+// /**
+// * Verifie que l'utilisateur utilise la bonne version de script en fonction
+// * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
+// * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
+// */
+// void checkRelease(VersionNumber version) throws VCSException;
+
+ String getHost();
+
+ String getLogin();
+
+ String getPassword();
+
+ String getPath();
+
+ String getProtocol();
+
+ File getSshKeyFile();
+
/**
- * Verifie que l'utilisateur utilise la bonne version de script en fonction
- * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
- * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
+ * retourne le tag reellement utilise, par exemple si on a fait un
+ * setTag(3.2.0) cette methode retourne "/tags/3.2.0", pour setTag(null)
+ * on retourne "/trunk"
+ * @return
+ * @throws fr.ifremer.isisfish.vcs.VCSException
*/
- void checkRelease() throws VCSException;
+ String getTag() throws VCSException;
+ /**
+ * Change repository tag, used when we use some tag and we want to go to
+ * trunk.
+ * @param version version to go, if null trunk is used, otherwize
+ * tags/version is used
+ * @throws fr.ifremer.isisfish.vcs.VCSException
+ */
+ public void setTag(VersionNumber version) throws VCSException;
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setHost(String host) throws VCSException;
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setLogin(String login) throws VCSException;
+
+ void setPassword(String password);
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setPath(String path) throws VCSException;
+
+ /**
+ * checkProtocol is automaticaly done
+ * @param path
+ */
+ void setProtocol(String protocol) throws VCSException;
+
+ void setSshKeyFile(File sshKeyFile);
+
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -69,7 +69,6 @@
String protocol = config.getOption(VCS.VCS_PROTOCOLE);
String host = config.getOption(VCS.VCS_HOST_NAME);
String path = config.getOption(VCS.VCS_PATH);
- String tag = config.getOption(VCS.VCS_TAG);
File sshKeyFile = config.getOptionAsFile(VCS.VCS_SSH_KEY_FILE);
String login = config.getOption(VCS.VCS_USER_NAME);
String password = config.getOption(VCS.VCS_USER_PASSWORD);
@@ -77,11 +76,11 @@
try {
Class clazz = (Class) ConvertUtils.convert(classname, Class.class);
result = (VCSNone) ConstructorUtils.invokeConstructor(clazz,
- new Object[]{dataDir, protocol, host, path, tag, sshKeyFile, login, password});
+ new Object[]{dataDir, protocol, host, path, sshKeyFile, login, password});
} catch (Exception eee) {
log.error(_("Can't instanciate wanted VCS (%s), use default",
config.getOption(VCS.VCS_TYPE)), eee);
- result = new VCSNone(dataDir, protocol, host, path, tag, sshKeyFile, login, password);
+ result = new VCSNone(dataDir, protocol, host, path, sshKeyFile, login, password);
}
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -47,17 +47,22 @@
static private Log log = LogFactory.getLog(VCSNone.class);
public VCSNone(File localRepository,
- String protocol, String host, String path, String tag,
+ String protocol, String host, String path,
File sshKeyFile, String login, String password) {
- super(localRepository, protocol, host, path, tag, sshKeyFile, login, password);
+ super(localRepository, protocol, host, path, sshKeyFile, login, password);
}
+ public boolean isValidLocalRepository() {
+ return true;
+ }
+
+
/**
* look on server if version is tag repository
* @param version version number like 3.2
* @return true if tag found with this name
*/
- public boolean isTag(VersionNumber version) {
+ public boolean isTag(VersionNumber version) throws VCSException {
return false;
}
@@ -65,7 +70,7 @@
* Ask if there are some new or modified files on server
* @return true if new file available
*/
- public boolean haveUpdate() {
+ public boolean haveUpdate() throws VCSException {
return false;
}
@@ -73,7 +78,7 @@
* get list of new or modified files on server
* @return list of modified or new files
*/
- public List<File> getUpdatedFile() {
+ public List<File> getUpdatedFile() throws VCSException {
return new ArrayList<File>();
}
@@ -108,7 +113,7 @@
* @param b // FIXME
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public void checkout(File destDir, String module, boolean b) throws VCSException {
+ public void checkout(VersionNumber tag, boolean b) throws VCSException {
throw new VCSException("Can't checkout with dummy VCS");
}
@@ -176,25 +181,35 @@
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(List<File> files) throws VCSException {
+ public boolean update(File file, boolean recurse) throws VCSException {
throw new VCSException("Can't update file with dummy VCS");
}
- public void switchTag(VersionNumber version) throws VCSException {
- // do nothing
+// public String getLocalRepositorySource(File f) throws VCSException {
+// throw new VCSException("Not supported.");
+// }
+//
+// public String getLocalRepositoryRoot() throws VCSException {
+// throw new VCSException("Not supported.");
+// }
+//
+// public String getLocalRepositoryTag() throws VCSException {
+// throw new VCSException("Not supported.");
+// }
+
+ public void checkProtocol() throws VCSException {
+ // nothing to do
}
- public void switchProtocole(String protocoleType) throws VCSException {
- // do nothing
+ public boolean isWriteable() throws VCSException {
+ return false;
}
- public String getLocalRepositorySource(File f) throws VCSException {
- throw new VCSException("Not supported.");
+ public void setTag(VersionNumber version) throws VCSException {
+ // do nothing
}
- public String getLocalRepositoryRoot() throws VCSException {
- throw new VCSException("Not supported.");
+ public String getTag() throws VCSException {
+ return null;
}
-
-
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -19,12 +19,10 @@
package fr.ifremer.isisfish.vcs;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import static org.codelutin.i18n.I18nf._;
-import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
@@ -33,6 +31,10 @@
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
+import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
+import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
+import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.wc.ISVNOptions;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNInfo;
@@ -51,21 +53,21 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VCSSVN.class);
-
- protected String protocol;
- protected String host;
- protected String path;
- protected String tag;
- protected File sshKeyFile;
- protected String login;
- protected String password;
-
+
protected SVNClientManager svnManager = null;
public VCSSVN(File localRepository,
- String protocol, String host, String path, String tag,
+ String protocol, String host, String path,
File sshKeyFile, String login, String password) {
- super(localRepository, protocol, host, path, tag, sshKeyFile, login, password);
+ super(localRepository, protocol, host, path, sshKeyFile, login, password);
+ if (protocol.startsWith("file")) {
+ FSRepositoryFactory.setup();
+ } else if (protocol.startsWith("http")) {
+ DAVRepositoryFactory.setup();
+ } else {
+ //svn://, svn+xxx:// (svn+ssh:// in particular)
+ SVNRepositoryFactoryImpl.setup();
+ }
}
protected SVNClientManager getSVNManager() {
@@ -75,12 +77,16 @@
if (getProtocol().contains("ssh")) {
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
- options.setPropertyValue("svnkit.ssh2.key", getSshKeyFile().getAbsolutePath());
- options.setPropertyValue("svnkit.ssh2.username", login);
- if (passwd != null && !"".equals(passwd)) {
- options.setPropertyValue("svnkit.ssh2.passphrase", passwd);
- }
- svnManager = SVNClientManager.newInstance(options);
+// options.setPropertyValue("svnkit.ssh2.key", getSshKeyFile().getAbsolutePath());
+// options.setPropertyValue("svnkit.ssh2.username", login);
+// if (passwd != null && !"".equals(passwd)) {
+// options.setPropertyValue("svnkit.ssh2.passphrase", passwd);
+// }
+ ISVNAuthenticationManager auth =
+ SVNWCUtil.createDefaultAuthenticationManager(
+ SVNWCUtil.getDefaultConfigurationDirectory(),
+ login, passwd, sshKeyFile, passwd, false);
+ svnManager = SVNClientManager.newInstance(options, auth);
} else {
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
svnManager = SVNClientManager.newInstance(options, login, passwd);
@@ -89,34 +95,81 @@
return svnManager;
}
- protected SVNURL getRemoteURL() throws SVNException {
- SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
- return remoteURL;
+ public boolean isValidLocalRepository() {
+ File local = getLocalRepository();
+ File svn = new File(local, ".svn");
+ boolean result = svn.exists();
+ return result;
}
-
- public String getLocalRepositoryRoot() throws VCSException {
+
+ @Override
+ public void checkProtocol() throws VCSException {
try {
File localRoot = getLocalRepository();
SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
- SVNURL url = info.getCopyFromURL();
- String result = url.toDecodedString();
- return result;
+ SVNURL url = info.getURL();
+
+ // si un des constituants de l'url a change on fait un switch relocate
+ boolean mustSwitch = false;
+ if (!url.getProtocol().equals(getProtocol())) {
+ log.info(_("repository protocol change from %s to %s",
+ url.getProtocol(), getProtocol()));
+ mustSwitch = true;
+ }
+ if (!url.getUserInfo().equals(getLogin())) {
+ log.info(_("repository user change from %s to %s",
+ url.getUserInfo(), getLogin()));
+ mustSwitch = true;
+ }
+ if (!url.getHost().equals(getHost())) {
+ log.info(_("repository host change from %s to %s",
+ url.getHost(), getHost()));
+ mustSwitch = true;
+ }
+
+ if (mustSwitch) {
+ String path = url.getPath();
+ int port = url.getPort();
+ SVNURL newUrl = SVNURL.create(getProtocol(), getLogin(),
+ getHost(), port, path, true);
+ getSVNManager().getUpdateClient().doRelocate(localRoot, url, newUrl, true);
+ }
} catch (SVNException eee) {
throw new VCSException(_("Can't get address on serveur of local repository"), eee);
}
+
}
- public String getLocalRepositorySource(File f) throws VCSException {
- try {
- // TODO perhaps, check if file is in getLocalRepository() file ?
- SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
- SVNURL url = info.getURL();
- String result = url.toDecodedString();
- return result;
- } catch (SVNException eee) {
- throw new VCSException(_("Can't get address on serveur of local repository"), eee);
- }
+
+
+ protected SVNURL getRemoteURL() throws SVNException {
+ SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
+ return remoteURL;
}
+
+// public String getLocalRepositoryRoot() throws VCSException {
+// try {
+// File localRoot = getLocalRepository();
+// SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+// SVNURL url = info.getCopyFromURL();
+// String result = url.toDecodedString();
+// return result;
+// } catch (SVNException eee) {
+// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+// }
+// }
+//
+// public String getLocalRepositorySource(File f) throws VCSException {
+// try {
+// // TODO perhaps, check if file is in getLocalRepository() file ?
+// SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
+// SVNURL url = info.getURL();
+// String result = url.toDecodedString();
+// return result;
+// } catch (SVNException eee) {
+// throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+// }
+// }
/**
* Retourne l'url du repository distant
@@ -125,15 +178,23 @@
*/
public String getRemoteRepository() {
String proto = getProtocol();
+ String user = getLogin();
String host = getHost();
String path = getPath();
- String tag = getTag();
- if (tag == null && "".equals(tag)) {
- tag = "/trunk";
+ String result = null;
+
+ if (proto.startsWith("file")) {
+ result = proto + "://" + path;
+ } else {
+ if (user == null) {
+ user = "";
+ } else if (!"".equals(user)) {
+ user = user + "@";
+ }
+
+ result = proto + "://" + user + host + path;
}
-
- String result = proto + "://" + host + path + tag;
return result;
}
@@ -146,9 +207,15 @@
public void commit(List<File> files, String msg) throws VCSException {
try {
+ if (files == null) {
+ files = Arrays.asList(getLocalRepository());
+ }
SVNCommitInfo commitInfo = getSVNManager().getCommitClient()
.doCommit(files.toArray(new File[files.size()]),
- false, msg, false, true);
+ false, // keep lock
+ msg,
+ false, // force
+ true); // recurse
log.debug("to revision " + commitInfo.getNewRevision());
} catch (SVNException eee) {
throw new VCSException("Can't commit files", eee);
@@ -158,7 +225,7 @@
public void add(List<File> files, String msg) throws VCSException {
try {
for (File file : files) {
- // FIXME check argument in documentation
+ // FIXME ajoute dans le ignore les fichiers regions/<region>/data/*
getSVNManager().getWCClient().doAdd(file,
true, // force add to allready added file (no error)
false, // don't create dir if not exist
@@ -172,14 +239,22 @@
}
}
- public void checkout(File destDir, String module, boolean recurse) throws VCSException {
+ public void checkout(VersionNumber tag, boolean recurse) throws VCSException {
try {
- SVNURL source = getRemoteURL().appendPath(module, false);
- File destination = new File(destDir, module);
- getSVNManager().getUpdateClient().doCheckout(source, destination, null,
+ String tagPath = "/trunk/";
+ if (tag != null) {
+ tagPath = "/tags/" + tag + "/";
+ }
+
+ SVNURL source = getRemoteURL().appendPath(tagPath, false);
+
+ File destDir = getLocalRepository();
+ destDir.mkdirs();
+
+ getSVNManager().getUpdateClient().doCheckout(source, destDir, null,
SVNRevision.HEAD, recurse);
} catch (SVNException eee) {
- throw new VCSException(_("Can't checkout file %s", module), eee);
+ throw new VCSException(_("Can't checkout"), eee);
}
}
@@ -223,32 +298,81 @@
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean isTag(VersionNumber version) {
+ public boolean isUpToDate(File file) throws VCSException {
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean isUpToDate(File file) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public boolean update(File file, boolean recurse) throws VCSException {
+ try {
+ if (!accept(file)) {
+ throw new VCSException("Can't update file that not in local repository");
+ }
+ while (!file.getParentFile().exists()) {
+ update(file.getParentFile(), false);
+ }
+ getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, recurse);
+ } catch (SVNException eee) {
+ throw new VCSException("Can't update files", eee);
+ }
+ return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
}
- public boolean update(List<File> files) throws VCSException {
- for (File file : files) {
+ public boolean isWriteable() throws VCSException {
+ String login = getLogin();
+ String tag = getTag();
+
+ boolean result = login != null && !"".equals(login) && !"anonymous".equals(login);
+ result = result && !tag.startsWith("/tags");
+
+ return result;
+ }
+
+ public boolean isTag(VersionNumber version) throws VCSException {
+ boolean result = version == null; // le trunk exist toujours
+ if (!result) {
try {
- getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, true);
+ SVNURL url = getRemoteURL();
+ url = url.appendPath("tags/" + version, true);
+ SVNInfo info = getSVNManager().getWCClient().doInfo(url, null, SVNRevision.HEAD);
+ // si le tag n'existe pas, on n'arrive pas ici car une exception
+ // est leve, et donc result reste a faux
+ result = info != null;
} catch (SVNException eee) {
- throw new VCSException("Can't update files", eee);
+ log.debug(_("Tag %s don't exist", version));
}
}
- return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
+ return result;
}
- public void switchTag(VersionNumber version) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public String getTag() throws VCSException {
+ try {
+ File localRoot = getLocalRepository();
+ SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ String root = info.getCopyFromURL().toDecodedString();
+ String url = info.getURL().toDecodedString();
+ String result = url.substring(root.length());
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+ }
}
- public void switchProtocole(String protocoleType) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public void setTag(VersionNumber version) throws VCSException {
+ try {
+ String tag = "/trunk";
+ if (version != null) {
+ tag = "/tags/" + version;
+ }
+
+ File localRoot = getLocalRepository();
+
+ SVNURL newUrl = getRemoteURL();
+ newUrl = newUrl.appendPath(tag, true);
+
+ getSVNManager().getUpdateClient().doSwitch(localRoot, newUrl, SVNRevision.HEAD, true);
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+ }
}
-
}
Modified: trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-19 13:30:52 UTC (rev 1304)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-19 18:37:13 UTC (rev 1305)
@@ -20,355 +20,340 @@
package fr.ifremer.isisfish.vcs;
import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import junit.framework.TestCase;
+import org.codelutin.util.FileUtil;
import org.codelutin.util.VersionNumber;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNClientManager;
+import org.tmatesoft.svn.core.wc.SVNRevision;
/**
*
* @author poussin
*/
-public class VCSSVNTest {
+public class VCSSVNTest extends TestCase {
- VCSSVN instance = null;
+ static VCSSVN instance = null;
public VCSSVNTest() {
}
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
+ static final String fileContentTag = "Version 3.1.0";
+ static final String fileContentTrunk = "Version 3.2.0";
+
+ static File template = new File("/tmp/testsvn-template");
+ static File remoteRepo = new File("/tmp/testsvn-repo");
+ static File localRepo = new File("/tmp/testsvn-local");
- @AfterClass
- public static void tearDownClass() throws Exception {
+ static {
+ try {
+ // un peu de nettoyage
+ if (template.exists()) {
+ FileUtil.deleteRecursively(template);
+ }
+ if (remoteRepo.exists()) {
+ FileUtil.deleteRecursively(remoteRepo);
+ }
+ if (localRepo.exists()) {
+ FileUtil.deleteRecursively(localRepo);
+ }
+
+ // creation de l'instance de notre VCS pour les tests
+ // on le fait au debut pour que la l'init de la lib svn soit fait
+ // par la classe elle meme et ainsi tester que ca marche
+ instance = new VCSSVN(
+ localRepo,
+ "file",
+ "",
+ remoteRepo.getAbsolutePath() + "/" + "isis-fish-data",
+ null,
+ "", "");
+
+
+ ///////////////////////////////////////////////////////////////////
+ //
+ // Creation d'un repo local avec un trunk et un tag
+ // durant le test, on modifie version.txt pour utiliser
+ // fileContentTrunk et modifier le contenu. On peut alors tester
+ // le changement de tag en fonction du contenu du fichier
+ ///////////////////////////////////////////////////////////////////
+
+ // creation d'un template de directory
+ new File(template, "regions" + File.separator + "DemoRegion" + File.separator + "data").mkdirs();
+ new File(template, "simulations" + File.separator + "simu1" + File.separator + "data").mkdirs();
+ new File(template, "scripts").mkdirs();
+ FileUtil.writeString(new File(template, "scripts" + File.separator + "version.txt"), fileContentTag);
+
+ // creation du repo pour les tests
+ SVNRepositoryFactory.createLocalRepository(remoteRepo, false, true);
+
+ // ajout de source dans le repo
+ SVNURL svnURL = SVNURL.parseURIDecoded("file://" + remoteRepo.getAbsolutePath());
+ SVNURL svnRoot = svnURL.appendPath("isis-fish-data", false);
+ SVNURL svnTrunk = svnRoot.appendPath("trunk", false);
+ SVNURL svnTags = svnRoot.appendPath("tags", false);
+
+ SVNClientManager svnManager = SVNClientManager.newInstance();
+ // creation de l'arborescence
+ svnManager.getCommitClient().doMkDir(new SVNURL[]{svnRoot, svnTrunk, svnTags}, "add dir");
+ svnManager.getCommitClient().doImport(template, svnTrunk, "initial import", true, true);
+
+ svnManager.getCopyClient().doCopy(svnTrunk, SVNRevision.HEAD, svnTags.appendPath("3.1.0", false), false, true, "Create tag");
+
+
+
+// instance = new VCSSVN(
+// new File("/tmp/testsvn"),
+//// "svn+ssh",
+// "file",
+// "localhost",
+// "/tmp/svnkit/repos/isis-fish-data",
+// new File("/home/poussin/.ssh/id_dsa"),
+// "poussin", "");
+
+// instance = new VCSSVN(
+// new File("/tmp/testsvn"),
+// "svn",
+// "labs.libre-entreprise.org",
+// "/svnroot/isis-fish-data",
+// null,
+// "anonymous", "anonymous");
+
+// instance = new VCSSVN(
+// new File("/tmp/testsvn"),
+// "svn+ssh",
+// "labs.libre-entreprise.org",
+// "/svnroot/isis-fish-data",
+// null,
+// "anonymous", "anonymous");
+ } catch (Exception eee) {
+ throw new RuntimeException(eee);
+ }
}
- @Before
- public void setUp() {
-// instance = new VCSSVN(config);
+ @Override
+ protected void tearDown() throws Exception {
}
/**
* Test of getSVNManager method, of class VCSSVN.
*/
@Test
- public void getSVNManager() {
+ public void testgetSVNManager() {
System.out.println("getSVNManager");
- VCSSVN instance = null;
- SVNClientManager expResult = null;
SVNClientManager result = instance.getSVNManager();
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ assertNotNull(result);
}
/**
* Test of getRemoteURL method, of class VCSSVN.
*/
@Test
- public void getRemoteURL() throws Exception {
+ public void testgetRemoteURL() throws Exception {
System.out.println("getRemoteURL");
- VCSSVN instance = null;
- SVNURL expResult = null;
+ SVNURL expResult = SVNURL.create("file", null, "", -1,
+ remoteRepo.getAbsolutePath() + "/" + "isis-fish-data", true);
SVNURL result = instance.getRemoteURL();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
-
+
/**
- * Test of getLocalRepositoryRoot method, of class VCSSVN.
- */
- @Test
- public void getLocalRepositoryRoot() throws Exception {
- System.out.println("getLocalRepositoryRoot");
- VCSSVN instance = null;
- String expResult = "";
- String result = instance.getLocalRepositoryRoot();
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of getLocalRepositorySource method, of class VCSSVN.
- */
- @Test
- public void getLocalRepositorySource() throws Exception {
- System.out.println("getLocalRepositorySource");
- File f = null;
- VCSSVN instance = null;
- String expResult = "";
- String result = instance.getLocalRepositorySource(f);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of getRemoteRepository method, of class VCSSVN.
- */
- @Test
- public void getRemoteRepository() {
- System.out.println("getRemoteRepository");
- VCSSVN instance = null;
- String expResult = "";
- String result = instance.getRemoteRepository();
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
* Test of isVersionnableAbleFile method, of class VCSSVN.
*/
@Test
- public void isVersionnableAbleFile() {
+ public void testisVersionnableAbleFile() {
System.out.println("isVersionnableAbleFile");
- File file = null;
- VCSSVN instance = null;
- boolean expResult = false;
- boolean result = instance.isVersionnableAbleFile(file);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ {
+ // un fichier special, on refuse
+ File file = new File(".svn");
+ boolean expResult = false;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ }
+ {
+ // Pas dans le repository local, on refuse
+ File file = new File("Toto.java");
+ boolean expResult = false;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ }
+ {
+ // enfin un bout fichier :)
+ File file = new File(instance.getLocalRepository(), "Toto.java");
+ boolean expResult = true;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ }
}
-
+
/**
- * Test of commit method, of class VCSSVN.
+ * Test of checkout method, of class VCSSVN.
*/
@Test
- public void commit() throws Exception {
- System.out.println("commit");
- List<File> files = null;
- String msg = "";
- VCSSVN instance = null;
- instance.commit(files, msg);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ public void testAll() throws Exception {
+ System.out.println("checkout");
+ // on ne checkout rien juste le .svn dans le repertoire racine
+ instance.checkout(null, false);
+ assertTrue(instance.getLocalRepository().exists());
+
+ // update scripts dir
+ instance.update(new File(instance.getLocalRepository(), "scripts"), true);
+ File version = new File(instance.getLocalRepository(), "scripts" + File.separator + "version.txt");
+ assertTrue(version.exists());
+ assertEquals(fileContentTag, FileUtil.readAsString(version));
+
+ // modification du fichier version.txt
+ FileUtil.writeString(version, fileContentTrunk);
+ instance.commit(null, "modif du fichier version");
+ assertEquals(fileContentTrunk, FileUtil.readAsString(version));
+
+ // recuperation de DemoRegion
+ File demo = new File(instance.getLocalRepository(), "regions" + File.separator + "DemoRegion");
+ instance.update(demo, true);
+ assertTrue(demo.exists());
+
+ // suppression de DemoRegion
+ instance.delete(Arrays.asList(demo), "suppression d'une region");
+ assertFalse(demo.exists());
+
+ // test switchTag
+ instance.setTag(new VersionNumber(3, 1, 0));
+ assertEquals(fileContentTag, FileUtil.readAsString(version));
+ assertTrue(demo.exists());
+
}
+
/**
* Test of add method, of class VCSSVN.
*/
@Test
- public void add() throws Exception {
+ public void testadd() throws Exception {
System.out.println("add");
- List<File> files = null;
+ List<File> files = new ArrayList<File>();
String msg = "";
- VCSSVN instance = null;
instance.add(files, msg);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
- * Test of checkout method, of class VCSSVN.
- */
- @Test
- public void checkout() throws Exception {
- System.out.println("checkout");
- File destDir = null;
- String module = "";
- boolean recurse = false;
- VCSSVN instance = null;
- instance.checkout(destDir, module, recurse);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of delete method, of class VCSSVN.
- */
- @Test
- public void delete() throws Exception {
- System.out.println("delete");
- List<File> files = null;
- String msg = "";
- VCSSVN instance = null;
- instance.delete(files, msg);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
* Test of getChanglog method, of class VCSSVN.
*/
@Test
- public void getChanglog() {
+ public void testgetChanglog() {
System.out.println("getChanglog");
- List<File> files = null;
- VCSSVN instance = null;
- Map<File, String> expResult = null;
+ List<File> files = new ArrayList<File>();
+ Map<File, String> expResult = new HashMap<File, String>();
Map<File, String> result = instance.getChanglog(files);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of getDiff method, of class VCSSVN.
*/
@Test
- public void getDiff() throws Exception {
+ public void testgetDiff() throws Exception {
System.out.println("getDiff");
File file = null;
- VCSSVN instance = null;
String expResult = "";
String result = instance.getDiff(file);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of getFileList method, of class VCSSVN.
*/
@Test
- public void getFileList() throws Exception {
+ public void testgetFileList() throws Exception {
System.out.println("getFileList");
File directory = null;
- VCSSVN instance = null;
List<String> expResult = null;
List<String> result = instance.getFileList(directory);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of getUpdatedFile method, of class VCSSVN.
*/
@Test
- public void getUpdatedFile() {
+ public void testgetUpdatedFile() {
System.out.println("getUpdatedFile");
- VCSSVN instance = null;
List<File> expResult = null;
List<File> result = instance.getUpdatedFile();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of haveUpdate method, of class VCSSVN.
*/
@Test
- public void haveUpdate() {
+ public void testhaveUpdate() {
System.out.println("haveUpdate");
- VCSSVN instance = null;
boolean expResult = false;
boolean result = instance.haveUpdate();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of isConnected method, of class VCSSVN.
*/
@Test
- public void isConnected() {
+ public void testisConnected() {
System.out.println("isConnected");
- VCSSVN instance = null;
- boolean expResult = false;
+ boolean expResult = true;
boolean result = instance.isConnected();
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of isOnRemote method, of class VCSSVN.
*/
@Test
- public void isOnRemote() throws Exception {
+ public void testisOnRemote() throws Exception {
System.out.println("isOnRemote");
File file = null;
- VCSSVN instance = null;
boolean expResult = false;
boolean result = instance.isOnRemote(file);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
/**
* Test of isTag method, of class VCSSVN.
*/
@Test
- public void isTag() {
+ public void testisTag() throws Exception {
System.out.println("isTag");
- VersionNumber version = null;
- VCSSVN instance = null;
- boolean expResult = false;
- boolean result = instance.isTag(version);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
+ {
+ VersionNumber version = new VersionNumber(3,1,0);
+ boolean expResult = true;
+ boolean result = instance.isTag(version);
+ assertEquals(expResult, result);
+ }
+ {
+ VersionNumber version = new VersionNumber(3,2,0);
+ boolean expResult = false;
+ boolean result = instance.isTag(version);
+ assertEquals(expResult, result);
+ }
}
/**
* Test of isUpToDate method, of class VCSSVN.
*/
@Test
- public void isUpToDate() throws Exception {
+ public void testisUpToDate() throws Exception {
System.out.println("isUpToDate");
File file = null;
- VCSSVN instance = null;
boolean expResult = false;
boolean result = instance.isUpToDate(file);
assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
}
- /**
- * Test of update method, of class VCSSVN.
- */
- @Test
- public void update() throws Exception {
- System.out.println("update");
- List<File> files = null;
- VCSSVN instance = null;
- boolean expResult = false;
- boolean result = instance.update(files);
- assertEquals(expResult, result);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of switchTag method, of class VCSSVN.
- */
- @Test
- public void switchTag() throws Exception {
- System.out.println("switchTag");
- VersionNumber version = null;
- VCSSVN instance = null;
- instance.switchTag(version);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
- /**
- * Test of switchProtocole method, of class VCSSVN.
- */
- @Test
- public void switchProtocole() throws Exception {
- System.out.println("switchProtocole");
- String protocoleType = "";
- VCSSVN instance = null;
- instance.switchProtocole(protocoleType);
- // TODO review the generated test code and remove the default call to fail.
- fail("The test case is a prototype.");
- }
-
}
\ No newline at end of file
1
0
Author: bpoussin
Date: 2008-08-19 13:30:52 +0000 (Tue, 19 Aug 2008)
New Revision: 1304
Added:
branches/isis-fish-3.2.1/
Log:
Creation de la branche pour la migration de swixat vers jaxx
Copied: branches/isis-fish-3.2.1 (from rev 1303, trunk/isis-fish)
1
0
r1303 - in trunk/isis-fish: . src/resources src/resources/i18n src/xmi
by bpoussin@users.labs.libre-entreprise.org Aug. 18, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 18, 2008
Aug. 18, 2008
Author: bpoussin
Date: 2008-08-18 13:44:18 +0000 (Mon, 18 Aug 2008)
New Revision: 1303
Modified:
trunk/isis-fish/pom.xml
trunk/isis-fish/src/resources/IsisFish_init.properties
trunk/isis-fish/src/resources/i18n/isis-fish-en_GB.properties
trunk/isis-fish/src/resources/i18n/isis-fish-fr_FR.properties
trunk/isis-fish/src/xmi/isis-fish.zargo
Log:
gros nettoyage apres fusion avec la branche 3.2. (migration de schema, nouvelle equation, calcul en maille)
- retour des bon fichiers de langue
- commit du .zargo et pom.xml
Modified: trunk/isis-fish/pom.xml
===================================================================
--- trunk/isis-fish/pom.xml 2008-08-18 13:42:57 UTC (rev 1302)
+++ trunk/isis-fish/pom.xml 2008-08-18 13:44:18 UTC (rev 1303)
@@ -421,7 +421,7 @@
<plugin>
<groupId>lutinplugin</groupId>
<artifactId>maven-i18n-plugin</artifactId>
- <version>0.3</version>
+ <version>0.4</version>
<configuration>
<bundles>
<param>fr_FR</param>
@@ -552,15 +552,14 @@
<version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
- <!-- librairie commandline -->
+ <!-- librairie commandline
<dependency>
<groupId>org.codelutin.commandline</groupId>
<artifactId>commandline-ui</artifactId>
<version>0.6</version>
<scope>compile</scope>
- <!--scope>compile</scope-->
</dependency>
-
+-->
<!--
<dependency>
<groupId>lutinlib</groupId>
@@ -661,14 +660,14 @@
<version>2.0</version>
<scope>compile</scope>
</dependency>
-
+<!--
<dependency>
<groupId>org.netbeans.lib</groupId>
<artifactId>cvsclient</artifactId>
<version>20051129</version>
<scope>compile</scope>
</dependency>
-
+-->
<dependency>
<groupId>bsh</groupId>
<artifactId>bsh</artifactId>
@@ -851,7 +850,7 @@
</dependency>
<!-- ssj pour les calculs stockastiques -->
- <!--dependency>
+ <dependency>
<groupId>ssj</groupId>
<artifactId>ssj</artifactId>
<version>2.0</version>
@@ -893,12 +892,12 @@
<scope>compile</scope>
</dependency>
- <dependency>
+ <dependency>
<groupId>ssj</groupId>
<artifactId>optimization</artifactId>
<version>20060613</version>
<scope>compile</scope>
- </dependency-->
+ </dependency>
<!-- fin ssj pour les calculs stockastiques -->
Modified: trunk/isis-fish/src/resources/IsisFish_init.properties
===================================================================
--- trunk/isis-fish/src/resources/IsisFish_init.properties 2008-08-18 13:42:57 UTC (rev 1302)
+++ trunk/isis-fish/src/resources/IsisFish_init.properties 2008-08-18 13:44:18 UTC (rev 1303)
@@ -21,7 +21,7 @@
###
-### les propriétés de la configuration principal obligatoires pour commandline
+### les propri\u00E9t\u00E9s de la configuration principal obligatoires pour commandline
###
#main.config.definition.configFileName=java.io.File:.isis-config-3
@@ -40,7 +40,7 @@
#main.config.modifiers.version=final,static,mandatory
###
-### les propriétés de la configuration principal
+### les propri\u00E9t\u00E9s de la configuration principal
###
main.config.definition.compileDirectory=java.io.File:isis-build
@@ -103,10 +103,10 @@
main.config.definition.simulationServer=java.net.URL:http://simulateur.ifremer.fr:9090
main.config.modifiers.simulationServer=mandatory
-main.config.definition.simulationShowOnlyError=java.lang.Boolean:true
+main.config.definition.simulationShowOnlyError=java.lang.Boolean:false
main.config.modifiers.simulationShowOnlyError=
-main.config.definition.simulationShowOnlyQueue=java.lang.Boolean:true
+main.config.definition.simulationShowOnlyQueue=java.lang.Boolean:false
main.config.modifiers.simulationShowOnlyQueue=
main.config.definition.smtpServer=java.lang.String:smtp
@@ -120,7 +120,7 @@
###
-### les propriétés de la configuration vcs
+### les propri\u00E9t\u00E9s de la configuration vcs
###
vcs.config.definition.localDatabasePath=java.io.File:isis-database-3
vcs.config.modifiers.localDatabasePath=mandatory
@@ -168,7 +168,7 @@
vcs.config.modifiers.userName=mandatory
###
-### les propriétés de la configuration h2
+### 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
@@ -258,5 +258,5 @@
h2.config.definition.storageData=java.lang.String:data
h2.config.modifiers.storageData=final,mandatory,static,transient
-h2.config.definition.updateschemaDatabase=java.lang.Boolean:false
+h2.config.definition.updateschemaDatabase=java.lang.Boolean:true
h2.config.modifiers.updateschemaDatabase=final,mandatory,static,transient
Modified: trunk/isis-fish/src/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- trunk/isis-fish/src/resources/i18n/isis-fish-en_GB.properties 2008-08-18 13:42:57 UTC (rev 1302)
+++ trunk/isis-fish/src/resources/i18n/isis-fish-en_GB.properties 2008-08-18 13:44:18 UTC (rev 1303)
@@ -1,78 +1,17 @@
-=
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ new\ JInternalFrame(simulation.getName(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true,\ //resizable\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true,\ //closable\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true,\ //maximizable\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true);//iconifiable\ \ \ \ \ \ \ \ \ \ \ \ intFrame.setContentPane(resEdit.getRootPane());\ \ \ \ \ \ \ \ \ \ \ \ intFrame.setVisible(true);\ \ \ \ \ \ \ \ \ \ \ \ //\t\ \ \ \ intFrame.pack();\ \ \ \ \ \ \ \ \ \ \ \ intFrame.setSize(new\ Dimension(800,700));\ \ \ \ \ \ \ \ \ \ \ \ getDesktopPane().add(intFrame);\ \ \ \ \ \ \ \ \ \ \ \ try{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ intFrame.setSelected(true);\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (PropertyVetoException\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn("Error\ dans\ l\ internalFrame\ ",\ eee);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ on_voirSimulationLogButton_clicked()\ {\ \ \ \ \ \ \ \ String\ name\ =
-\ (String)getSimulation().getSelectedItem();\ \ \ \ \ \ \ \ if\ (name\ \!=
-\ (String)getSimulation().getSelectedItem();\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ SimulationLoggerUtil.showSimulationLogConsole(name);\ \ \ \ \ \ \ \ }\ catch\ (Exception\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ ignore\ ?\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ on_filterSimulationLogButton_clicked()\ {\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ List<String>\ result\ =
-\ -5643196187139951889L;\ \ \ \ public\ SimulationException(String\ msg)\ {\ \ \ \ \ \ \ \ super(msg);\ \ \ \ }\ \ \ \ public\ SimulationException(String\ msg,\ Throwable\ e)\ {\ \ \ \ \ \ \ \ super(msg,\ e);\ \ \ \ }}\ //\ SimulationException/*\ *\#\#%\ *\ Copyright\ (C)\ 2007\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationResultListener.java\ *\ *\ Created\:\ 13\ nov.\ 07\ 11\:59\:53\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 739\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-20\ 18\:46\:38\ +0100\ (mar,\ 20\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ org.codelutin.math.matrix.MatrixND;import\ fr.ifremer.isisfish.IsisFishException;import\ fr.ifremer.isisfish.types.Date;/**\ *\ @author\ poussin\ *\ */public\ interface\ SimulationResultListener\ extends\ SimulationListener\ {\ \ \ \ \ \ \ \ public\ void\ addResult(SimulationContext\ context,\ \ \ \ \ \ \ \ \ \ \ \ Date\ date,\ String\ name,\ MatrixND\ mat)\ throws\ IsisFishException;\ \ \ \ }/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationQueueEvent.java\ *\ *\ Created\:\ 17\ ao\uFFFDt\ 2006\ 22\:00\:41\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 217\ $\ *\ *\ Last\ update\:\ $Date\:\ 2006-08-21\ 17\:43\:41\ +0200\ (lun,\ 21\ ao\u00FB\ 2006)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ java.util.EventObject;/**\ *\ @author\ poussin\ *\ */public\ class\ SimulationQueueEvent\ extends\ EventObject\ {\ \ \ \ /**\ simulation\ id\ */\ \ \ \ protected\ String\ id;\ \ \ \ \ \ \ \ /**\ \ \ \ \ *\ @param\ source\ \ \ \ \ */\ \ \ \ public\ SimulationQueueEvent(Object\ source,\ String\ id)\ {\ \ \ \ \ \ \ \ super(source);\ \ \ \ \ \ \ \ this.id\ =
-\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ this\ is\ the\ all\ levels\ reader\ to\ create,\ depends\ on\ no\ others\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader\ =
-\ 0;\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ //log.debug("\ offset\:"\ +\ offset\ +\ "\ width\:"\ +\ model.nbLinesInEditor);\ \ \ \ \ \ \ \ String[]\ result;\ \ \ \ \ \ \ \ //\ obtain\ lines\ from\ reader\ \ \ \ \ \ \ \ result\ =
-\ 4449196856169240128L;\ \ \ \ public\ SimulatorServerBadIdException(String\ msg)\ {\ \ \ \ \ \ \ \ super(msg);\ \ \ \ }\ \ \ \ public\ SimulatorServerBadIdException(String\ msg,\ Throwable\ e)\ {\ \ \ \ \ \ \ \ super(msg,\ e);\ \ \ \ }}\ //\ SimulatorServerBadIdException/*\ *\#\#%\ *\ Copyright\ (C)\ 2002-2005\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ \ \ \ \ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationException.java\ *\ *\ Created\:\ Wed\ Aug\ 14\ 2002\ *\ *\ @author\ \ <poussin at codelutin.com>\ *\ @version\ $Revision\:\ 167\ $\ *\ *\ Mise\ a\ jour\:\ $Date\:\ 2006-01-23\ 15\:00\:17\ +0100\ (lun,\ 23\ jan\ 2006)\ $\ *\ par\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;public\ class\ SimulationException\ extends\ RuntimeException\ {\ //\ SimulationException\ \ \ \ /**\ \ */\ \ \ \ private\ static\ final\ long\ serialVersionUID\ =
-\ IsisConfig.Module.REGION;\ \ \ \ \ \ \ \ if\ (create)\ {\ \ \ \ \ \ \ \ \ \ \ \ doCheckoutModule(handler,module,category);\ \ \ \ \ \ \ \ }\ else\ {\ \ \ \ \ \ \ \ \ \ \ \ File\ f\ =
-\ IsisConfig.getResultExportDirectory(rootDirectory);\ \ \ \ \ \ \ \ \ \ \ \ exportDir.mkdirs();\ \ \ \ \ \ \ \ \ \ \ \ ExportHelper.doExport(simulation,\ exportDir,\ parameters.getExportNames(),\ rootDirectory);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ fr.ifremer.isisfish.simulator.SimulationListener\#beforeSimulation(fr.ifremer.isisfish.simulator.SimulationContext)\ \ \ \ \ */\ \ \ \ public\ void\ beforeSimulation(SimulationContext\ context)\ {\ \ \ \ }}/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ MetierMonitor.java\ *\ *\ Created\:\ 21\ ao\uFFFDt\ 2006\ 15\:43\:19\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 652\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-08\ 15\:04\:16\ +0100\ (jeu,\ 08\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ ruchaud\ $\ */package\ fr.ifremer.isisfish.simulator;import\ static\ org.codelutin.i18n.I18n.n_;import\ java.util.ArrayList;import\ java.util.Collection;import\ java.util.HashMap;import\ java.util.HashSet;import\ java.util.List;import\ java.util.Map;import\ java.util.Set;import\ org.apache.commons.collections.MapIterator;import\ org.apache.commons.collections.keyvalue.MultiKey;import\ org.apache.commons.collections.map.MultiKeyMap;import\ org.apache.commons.logging.Log;import\ org.apache.commons.logging.LogFactory;import\ org.codelutin.math.matrix.MatrixFactory;import\ org.codelutin.math.matrix.MatrixND;import\ org.codelutin.topia.TopiaContext;import\ org.codelutin.topia.TopiaException;import\ fr.ifremer.isisfish.IsisFishRuntimeException;import\ fr.ifremer.isisfish.entities.Metier;import\ fr.ifremer.isisfish.entities.SetOfVessels;import\ fr.ifremer.isisfish.entities.Strategy;import\ fr.ifremer.isisfish.entities.StrategyMonthInfo;import\ fr.ifremer.isisfish.types.Date;import\ fr.ifremer.isisfish.types.Month;/**\ *\ ATTENTION\:\ l'implantation\ de\ cette\ classe\ n'est\ peut-etre\ pas\ correct.\ Il\ faut\ *\ absolument\ verifier\ le\ FIXME,\ mais\ il\ est\ difficile\ de\ le\ faire\ car\ *\ la\ plupart\ des\ methodes\ de\ cette\ objets\ ne\ semble\ plus\ utilis\uFFFD\ dans\ la\ *\ version\ 2.3.x\ de\ isis\ *\ \ *\ @author\ poussin\ */public\ class\ MetierMonitor\ {\ \ \ \ /**\ to\ use\ log\ facility,\ just\ put\ in\ your\ code\:\ log.info(\\"...\\=
-\ IsisContext.get().getMainConfig().getDefaultMapFile();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ String\ shp\ =
-\ LogLevelUtil.getLogLevels(levels);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ create\ the\ levels\ reader\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader\ =
-\ Session.getDefaultInstance(props,\ null);\ \ \ \ \ \ \ \ //\ --\ Create\ a\ new\ message\ --\ \ \ \ \ \ \ \ Message\ msg\ =
-\ SimulationFilterUtil.createFilterModel(value);\ \ \ \ \ \ \ \ //\ to\ used\ directly\ model.getFilteredResult()\ in\ xml\ \ \ \ \ \ \ \ //\ we\ must\ fill\ filterModel\ result\ with\ original\ items\ \ \ \ \ \ \ \ filterModel.selectAll();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ getSimulation().setEditable(false);\ \ \ \ \ \ \ \ model\ =
-\ SimulationFilterUtil.filterSimulation(filterModel);\ \ \ \ \ \ \ \ \ \ \ \ model.removeAllElements();\ \ \ \ \ \ \ \ \ \ \ \ for\ (String\ s\ \:\ result)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.addElement(s);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ catch\ (Exception\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ filter\ on\ simulations=
-\ SimulationStorage.getSimulation(name);\ \ \ \ \ \ \ \ \ \ \ \ ResultEdit\ resEdit\ =
-\ SimulationStorage.getSimulation(name);\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ storage.delete(false);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ initSimulation();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn("Can't\ delete\ simulation",\ eee);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ on_openWindowButton_clicked(){\ \ \ \ \ \ \ \ String\ name\ =
-\ System.getProperties();\ \ \ \ \ \ \ \ //\ --\ Attaching\ to\ default\ Session,\ or\ we\ could\ start\ a\ new\ one\ --\ \ \ \ \ \ \ \ props.put("mail.smtp.host",\ smtpServer);\ \ \ \ \ \ \ \ Session\ session\ =
-\ context.getSimulationStorage();\ \ \ \ \ \ \ \ SimulationParameter\ parameters\ =
-\ e.getId();\ \ \ \ \ \ \ \ SimulationControl\ control\ =
-\ e.getUnitsToScroll();\ \ \ \ \ \ \ \ long\ newOffset;\ \ \ \ \ \ \ \ newOffset\ =
-\ evt.getPropertyName();\ \ \ \ \ \ \ \ if\ (properyName.equals(LogConsole.DISPOSE_CHANGED_PROPERTY))\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ ui\ required\ a\ dispose\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ close();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(_("isisfish.error.log.console.dispose"\ ,this,e.getMessage()));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ return;\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ //log.info(properyName\ +\ "\ \:\ "\ +\ evt.getNewValue());\ \ \ \ \ \ \ \ if\ (properyName.equals(RESET_CHANGED_PROPERTY))\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ reset\ filter\ model\ \ \ \ \ \ \ \ \ \ \ \ model.setLevels(0);\ \ \ \ \ \ \ \ \ \ \ \ model.setSearchText("=
-\ false;\ \ \ \ }\ \ \ \ public\ void\ propertyChange(PropertyChangeEvent\ evt)\ {\ \ \ \ \ \ \ \ String\ properyName\ =
-\ filename\ +\ ".shp";\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ String\ ssx\ =
-\ filename\ +\ ".ssx";\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ addShapeLayer(filename,\ shp,\ ssx,\ "ff000000",\ "ffbdde83=
-\ from;\ \ \ \ \ \ \ \ this.logFile\ =
-\ getRowCount();\ \ \ \ \ \ \ \ fireTableRowsInserted(row,\ row);\ \ \ \ \ \ \ \ SimulationControl\ control\ =
-\ getSimulationControl(e.getId());\ \ \ \ \ \ \ \ control.addPropertyChangeListener(this);\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationWillBeRemoved(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ String\ id\ =
-\ getSimulationControl(e.getId());\ \ \ \ \ \ \ \ if\ (control\ \!=
-\ getSimulationIndex(id);\ \ \ \ \ \ \ \ if\ (isRowIndexValid(row))\ {\ \ \ \ \ \ \ \ \ \ \ \ fireTableRowsDeleted(row,\ row);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ progress.remove(id);\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationStart(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ *\ @see\ SimulationQueueListener\#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ */\ \ \ \ public\ void\ simulationStop(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }}\ //\ SimulationQueueModel/*\ *\#\#%\ *\ Copyright\ (C)\ 2007\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationExportResultWrapper.java\ *\ *\ Created\:\ 14\ nov.\ 07\ 00\:22\:51\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 1128\ $\ *\ *\ Last\ update\:\ $Date\:\ 2008-01-08\ 20\:21\:28\ +0100\ (mar,\ 08\ jan\ 2008)\ $\ *\ by\ \:\ $Author\:\ tchemit\ $\ */package\ fr.ifremer.isisfish.simulator;import\ java.io.File;import\ fr.ifremer.isisfish.IsisConfig;import\ fr.ifremer.isisfish.datastore.SimulationStorage;import\ fr.ifremer.isisfish.export.ExportHelper;/**\ *\ @author\ poussin\ *\ */public\ class\ SimulationExportResultWrapper\ implements\ SimulationListener\ {\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ fr.ifremer.isisfish.simulator.SimulationListener\#afterSimulation(fr.ifremer.isisfish.simulator.SimulationContext)\ \ \ \ \ */\ \ \ \ public\ void\ afterSimulation(SimulationContext\ context)\ {\ \ \ \ \ \ \ \ SimulationStorage\ simulation\ =
-\ getSimulationNames();\ \ \ \ \ \ \ \ //\ create\ filter\ model\ \ \ \ \ \ \ \ filterModel\ =
-\ id;\ \ \ \ }\ \ \ \ \ \ \ \ /**\ \ \ \ \ *\ @return\ Returns\ the\ id.\ \ \ \ \ */\ \ \ \ public\ String\ getId()\ {\ \ \ \ \ \ \ \ return\ this.id;\ \ \ \ }\ \ \ \ }/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ PopulationMonitor.java\ *\ *\ Created\:\ 21\ ao\uFFFDt\ 2006\ 15\:41\:18\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 428\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-10-15\ 14\:56\:13\ +0200\ (lun,\ 15\ oct\ 2007)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ java.util.ArrayList;import\ java.util.HashMap;import\ java.util.List;import\ java.util.Map;import\ org.apache.commons.collections.MapIterator;import\ org.apache.commons.collections.keyvalue.MultiKey;import\ org.apache.commons.collections.map.MultiKeyMap;import\ org.apache.commons.logging.Log;import\ org.apache.commons.logging.LogFactory;import\ org.codelutin.math.matrix.MatrixFactory;import\ org.codelutin.math.matrix.MatrixIterator;import\ org.codelutin.math.matrix.MatrixND;import\ fr.ifremer.isisfish.entities.Population;import\ fr.ifremer.isisfish.entities.PopulationGroup;import\ fr.ifremer.isisfish.entities.PopulationSeasonInfo;import\ fr.ifremer.isisfish.entities.Species;import\ fr.ifremer.isisfish.entities.Zone;import\ fr.ifremer.isisfish.types.Date;import\ fr.ifremer.isisfish.types.Month;/**\ *\ \ *\ @author\ poussin\ */public\ class\ PopulationMonitor\ {\ \ \ \ \ \ \ \ /**\ to\ use\ log\ facility,\ just\ put\ in\ your\ code\:\ log.info(\\"...\\=
-\ levels\ +\ "";\ \ \ \ \ \ \ \ LevelsLineReader\ reader\ =
-\ levelsReader;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ if\ (reader\ =
-\ logFile;\ \ \ \ \ \ \ \ this.simulationFile\ =
-\ model.getFirstLinePosition()\ +\ unitsToScroll;\ \ \ \ \ \ \ \ if\ (unitsToScroll\ >\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (model.isEOF())\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ nothing\ to\ do\ we\ are\ already\ at\ the\ tail\ of\ the\ stream\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ else\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (model.isBOF())\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ nothing\ to\ do\ we\ are\ already\ at\ the\ head\ of\ the\ stream\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ dontAdjust\ =
-\ module.getClazz().getMethod("checkout",String.class);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ method.invoke(module.getClazz(),category);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn(org.codelutin.i18n.I18n._("isisfish.error.checkout.module",\ f.getAbsolutePath()),\ eee);\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ static\ void\ doCheckoutRegion(VCSHandler\ handler,\ \ String\ category,boolean\ create)\ {\ \ \ \ \ \ \ \ IsisConfig.Module\ module\ =
-\ new\ DefaultComboBoxModel(value.toArray());\ \ \ \ \ \ \ \ getSimulation().setModel(model);\ \ \ \ \ \ \ \ getSimulation().setSelectedItem(null);\ \ \ \ }\ \ \ \ public\ void\ on_Resultat_destroy_event(){\ \ \ \ \ \ \ \ dispose();\ \ \ \ }\ \ \ \ public\ void\ on_simulation_selection_notify_event(ItemEvent\ e){\ \ \ \ \ \ \ \ //\tsetSelectedSimulation((Simulation)getSimulation().getSelectedItem());\ \ \ \ }\ \ \ \ /**\ \ \ \ *\ Get\ the\ value\ of\ selectedSimulation.\ \ \ \ *\ @return\ value\ of\ selectedSimulation.\ \ \ \ */\ \ \ \ //\ \ \ \ public\ Simulation\ getSelectedSimulation()\ {\ \ \ \ \ \ \ \ //return\ selectedSimulation;\ \ \ \ //}\ \ \ \ /**\ \ \ \ *\ Set\ the\ value\ of\ selectedSimulation.\ \ \ \ *\ @param\ v\ \ Value\ to\ assign\ to\ selectedSimulation.\ \ \ \ */\ \ \ \ //public\ void\ setSelectedSimulation(Simulation\ v)\ {\ \ \ \ \ \ \ \ //this.selectedSimulation\ =
-\ new\ File(module.getDirectory(),category);\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (\!f.exists()||\ \!VCSHelper.isFileInWorkingCopy(f,\ handler,true))\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fr.ifremer.isisfish.datastore.RegionStorage.checkout(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ handler.getLocalDatabasePath(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ module.value()\ +\ "/"\ +category\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(org.codelutin.i18n.I18n._("isisfish.error.checkout.module",\ f.getAbsolutePath()),\ eee);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }}/*\ *\#\#%*\ Copyright\ (C)\ 2002,\ 2003,\ 2004,\ 2005,\ 2006,\ 2007\ Code\ Lutin,*\ Benjamin\ Poussin,\ Tony\ Chemit***\ 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.versionning.vcsSvn;import\ fr.ifremer.isisfish.versionning.IsisVcsConfig;import\ static\ org.codelutin.i18n.I18n._;import\ org.codelutin.vcs.AbstractVCSHandler;import\ org.codelutin.vcs.VCSConfig;import\ org.codelutin.vcs.VCSException;import\ org.codelutin.vcs.VCSHelper;import\ static\ org.codelutin.vcs.VCSHelper.isFileInCheckedDir;import\ org.codelutin.vcs.VCSRuntimeException;import\ org.codelutin.vcs.VCSState;import\ static\ org.codelutin.vcs.VCSState.OUT_OF_DATE;import\ static\ org.codelutin.vcs.VCSState.OUT_OF_DATE_AND_MODIFIED;import\ static\ org.codelutin.vcs.VCSState.UP_TO_DATE;import\ org.codelutin.vcs.VCSStatus;import\ org.tmatesoft.svn.core.ISVNDirEntryHandler;import\ org.tmatesoft.svn.core.ISVNLogEntryHandler;import\ org.tmatesoft.svn.core.SVNCommitInfo;import\ org.tmatesoft.svn.core.SVNDirEntry;import\ org.tmatesoft.svn.core.SVNException;import\ org.tmatesoft.svn.core.SVNLogEntry;import\ org.tmatesoft.svn.core.SVNNodeKind;import\ org.tmatesoft.svn.core.SVNURL;import\ org.tmatesoft.svn.core.io.SVNRepository;import\ org.tmatesoft.svn.core.wc.ISVNOptions;import\ org.tmatesoft.svn.core.wc.SVNClientManager;import\ org.tmatesoft.svn.core.wc.SVNRevision;import\ org.tmatesoft.svn.core.wc.SVNStatus;import\ org.tmatesoft.svn.core.wc.SVNStatusType;import\ static\ org.tmatesoft.svn.core.wc.SVNStatusType.*;import\ org.tmatesoft.svn.core.wc.SVNWCClient;import\ org.tmatesoft.svn.core.wc.SVNWCUtil;import\ java.io.ByteArrayOutputStream;import\ java.io.File;import\ java.io.IOException;import\ java.util.ArrayList;import\ java.util.Arrays;import\ java.util.Collection;import\ java.util.Collections;import\ java.util.Iterator;import\ java.util.List;/**\ *\ VCSHandler\ implementation\ for\ svn\ *\ *\ @author\ chemit\ */public\ final\ class\ SVNHandler\ extends\ AbstractVCSHandler\ {\ \ \ \ protected\ SVNURL\ repositoryURL;\ \ \ \ protected\ SVNRepository\ repository;\ \ \ \ protected\ SVNClientManager\ ourClientManager;\ \ \ \ protected\ SVNWCClient\ ourWcClient;\ \ \ \ public\ SVNHandler(VCSConfig\ config)\ {\ \ \ \ \ \ \ \ super(config,\ ".svn",\ "entries=
-\ new\ File(module.getDirectory(),category);\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (\!f.exists()||\ \!VCSHelper.isFileInWorkingCopy(f,\ handler,true))\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Method\ method\ =
-\ new\ File(readerDirectory,\ "offsets_"\ +\ levels);\ \ \ \ \ \ \ \ \ \ \ \ FileOffsetReader\ offsetReader\ =
-\ new\ FileOffsetReader(offsetFile);\ \ \ \ \ \ \ \ \ \ \ \ if\ (levels\ =
-\ new\ LevelsLineReader(getLevelReader(0),\ offsetReader,\ logLevels);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ reader.setId(levelsStr);\ \ \ \ \ \ \ \ \ \ \ \ levelsReaders.add(reader);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ if\ (\!reader.isOpen())\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ open\ reader\ \ \ \ \ \ \ \ \ \ \ \ reader.open();\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ log.info(reader);\ \ \ \ \ \ \ \ return\ reader;\ \ \ \ }\ \ \ \ protected\ void\ openReader(LineReader\ reader)\ throws\ IOException\ {\ \ \ \ \ \ \ \ this.reader\ =
-\ new\ LevelsLineReader(model.getLogFile(),\ offsetReader);\ \ \ \ \ \ \ \ \ \ \ \ }\ else\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ other\ level\ readers\ depens\ on\ all\ levels\ reader\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ LogLevel[]\ logLevels\ =
-\ new\ LogMail(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ statusBar,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getFrom(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getLogFile(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getLogFile().getParentFile(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getSmtpServer());\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ logMail.setVisible(true);\ \ \ \ }}/**\ \#\#%\ Copyright\ (C)\ 2002,\ 2003,\ 2004,\ 2005,\ 2006,\ 2007\ Code\ Lutin,*\ Benjamin\ Poussin,\ Tony\ Chemit***\ 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.logging.console;import\ javax.swing.event.ChangeEvent;import\ javax.swing.event.ChangeListener;import\ javax.swing.event.EventListenerList;import\ java.io.File;import\ java.util.ArrayList;import\ java.util.List;/**\ *\ This\ class\ is\ the\ model\ used\ in\ LogConsole.\ *\ <p/>\ *\ The\ model\ deals\ with\ ChangeEvent\ to\ notify\ ui,\ model\ has\ changed.\ *\ *\ @author\ chemit\ */public\ class\ LogConsoleModel\ {\ \ \ \ /**\ to\ use\ log\ facility,\ just\ put\ in\ your\ code\:\ log.info(\\"...\\=
-\ new\ MimeMessage(session);\ \ \ \ \ \ \ \ //\ --\ Set\ the\ FROM\ and\ TO\ fields\ --\ \ \ \ \ \ \ \ msg.setFrom(new\ InternetAddress(from));\ \ \ \ \ \ \ \ msg.setRecipients(Message.RecipientType.TO,\ InternetAddress.parse(to,\ false));\ \ \ \ \ \ \ \ MimeMultipart\ bodyMime\ =
-\ new\ MimeMultipart("mixed=
-\ new\ PatternLineReader(parent,\ new\ MemoryOffsetReader(5000),\ searchText,\ 0);\ \ \ \ \ \ \ \ reader.setId(parent.getId()\ +\ "\:"\ +\ searchText);\ \ \ \ \ \ \ \ log.info(reader);\ \ \ \ \ \ \ \ return\ reader;\ \ \ \ }\ \ \ \ //TODO\ Improve\ algorithm\ \:\ always\ try\ to\ find\ the\ closest\ reader\ to\ use\ \ \ \ protected\ LineReader\ getLevelReader(int\ levels)\ throws\ IOException\ {\ \ \ \ \ \ \ \ String\ levelsStr\ =
-\ new\ ResultEdit(simulation);\ \ \ \ \ \ \ \ \ \ \ \ JInternalFrame\ intFrame\ =
-\ null\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ &&\ parameters.getExportNames().size()\ >\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ File\ exportDir\ =
-\ null\ &&\ reader.isOpen())\ {\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader.close();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (IOException\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ close\ reader\ {0}",\ reader));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ @Override\ \ \ \ protected\ void\ finalize()\ throws\ Throwable\ {\ \ \ \ \ \ \ \ super.finalize();\ \ \ \ \ \ \ \ close();\ \ \ \ }\ \ \ \ /**\ \ \ \ \ *\ read\ the\ required\ frame\ from\ current\ reader\ \ \ \ \ *\ \ \ \ \ *\ @param\ offset\ the\ offset\ to\ use\ \ \ \ \ *\ @throws\ IOException\ if\ any\ problem\ while\ reading\ \ \ \ \ */\ \ \ \ public\ void\ read(long\ offset)\ throws\ IOException\ {\ \ \ \ \ \ \ \ if\ (offset\ <\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ offset\ =
-\ null)\ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader.close();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (IOException\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //TODO\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ Properties\ getData()\ {\ \ \ \ \ \ \ \ return\ data;\ \ \ \ }\ \ \ \ public\ String\ getName()\ {\ \ \ \ \ \ \ \ return\ name;\ \ \ \ }}/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationQueueModel.java\ *\ *\ Created\:\ 18\ ao\uFFFDt\ 2006\ 00\:05\:41\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 602\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-01\ 21\:39\:12\ +0100\ (jeu,\ 01\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ tchemit\ $\ */package\ fr.ifremer.isisfish.simulator;/**\ @author\ poussin\ */public\ class\ SimulationQueueModel\ extends\ AbstractSimulationQueueModel\ {\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel()\ \ \ \ \ */\ \ \ \ public\ SimulationQueueModel()\ {\ \ \ \ \ \ \ \ super();\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel(SimulationManager)\ \ \ \ \ */\ \ \ \ public\ SimulationQueueModel(SimulationManager\ queue)\ {\ \ \ \ \ \ \ \ super(queue);\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel at getSimulationIds()\ \ \ \ \ */\ \ \ \ protected\ java.util.List<String>\ getSimulationIds()\ {\ \ \ \ \ \ \ \ return\ getQueue().ids;\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel at getQueueItemsAsMap()\ \ \ \ \ */\ \ \ \ protected\ java.util.Map<String,\ SimulationManager.QueueItem>\ getQueueItemsAsMap()\ {\ \ \ \ \ \ \ \ return\ getQueue().map;\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationAdded(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ int\ row\ =
-\ null)\ {\ \ \ \ \ \ \ \ \ \ \ \ File\ offsetFile\ =
-\ null)\ {\ \ \ \ \ \ \ \ \ \ \ \ control.removePropertyChangeListener(this);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ int\ row\ =
-\ null){\ \ \ \ \ \ \ \ \ \ \ \ SimulationStorage\ simulation\ =
-\ null){\ \ \ \ \ \ \ \ \ \ \ \ SimulationStorage\ storage\ =
-\ null;\ \ \ \ \ \ \ \ for\ (LineReaderUtil.LevelsLineReader\ levelsReader\ \:\ levelsReaders)\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (levelsReader.getId().equals(levelsStr))\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader\ =
-\ reader.readLine(offset,\ model.nbLinesInEditor);\ \ \ \ \ \ \ \ //\ mark\ the\ new\ first\ position\ \ \ \ \ \ \ \ model.setFirstLinePosition(offset);\ \ \ \ \ \ \ \ //\ add\ lines\ in\ model\ \ \ \ \ \ \ \ model.allItems.clear();\ \ \ \ \ \ \ \ model.allItems.addAll(Arrays.asList(result));\ \ \ \ \ \ \ \ //\ notify\ ui\ that\ model\ changed\ \ \ \ \ \ \ \ model.fireStateChanged();\ \ \ \ }\ \ \ \ public\ void\ mouseWheelMoved(MouseWheelEvent\ e)\ {\ \ \ \ \ \ \ \ int\ unitsToScroll\ =
-\ reader;\ \ \ \ \ \ \ \ if\ (\!this.reader.isOpen())\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ open\ reader\ \ \ \ \ \ \ \ \ \ \ \ this.reader.open();\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ //\ save\ the\ number\ of\ lines\ of\ reader\ in\ model\ \ \ \ \ \ \ \ model.nbLines\ =
-\ simulation.getDirectory();\ \ \ \ \ \ \ \ //\ \ \ \ \ \ \ \ //\ Export\ des\ r\uFFFDsultats\ \ \ \ \ \ \ \ //\ \ \ \ \ \ \ \ if\ (parameters.getExportNames()\ \!=
-\ simulation.getParameter();\ \ \ \ \ \ \ \ File\ rootDirectory\ =
-\ simulationFile;\ \ \ \ \ \ \ \ this.smtpServer\ =
-\ smtpServer;\ \ \ \ \ \ \ \ this.statusBar\ =
-\ statusBar;\ \ \ \ \ \ \ \ sendMail.addActionListener(new\ ActionListener()\ {\ \ \ \ \ \ \ \ \ \ \ \ public\ void\ actionPerformed(ActionEvent\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sendMail(mailTo.getText(),\ content.getText(),\ sendAll.isSelected());\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ statusBar.setStatus(_("isisfish.log.mail.send"\ ,\ to));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ statusBar.setStatus(_("isisfish.log.mail.failed",\ smtpServer));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ finally\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dispose();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ });\ \ \ \ }\ \ \ \ public\ void\ setTo(String\ to)\ {\ \ \ \ \ \ \ \ this.to\ =
-\ statusBar;\ \ \ \ }\ \ \ \ public\ void\ openLogMail()\ {\ \ \ \ \ \ \ \ if\ (logMail=
-\ this.reader.getNbLines();\ \ \ \ }\ \ \ \ public\ void\ addPropertyChangeListener(PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.addPropertyChangeListener(listener);\ \ \ \ }\ \ \ \ public\ void\ addPropertyChangeListener(String\ propertyName,\ PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.addPropertyChangeListener(propertyName,\ listener);\ \ \ \ }\ \ \ \ public\ void\ removePropertyChangeListener(PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.removePropertyChangeListener(listener);\ \ \ \ }\ \ \ \ public\ void\ removePropertyChangeListener(String\ propertyName,\ PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.removePropertyChangeListener(propertyName,\ listener);\ \ \ \ }\ \ \ \ public\ StatusBar\ getStatusBar()\ {\ \ \ \ \ \ \ \ return\ statusBar;\ \ \ \ }\ \ \ \ public\ void\ setStatusBar(StatusBar\ statusBar)\ {\ \ \ \ \ \ \ \ this.statusBar\ =
-\ to;\ \ \ \ }\ \ \ \ /**\ \ \ \ \ *\ Send\ an\ email\ using\ the\ given\ informations\ (stmpServer,\ toAddress,\ \ \ \ \ *\ fromAddress,\ subject\ and\ body).\ \ \ \ \ *\ \ \ \ \ *\ @param\ to\ \ \ \ \ \ \ adr\ to\ send\ the\ mail\ \ \ \ \ *\ @param\ text\ \ \ \ \ message\ text\ \ \ \ \ *\ @param\ selected\ if\ <code>true</code>\ send\ all\ simulation\ zip,\ \ \ \ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ or\ just\ the\ file\ \ \ \ \ *\ @throws\ java.io.IOException\ \ \ \ \ \ \ \ \ \ \ if\ any\ problem\ while\ creatingthe\ zip\ \ \ \ \ *\ @throws\ javax.mail.MessagingException\ if\ any\ problem\ while\ creating\ \ \ \ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ the\ message\ or\ while\ the\ send\ \ \ \ \ */\ \ \ \ public\ void\ sendMail(String\ to,\ String\ text,\ boolean\ selected)\ throws\ IOException,\ MessagingException\ {\ \ \ \ \ \ \ \ Properties\ props\ =
-\ true;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ read(e.getValue());\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (IOException\ e1)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ read\ at\ offset\ {0}\ for\ reason\ {1}",\ e.getValue(),\ e1.getMessage()));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ dontAdjust\ =
-\ true;\ \ \ \ \ \ \ \ \ \ \ \ read(newOffset);\ \ \ \ \ \ \ \ }\ catch\ (IOException\ e1)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ read\ at\ offset\ {0}\ for\ reason\ {1}",\ newOffset,\ e1.getMessage()));\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ adjustmentValueChanged(AdjustmentEvent\ e)\ {\ \ \ \ \ \ \ \ if\ (\!e.getValueIsAdjusting()\ &&\ \!dontAdjust)\ {\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //TODO\ Fix\ bug\ \:sometimes\ when\ going\ at\ tail,\ it\ goes\ head\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //TODO\ (the\ offset\ must\ not\ be\ good...)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //log.info("value\:"+e.getValue());\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dontAdjust\ =
-\ v;\ \ \ \ //}\ \ \ \ public\ void\ on_supprimerSimulationButton_clicked(){\ \ \ \ \ \ \ \ String\ name\ =
-Checkout\ pom.xml\ to\ {0}",\ file.getPath()));\ \ \ \ \ \ \ \ vcsHandler.update(file);\ \ \ \ \ \ \ \ getContext().setQuit(true);\ \ \ \ }}\ /*\ *\ \#\#%\ Copyright\ (C)\ 2002,\ 2003,\ 2004,\ 2005,\ 2006,\ 2007\ Code\ Lutin,*\ Benjamin\ Poussin,\ Tony\ Chemit***\ 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.commandline.actions;import\ fr.ifremer.isisfish.IsisConfig;import\ fr.ifremer.isisfish.datastore.AnalysePlanStorage;import\ fr.ifremer.isisfish.datastore.ExportStorage;import\ fr.ifremer.isisfish.datastore.FormuleStorage;import\ fr.ifremer.isisfish.datastore.RuleStorage;import\ fr.ifremer.isisfish.datastore.ScriptStorage;import\ fr.ifremer.isisfish.datastore.SimulatorStorage;import\ java.io.File;import\ java.util.ArrayList;import\ java.util.List;import\ java.util.regex.Pattern;/**\ *\ The\ class\ to\ define\ all\ actions\ on\ scripts\ or\ data\ (region,\ simulations)\ \ that\ *\ IsisFish\ can\ launch\ at\ init\ time.\ *\ *\ @author\ chemit\ */public\ class\ ScriptUtil\ {\ \ \ \ /**\ \ \ \ \ *\ Pour\ v\uFFFDrifier\ q'un\ fichier\ existe.\ \ \ \ \ *\ \ \ \ \ *\ @param\ file\ \ the\ file\ dont\ on\ doit\ v\uFFFDrifier\ l'existence\ \ \ \ \ *\ @param\ force\ flag\ pour\ d\uFFFDclancher\ une\ exception,\ si\ fichier\ non\ trouv\uFFFD.\ \ \ \ \ */\ \ \ \ public\ static\ void\ checkNotFileExist(File\ file,\ boolean\ force)\ {\ \ \ \ \ \ \ \ if\ (file.exists()\ &&\ \!force)\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ fatal\ error\ \ \ \ \ \ \ \ \ \ \ \ throw\ new\ IllegalArgumentException("destination\ already\ exists\ "\ +\ file\ +\ "\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
+Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
+Can't\ evaluate\ simulation\ prescript=Can't evaluate simulation prescript
+Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
+Can't\ create\ simulation\ logger=Can't create simulation logger
+Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
+Checkout\ pom.xml\ to\ %1$s=
Info=Info
-could\ not\ close\ reader\ {0}",\ levelsReader));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ if\ (reader\ \!=
-could\ not\ create\ simulation\ filter\ model\ for\ reason\ {0}",e.getMessage()),e);\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ private\ void\ initSimulation()\ throws\ IOException,\ ParseException\ {\ \ \ \ \ \ \ \ //\ keep\ in\ context\ list\ of\ old\ simulation\ names\ (for\ filter\ process)\ \ \ \ \ \ \ \ java.util.List<String>\ value\ =
-filter\ loaded\ in\ {0}\ ms\ \:\ found\ {1}\ lines.",\ (System.currentTimeMillis()\ -\ t0),\ reader.getNbLines()));\ \ \ \ \ \ \ \ }\ catch\ (IOException\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn("could\ not\ open\ reader\ ["\ +\ this.reader\ +\ "]\ for\ reason\ "\ +\ e.getMessage());\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ protected\ LineReader\ getPatternReader(String\ searchText,\ LineReader\ parent)\ {\ \ \ \ \ \ \ \ LineReader\ reader;\ \ \ \ \ \ \ \ reader\ =
+Region\ %1$s\ allready\ exist\ in\ repository.\ Can't\ import=
+could\ not\ close\ reader\ %1$s=could not close reader %1$s
+could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
+could\ not\ filter\ on\ simulations=could not filter on simulations
+could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
+could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
+filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
isisfish.about.site=site
isisfish.about.text=text
isisfish.about.title=title
@@ -85,12 +24,14 @@
isisfish.advancedParams.simulationCache=cache simulation
isisfish.advancedParams.simulationStatistique=static simulation
isisfish.advancedParams.simulatorUse=simulator to Use
+isisfish.advancedParams.subProcessSimulation=
isisfish.cell.comments=comments
isisfish.cell.land=land
isisfish.cell.latitude=latitude
isisfish.cell.longitude=longitude
isisfish.cell.name=name
isisfish.cell.title=title
+isisfish.change.equation=Can't change equation
isisfish.common.add=add
isisfish.common.add.short=add short
isisfish.common.addQueue=addQueue
@@ -107,14 +48,17 @@
isisfish.common.emigration=emigration
isisfish.common.empty=vide
isisfish.common.error=error
+isisfish.common.file=File
isisfish.common.finish=finish
isisfish.common.gear=gear
isisfish.common.immigration=immigration
isisfish.common.info=info
isisfish.common.migration=migration
+isisfish.common.month=month %1$s
isisfish.common.new=new
isisfish.common.newMatrix=new Matrix
isisfish.common.next=next
+isisfish.common.no=No
isisfish.common.ok=ok
isisfish.common.openEditor=openEditor
isisfish.common.populationGroup=populationGroup
@@ -141,6 +85,73 @@
isisfish.common.warn=warn
isisfish.common.year=annee
isisfish.common.zone=zone
+isisfish.config.h2.description=
+isisfish.config.h2.h2BytecodeProvider.description=
+isisfish.config.h2.h2CurrentSessionContextClass.description=
+isisfish.config.h2.h2Dialect.description=
+isisfish.config.h2.h2Driver.description=
+isisfish.config.h2.h2MemBytecodeProvider.description=
+isisfish.config.h2.h2MemDialect.description=
+isisfish.config.h2.h2MemDriver.description=
+isisfish.config.h2.h2MemPass.description=
+isisfish.config.h2.h2MemType.description=
+isisfish.config.h2.h2MemURL.description=
+isisfish.config.h2.h2MemUser.description=
+isisfish.config.h2.h2Pass.description=
+isisfish.config.h2.h2Type.description=
+isisfish.config.h2.h2URL.description=
+isisfish.config.h2.h2User.description=
+isisfish.config.h2.migrationApplicationVersion.description=
+isisfish.config.h2.migrationCallBackhandlers.description=
+isisfish.config.h2.migrationModelNames.description=
+isisfish.config.h2.migrationPreviousMappingDirectory.description=
+isisfish.config.h2.migrationTopiaService.description=
+isisfish.config.h2.storageData.description=
+isisfish.config.h2.updateschemaDatabase.description=
+isisfish.config.main.compileDirectory.description=
+isisfish.config.main.configFileName.description=
+isisfish.config.main.dataBackupFilename.description=
+isisfish.config.main.defaultBackupDirectory.description=
+isisfish.config.main.defaultExportDirectory.description=
+isisfish.config.main.defaultExportNames.description=
+isisfish.config.main.defaultMapFile.description=
+isisfish.config.main.defaultResultNames.description=
+isisfish.config.main.defaultSimulator.description=
+isisfish.config.main.defaultTagValue.description=
+isisfish.config.main.description=
+isisfish.config.main.encoding.description=encoding used on system
+isisfish.config.main.javadocURL.description=
+isisfish.config.main.localSimulator.description=
+isisfish.config.main.locale.description=user locale
+isisfish.config.main.login.description=
+isisfish.config.main.password.description=
+isisfish.config.main.projectName.description=name of project
+isisfish.config.main.regionMap.description=
+isisfish.config.main.resultExport.description=
+isisfish.config.main.simulationInformationFilename.description=
+isisfish.config.main.simulationParametersFilename.description=
+isisfish.config.main.simulationReportMail.description=
+isisfish.config.main.simulationResultXmlFilename.description=
+isisfish.config.main.simulationServer.description=
+isisfish.config.main.simulationShowOnlyError.description=
+isisfish.config.main.simulationShowOnlyQueue.description=
+isisfish.config.main.smtpServer.description=
+isisfish.config.main.userMail.description=
+isisfish.config.main.userName.description=
+isisfish.config.main.version.description=
+isisfish.config.vcs.databaseVersion.description=
+isisfish.config.vcs.description=
+isisfish.config.vcs.hostName.description=
+isisfish.config.vcs.keyFile.description=
+isisfish.config.vcs.localDatabasePath.description=
+isisfish.config.vcs.noPassPhrase.description=
+isisfish.config.vcs.passphrase.description=
+isisfish.config.vcs.remoteDatabase.description=
+isisfish.config.vcs.remotePath.description=
+isisfish.config.vcs.type.description=
+isisfish.config.vcs.typeRepo.description=
+isisfish.config.vcs.useSshConnexion.description=
+isisfish.config.vcs.userName.description=
isisfish.dataResult.descriptionLabel=defaultToolTip-fr.ifremer.resultat.DataResult.descriptionLabel
isisfish.dataResult.export.csv=Export to CSV
isisfish.dataResult.exportButton=defaultToolTip-fr.ifremer.resultat.DataResult.exportButton
@@ -148,6 +159,7 @@
isisfish.dataResult.matriceTable=defaultToolTip-fr.ifremer.resultat.DataResult.matriceTable
isisfish.dataResult.scrolledwindow2=defaultToolTip-fr.ifremer.resultat.DataResult.scrolledwindow2
isisfish.dataResult.table2=defaultToolTip-fr.ifremer.resultat.DataResult.table2
+isisfish.date.toString=%1$s %2$s
isisfish.effortDescription.crewFoodCost=isisfish.effortDescription.crewFoodCost
isisfish.effortDescription.crewShareRate=isisfish.effortDescription.crewShareRate
isisfish.effortDescription.crewSize=isisfish.effortDescription.crewSize
@@ -159,14 +171,31 @@
isisfish.effortDescription.otherRunningCost=isisfish.effortDescription.otherRunningCost
isisfish.effortDescription.repairAndMaintenanceGearCost=isisfish.effortDescription.repairAndMaintenanceGearCost
isisfish.effortDescription.title=isisfish.effortDescription.title
+isisfish.effortDescription.toString=EffortDescription for %1$s with %2$s
isisfish.effortDescription.unitCostOfFishing=isisfish.effortDescription.unitCostOfFishing
isisfish.equation.editor.title=Equation Editor
+isisfish.error.acceptable.population=New value isn't acceptable value for this population
isisfish.error.add.card=Error while adding of result to the map.
-isisfish.error.add.logger.simulation\ ",\ e));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ simThread.start();\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ simThread.join();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (InterruptedException\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (log.isWarnEnabled())\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("isisfish.error.wait.simThread=
+isisfish.error.add.file=Can't add file %1$s
+isisfish.error.add.logger.simulation\ =isisfish.error.add.logger.simulation
isisfish.error.add.result.data=Error while adding result ot data.
isisfish.error.add.result.graph=Error while adding result to graph
-isisfish.error.checkout.module",\ module),\ eee);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ break;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ static\ void\ doCheckoutModule(VCSHandler\ handler,\ IsisConfig.Module\ module,\ String\ category)\ {\ \ \ \ \ \ \ \ File\ f\ =
+isisfish.error.add.tray=Can't add system tray icon
+isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s
+isisfish.error.change.equation=Can't change equation
+isisfish.error.check.region=Can't check region
+isisfish.error.checkout.module=Can't checkout module %1$s
+isisfish.error.commit.files=Can't commit files %1$s
+isisfish.error.compile.script=Can't compile script\: %1$s
+isisfish.error.compiled.parameter=Can't get rule parameter from compiled class
+isisfish.error.connect.server=Can't connect to server
isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es
+isisfish.error.create.equation=Can't create equation
+isisfish.error.delete.database=Can't delete database
+isisfish.error.delete.file=could not delete file %1$s
+isisfish.error.delete.vcs.files=Can't delete vcs files
+isisfish.error.during.simulation=Error during simulation
+isisfish.error.during.simulation.information.file=Could not save Error during simulation of %1$s in his information file
isisfish.error.emigration.negative=emigration negative
isisfish.error.empty.code.rubbin=rubbin's code is empty
isisfish.error.empty.emigration=emigration empty
@@ -184,31 +213,122 @@
isisfish.error.empty.unit=measure unit is empty
isisfish.error.emty.emigration=emigration empty
isisfish.error.emty.migration=Migration empty
+isisfish.error.equation.retun.number=EquationImpl must retun a number\: %1$s
+isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
+isisfish.error.evaluate.plan.script=Can't evaluate plan script
+isisfish.error.evaluate.preplan.script=Can't evaluate preplan script
+isisfish.error.evalute.plan.script=Can't evaluate plan script
+isisfish.error.export.scripts.force=The export file %1$s already exists, you MUST use option [force] pour force overwrite.
+isisfish.error.file.already.exists=The file %1$s already exist
+isisfish.error.get.fisheryRegion=Can't get FisheryRegion
+isisfish.error.get.information.file=Can't get information on file {0]
+isisfish.error.get.status.files=Can't get status files\: %1$s
+isisfish.error.growth.equation.before.create.group.population=Error, You must input growth equation before create the group population
isisfish.error.immigration.negative=immigration negative
isisfish.error.import.convertible=Erreur lors de l'import, la version du fichier que vous souhaitez importer n'est pas transformable en une version importable.
+isisfish.error.import.file=Can't import file %1$s
isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
+isisfish.error.import.scripts.force=Some files already exist, you MUST use option [force] pour force overwrite.
isisfish.error.init.map=Can't init map.
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button : %1$s, list : %2$s
+isisfish.error.instanciate=Can't instanciate %1$s
+isisfish.error.instanciate.export=Can't instanciate export %1$s
+isisfish.error.integer.positif=Your input must be a positif integer (>1)
+isisfish.error.invalid.category.name=The category's name %1$s is not valid.
+isisfish.error.invalid.configuration=Configuration is not full, could not launch IsisFish, try again ?
+isisfish.error.invalid.configuration.title=Error while loading IsisFish
isisfish.error.invalid.costs.fix=les co\u00FBts fixes sont invalides
+isisfish.error.invalid.distribution.recruitment=distribution de recrutement invalide
isisfish.error.invalid.equation=Equation invalid
+isisfish.error.invalid.equation.name=Invalid equation name
+isisfish.error.invalid.file.name=The script name %1$s is not valid.
isisfish.error.invalid.interval.reproduction.recruitment=interval entre la reproduction et le recrutement invalide
isisfish.error.invalid.mean.weight=poids moyen invalide
isisfish.error.invalid.natural.death=natural mortality on classes naissantes invalide
isisfish.error.invalid.number=the number is invalid
isisfish.error.invalid.range=La gamme possible n'a pas de valeur acceptable
+isisfish.error.invalid.simulation.id=Invalid simulation id %1$s, availables \: %2$s
+isisfish.error.invalid.simulation.index=Invalid simulation index %1$s
+isisfish.error.invalid.simulation.index.availables=Invalid simulation index %1$s, availables \: %2$s
isisfish.error.invalid.values.params=Parametre controlable hors valeurs possibles
isisfish.error.invalidate.natural.death=natural mortality invalid
-isisfish.error.load.file",\ file));\ \ \ \ \ \ \ \ \ \ \ \ }\ finally\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (reader\ \!=
-isisfish.error.load.map",\ filename),\ eee);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ if(\!shapeLoaded){\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ a\ pas\ reussi\ a\ charger\ les\ fichiers\ demand\uFFFDs,\ on\ charge\ la\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ carte\ du\ monde\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ String\ filename\ =
+isisfish.error.invalide.simulation.index=Invalide simulation index
+isisfish.error.invoke.method=Can't invoke method '%1$s' for class %2$s
+isisfish.error.load.class=Can't load class\: %1$s
+isisfish.error.load.classloader=Can't create ClassLoader for script, bad directory\: %1$s for reason %2$s
+isisfish.error.load.file=could not load file %1$s
+isisfish.error.load.map=Can't load map file\: %1$s
+isisfish.error.log.closeAppender=could not close appender %1$s for category %2$s
+isisfish.error.log.console.dispose=Une erreur est survenue pendant la fermeture de la console %1$s de log, raison %2$s
+isisfish.error.log.createAppender=could not create appender [%1$s] \: %2$s for reason %3$s
+isisfish.error.log.foundAppender=\=could not found log appender %1$s for category %2$s
isisfish.error.matrix.more.2d=Matrice de plus de 2 dimensions\!\!\\nSelectionnez moins d'\u00E9l\u00E9ments ou utilisez l'op\u00E9rateur somme.
isisfish.error.migration.negative=Migration negative
-isisfish.error.no.matrix"\ +\ name));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ resume.append("\\n\\n=
+isisfish.error.no.matrix=No matrix for\:
+isisfish.error.no.null.time.step=Error, the time step should not be null
isisfish.error.no.sector=No sector defined
+isisfish.error.no.select.simulation=could not select simulation
+isisfish.error.no.selected.simulation=No Simulation selected
+isisfish.error.no.target.species=no target species in %1$s for %2$s
isisfish.error.not.connected=Error \: not connected
+isisfish.error.not.find.status=could not find status for file %1$s for reason %2$s
+isisfish.error.not.found.class=this class does not
+isisfish.error.not.found.code=could not found codeclass for %1$s
+isisfish.error.not.found.description=could not found description for %1$s
+isisfish.error.not.found.field=could not found field %1$s doc for %1$s
+isisfish.error.not.found.field.class=could not found field %1$s for class %2$s
+isisfish.error.not.found.species.population.container=Can't find species (%1$s) for Population container
isisfish.error.not.null.class.grown=classe mature vaut nul
isisfish.error.not.null.mean.weight=poids moyen nul
isisfish.error.not.null.natiral.death=natural mortality null
isisfish.error.not.possible.metier=Pas de m\u00E9tier possible
+isisfish.error.not.species.node.population.container=Population container not in Species node
+isisfish.error.not.support.class=this class does not support
+isisfish.error.number.classes.upper.zero=Error, the number of classes must be upper than 0
+isisfish.error.obtain.analyseplan=Can't obtain description of AnalysePlan
+isisfish.error.obtain.doc.export=Can't obtain @Doc on class export
+isisfish.error.obtain.doc.resultName=Can't obtain @Doc on ResultName
+isisfish.error.obtain.doc.rule=Can't obtain description for a Rule class
+isisfish.error.obtain.field=Can't obtain field @Doc for Rule %1$s
+isisfish.error.obtain.field.analyseplan=Can't obtain field @Doc for AnalysePlan %1$s
+isisfish.error.obtain.information.file=could not obtain information file for simulation %1$s
+isisfish.error.out.memory=Out of memory try with more memory (option -mx)
isisfish.error.overlap.season=Cette saison chevauche une autre saison
+isisfish.error.parse.date=Can't parse date %1$s
+isisfish.error.parse.long=Can't parse long %1$s
+isisfish.error.plan.parameter=Can't get plan parameter from compiled class
+isisfish.error.prepare.data=Can't prepare data
+isisfish.error.prepare.information.simulation=Can't prepare information for simulation
+isisfish.error.read.simulation=Can't read simulation information %1$s
+isisfish.error.read.simulation.parameters=Can't read simulation parameters from file %1$s
+isisfish.error.region.already.exists=This region already exists
+isisfish.error.region.name.empty=Region name is empty
+isisfish.error.remove.directory=Can't remove directory %1$s
+isisfish.error.remove.file=Can't remove file %1$s
+isisfish.error.rename.region=Can't rename region to %1$s
+isisfish.error.save.checkSum.compilation=Can't save checkSum to compilation\: %1$s
+isisfish.error.save.region=Can't save region
+isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
+isisfish.error.save.simulation.parameters=Can't save simulation parameters in file %1$s
+isisfish.error.script.check=Can't check file %1$s for reason %2$s
+isisfish.error.script.commit=Can't commit file %1$s for reason %2$s
+isisfish.error.script.create=isisfish.error.script.create
+isisfish.error.script.delete=Can't delete file %1$s for reason %2$s
+isisfish.error.script.diff=Can't diff file %1$s for reason %2$s
+isisfish.error.script.evaluate=Can't evaluate file %1$s for reason %2$s
+isisfish.error.script.export=Can't export for reason %1$s
+isisfish.error.script.import=Can't import file for reason %1$s
+isisfish.error.script.load=Can't load file %1$s for reason %2$s
+isisfish.error.script.save=Can't save file %1$s for reason %2$s
+isisfish.error.script.update=Can't update file %1$s for reason %2$s
+isisfish.error.simulation.log.openAppender=could not open appender of simulation %1$s for reason %2$s
+isisfish.error.simulation.resultXml.close=Can't close simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.open=Can't open simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.write=Can't write simulation result XML for reason %1$s
+isisfish.error.source.parameter=Can't get parameter from source
+isisfish.error.start=Can't start
+isisfish.error.status.files=Can't get status files\: %1$s
+isisfish.error.strategy.order=Strategy %1$s don't have 12 StrategyMonthInfo but %2$s. Recreate them
isisfish.error.text=The follow error occur during action
isisfish.error.title=Error
isisfish.error.undefined.classes=No classes defined
@@ -224,8 +344,16 @@
isisfish.error.undefined.zone.population=No population's zone defined
isisfish.error.undefined.zone.recruitment=No recrutment's zone defined
isisfish.error.undefined.zone.reproduction=No reprodution's zone defined
-isisfish.error.while.simulation",\ infos.getException()));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ control.setText(I18n._("isisfish.message.stop.with.error=
-isisfish.error.while.simulation",\ infos.getException()));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ control.setText(I18n._("isisfish.message.stop.with.error",infos.getException()));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ I\ don't\ known\ if\ you\ can\ come\ here\ with\ no\ previous\ simulation\ ?\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ e1)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("isisfish.error.obtain.information.file",\ e.getId()));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ control.addPropertyChangeListener(this);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationStart(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ *\ @see\ SimulationQueueListener\#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ */\ \ \ \ public\ void\ simulationStop(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }}//\ SimulationDoneQueueModel/*\ *\#\#%\ *\ Copyright\ (C)\ 2007\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationResultGetter.java\ *\ *\ Created\:\ 13\ nov.\ 07\ 12\:00\:14\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 722\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-14\ 01\:16\:35\ +0100\ (mer,\ 14\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ org.codelutin.math.matrix.MatrixND;import\ fr.ifremer.isisfish.types.Date;/**\ *\ Some\ SimulationResultListener\ can\ implement\ this\ interface\ to\ show\ that\ can\ *\ be\ used\ to\ retrieve\ result\ *\ \ *\ @author\ poussin\ */public\ interface\ SimulationResultGetter\ {\ \ \ \ /**\ \ \ \ \ *\ Retourne\ la\ matrice\ stocke\ pour\ un\ pas\ de\ temps\ \ \ \ \ *\ @param\ date\ le\ pas\ de\ temps\ que\ l'on\ souhaite\ \ \ \ \ *\ @param\ name\ le\ nom\ des\ resultats\ dont\ on\ veut\ la\ matrice\ \ \ \ \ *\ @return\ La\ matrice\ demand\uFFFDe\ ou\ null\ si\ aucune\ matrice\ ne\ correspond\ a\ \ \ \ \ *\ la\ demande.\ \ \ \ \ */\ \ \ \ \ public\ MatrixND\ getMatrix(SimulationContext\ context,\ Date\ date,\ String\ name);\ \ \ \ \ \ \ \ \ \ /**\ \ \ \ \ \ *\ Retourne\ une\ matrice\ contenant\ tous\ les\ pas\ de\ temps.\ \ \ \ \ \ *\ @param\ name\ le\ nom\ des\ resultats\ dont\ on\ veut\ une\ matrice\ globale.\ \ \ \ \ \ */\ \ \ \ \ public\ MatrixND\ getMatrix(SimulationContext\ context,\ String\ name);\ \ \ \ \ }/*\ *\#\#%\ *\ Copyright\ (C)\ 2002-2005\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ \ \ \ \ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ **\ SimulatorServerBadIdException.java**\ Created\:\ Fri\ Sep\ \ 6\ 2002**\ @author\ \ <poussin at codelutin.com>*\ Copyright\ Code\ Lutin*\ @version\ $Revision\:\ 167\ $**\ Mise\ a\ jour\:\ $Date\:\ 2006-01-23\ 15\:00\:17\ +0100\ (lun,\ 23\ jan\ 2006)\ $*\ par\ \:\ $Author\:\ bpoussin\ $*/package\ fr.ifremer.isisfish.simulator;public\ class\ SimulatorServerBadIdException\ extends\ RuntimeException\ {\ //\ SimulatorServerBadIdException\ \ \ \ /**\ \ */\ \ \ \ private\ static\ final\ long\ serialVersionUID\ =
+isisfish.error.unsupported.equation.langage=unsupported langage '%1$s' for equation\: %2$s
+isisfish.error.update.file=Can't update file '%1$s'
+isisfish.error.update.repository=Can't update local repository
+isisfish.error.vcs.connect=could not connect to vcs server, check the configuration... or contact us for help
+isisfish.error.vcs.no.anonymous.connection=
+isisfish.error.vcs.no.ssh.connection=could not connect with ssh configuration user %1$s, private key %2$s
+isisfish.error.vcs.pre.migrate=While migration, could not backup your old database %1$s for reason %2$s, a new database will be created at location %3$s.
+isisfish.error.wait.simThread=Can't wait SimThread
+isisfish.error.while.simulation=error while simulation %1$s
+isisfish.error.write.simulation=Can't write information %1$s
isisfish.exit.text=Something has change, please enter a comment
isisfish.exit.title=Exit
isisfish.export.directory=Export directory
@@ -248,6 +376,8 @@
isisfish.filter.log.tooltip.message=filter.log.tooltip.message
isisfish.filter.reset=filter.reset
isisfish.filter.result=filter.result
+isisfish.filter.select=filter.select
+isisfish.filter.select.simulation=select.simulation
isisfish.filter.simulation=filter.simulation
isisfish.filter.simulation.analysePlanNumber=analysePlanNumber
isisfish.filter.simulation.description=description
@@ -351,35 +481,149 @@
isisfish.input.selectNodeTree=Select node in tree
isisfish.input.title=Fishery Input
isisfish.launch.anonymous=read only
+isisfish.launch.debugMode=debug mode
isisfish.launch.email=email
+isisfish.launch.find.public.key=Public ssh key (*.pub) associated with the required private key
+isisfish.launch.first=First launch type vcs %1$s - version %2$s
isisfish.launch.firstname=firstname
+isisfish.launch.howto.save.key=Howto register your public ssh key in labs
+isisfish.launch.init.done=init done in %1$s.
isisfish.launch.lasstname=lasstname
+isisfish.launch.save.key=Goto to labs for register your ssh public key
isisfish.launch.server.authenticationMethod=server access
isisfish.launch.server.login=server login
+isisfish.launch.server.ssh.confirm.change.method=Changing authentication method requires a migration at next launch, confirm this action.
+isisfish.launch.server.ssh.confirm.overwrite.key=Ssh key %1$s already exists, confirm to overwrite.
isisfish.launch.server.ssh.confirm.passphrase=confirm passphrase
isisfish.launch.server.ssh.key.change=Change your ssh key
+isisfish.launch.server.ssh.key.clipboard=Your public key was copied in clipboard
isisfish.launch.server.ssh.key.generate=Generate ssh key
+isisfish.launch.server.ssh.key.generate.error=An error occurs while generating ssh key %1$s (%2$s)
+isisfish.launch.server.ssh.key.generate.succes=The ssh key %1$s was generated with success. Do you want to register it to labs ?
+isisfish.launch.server.ssh.key.no.key=No ssh key found or your have not selected ssh authentication method, really wants to go to labs ?
+isisfish.launch.server.ssh.key.register=Register your public ssh key in labs.
isisfish.launch.server.ssh.no.passphrase=no passphrase
isisfish.launch.server.ssh.passphrase=passphrase
isisfish.launch.server.ssh.privateKeyFile=private ssh key
isisfish.launch.server.ssh.publicKeyFile=public ssh key
isisfish.launch.ssh=read-write (ssh)
+isisfish.launch.start=Launching Isis-fish ... %1$s
+isisfish.launch.stop=Stopping simulation...
+isisfish.launching=after init done in %1$s.
+isisfish.log.addAppender=add appender [%1$s]
isisfish.log.body=Message to add
-isisfish.log.mail.send.title",\ simulationFile.getName()));\ \ \ \ \ \ \ \ this.from\ =
+isisfish.log.closeAppender=closing appender %1$s for category %2$s
+isisfish.log.mail.failed=Can't send report by mail. Is your mail server up ? (I'm trying to contact the < %1$s > smtp server)
+isisfish.log.mail.send=A report has been sent to %1$s
+isisfish.log.mail.send.title=Send simulation %1$s by email
isisfish.log.mailTo=Destination adress
+isisfish.log.removeAppender=remove appender [%1$s]
+isisfish.log.restoreLogLevel=swap back level for logger %1$s from level %2$s to level %3$s
isisfish.log.sendAll=Send the complete simulation archive
isisfish.log.sendMail=Send by email
+isisfish.log.simulation.name=IsisFish simulation %1$s
+isisfish.log.swapLogLevel=swap level for logger %1$s from level %2$s to level%3$s
isisfish.log.tooltip.body=The message will be join to email
isisfish.log.tooltip.mailTo=Enter destination adress
isisfish.log.tooltip.sendAll=Send the complete simulation archive, or just the log file
isisfish.log.tooltip.sendMail=Click here to send the email with files
+isisfish.message.add.cvs=Add from %1$s files %2$s.
+isisfish.message.add.objets.simulation=Add new objets simulation
+isisfish.message.add.queue=%1$s added to queue simulation
+isisfish.message.add.queue.remote=%1$s added to remote queue simulation
+isisfish.message.backup.database.finished=backup database finished
+isisfish.message.backup.database.progress=backup database in progress
+isisfish.message.cancel.finished=Cancel finished
+isisfish.message.check.finished=check finished
+isisfish.message.check.region=Check region ...
+isisfish.message.checking.cell=Checking cell
isisfish.message.choose.archive=choose archive file or directory
-isisfish.message.load.map",\ filename,\ shp,\ ssx));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ addShapeLayer(filename,\ shp,\ ssx,\ "ff000000",\ "ffbdde83=
+isisfish.message.comment.region.modification=Enter comment about your region modification
+isisfish.message.commit=Commit the change
+isisfish.message.commit.cancelled=commit cancelled
+isisfish.message.commit.finished=commit finished
+isisfish.message.commit.region.canceled=Commit region canceled
+isisfish.message.commiting.region=Commiting region %1$s ...
+isisfish.message.compilation.time=Compilation time %1$ss
+isisfish.message.confirm.delete.object=Do you really want delete object %1$s
+isisfish.message.confirm.remove.region=Do you really want to remove the region %1$s ?
+isisfish.message.confirm.remove.script=Do you want to remove script ? '%1$s'
+isisfish.message.copy.finished=Copy finished
+isisfish.message.copy.region=Copy region to %1$s
+isisfish.message.copy.revision=Working copy initialize fine... Revision \: [ %1$s - %2$s ]
+isisfish.message.create.region.canceled=Create region canceled
+isisfish.message.creating.region=Creating region %1$s
+isisfish.message.creation.done=creation done %1$s
+isisfish.message.creation.finished=Creation finished
+isisfish.message.delete.canceled=delete canceled
+isisfish.message.delete.entities=Delete entities
+isisfish.message.delete.entity=Delete entity
+isisfish.message.delete.finished=delete finished
+isisfish.message.delete.object=To delete object %1$s, all next object will be deleted\\n\\n
+isisfish.message.diff.finished=file in state %1$s
+isisfish.message.directory.not.exists=Parent directory of file %1$s does not exists, Do you want to create it ?
+isisfish.message.evaluation.finished=evaluation finished
+isisfish.message.export.cancelled=export cancelled
+isisfish.message.export.done=export done
+isisfish.message.export.path.tozip=toZip %1$s
+isisfish.message.export.result=zip %1$s file(s) in %2$s (size %3$s)
+isisfish.message.export.scripts.file=Export scripts to file %1$s
+isisfish.message.export.zip=Export to zip file %1$s
+isisfish.message.file.already.exists=File %1$s already exists, Do you want to overwrite it ?
+isisfish.message.file.overwrite=File exists, do you want overwrite it ?
+isisfish.message.import=Import %1$s
+isisfish.message.import.finished=Import finished
+isisfish.message.import.region.name=Enter name for imported region
+isisfish.message.import.region.xml=XMLed Region
+isisfish.message.import.region.zipped=Zipped Region
+isisfish.message.import.scripts.file=Import scripts from file %1$s
+isisfish.message.import.scripts.file.cancelled=Import scripts cancelled
+isisfish.message.import.scripts.file.done=Import scripts done
+isisfish.message.import.scripts.zipped=Zipped Scripts
+isisfish.message.import.xml.v2.file\ =Import xml v2 file
+isisfish.message.import.zip=Import zip file
+isisfish.message.load.finished=load finished
+isisfish.message.load.map=Try to load map file\: %1$s (%2$s, %3$s)
+isisfish.message.load.region.canceled=load region canceled
+isisfish.message.loading.old.simulation=Loading old simulation ...
+isisfish.message.loading.region=Loading region ...
+isisfish.message.name.imported.region=Enter name for imported region
+isisfish.message.new.filename=Enter the name of the new file. (use only chars and _ and start with uppercase)
+isisfish.message.new.region.name=Enter new region name
+isisfish.message.no.diff=No diff found for file %1$s, since it is a %2$s
+isisfish.message.old.simulation.loaded=Old simulation loaded
+isisfish.message.page.modified=This page has been modified, do you want to save it ?
+isisfish.message.presimulation.script.execution=Presimulation Script execution
+isisfish.message.recruitment.number.month=Input the number of month of recruitment
+isisfish.message.region.commited=Region commited
+isisfish.message.region.loaded=Region loaded
+isisfish.message.region.remove.canceled=Region remove canceled
+isisfish.message.region.removed=Region removed
+isisfish.message.remove.canceled=Remove canceled
+isisfish.message.remove.files=Remove files %1$s.
+isisfish.message.remove.finished=Remove finished
+isisfish.message.remove.unnecessary.cells=Remove unnecessary cells
+isisfish.message.removing.region=Removing region %1$s ...
isisfish.message.result.verif.region=R\u00E9sultat de la v\u00E9rification de la r\u00E9gion
+isisfish.message.save.finished=save finished
+isisfish.message.saveModel.finished=Save model finished
+isisfish.message.search.data=Search data ...
+isisfish.message.setting.cache.aspects=Setting Cache aspects
+isisfish.message.setting.trace.aspects=Setting Trace aspects
+isisfish.message.simulation.ended=Simulation ended
+isisfish.message.simulation.execution=Simulation execution
+isisfish.message.spacialized.visualisation=Spacialized visualisation
+isisfish.message.stop.with.error=stop with error %1$s
+isisfish.message.synchronize.done=synchronize done.
+isisfish.message.tray.disabled=SystemTray disabled
+isisfish.message.update.finished=update finished
isisfish.metier.comments=Comments
isisfish.metier.name=Name
isisfish.metier.rangeValues=Range of values
isisfish.metier.title=Metier
+isisfish.metierMonitor.metiers=Metiers
+isisfish.metierMonitor.strategies=Strategies
+isisfish.metierSeasonInfo.toString=%1$s season %2$s-%3$s
isisfish.metierSeasonInfoSpecies.mainSpecies=Main species for the metier
isisfish.metierSeasonInfoSpecies.selectSeason=Select a season
isisfish.metierSeasonInfoSpecies.selectSpecies=Select a species
@@ -389,7 +633,44 @@
isisfish.metierSeasonInfoZone.season=Season
isisfish.metierSeasonInfoZone.selectSeason=Select a season
isisfish.metierSeasonInfoZone.title=Seasons / Zones
+isisfish.migration.cvs.description=Migrate from CVS to SVN [v %1$s]
+isisfish.migration.svn.protocol.description=Migrate from SVN [v %1$s - %2$s] to SVN [v %3$s - %4$s]
+isisfish.migration.svn.version.description=Migrate from SVN [v %1$s - %2$s] to SVN [v %3$s - %4$s]
isisfish.monitor.title=Application Monitor
+isisfish.month.april=april
+isisfish.month.august=august
+isisfish.month.december=december
+isisfish.month.february=february
+isisfish.month.january=january
+isisfish.month.july=july
+isisfish.month.june=june
+isisfish.month.march=march
+isisfish.month.may=may
+isisfish.month.november=november
+isisfish.month.october=october
+isisfish.month.september=september
+isisfish.option.description.addScript=
+isisfish.option.description.changeConfig=
+isisfish.option.description.changeFileConfig=
+isisfish.option.description.createSshKey=
+isisfish.option.description.editConfig=
+isisfish.option.description.exportData=
+isisfish.option.description.exportScript=
+isisfish.option.description.help=
+isisfish.option.description.helpConfig=
+isisfish.option.description.import=
+isisfish.option.description.importAndRenameRegion=
+isisfish.option.description.list=
+isisfish.option.description.mavenFile=
+isisfish.option.description.resetConfig=
+isisfish.option.description.showConfig=
+isisfish.option.description.simulate=
+isisfish.option.description.sshKeyFile=
+isisfish.option.description.ui=
+isisfish.option.description.update=
+isisfish.option.description.vcsAddRemove=
+isisfish.option.description.vcsUpdateCommitState=
+isisfish.params.changeLogLev=Change from level '%1$s' to level '%2$s'
isisfish.params.clearFilter=Clear filter
isisfish.params.description=Description
isisfish.params.filter=Filter
@@ -400,9 +681,31 @@
isisfish.params.ruleParameters=Rule's parameters
isisfish.params.simulationName=Simulation name
isisfish.params.title=Parameters
+isisfish.params.toString.fishery=P\u00EAcherie\: %1$s\\n\\n
+isisfish.params.toString.lib.logger.level=Level of libraries' logger %1$s
+isisfish.params.toString.number.years=Number of years\: %1$s\\n\\n
+isisfish.params.toString.plan=Plan\: %1$s
+isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\\n\\n
+isisfish.params.toString.populations=Populations\:
+isisfish.params.toString.rule=Rule\: %1$s
+isisfish.params.toString.script.logger.level=Level of scripts' logger %1$s
+isisfish.params.toString.script.presimulation=Script de presimulation
+isisfish.params.toString.simul.logger.level=Level of simulator's logger %1$s
+isisfish.params.toString.simulation.done=Simulation done with %1$s\:
+isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation\:
isisfish.params.useAnalysePlan=Use analyse plan
isisfish.params.usePreSimulationScript=Use pre simulation script
+isisfish.population.capturability=Capturability
isisfish.population.comments=Comments
+isisfish.population.group=Group
+isisfish.population.groups=Groups
+isisfish.population.mappingZoneReproZoneRecru=MappingZoneReproZoneRecru
+isisfish.population.matrixAbundance=matrixAbundance
+isisfish.population.matrixAbundance1D=matrixAbundance1D
+isisfish.population.recruitment=Recruitment
+isisfish.population.reproduction=Reproduction
+isisfish.population.season=Season
+isisfish.population.zones=Zones
isisfish.populationBasics.geographicID=geographicID
isisfish.populationBasics.growth=growth
isisfish.populationBasics.growthReverse=growthReverse
@@ -427,6 +730,7 @@
isisfish.populationGroup.price=price
isisfish.populationGroup.reproductionRate=reproductionRate
isisfish.populationGroup.title=inputPopulationGroup
+isisfish.populationGroup.toString=%1$s Group %2$s
isisfish.populationMigration.comments=Comments
isisfish.populationMigration.selectSeason=Select a season
isisfish.populationMigration.title=inputPopulationMigration
@@ -446,6 +750,15 @@
isisfish.populationRecruitment.recruitmentDistribution=Recruitment Distribution
isisfish.populationRecruitment.reproductionEquation=ReproductionEquation
isisfish.populationRecruitment.title=inputPopulationRecruitment
+isisfish.populationSeasonInfo.arrival=Arrival
+isisfish.populationSeasonInfo.departure=Departure
+isisfish.populationSeasonInfo.distributionSpawing=Distribution of spawing
+isisfish.populationSeasonInfo.emigration=Emigration
+isisfish.populationSeasonInfo.group=Group
+isisfish.populationSeasonInfo.immigration=Immigration
+isisfish.populationSeasonInfo.migration=Migration
+isisfish.populationSeasonInfo.months=Months
+isisfish.populationSeasonInfo.toString=%1$s season %2$s-%3$s
isisfish.populationSeasons.Reproduction=Reproduction
isisfish.populationSeasons.changeGroup=Change of group
isisfish.populationSeasons.comments=Comments
@@ -468,22 +781,29 @@
isisfish.preScript.backParameter=Back to parameter tab
isisfish.preScript.title=Pre simulation script
isisfish.queue.cancelled=cancelled
+isisfish.queue.id=id
+isisfish.queue.local=Local
+isisfish.queue.name=Queue
+isisfish.queue.plan=Plan
+isisfish.queue.progression=Progression
isisfish.queue.showLog=Show simulation log
isisfish.queue.simulationLaunch=Simulation queue launch
+isisfish.queue.status=Status
isisfish.queue.stopSimulation=Stop simulation
isisfish.queue.title=Queue
isisfish.result.abundance=Abondance
isisfish.result.add=Add a result
-isisfish.result.begin.simulation=En debut de Simulation\:
+isisfish.result.begin.simulation=En debut de Simulation\:
isisfish.result.capture=Capture
isisfish.result.capture.metier=Capture par metier
isisfish.result.choose.simulation=Choose a Simulation
isisfish.result.datas=Datas
isisfish.result.datasRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.donneeRadioButton
isisfish.result.desktopPane=defaultToolTip-fr.ifremer.resultat.ResultatView.desktopPane
-isisfish.result.dimension\ =Dimension
-isisfish.result.end.simulation=En fin de Simulation\:
+isisfish.result.dimension\ =Dimension
+isisfish.result.end.simulation=En fin de Simulation\:
isisfish.result.export=Export
+isisfish.result.export.file=Export text file
isisfish.result.file=File
isisfish.result.graph=Graph
isisfish.result.graphRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.graphRadioButton
@@ -576,6 +896,7 @@
isisfish.script.title=Script Editor
isisfish.script.txtExport=txtExport
isisfish.script.update=Update
+isisfish.season.toString=season %1$s-%2$s
isisfish.selectivity.equation=Equation
isisfish.selectivity.selectPopulation=Select a population
isisfish.selectivity.title=Selectivity
@@ -603,6 +924,7 @@
isisfish.setOfVessels.fixedCosts=fixedCosts
isisfish.setOfVessels.name=name
isisfish.setOfVessels.numberOfVessels=numberOfVessels
+isisfish.setOfVessels.technicalEfficiency=
isisfish.setOfVessels.title=Caracteristics
isisfish.setOfVessels.vesselType=vesselType
isisfish.simpleResult.legendPanel=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.legendPanel
@@ -610,6 +932,8 @@
isisfish.simpleResult.resultatMap=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMap
isisfish.simpleResult.resultatMapToolBar=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMapToolBar
isisfish.simpleResult.table=defaultToolTip-fr.ifremer.isisfish.map.SimpleResultatMapBean.table12
+isisfish.simulation.log.console.title=Log console for simulation '%1$s'
+isisfish.simulation.log.showConsole=display log console for simulation %1$s
isisfish.simulation.menu.about=About
isisfish.simulation.menu.close=Close
isisfish.simulation.menu.file=File
@@ -627,12 +951,21 @@
isisfish.species.structured=structured
isisfish.species.title=inputSpecies
isisfish.strategy.comments=Comments
+isisfish.strategy.inactivity=
+isisfish.strategy.inactivityEquationUsed=
isisfish.strategy.name=name
isisfish.strategy.proportionSetOfVessels=proportionSetOfVessels
isisfish.strategy.title=Caracteristics
+isisfish.strategyMonthInfo.metier=Metier
isisfish.strategyMonthInfo.minInactivityDays=minInactivityDays
isisfish.strategyMonthInfo.numberOfTrips=numberOfTrips
+isisfish.strategyMonthInfo.proportion=Proportion
isisfish.strategyMonthInfo.title=StrategyMonthInfo
+isisfish.strategyMonthInfo.toString=%1$s %2$s
+isisfish.timeUnit.day=Day
+isisfish.timeUnit.hours=Hours
+isisfish.tray.simulation=<b>Isis-fish<b><p>%1$s - %2$s/%3$s
+isisfish.tray.simulation.no=<b>Isis-fish<b><p><i>No simulation<i>
isisfish.tripType.comments=Comments
isisfish.tripType.duration=Duration
isisfish.tripType.minTime=Minimum time between trips
@@ -644,6 +977,9 @@
isisfish.vcs.commit.cancel=vcs.commit.cancel
isisfish.vcs.commit.label=vcs.commit.label
isisfish.vcs.commit.ok=vcs.commit.ok
+isisfish.vcs.config.title=Vcs configuration Modifier
+isisfish.vcs.configuration.title=VCS server configuration
+isisfish.vcs.migrate.end=Migration done in %1$ss.<br/>New database in is located at [%2$s]
isisfish.vcs.update=vcs.update
isisfish.vcs.update.cancel=cancel
isisfish.vcs.update.checkAll=checkAll
@@ -670,6 +1006,7 @@
isisfish.vcs.updateconfirm.label2=
isisfish.vcs.updateconfirm.ok=ok
isisfish.vcs.updateconfirm.tooltip.checkAll=
+isisfish.versionStorage.removed=Removed
isisfish.vesselType.activityRange=Activity range
isisfish.vesselType.comments=Comments
isisfish.vesselType.fuelCost=Fuel cost of travel
@@ -713,4 +1050,36 @@
isisfish.zone.comments=Comments
isisfish.zone.name=Name
isisfish.zone.title=inputZone
-null)\ {\ \ \ \ \ \ \ \ \ \ \ \ logMail\ =
+lutinutil.common.action=Action
+lutinutil.common.file=File
+lutinutil.common.logDiff=show diff
+lutinutil.common.module=Module
+lutinutil.common.rev=Revision
+lutinutil.common.select=Select
+lutinutil.error.checkout.dir=Can't checkout dir %1$s
+lutinutil.error.fieldmodel.already.registred=FieldAccess [%1$s] is already registred
+lutinutil.error.fieldmodel.not.registred=could not found a matching entry in cache for [%1$s]
+lutinutil.error.fieldmodel.unmatchin.options=you can not defined a such model with no the same number of optionClass and optionNames
+lutinutil.error.init.config=config is not init, you should invoke on the config validate(true) method to validate it and finish his init %1$s
+lutinutil.error.init.no.config=should invoke %1$s\#init(VCSType,Properties) before required instance.
+lutinutil.vcs.action.add=add
+lutinutil.vcs.action.changeLog=changeLog
+lutinutil.vcs.action.checkout=checkout
+lutinutil.vcs.action.commit=commit
+lutinutil.vcs.action.delete=delete
+lutinutil.vcs.action.diff=diff
+lutinutil.vcs.action.overwriteAndUpdate=overwriteAndUpdate
+lutinutil.vcs.action.revert=revert
+lutinutil.vcs.action.update=update
+lutinutil.vcs.state.missing=missing
+lutinutil.vcs.state.modified=modified
+lutinutil.vcs.state.outofdate=outofdate
+lutinutil.vcs.state.outofdateAndModified=outofdateAndModified
+lutinutil.vcs.state.unknown=unknown
+lutinutil.vcs.state.unversionned=unversionned
+lutinutil.vcs.state.unversionnedOrMissing=unversionnedOrMissing
+lutinutil.vcs.state.uptodate=uptodate
+no\ properties\ found\ or\ unsafe\ properties\ found\ %1$s=no properties found or unsafe properties found %1$s
+the\ property\ %1$s\ is\ mandatory\ but\ missed.=the property %1$s is mandatory but missed.
+to\ use\ ssh\ authentication\ mode,\ you\ must\ have\ a\ username.\ %1$s.=to use ssh authentication mode, you must have a username. %1$s.
+to\ use\ ssh\ authentication\ mode,\ you\ must\ have\ an\ existing\ private\ key\ %1$s\ \:\ %2$s.=to use ssh authentication mode, you must have an existing private key %1$s \: %2$s.
Modified: trunk/isis-fish/src/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- trunk/isis-fish/src/resources/i18n/isis-fish-fr_FR.properties 2008-08-18 13:42:57 UTC (rev 1302)
+++ trunk/isis-fish/src/resources/i18n/isis-fish-fr_FR.properties 2008-08-18 13:44:18 UTC (rev 1303)
@@ -1,78 +1,17 @@
-=
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ new\ JInternalFrame(simulation.getName(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true,\ //resizable\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true,\ //closable\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true,\ //maximizable\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ true);//iconifiable\ \ \ \ \ \ \ \ \ \ \ \ intFrame.setContentPane(resEdit.getRootPane());\ \ \ \ \ \ \ \ \ \ \ \ intFrame.setVisible(true);\ \ \ \ \ \ \ \ \ \ \ \ //\t\ \ \ \ intFrame.pack();\ \ \ \ \ \ \ \ \ \ \ \ intFrame.setSize(new\ Dimension(800,700));\ \ \ \ \ \ \ \ \ \ \ \ getDesktopPane().add(intFrame);\ \ \ \ \ \ \ \ \ \ \ \ try{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ intFrame.setSelected(true);\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (PropertyVetoException\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn("Error\ dans\ l\ internalFrame\ ",\ eee);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ on_voirSimulationLogButton_clicked()\ {\ \ \ \ \ \ \ \ String\ name\ =
-\ (String)getSimulation().getSelectedItem();\ \ \ \ \ \ \ \ if\ (name\ \!=
-\ (String)getSimulation().getSelectedItem();\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ SimulationLoggerUtil.showSimulationLogConsole(name);\ \ \ \ \ \ \ \ }\ catch\ (Exception\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ ignore\ ?\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ on_filterSimulationLogButton_clicked()\ {\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ List<String>\ result\ =
-\ -5643196187139951889L;\ \ \ \ public\ SimulationException(String\ msg)\ {\ \ \ \ \ \ \ \ super(msg);\ \ \ \ }\ \ \ \ public\ SimulationException(String\ msg,\ Throwable\ e)\ {\ \ \ \ \ \ \ \ super(msg,\ e);\ \ \ \ }}\ //\ SimulationException/*\ *\#\#%\ *\ Copyright\ (C)\ 2007\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationResultListener.java\ *\ *\ Created\:\ 13\ nov.\ 07\ 11\:59\:53\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 739\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-20\ 18\:46\:38\ +0100\ (mar,\ 20\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ org.codelutin.math.matrix.MatrixND;import\ fr.ifremer.isisfish.IsisFishException;import\ fr.ifremer.isisfish.types.Date;/**\ *\ @author\ poussin\ *\ */public\ interface\ SimulationResultListener\ extends\ SimulationListener\ {\ \ \ \ \ \ \ \ public\ void\ addResult(SimulationContext\ context,\ \ \ \ \ \ \ \ \ \ \ \ Date\ date,\ String\ name,\ MatrixND\ mat)\ throws\ IsisFishException;\ \ \ \ }/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationQueueEvent.java\ *\ *\ Created\:\ 17\ ao\uFFFDt\ 2006\ 22\:00\:41\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 217\ $\ *\ *\ Last\ update\:\ $Date\:\ 2006-08-21\ 17\:43\:41\ +0200\ (lun,\ 21\ ao\u00FB\ 2006)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ java.util.EventObject;/**\ *\ @author\ poussin\ *\ */public\ class\ SimulationQueueEvent\ extends\ EventObject\ {\ \ \ \ /**\ simulation\ id\ */\ \ \ \ protected\ String\ id;\ \ \ \ \ \ \ \ /**\ \ \ \ \ *\ @param\ source\ \ \ \ \ */\ \ \ \ public\ SimulationQueueEvent(Object\ source,\ String\ id)\ {\ \ \ \ \ \ \ \ super(source);\ \ \ \ \ \ \ \ this.id\ =
-\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ this\ is\ the\ all\ levels\ reader\ to\ create,\ depends\ on\ no\ others\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader\ =
-\ 0;\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ //log.debug("\ offset\:"\ +\ offset\ +\ "\ width\:"\ +\ model.nbLinesInEditor);\ \ \ \ \ \ \ \ String[]\ result;\ \ \ \ \ \ \ \ //\ obtain\ lines\ from\ reader\ \ \ \ \ \ \ \ result\ =
-\ 4449196856169240128L;\ \ \ \ public\ SimulatorServerBadIdException(String\ msg)\ {\ \ \ \ \ \ \ \ super(msg);\ \ \ \ }\ \ \ \ public\ SimulatorServerBadIdException(String\ msg,\ Throwable\ e)\ {\ \ \ \ \ \ \ \ super(msg,\ e);\ \ \ \ }}\ //\ SimulatorServerBadIdException/*\ *\#\#%\ *\ Copyright\ (C)\ 2002-2005\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ \ \ \ \ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationException.java\ *\ *\ Created\:\ Wed\ Aug\ 14\ 2002\ *\ *\ @author\ \ <poussin at codelutin.com>\ *\ @version\ $Revision\:\ 167\ $\ *\ *\ Mise\ a\ jour\:\ $Date\:\ 2006-01-23\ 15\:00\:17\ +0100\ (lun,\ 23\ jan\ 2006)\ $\ *\ par\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;public\ class\ SimulationException\ extends\ RuntimeException\ {\ //\ SimulationException\ \ \ \ /**\ \ */\ \ \ \ private\ static\ final\ long\ serialVersionUID\ =
-\ IsisConfig.Module.REGION;\ \ \ \ \ \ \ \ if\ (create)\ {\ \ \ \ \ \ \ \ \ \ \ \ doCheckoutModule(handler,module,category);\ \ \ \ \ \ \ \ }\ else\ {\ \ \ \ \ \ \ \ \ \ \ \ File\ f\ =
-\ IsisConfig.getResultExportDirectory(rootDirectory);\ \ \ \ \ \ \ \ \ \ \ \ exportDir.mkdirs();\ \ \ \ \ \ \ \ \ \ \ \ ExportHelper.doExport(simulation,\ exportDir,\ parameters.getExportNames(),\ rootDirectory);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ fr.ifremer.isisfish.simulator.SimulationListener\#beforeSimulation(fr.ifremer.isisfish.simulator.SimulationContext)\ \ \ \ \ */\ \ \ \ public\ void\ beforeSimulation(SimulationContext\ context)\ {\ \ \ \ }}/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ MetierMonitor.java\ *\ *\ Created\:\ 21\ ao\uFFFDt\ 2006\ 15\:43\:19\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 652\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-08\ 15\:04\:16\ +0100\ (jeu,\ 08\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ ruchaud\ $\ */package\ fr.ifremer.isisfish.simulator;import\ static\ org.codelutin.i18n.I18n.n_;import\ java.util.ArrayList;import\ java.util.Collection;import\ java.util.HashMap;import\ java.util.HashSet;import\ java.util.List;import\ java.util.Map;import\ java.util.Set;import\ org.apache.commons.collections.MapIterator;import\ org.apache.commons.collections.keyvalue.MultiKey;import\ org.apache.commons.collections.map.MultiKeyMap;import\ org.apache.commons.logging.Log;import\ org.apache.commons.logging.LogFactory;import\ org.codelutin.math.matrix.MatrixFactory;import\ org.codelutin.math.matrix.MatrixND;import\ org.codelutin.topia.TopiaContext;import\ org.codelutin.topia.TopiaException;import\ fr.ifremer.isisfish.IsisFishRuntimeException;import\ fr.ifremer.isisfish.entities.Metier;import\ fr.ifremer.isisfish.entities.SetOfVessels;import\ fr.ifremer.isisfish.entities.Strategy;import\ fr.ifremer.isisfish.entities.StrategyMonthInfo;import\ fr.ifremer.isisfish.types.Date;import\ fr.ifremer.isisfish.types.Month;/**\ *\ ATTENTION\:\ l'implantation\ de\ cette\ classe\ n'est\ peut-etre\ pas\ correct.\ Il\ faut\ *\ absolument\ verifier\ le\ FIXME,\ mais\ il\ est\ difficile\ de\ le\ faire\ car\ *\ la\ plupart\ des\ methodes\ de\ cette\ objets\ ne\ semble\ plus\ utilis\uFFFD\ dans\ la\ *\ version\ 2.3.x\ de\ isis\ *\ \ *\ @author\ poussin\ */public\ class\ MetierMonitor\ {\ \ \ \ /**\ to\ use\ log\ facility,\ just\ put\ in\ your\ code\:\ log.info(\\"...\\=
-\ IsisContext.get().getMainConfig().getDefaultMapFile();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ String\ shp\ =
-\ LogLevelUtil.getLogLevels(levels);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ create\ the\ levels\ reader\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader\ =
-\ Session.getDefaultInstance(props,\ null);\ \ \ \ \ \ \ \ //\ --\ Create\ a\ new\ message\ --\ \ \ \ \ \ \ \ Message\ msg\ =
-\ SimulationFilterUtil.createFilterModel(value);\ \ \ \ \ \ \ \ //\ to\ used\ directly\ model.getFilteredResult()\ in\ xml\ \ \ \ \ \ \ \ //\ we\ must\ fill\ filterModel\ result\ with\ original\ items\ \ \ \ \ \ \ \ filterModel.selectAll();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ getSimulation().setEditable(false);\ \ \ \ \ \ \ \ model\ =
-\ SimulationFilterUtil.filterSimulation(filterModel);\ \ \ \ \ \ \ \ \ \ \ \ model.removeAllElements();\ \ \ \ \ \ \ \ \ \ \ \ for\ (String\ s\ \:\ result)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.addElement(s);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ catch\ (Exception\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ filter\ on\ simulations=
-\ SimulationStorage.getSimulation(name);\ \ \ \ \ \ \ \ \ \ \ \ ResultEdit\ resEdit\ =
-\ SimulationStorage.getSimulation(name);\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ storage.delete(false);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ initSimulation();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn("Can't\ delete\ simulation",\ eee);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ on_openWindowButton_clicked(){\ \ \ \ \ \ \ \ String\ name\ =
-\ System.getProperties();\ \ \ \ \ \ \ \ //\ --\ Attaching\ to\ default\ Session,\ or\ we\ could\ start\ a\ new\ one\ --\ \ \ \ \ \ \ \ props.put("mail.smtp.host",\ smtpServer);\ \ \ \ \ \ \ \ Session\ session\ =
-\ context.getSimulationStorage();\ \ \ \ \ \ \ \ SimulationParameter\ parameters\ =
-\ e.getId();\ \ \ \ \ \ \ \ SimulationControl\ control\ =
-\ e.getUnitsToScroll();\ \ \ \ \ \ \ \ long\ newOffset;\ \ \ \ \ \ \ \ newOffset\ =
-\ evt.getPropertyName();\ \ \ \ \ \ \ \ if\ (properyName.equals(LogConsole.DISPOSE_CHANGED_PROPERTY))\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ ui\ required\ a\ dispose\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ close();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(_("isisfish.error.log.console.dispose"\ ,this,e.getMessage()));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ return;\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ //log.info(properyName\ +\ "\ \:\ "\ +\ evt.getNewValue());\ \ \ \ \ \ \ \ if\ (properyName.equals(RESET_CHANGED_PROPERTY))\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ reset\ filter\ model\ \ \ \ \ \ \ \ \ \ \ \ model.setLevels(0);\ \ \ \ \ \ \ \ \ \ \ \ model.setSearchText("=
-\ false;\ \ \ \ }\ \ \ \ public\ void\ propertyChange(PropertyChangeEvent\ evt)\ {\ \ \ \ \ \ \ \ String\ properyName\ =
-\ filename\ +\ ".shp";\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ String\ ssx\ =
-\ filename\ +\ ".ssx";\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ addShapeLayer(filename,\ shp,\ ssx,\ "ff000000",\ "ffbdde83=
-\ from;\ \ \ \ \ \ \ \ this.logFile\ =
-\ getRowCount();\ \ \ \ \ \ \ \ fireTableRowsInserted(row,\ row);\ \ \ \ \ \ \ \ SimulationControl\ control\ =
-\ getSimulationControl(e.getId());\ \ \ \ \ \ \ \ control.addPropertyChangeListener(this);\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationWillBeRemoved(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ String\ id\ =
-\ getSimulationControl(e.getId());\ \ \ \ \ \ \ \ if\ (control\ \!=
-\ getSimulationIndex(id);\ \ \ \ \ \ \ \ if\ (isRowIndexValid(row))\ {\ \ \ \ \ \ \ \ \ \ \ \ fireTableRowsDeleted(row,\ row);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ progress.remove(id);\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationStart(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ *\ @see\ SimulationQueueListener\#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ */\ \ \ \ public\ void\ simulationStop(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }}\ //\ SimulationQueueModel/*\ *\#\#%\ *\ Copyright\ (C)\ 2007\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationExportResultWrapper.java\ *\ *\ Created\:\ 14\ nov.\ 07\ 00\:22\:51\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 1128\ $\ *\ *\ Last\ update\:\ $Date\:\ 2008-01-08\ 20\:21\:28\ +0100\ (mar,\ 08\ jan\ 2008)\ $\ *\ by\ \:\ $Author\:\ tchemit\ $\ */package\ fr.ifremer.isisfish.simulator;import\ java.io.File;import\ fr.ifremer.isisfish.IsisConfig;import\ fr.ifremer.isisfish.datastore.SimulationStorage;import\ fr.ifremer.isisfish.export.ExportHelper;/**\ *\ @author\ poussin\ *\ */public\ class\ SimulationExportResultWrapper\ implements\ SimulationListener\ {\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ fr.ifremer.isisfish.simulator.SimulationListener\#afterSimulation(fr.ifremer.isisfish.simulator.SimulationContext)\ \ \ \ \ */\ \ \ \ public\ void\ afterSimulation(SimulationContext\ context)\ {\ \ \ \ \ \ \ \ SimulationStorage\ simulation\ =
-\ getSimulationNames();\ \ \ \ \ \ \ \ //\ create\ filter\ model\ \ \ \ \ \ \ \ filterModel\ =
-\ id;\ \ \ \ }\ \ \ \ \ \ \ \ /**\ \ \ \ \ *\ @return\ Returns\ the\ id.\ \ \ \ \ */\ \ \ \ public\ String\ getId()\ {\ \ \ \ \ \ \ \ return\ this.id;\ \ \ \ }\ \ \ \ }/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ PopulationMonitor.java\ *\ *\ Created\:\ 21\ ao\uFFFDt\ 2006\ 15\:41\:18\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 428\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-10-15\ 14\:56\:13\ +0200\ (lun,\ 15\ oct\ 2007)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ java.util.ArrayList;import\ java.util.HashMap;import\ java.util.List;import\ java.util.Map;import\ org.apache.commons.collections.MapIterator;import\ org.apache.commons.collections.keyvalue.MultiKey;import\ org.apache.commons.collections.map.MultiKeyMap;import\ org.apache.commons.logging.Log;import\ org.apache.commons.logging.LogFactory;import\ org.codelutin.math.matrix.MatrixFactory;import\ org.codelutin.math.matrix.MatrixIterator;import\ org.codelutin.math.matrix.MatrixND;import\ fr.ifremer.isisfish.entities.Population;import\ fr.ifremer.isisfish.entities.PopulationGroup;import\ fr.ifremer.isisfish.entities.PopulationSeasonInfo;import\ fr.ifremer.isisfish.entities.Species;import\ fr.ifremer.isisfish.entities.Zone;import\ fr.ifremer.isisfish.types.Date;import\ fr.ifremer.isisfish.types.Month;/**\ *\ \ *\ @author\ poussin\ */public\ class\ PopulationMonitor\ {\ \ \ \ \ \ \ \ /**\ to\ use\ log\ facility,\ just\ put\ in\ your\ code\:\ log.info(\\"...\\=
-\ levels\ +\ "";\ \ \ \ \ \ \ \ LevelsLineReader\ reader\ =
-\ levelsReader;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ if\ (reader\ =
-\ logFile;\ \ \ \ \ \ \ \ this.simulationFile\ =
-\ model.getFirstLinePosition()\ +\ unitsToScroll;\ \ \ \ \ \ \ \ if\ (unitsToScroll\ >\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (model.isEOF())\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ nothing\ to\ do\ we\ are\ already\ at\ the\ tail\ of\ the\ stream\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ else\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (model.isBOF())\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ nothing\ to\ do\ we\ are\ already\ at\ the\ head\ of\ the\ stream\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ dontAdjust\ =
-\ module.getClazz().getMethod("checkout",String.class);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ method.invoke(module.getClazz(),category);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn(org.codelutin.i18n.I18n._("isisfish.error.checkout.module",\ f.getAbsolutePath()),\ eee);\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ static\ void\ doCheckoutRegion(VCSHandler\ handler,\ \ String\ category,boolean\ create)\ {\ \ \ \ \ \ \ \ IsisConfig.Module\ module\ =
-\ new\ DefaultComboBoxModel(value.toArray());\ \ \ \ \ \ \ \ getSimulation().setModel(model);\ \ \ \ \ \ \ \ getSimulation().setSelectedItem(null);\ \ \ \ }\ \ \ \ public\ void\ on_Resultat_destroy_event(){\ \ \ \ \ \ \ \ dispose();\ \ \ \ }\ \ \ \ public\ void\ on_simulation_selection_notify_event(ItemEvent\ e){\ \ \ \ \ \ \ \ //\tsetSelectedSimulation((Simulation)getSimulation().getSelectedItem());\ \ \ \ }\ \ \ \ /**\ \ \ \ *\ Get\ the\ value\ of\ selectedSimulation.\ \ \ \ *\ @return\ value\ of\ selectedSimulation.\ \ \ \ */\ \ \ \ //\ \ \ \ public\ Simulation\ getSelectedSimulation()\ {\ \ \ \ \ \ \ \ //return\ selectedSimulation;\ \ \ \ //}\ \ \ \ /**\ \ \ \ *\ Set\ the\ value\ of\ selectedSimulation.\ \ \ \ *\ @param\ v\ \ Value\ to\ assign\ to\ selectedSimulation.\ \ \ \ */\ \ \ \ //public\ void\ setSelectedSimulation(Simulation\ v)\ {\ \ \ \ \ \ \ \ //this.selectedSimulation\ =
-\ new\ File(module.getDirectory(),category);\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (\!f.exists()||\ \!VCSHelper.isFileInWorkingCopy(f,\ handler,true))\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fr.ifremer.isisfish.datastore.RegionStorage.checkout(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ handler.getLocalDatabasePath(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ module.value()\ +\ "/"\ +category\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ );\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(org.codelutin.i18n.I18n._("isisfish.error.checkout.module",\ f.getAbsolutePath()),\ eee);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }}/*\ *\#\#%*\ Copyright\ (C)\ 2002,\ 2003,\ 2004,\ 2005,\ 2006,\ 2007\ Code\ Lutin,*\ Benjamin\ Poussin,\ Tony\ Chemit***\ 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.versionning.vcsSvn;import\ fr.ifremer.isisfish.versionning.IsisVcsConfig;import\ static\ org.codelutin.i18n.I18n._;import\ org.codelutin.vcs.AbstractVCSHandler;import\ org.codelutin.vcs.VCSConfig;import\ org.codelutin.vcs.VCSException;import\ org.codelutin.vcs.VCSHelper;import\ static\ org.codelutin.vcs.VCSHelper.isFileInCheckedDir;import\ org.codelutin.vcs.VCSRuntimeException;import\ org.codelutin.vcs.VCSState;import\ static\ org.codelutin.vcs.VCSState.OUT_OF_DATE;import\ static\ org.codelutin.vcs.VCSState.OUT_OF_DATE_AND_MODIFIED;import\ static\ org.codelutin.vcs.VCSState.UP_TO_DATE;import\ org.codelutin.vcs.VCSStatus;import\ org.tmatesoft.svn.core.ISVNDirEntryHandler;import\ org.tmatesoft.svn.core.ISVNLogEntryHandler;import\ org.tmatesoft.svn.core.SVNCommitInfo;import\ org.tmatesoft.svn.core.SVNDirEntry;import\ org.tmatesoft.svn.core.SVNException;import\ org.tmatesoft.svn.core.SVNLogEntry;import\ org.tmatesoft.svn.core.SVNNodeKind;import\ org.tmatesoft.svn.core.SVNURL;import\ org.tmatesoft.svn.core.io.SVNRepository;import\ org.tmatesoft.svn.core.wc.ISVNOptions;import\ org.tmatesoft.svn.core.wc.SVNClientManager;import\ org.tmatesoft.svn.core.wc.SVNRevision;import\ org.tmatesoft.svn.core.wc.SVNStatus;import\ org.tmatesoft.svn.core.wc.SVNStatusType;import\ static\ org.tmatesoft.svn.core.wc.SVNStatusType.*;import\ org.tmatesoft.svn.core.wc.SVNWCClient;import\ org.tmatesoft.svn.core.wc.SVNWCUtil;import\ java.io.ByteArrayOutputStream;import\ java.io.File;import\ java.io.IOException;import\ java.util.ArrayList;import\ java.util.Arrays;import\ java.util.Collection;import\ java.util.Collections;import\ java.util.Iterator;import\ java.util.List;/**\ *\ VCSHandler\ implementation\ for\ svn\ *\ *\ @author\ chemit\ */public\ final\ class\ SVNHandler\ extends\ AbstractVCSHandler\ {\ \ \ \ protected\ SVNURL\ repositoryURL;\ \ \ \ protected\ SVNRepository\ repository;\ \ \ \ protected\ SVNClientManager\ ourClientManager;\ \ \ \ protected\ SVNWCClient\ ourWcClient;\ \ \ \ public\ SVNHandler(VCSConfig\ config)\ {\ \ \ \ \ \ \ \ super(config,\ ".svn",\ "entries=
-\ new\ File(module.getDirectory(),category);\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (\!f.exists()||\ \!VCSHelper.isFileInWorkingCopy(f,\ handler,true))\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Method\ method\ =
-\ new\ File(readerDirectory,\ "offsets_"\ +\ levels);\ \ \ \ \ \ \ \ \ \ \ \ FileOffsetReader\ offsetReader\ =
-\ new\ FileOffsetReader(offsetFile);\ \ \ \ \ \ \ \ \ \ \ \ if\ (levels\ =
-\ new\ LevelsLineReader(getLevelReader(0),\ offsetReader,\ logLevels);\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ reader.setId(levelsStr);\ \ \ \ \ \ \ \ \ \ \ \ levelsReaders.add(reader);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ if\ (\!reader.isOpen())\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ open\ reader\ \ \ \ \ \ \ \ \ \ \ \ reader.open();\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ log.info(reader);\ \ \ \ \ \ \ \ return\ reader;\ \ \ \ }\ \ \ \ protected\ void\ openReader(LineReader\ reader)\ throws\ IOException\ {\ \ \ \ \ \ \ \ this.reader\ =
-\ new\ LevelsLineReader(model.getLogFile(),\ offsetReader);\ \ \ \ \ \ \ \ \ \ \ \ }\ else\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ other\ level\ readers\ depens\ on\ all\ levels\ reader\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ LogLevel[]\ logLevels\ =
-\ new\ LogMail(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ statusBar,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getFrom(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getLogFile(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getLogFile().getParentFile(),\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ model.getSmtpServer());\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ logMail.setVisible(true);\ \ \ \ }}/**\ \#\#%\ Copyright\ (C)\ 2002,\ 2003,\ 2004,\ 2005,\ 2006,\ 2007\ Code\ Lutin,*\ Benjamin\ Poussin,\ Tony\ Chemit***\ 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.logging.console;import\ javax.swing.event.ChangeEvent;import\ javax.swing.event.ChangeListener;import\ javax.swing.event.EventListenerList;import\ java.io.File;import\ java.util.ArrayList;import\ java.util.List;/**\ *\ This\ class\ is\ the\ model\ used\ in\ LogConsole.\ *\ <p/>\ *\ The\ model\ deals\ with\ ChangeEvent\ to\ notify\ ui,\ model\ has\ changed.\ *\ *\ @author\ chemit\ */public\ class\ LogConsoleModel\ {\ \ \ \ /**\ to\ use\ log\ facility,\ just\ put\ in\ your\ code\:\ log.info(\\"...\\=
-\ new\ MimeMessage(session);\ \ \ \ \ \ \ \ //\ --\ Set\ the\ FROM\ and\ TO\ fields\ --\ \ \ \ \ \ \ \ msg.setFrom(new\ InternetAddress(from));\ \ \ \ \ \ \ \ msg.setRecipients(Message.RecipientType.TO,\ InternetAddress.parse(to,\ false));\ \ \ \ \ \ \ \ MimeMultipart\ bodyMime\ =
-\ new\ MimeMultipart("mixed=
-\ new\ PatternLineReader(parent,\ new\ MemoryOffsetReader(5000),\ searchText,\ 0);\ \ \ \ \ \ \ \ reader.setId(parent.getId()\ +\ "\:"\ +\ searchText);\ \ \ \ \ \ \ \ log.info(reader);\ \ \ \ \ \ \ \ return\ reader;\ \ \ \ }\ \ \ \ //TODO\ Improve\ algorithm\ \:\ always\ try\ to\ find\ the\ closest\ reader\ to\ use\ \ \ \ protected\ LineReader\ getLevelReader(int\ levels)\ throws\ IOException\ {\ \ \ \ \ \ \ \ String\ levelsStr\ =
-\ new\ ResultEdit(simulation);\ \ \ \ \ \ \ \ \ \ \ \ JInternalFrame\ intFrame\ =
-\ null\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ &&\ parameters.getExportNames().size()\ >\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ File\ exportDir\ =
-\ null\ &&\ reader.isOpen())\ {\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader.close();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (IOException\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ close\ reader\ {0}",\ reader));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ @Override\ \ \ \ protected\ void\ finalize()\ throws\ Throwable\ {\ \ \ \ \ \ \ \ super.finalize();\ \ \ \ \ \ \ \ close();\ \ \ \ }\ \ \ \ /**\ \ \ \ \ *\ read\ the\ required\ frame\ from\ current\ reader\ \ \ \ \ *\ \ \ \ \ *\ @param\ offset\ the\ offset\ to\ use\ \ \ \ \ *\ @throws\ IOException\ if\ any\ problem\ while\ reading\ \ \ \ \ */\ \ \ \ public\ void\ read(long\ offset)\ throws\ IOException\ {\ \ \ \ \ \ \ \ if\ (offset\ <\ 0)\ {\ \ \ \ \ \ \ \ \ \ \ \ offset\ =
-\ null)\ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader.close();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (IOException\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //TODO\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ Properties\ getData()\ {\ \ \ \ \ \ \ \ return\ data;\ \ \ \ }\ \ \ \ public\ String\ getName()\ {\ \ \ \ \ \ \ \ return\ name;\ \ \ \ }}/*\ *\#\#%\ *\ Copyright\ (C)\ 2006\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationQueueModel.java\ *\ *\ Created\:\ 18\ ao\uFFFDt\ 2006\ 00\:05\:41\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 602\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-01\ 21\:39\:12\ +0100\ (jeu,\ 01\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ tchemit\ $\ */package\ fr.ifremer.isisfish.simulator;/**\ @author\ poussin\ */public\ class\ SimulationQueueModel\ extends\ AbstractSimulationQueueModel\ {\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel()\ \ \ \ \ */\ \ \ \ public\ SimulationQueueModel()\ {\ \ \ \ \ \ \ \ super();\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel(SimulationManager)\ \ \ \ \ */\ \ \ \ public\ SimulationQueueModel(SimulationManager\ queue)\ {\ \ \ \ \ \ \ \ super(queue);\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel at getSimulationIds()\ \ \ \ \ */\ \ \ \ protected\ java.util.List<String>\ getSimulationIds()\ {\ \ \ \ \ \ \ \ return\ getQueue().ids;\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ AbstractSimulationQueueModel at getQueueItemsAsMap()\ \ \ \ \ */\ \ \ \ protected\ java.util.Map<String,\ SimulationManager.QueueItem>\ getQueueItemsAsMap()\ {\ \ \ \ \ \ \ \ return\ getQueue().map;\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationAdded(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ int\ row\ =
-\ null)\ {\ \ \ \ \ \ \ \ \ \ \ \ File\ offsetFile\ =
-\ null)\ {\ \ \ \ \ \ \ \ \ \ \ \ control.removePropertyChangeListener(this);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ int\ row\ =
-\ null){\ \ \ \ \ \ \ \ \ \ \ \ SimulationStorage\ simulation\ =
-\ null){\ \ \ \ \ \ \ \ \ \ \ \ SimulationStorage\ storage\ =
-\ null;\ \ \ \ \ \ \ \ for\ (LineReaderUtil.LevelsLineReader\ levelsReader\ \:\ levelsReaders)\ {\ \ \ \ \ \ \ \ \ \ \ \ if\ (levelsReader.getId().equals(levelsStr))\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ reader\ =
-\ reader.readLine(offset,\ model.nbLinesInEditor);\ \ \ \ \ \ \ \ //\ mark\ the\ new\ first\ position\ \ \ \ \ \ \ \ model.setFirstLinePosition(offset);\ \ \ \ \ \ \ \ //\ add\ lines\ in\ model\ \ \ \ \ \ \ \ model.allItems.clear();\ \ \ \ \ \ \ \ model.allItems.addAll(Arrays.asList(result));\ \ \ \ \ \ \ \ //\ notify\ ui\ that\ model\ changed\ \ \ \ \ \ \ \ model.fireStateChanged();\ \ \ \ }\ \ \ \ public\ void\ mouseWheelMoved(MouseWheelEvent\ e)\ {\ \ \ \ \ \ \ \ int\ unitsToScroll\ =
-\ reader;\ \ \ \ \ \ \ \ if\ (\!this.reader.isOpen())\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ open\ reader\ \ \ \ \ \ \ \ \ \ \ \ this.reader.open();\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ //\ save\ the\ number\ of\ lines\ of\ reader\ in\ model\ \ \ \ \ \ \ \ model.nbLines\ =
-\ simulation.getDirectory();\ \ \ \ \ \ \ \ //\ \ \ \ \ \ \ \ //\ Export\ des\ r\uFFFDsultats\ \ \ \ \ \ \ \ //\ \ \ \ \ \ \ \ if\ (parameters.getExportNames()\ \!=
-\ simulation.getParameter();\ \ \ \ \ \ \ \ File\ rootDirectory\ =
-\ simulationFile;\ \ \ \ \ \ \ \ this.smtpServer\ =
-\ smtpServer;\ \ \ \ \ \ \ \ this.statusBar\ =
-\ statusBar;\ \ \ \ \ \ \ \ sendMail.addActionListener(new\ ActionListener()\ {\ \ \ \ \ \ \ \ \ \ \ \ public\ void\ actionPerformed(ActionEvent\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sendMail(mailTo.getText(),\ content.getText(),\ sendAll.isSelected());\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ statusBar.setStatus(_("isisfish.log.mail.send"\ ,\ to));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ statusBar.setStatus(_("isisfish.log.mail.failed",\ smtpServer));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ finally\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dispose();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ });\ \ \ \ }\ \ \ \ public\ void\ setTo(String\ to)\ {\ \ \ \ \ \ \ \ this.to\ =
-\ statusBar;\ \ \ \ }\ \ \ \ public\ void\ openLogMail()\ {\ \ \ \ \ \ \ \ if\ (logMail=
-\ this.reader.getNbLines();\ \ \ \ }\ \ \ \ public\ void\ addPropertyChangeListener(PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.addPropertyChangeListener(listener);\ \ \ \ }\ \ \ \ public\ void\ addPropertyChangeListener(String\ propertyName,\ PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.addPropertyChangeListener(propertyName,\ listener);\ \ \ \ }\ \ \ \ public\ void\ removePropertyChangeListener(PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.removePropertyChangeListener(listener);\ \ \ \ }\ \ \ \ public\ void\ removePropertyChangeListener(String\ propertyName,\ PropertyChangeListener\ listener)\ {\ \ \ \ \ \ \ \ propertyListeners.removePropertyChangeListener(propertyName,\ listener);\ \ \ \ }\ \ \ \ public\ StatusBar\ getStatusBar()\ {\ \ \ \ \ \ \ \ return\ statusBar;\ \ \ \ }\ \ \ \ public\ void\ setStatusBar(StatusBar\ statusBar)\ {\ \ \ \ \ \ \ \ this.statusBar\ =
-\ to;\ \ \ \ }\ \ \ \ /**\ \ \ \ \ *\ Send\ an\ email\ using\ the\ given\ informations\ (stmpServer,\ toAddress,\ \ \ \ \ *\ fromAddress,\ subject\ and\ body).\ \ \ \ \ *\ \ \ \ \ *\ @param\ to\ \ \ \ \ \ \ adr\ to\ send\ the\ mail\ \ \ \ \ *\ @param\ text\ \ \ \ \ message\ text\ \ \ \ \ *\ @param\ selected\ if\ <code>true</code>\ send\ all\ simulation\ zip,\ \ \ \ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ or\ just\ the\ file\ \ \ \ \ *\ @throws\ java.io.IOException\ \ \ \ \ \ \ \ \ \ \ if\ any\ problem\ while\ creatingthe\ zip\ \ \ \ \ *\ @throws\ javax.mail.MessagingException\ if\ any\ problem\ while\ creating\ \ \ \ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ the\ message\ or\ while\ the\ send\ \ \ \ \ */\ \ \ \ public\ void\ sendMail(String\ to,\ String\ text,\ boolean\ selected)\ throws\ IOException,\ MessagingException\ {\ \ \ \ \ \ \ \ Properties\ props\ =
-\ true;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ read(e.getValue());\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (IOException\ e1)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ read\ at\ offset\ {0}\ for\ reason\ {1}",\ e.getValue(),\ e1.getMessage()));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ dontAdjust\ =
-\ true;\ \ \ \ \ \ \ \ \ \ \ \ read(newOffset);\ \ \ \ \ \ \ \ }\ catch\ (IOException\ e1)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("could\ not\ read\ at\ offset\ {0}\ for\ reason\ {1}",\ newOffset,\ e1.getMessage()));\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ void\ adjustmentValueChanged(AdjustmentEvent\ e)\ {\ \ \ \ \ \ \ \ if\ (\!e.getValueIsAdjusting()\ &&\ \!dontAdjust)\ {\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //TODO\ Fix\ bug\ \:sometimes\ when\ going\ at\ tail,\ it\ goes\ head\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //TODO\ (the\ offset\ must\ not\ be\ good...)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //log.info("value\:"+e.getValue());\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dontAdjust\ =
-\ v;\ \ \ \ //}\ \ \ \ public\ void\ on_supprimerSimulationButton_clicked(){\ \ \ \ \ \ \ \ String\ name\ =
-Checkout\ pom.xml\ to\ {0}",\ file.getPath()));\ \ \ \ \ \ \ \ vcsHandler.update(file);\ \ \ \ \ \ \ \ getContext().setQuit(true);\ \ \ \ }}\ /*\ *\ \#\#%\ Copyright\ (C)\ 2002,\ 2003,\ 2004,\ 2005,\ 2006,\ 2007\ Code\ Lutin,*\ Benjamin\ Poussin,\ Tony\ Chemit***\ 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.commandline.actions;import\ fr.ifremer.isisfish.IsisConfig;import\ fr.ifremer.isisfish.datastore.AnalysePlanStorage;import\ fr.ifremer.isisfish.datastore.ExportStorage;import\ fr.ifremer.isisfish.datastore.FormuleStorage;import\ fr.ifremer.isisfish.datastore.RuleStorage;import\ fr.ifremer.isisfish.datastore.ScriptStorage;import\ fr.ifremer.isisfish.datastore.SimulatorStorage;import\ java.io.File;import\ java.util.ArrayList;import\ java.util.List;import\ java.util.regex.Pattern;/**\ *\ The\ class\ to\ define\ all\ actions\ on\ scripts\ or\ data\ (region,\ simulations)\ \ that\ *\ IsisFish\ can\ launch\ at\ init\ time.\ *\ *\ @author\ chemit\ */public\ class\ ScriptUtil\ {\ \ \ \ /**\ \ \ \ \ *\ Pour\ v\uFFFDrifier\ q'un\ fichier\ existe.\ \ \ \ \ *\ \ \ \ \ *\ @param\ file\ \ the\ file\ dont\ on\ doit\ v\uFFFDrifier\ l'existence\ \ \ \ \ *\ @param\ force\ flag\ pour\ d\uFFFDclancher\ une\ exception,\ si\ fichier\ non\ trouv\uFFFD.\ \ \ \ \ */\ \ \ \ public\ static\ void\ checkNotFileExist(File\ file,\ boolean\ force)\ {\ \ \ \ \ \ \ \ if\ (file.exists()\ &&\ \!force)\ {\ \ \ \ \ \ \ \ \ \ \ \ //\ fatal\ error\ \ \ \ \ \ \ \ \ \ \ \ throw\ new\ IllegalArgumentException("destination\ already\ exists\ "\ +\ file\ +\ "\ use\ \\'force\\'\ argument\ to\ force\ overwrite=
+Can't\ add\ result\ '%1$s'\ at\ date\ %2$s=Can't add result '%1$s' at date %2$s
+Can't\ evaluate\ simulation\ prescript=Can't evaluate simulation prescript
+Can't\ get\ result\:\ %1$s=Can't get result\: %1$s
+Can't\ create\ simulation\ logger=Can't create simulation logger
+Can't\ instanciate\ export\ %1$s=Can't instanciate export %1$s
+Checkout\ pom.xml\ to\ %1$s=
Info=Info
-could\ not\ close\ reader\ {0}",\ levelsReader));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ if\ (reader\ \!=
-could\ not\ create\ simulation\ filter\ model\ for\ reason\ {0}",e.getMessage()),e);\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ private\ void\ initSimulation()\ throws\ IOException,\ ParseException\ {\ \ \ \ \ \ \ \ //\ keep\ in\ context\ list\ of\ old\ simulation\ names\ (for\ filter\ process)\ \ \ \ \ \ \ \ java.util.List<String>\ value\ =
-filter\ loaded\ in\ {0}\ ms\ \:\ found\ {1}\ lines.",\ (System.currentTimeMillis()\ -\ t0),\ reader.getNbLines()));\ \ \ \ \ \ \ \ }\ catch\ (IOException\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ log.warn("could\ not\ open\ reader\ ["\ +\ this.reader\ +\ "]\ for\ reason\ "\ +\ e.getMessage());\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ protected\ LineReader\ getPatternReader(String\ searchText,\ LineReader\ parent)\ {\ \ \ \ \ \ \ \ LineReader\ reader;\ \ \ \ \ \ \ \ reader\ =
+Region\ %1$s\ allready\ exist\ in\ repository.\ Can't\ import=
+could\ not\ close\ reader\ %1$s=could not close reader %1$s
+could\ not\ create\ simulation\ filter\ model\ for\ reason\ %1$s=could not create simulation filter model for reason %1$s
+could\ not\ filter\ on\ simulations=could not filter on simulations
+could\ not\ found\ log\ file\ %1$s=could not found log file %1$s
+could\ not\ read\ at\ offset\ %1$s\ for\ reason\ %2$s=could not read at offset %1$s for reason %2$s
+filter\ loaded\ in\ %1$s\ ms\ \:\ found\ %2$s\ lines.=filter loaded in %1$s ms \: found %2$s lines.
isisfish.about.site=http\://isisfish.labs.libre-entreprise.org - by B.Poussin
isisfish.about.text=Simulateur Isis-Fish
isisfish.about.title=A propos...
@@ -85,12 +24,14 @@
isisfish.advancedParams.simulationCache=Simulation cache
isisfish.advancedParams.simulationStatistique=Simulation statistique
isisfish.advancedParams.simulatorUse=Simulateur \u00E0 utiliser
+isisfish.advancedParams.subProcessSimulation=
isisfish.cell.comments=Commentaires
isisfish.cell.land=Land
isisfish.cell.latitude=Latitude
isisfish.cell.longitude=Longitude
isisfish.cell.name=Nom
isisfish.cell.title=Saisie des mailles
+isisfish.change.equation=Ne peut pas changer l'\u00E9quation
isisfish.common.add=Ajouter
isisfish.common.add.short=isisfish.common.add.short
isisfish.common.addQueue=Ajouter \u00E0 la queue des simulations
@@ -107,14 +48,17 @@
isisfish.common.emigration=\u00E9migration
isisfish.common.empty=vide
isisfish.common.error=Erreur
+isisfish.common.file=Fichier
isisfish.common.finish=Terminer
isisfish.common.gear=Engin
isisfish.common.immigration=immigration
isisfish.common.info=Info
isisfish.common.migration=migration
+isisfish.common.month=mois %1$s
isisfish.common.new=Nouveau
isisfish.common.newMatrix=Nouvelle matrice
isisfish.common.next=Suivant
+isisfish.common.no=No
isisfish.common.ok=Ok
isisfish.common.openEditor=Ouvrir l'\u00E9diteur
isisfish.common.populationGroup=Groupe de population
@@ -141,6 +85,73 @@
isisfish.common.warn=Warn
isisfish.common.year=ann\u00E9e
isisfish.common.zone=Zone
+isisfish.config.h2.description=La configuration h2 utilis\u00E9e
+isisfish.config.h2.h2BytecodeProvider.description=TODO
+isisfish.config.h2.h2CurrentSessionContextClass.description=TODO
+isisfish.config.h2.h2Dialect.description=TODO
+isisfish.config.h2.h2Driver.description=TODO
+isisfish.config.h2.h2MemBytecodeProvider.description=TODO
+isisfish.config.h2.h2MemDialect.description=TODO
+isisfish.config.h2.h2MemDriver.description=TODO
+isisfish.config.h2.h2MemPass.description=TODO
+isisfish.config.h2.h2MemType.description=TODO
+isisfish.config.h2.h2MemURL.description=TODO
+isisfish.config.h2.h2MemUser.description=TODO
+isisfish.config.h2.h2Pass.description=TODO
+isisfish.config.h2.h2Type.description=TODO
+isisfish.config.h2.h2URL.description=TODO
+isisfish.config.h2.h2User.description=TODO
+isisfish.config.h2.migrationApplicationVersion.description=TODO
+isisfish.config.h2.migrationCallBackhandlers.description=TODO
+isisfish.config.h2.migrationModelNames.description=TODO
+isisfish.config.h2.migrationPreviousMappingDirectory.description=TODO
+isisfish.config.h2.migrationTopiaService.description=TODO
+isisfish.config.h2.storageData.description=le nom du r\u00E9pertoire o\u00F9 stocker les donn\u00E9es d'un data storage (r\u00E9gion, simulation)
+isisfish.config.h2.updateschemaDatabase.description=flag pour indiquer s'il faut ou non updater le sch\u00E9ma de la base
+isisfish.config.main.compileDirectory.description=le r\u00E9pertoire o\u00F9 sont compil\u00E9s les scripts
+isisfish.config.main.configFileName.description=le fichier de configuration \u00E0 utiliser
+isisfish.config.main.dataBackupFilename.description=le nom du fichier contenant la d\u00E9finition d'un data storage (r\u00E9gion, simulation)
+isisfish.config.main.defaultBackupDirectory.description=le r\u00E9pertoire o\u00F9 stocker les backups des donn\u00E9es
+isisfish.config.main.defaultExportDirectory.description=le r\u00E9pertoire o\u00F9 exporter les r\u00E9sultats des simulations
+isisfish.config.main.defaultExportNames.description=les noms des exports \u00E0 effectuer apr\u00E8s une simulation
+isisfish.config.main.defaultMapFile.description=TODO
+isisfish.config.main.defaultResultNames.description=les noms des r\u00E9sultats \u00E0 traiter apr\u00E8s une simulation
+isisfish.config.main.defaultSimulator.description=le nom du simulateur par d\u00E9faut \u00E0 utiliser lors d'une simulation
+isisfish.config.main.defaultTagValue.description=TODO
+isisfish.config.main.description=La configuration principale d'IsisFish
+isisfish.config.main.encoding.description=l'encoding du syst\u00E8me
+isisfish.config.main.javadocURL.description=l'url de la javadoc des scripts
+isisfish.config.main.localSimulator.description=pour indiquer si les simulations sont \u00E0 effectuer localement
+isisfish.config.main.locale.description=la locale utilisateur
+isisfish.config.main.login.description=le login pour se connecter au serveur de simulations distant
+isisfish.config.main.password.description=le mot de passe pour se connecter au serveur de simulations distant
+isisfish.config.main.projectName.description=le nom du projet
+isisfish.config.main.regionMap.description=le nom du r\u00E9pertoire contenant les maps d'une r\u00E9gion
+isisfish.config.main.resultExport.description=TODO
+isisfish.config.main.simulationInformationFilename.description=le nom du fichier d'informations d'une simulation
+isisfish.config.main.simulationParametersFilename.description=le nom du fichier de param\u00E9trage d'une simulation
+isisfish.config.main.simulationReportMail.description=Le courriel \u00E0 utiliser pour envoyer les rapports de simulation
+isisfish.config.main.simulationResultXmlFilename.description=le nom du fichier d'export des r\u00E9sultats d'une simulation au format xml
+isisfish.config.main.simulationServer.description=l'url du serveur de simulations distant
+isisfish.config.main.simulationShowOnlyError.description=pour indiquer si l'on doit conserver dans l'UI des simulations termin\u00E9es uniquement celles avec erreur
+isisfish.config.main.simulationShowOnlyQueue.description=pour indiquer si l'on doit conserver dans l'UI des simulations termin\u00E9es uniquement celles effectu\u00E9es localement
+isisfish.config.main.smtpServer.description=le nom du serveur smpt \u00E0 utiliser pour envoyer les courriels
+isisfish.config.main.userMail.description=le courriel de l'utilisateur
+isisfish.config.main.userName.description=le nom - pr\u00E9nom de l'utilisateur
+isisfish.config.main.version.description=la version d'IsisFish
+isisfish.config.vcs.databaseVersion.description=la version de des donn\u00E9es \u00E0 utiliser
+isisfish.config.vcs.description=La configuration vcs d'IsisFish
+isisfish.config.vcs.hostName.description=le nom du serveur vcs \u00E0 utiliser
+isisfish.config.vcs.keyFile.description=le chemin complet du fichier de clef priv\u00E9e ssh2 \u00E0 utiliser lors d'une connexion s\u00E9curis\u00E9e
+isisfish.config.vcs.localDatabasePath.description=
+isisfish.config.vcs.noPassPhrase.description=pour indiquer si la clef priv\u00E9e ssh2 utilis\u00E9e pour communiquer avec le serveur vcs contient est prot\u00E9g\u00E9 par une passe-phrase
+isisfish.config.vcs.passphrase.description=la passe-phrase utilis\u00E9e pour prot\u00E9ger la clef priv\u00E9e ssh
+isisfish.config.vcs.remoteDatabase.description=le nom du module de donn\u00E9es sur le serveur vcs
+isisfish.config.vcs.remotePath.description=le chemin jusqu'au parent du module de donn\u00E9es sur le serveur vcs
+isisfish.config.vcs.type.description=le type de communication vcs utilis\u00E9
+isisfish.config.vcs.typeRepo.description=le type de r\u00E9pository vcs utilis\u00E9
+isisfish.config.vcs.useSshConnexion.description=pour indiquer si l'on utilise une connexion s\u00E9curis\u00E9e pour communiquer avec le serveur vcs (ssh2)
+isisfish.config.vcs.userName.description=le login de l'utilisateur sur le serveur vcs
isisfish.dataResult.descriptionLabel=defaultToolTip-fr.ifremer.resultat.DataResult.descriptionLabel
isisfish.dataResult.export.csv=Exporter en CSV
isisfish.dataResult.exportButton=defaultToolTip-fr.ifremer.resultat.DataResult.exportButton
@@ -148,6 +159,7 @@
isisfish.dataResult.matriceTable=defaultToolTip-fr.ifremer.resultat.DataResult.matriceTable
isisfish.dataResult.scrolledwindow2=defaultToolTip-fr.ifremer.resultat.DataResult.scrolledwindow2
isisfish.dataResult.table2=defaultToolTip-fr.ifremer.resultat.DataResult.table2
+isisfish.date.toString=%1$s %2$s
isisfish.effortDescription.crewFoodCost=Co\u00FBt de l'alimentation pour l'\u00E9quipage
isisfish.effortDescription.crewShareRate=Taux de partage de l'\u00E9quipage
isisfish.effortDescription.crewSize=Taille de l'\u00E9quipage
@@ -159,14 +171,31 @@
isisfish.effortDescription.otherRunningCost=Autres co\u00FBts
isisfish.effortDescription.repairAndMaintenanceGearCost=repairAndMaintenanceGearCost
isisfish.effortDescription.title=inputEffortDescription
+isisfish.effortDescription.toString=EffortDescription for %1$s with %2$s
isisfish.effortDescription.unitCostOfFishing=Co\u00FBt unitaire de la p\u00EAche
isisfish.equation.editor.title=Editeur d'\u00E9quation
+isisfish.error.acceptable.population=New value isn't acceptable value for this population
isisfish.error.add.card=Erreur lors de l'ajout du r\u00E9sultat \u00E0 la carte.
-isisfish.error.add.logger.simulation\ ",\ e));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ simThread.start();\ \ \ \ \ \ \ \ \ \ \ \ try\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ simThread.join();\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (InterruptedException\ eee)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (log.isWarnEnabled())\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("isisfish.error.wait.simThread=
+isisfish.error.add.file=Can't add file %1$s
+isisfish.error.add.logger.simulation\ =isisfish.error.add.logger.simulation
isisfish.error.add.result.data=Erreur lors de l'ajout du r\u00E9sultat au data.
isisfish.error.add.result.graph=Erreur lors de l'ajout du r\u00E9sultat au graph.
-isisfish.error.checkout.module",\ module),\ eee);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ break;\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ }\ \ \ \ public\ static\ void\ doCheckoutModule(VCSHandler\ handler,\ IsisConfig.Module\ module,\ String\ category)\ {\ \ \ \ \ \ \ \ File\ f\ =
+isisfish.error.add.tray=Can't add system tray icon
+isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s
+isisfish.error.change.equation=Can't change equation
+isisfish.error.check.region=Can't check region
+isisfish.error.checkout.module=Can't checkout module %1$s
+isisfish.error.commit.files=Can't commit files %1$s
+isisfish.error.compile.script=Can't compile script\: %1$s
+isisfish.error.compiled.parameter=Can't get rule parameter from compiled class
+isisfish.error.connect.server=Can't connect to server
isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es
+isisfish.error.create.equation=Can't create equation
+isisfish.error.delete.database=Can't delete database
+isisfish.error.delete.file=could not delete file %1$s
+isisfish.error.delete.vcs.files=Can't delete vcs files
+isisfish.error.during.simulation=Error during simulation
+isisfish.error.during.simulation.information.file=Could not save Error during simulation of %1$s in his information file
isisfish.error.emigration.negative=emigration negative
isisfish.error.empty.code.rubbin=le code rubbin est vide
isisfish.error.empty.emigration=emigration vide
@@ -184,31 +213,122 @@
isisfish.error.empty.unit=l'unit\u00E9 de mesure est vide
isisfish.error.emty.emigration=emigration vide
isisfish.error.emty.migration=Migration vide
+isisfish.error.equation.retun.number=EquationImpl must retun a number\: %1$s
+isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
+isisfish.error.evaluate.plan.script=Can't evaluate plan script
+isisfish.error.evaluate.preplan.script=Can't evaluate preplan script
+isisfish.error.evalute.plan.script=Can't evaluate plan script
+isisfish.error.export.scripts.force=Le fichier d'export %1$s existe d\u00E9j\u00E9, vous devez utiliser l'option [force] pour forcer l'\u00E9crasement.
+isisfish.error.file.already.exists=The file %1$s already exist
+isisfish.error.get.fisheryRegion=Can't get FisheryRegion
+isisfish.error.get.information.file=Can't get information on file {0]
+isisfish.error.get.status.files=Can't get status files\: %1$s
+isisfish.error.growth.equation.before.create.group.population=Error, You must input growth equation before create the group population
isisfish.error.immigration.negative=immigration negative
isisfish.error.import.convertible=Erreur lors de l'import, la version du fichier que vous souhaitez importer n'est pas transformable en une version importable.
+isisfish.error.import.file=Can't import file %1$s
isisfish.error.import.recent.files=Erreur lors de l'import, la version du fichier que vous souhaitez importer est plus r\u00E9cente que la version souhait\u00E9e.
+isisfish.error.import.scripts.force=Certains fichiers existent, vous devez utiliser l'option [force] pour forcer l'\u00E9crasement.
isisfish.error.init.map=Can't init map.
+isisfish.error.init.remove.button=could not init remove button (button or list is null) button : %1$s, list : %2$s
+isisfish.error.instanciate=Can't instanciate %1$s
+isisfish.error.instanciate.export=Can't instanciate export %1$s
+isisfish.error.integer.positif=Your input must be a positif integer (>1)
+isisfish.error.invalid.category.name=Le nom de la cat\u00E9gorie %1$s n'est pas valide.
+isisfish.error.invalid.configuration=la configuration n'est pas valide, modifier la configuration ?
+isisfish.error.invalid.configuration.title=Erreur de chargement de la configuration
isisfish.error.invalid.costs.fix=les co\u00FBts fixes sont invalides
+isisfish.error.invalid.distribution.recruitment=distribution de recrutement invalide
isisfish.error.invalid.equation=Equation invalide
+isisfish.error.invalid.equation.name=Nom d'\u00E9quation invalide
+isisfish.error.invalid.file.name=Le nom du script %1$s n'est pas valide.
isisfish.error.invalid.interval.reproduction.recruitment=interval entre la reproduction et le recrutement invalide
isisfish.error.invalid.mean.weight=poids moyen invalide
isisfish.error.invalid.natural.death=mortalit\u00E9 naturelle sur les classes naissantes invalide
isisfish.error.invalid.number=le nombre est invalide
isisfish.error.invalid.range=La gamme possible n'a pas de valeur acceptable
+isisfish.error.invalid.simulation.id=Invalid simulation id %1$s, availables \: %2$s
+isisfish.error.invalid.simulation.index=Invalid simulation index %1$s
+isisfish.error.invalid.simulation.index.availables=Invalid simulation index %1$s, availables \: %2$s
isisfish.error.invalid.values.params=Param\u00E8tre controlable hors valeurs possibles
isisfish.error.invalidate.natural.death=mortalite naturelle invalide
-isisfish.error.load.file",\ file));\ \ \ \ \ \ \ \ \ \ \ \ }\ finally\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (reader\ \!=
-isisfish.error.load.map",\ filename),\ eee);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ if(\!shapeLoaded){\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ a\ pas\ reussi\ a\ charger\ les\ fichiers\ demand\uFFFDs,\ on\ charge\ la\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ carte\ du\ monde\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ String\ filename\ =
+isisfish.error.invalide.simulation.index=Invalide simulation index
+isisfish.error.invoke.method=Can't invoke method '%1$s' for class %2$s
+isisfish.error.load.class=Can't load class\: %1$s
+isisfish.error.load.classloader=Can't create ClassLoader for script, bad directory\: %1$s for reason %2$s
+isisfish.error.load.file=could not load file %1$s
+isisfish.error.load.map=Can't load map file\: %1$s
+isisfish.error.log.closeAppender=n'a pas pu ferme l'appender %1$s et la categorie %2$s
+isisfish.error.log.console.dispose=Une erreur est survenue pendant la fermeture de la console %1$s de log, raison %2$s
+isisfish.error.log.createAppender=n'a pas pu creer l'appender [%1$s] \: %2$s pour la raison %3$s
+isisfish.error.log.foundAppender=n'a pas trouve l'appender %1$s pour la categorie %2$s
isisfish.error.matrix.more.2d=Matrice de plus de 2 dimensions\!\!\\nSelectionnez moins d'\u00E9l\u00E9ments ou utilisez l'op\u00E9rateur somme.
isisfish.error.migration.negative=Migration negative
-isisfish.error.no.matrix"\ +\ name));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ resume.append("\\n\\n=
+isisfish.error.no.matrix=No matrix for\:
+isisfish.error.no.null.time.step=Error, the time step should not be null
isisfish.error.no.sector=il n'y a pas de secteur de d\u00E9finit
+isisfish.error.no.select.simulation=could not select simulation
+isisfish.error.no.selected.simulation=No Simulation selected
+isisfish.error.no.target.species=no target species in %1$s for %2$s
isisfish.error.not.connected=Erreur \u00E0 la connexion...
+isisfish.error.not.find.status=n'a pas pu trouver le status du fichier %1$s pour la raison suivante \: %2$s
+isisfish.error.not.found.class=this class does not
+isisfish.error.not.found.code=could not found codeclass for %1$s
+isisfish.error.not.found.description=could not found description for %1$s
+isisfish.error.not.found.field=could not found field %1$s doc for %1$s
+isisfish.error.not.found.field.class=could not found field %1$s for class %2$s
+isisfish.error.not.found.species.population.container=Can't find species (%1$s) for Population container
isisfish.error.not.null.class.grown=classe mature vaut nul
isisfish.error.not.null.mean.weight=poids moyen nul
isisfish.error.not.null.natiral.death=mortalite naturelle nulle
isisfish.error.not.possible.metier=Pas de m\u00E9tier possible
+isisfish.error.not.species.node.population.container=Population container not in Species node
+isisfish.error.not.support.class=this class does not support
+isisfish.error.number.classes.upper.zero=Error, the number of classes must be upper than 0
+isisfish.error.obtain.analyseplan=Can't obtain description of AnalysePlan
+isisfish.error.obtain.doc.export=Can't obtain @Doc on class Export
+isisfish.error.obtain.doc.resultName=Can't obtain @Doc on ResultName
+isisfish.error.obtain.doc.rule=Can't obtain description for a Rule class
+isisfish.error.obtain.field=Can't obtain field @Doc for Rule %1$s
+isisfish.error.obtain.field.analyseplan=Can't obtain field @Doc for AnalysePlan %1$s
+isisfish.error.obtain.information.file=could not obtain information file for simulation %1$s
+isisfish.error.out.memory=Out of memory try with more memory (option -mx)
isisfish.error.overlap.season=Cette saison chevauche une autre saison
+isisfish.error.parse.date=Can't parse date %1$s
+isisfish.error.parse.long=Can't parse long %1$s
+isisfish.error.plan.parameter=Can't get plan parameter from compiled class
+isisfish.error.prepare.data=Can't prepare data
+isisfish.error.prepare.information.simulation=Can't prepare information for simulation
+isisfish.error.read.simulation=Can't read simulation information %1$s
+isisfish.error.read.simulation.parameters=Can't read simulation parameters from file %1$s
+isisfish.error.region.already.exists=Cette r\u00E9gion existe d\u00E9j\u00E0
+isisfish.error.region.name.empty=Le nom de la R\u00E9gion est vide
+isisfish.error.remove.directory=Can't remove directory %1$s
+isisfish.error.remove.file=Can't remove file %1$s
+isisfish.error.rename.region=Can't rename region to %1$s
+isisfish.error.save.checkSum.compilation=Can't save checkSum to compilation\: %1$s
+isisfish.error.save.region=Can't save region
+isisfish.error.save.script.compilation=Can't save script to compilation\: %1$s
+isisfish.error.save.simulation.parameters=Can't save simulation parameters in file %1$s
+isisfish.error.script.check=N'a pas pu compiler le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.commit=N'a pas pu commiter le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.create=isisfish.error.script.create
+isisfish.error.script.delete=N'a pas pu supprimer le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.diff=N'a pas pu calculer le diff du fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.evaluate=N'a pas pu \u00E9valuer le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.export=N'a pas pu exporter pour la raison suivante %1$s
+isisfish.error.script.import=N'a pas pu importer pour la raison suivante %1$s
+isisfish.error.script.load=N'a pas pu charger le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.save=N'a pas pu sauver le fichier %1$s pour la raison suivante %2$s
+isisfish.error.script.update=N'a pas pu mettre \u00E0 jour le fichier %1$s pour la raison suivante %2$s
+isisfish.error.simulation.log.openAppender=n'a pas pu ouvrir l'appender de la simulation %1$s pour la raison %2$s
+isisfish.error.simulation.resultXml.close=Can't close simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.open=Can't open simulation result XML for reason %1$s
+isisfish.error.simulation.resultXml.write=Can't write simulation result XML for reason %1$s
+isisfish.error.source.parameter=Can't get parameter from source
+isisfish.error.start=Can't start
+isisfish.error.status.files=Can't get status files\: %1$s
+isisfish.error.strategy.order=Strategy %1$s don't have 12 StrategyMonthInfo but %2$s. Recreate them
isisfish.error.text=The follow error occur during action
isisfish.error.title=Erreur
isisfish.error.undefined.classes=pas de classes d\u00E9finies
@@ -224,8 +344,16 @@
isisfish.error.undefined.zone.population=il n'y a pas de zone de population de d\u00E9finit
isisfish.error.undefined.zone.recruitment=il n'y a pas de zone de recrutement de d\u00E9finit
isisfish.error.undefined.zone.reproduction=il n'y a pas de zone de reproduction de d\u00E9finit
-isisfish.error.while.simulation",\ infos.getException()));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ control.setText(I18n._("isisfish.message.stop.with.error=
-isisfish.error.while.simulation",\ infos.getException()));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ control.setText(I18n._("isisfish.message.stop.with.error",infos.getException()));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ I\ don't\ known\ if\ you\ can\ come\ here\ with\ no\ previous\ simulation\ ?\ \ \ \ \ \ \ \ \ \ \ \ }\ catch\ (Exception\ e1)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ log.warn(I18n._("isisfish.error.obtain.information.file",\ e.getId()));\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ control.addPropertyChangeListener(this);\ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ \ *\ @see\ SimulationQueueListener\#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ \ */\ \ \ \ public\ void\ simulationStart(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }\ \ \ \ /*\ (non-Javadoc)\ \ \ \ *\ @see\ SimulationQueueListener\#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)\ \ \ \ */\ \ \ \ public\ void\ simulationStop(SimulationQueueEvent\ e)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ nothing\ to\ do\ \ \ \ }}//\ SimulationDoneQueueModel/*\ *\#\#%\ *\ Copyright\ (C)\ 2007\ *\ \ \ \ \ Ifremer,\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ *\ *\ SimulationResultGetter.java\ *\ *\ Created\:\ 13\ nov.\ 07\ 12\:00\:14\ *\ *\ @author\ poussin\ *\ @version\ $Revision\:\ 722\ $\ *\ *\ Last\ update\:\ $Date\:\ 2007-11-14\ 01\:16\:35\ +0100\ (mer,\ 14\ nov\ 2007)\ $\ *\ by\ \:\ $Author\:\ bpoussin\ $\ */package\ fr.ifremer.isisfish.simulator;import\ org.codelutin.math.matrix.MatrixND;import\ fr.ifremer.isisfish.types.Date;/**\ *\ Some\ SimulationResultListener\ can\ implement\ this\ interface\ to\ show\ that\ can\ *\ be\ used\ to\ retrieve\ result\ *\ \ *\ @author\ poussin\ */public\ interface\ SimulationResultGetter\ {\ \ \ \ /**\ \ \ \ \ *\ Retourne\ la\ matrice\ stocke\ pour\ un\ pas\ de\ temps\ \ \ \ \ *\ @param\ date\ le\ pas\ de\ temps\ que\ l'on\ souhaite\ \ \ \ \ *\ @param\ name\ le\ nom\ des\ resultats\ dont\ on\ veut\ la\ matrice\ \ \ \ \ *\ @return\ La\ matrice\ demand\uFFFDe\ ou\ null\ si\ aucune\ matrice\ ne\ correspond\ a\ \ \ \ \ *\ la\ demande.\ \ \ \ \ */\ \ \ \ \ public\ MatrixND\ getMatrix(SimulationContext\ context,\ Date\ date,\ String\ name);\ \ \ \ \ \ \ \ \ \ /**\ \ \ \ \ \ *\ Retourne\ une\ matrice\ contenant\ tous\ les\ pas\ de\ temps.\ \ \ \ \ \ *\ @param\ name\ le\ nom\ des\ resultats\ dont\ on\ veut\ une\ matrice\ globale.\ \ \ \ \ \ */\ \ \ \ \ public\ MatrixND\ getMatrix(SimulationContext\ context,\ String\ name);\ \ \ \ \ }/*\ *\#\#%\ *\ Copyright\ (C)\ 2002-2005\ Code\ Lutin,\ C\uFFFDdric\ Pineau,\ \ \ \ \ Benjamin\ Poussin\ *\ *\ This\ program\ is\ free\ software;\ you\ can\ redistribute\ it\ and/or\ *\ modify\ it\ under\ the\ terms\ of\ the\ GNU\ General\ Public\ License\ *\ as\ published\ by\ the\ Free\ Software\ Foundation;\ either\ version\ 2\ *\ of\ the\ License,\ or\ (at\ your\ option)\ any\ later\ version.\ *\ *\ This\ program\ is\ distributed\ in\ the\ hope\ that\ it\ will\ be\ useful,\ *\ but\ WITHOUT\ ANY\ WARRANTY;\ without\ even\ the\ implied\ warranty\ of\ *\ MERCHANTABILITY\ or\ FITNESS\ FOR\ A\ PARTICULAR\ PURPOSE.\ \ See\ the\ *\ GNU\ General\ Public\ License\ for\ more\ details.\ *\ *\ You\ should\ have\ received\ a\ copy\ of\ the\ GNU\ General\ Public\ License\ *\ along\ with\ this\ program;\ if\ not,\ write\ to\ the\ Free\ Software\ *\ Foundation,\ Inc.,\ 59\ Temple\ Place\ -\ Suite\ 330,\ Boston,\ MA\ \ 02111-1307,\ USA.\ *\#\#%*//*\ **\ SimulatorServerBadIdException.java**\ Created\:\ Fri\ Sep\ \ 6\ 2002**\ @author\ \ <poussin at codelutin.com>*\ Copyright\ Code\ Lutin*\ @version\ $Revision\:\ 167\ $**\ Mise\ a\ jour\:\ $Date\:\ 2006-01-23\ 15\:00\:17\ +0100\ (lun,\ 23\ jan\ 2006)\ $*\ par\ \:\ $Author\:\ bpoussin\ $*/package\ fr.ifremer.isisfish.simulator;public\ class\ SimulatorServerBadIdException\ extends\ RuntimeException\ {\ //\ SimulatorServerBadIdException\ \ \ \ /**\ \ */\ \ \ \ private\ static\ final\ long\ serialVersionUID\ =
+isisfish.error.unsupported.equation.langage=unsupported langage '%1$s' for equation\: %2$s
+isisfish.error.update.file=Can't update file '%1$s'
+isisfish.error.update.repository=Can't update local repository
+isisfish.error.vcs.connect=Probl\u00E8me de connexion au serveur vcs, v\u00E9rifier votre configuration, ou contactez-nous si le probl\u00E8me persiste.
+isisfish.error.vcs.no.anonymous.connection=
+isisfish.error.vcs.no.ssh.connection=ne pas pu se connecter en utilisant la configuration ssh login %1$s, clef priv\u00E9e %2$s
+isisfish.error.vcs.pre.migrate=pendant la migration, la sauvegarde de votre base %1$s n'a pas pu \u00EAtre effectu\u00E9e pour la raison suivante %2$s, une nouvelle base est cr\u00E9e ici %3$s.
+isisfish.error.wait.simThread=Can't wait SimThread
+isisfish.error.while.simulation=error while simulation %1$s
+isisfish.error.write.simulation=Can't write information %1$s
isisfish.exit.text=Quelque chose a chang\u00E9, merci de saisir un commentaire
isisfish.exit.title=Exit
isisfish.export.directory=Dossier d'export
@@ -248,6 +376,8 @@
isisfish.filter.log.tooltip.message=Entrer un terme \u00E0 rechercher et appuyer sur Entr\u00E9e
isisfish.filter.reset=R\u00E9initialiser
isisfish.filter.result=R\u00E9sultats
+isisfish.filter.select=S\u00E9lectionner
+isisfish.filter.select.simulation=S\u00E9lectionner une simulation
isisfish.filter.simulation=Filter les simulations
isisfish.filter.simulation.analysePlanNumber=num\u00E9ro d"analyse
isisfish.filter.simulation.description=description
@@ -341,7 +471,7 @@
isisfish.input.menu.file=Fichier
isisfish.input.menu.help=Aide
isisfish.input.menu.importRegion=Importer une r\u00E9gion
-isisfish.input.menu.importRegionSimulation=Importer la r\u00E9gion d''une simulation
+isisfish.input.menu.importRegionSimulation=Importer la r\u00E9gion d'une simulation
isisfish.input.menu.importRegionV2=Importer une r\u00E9gion de la v2 d'IsisFish
isisfish.input.menu.importRenameRegion=Importer une r\u00E9gion et la renommer
isisfish.input.menu.removeLocaly=Supprimer localement
@@ -351,35 +481,149 @@
isisfish.input.selectNodeTree=S\u00E9lectionnez un noeud de l'arbre
isisfish.input.title=Saisie de la p\u00EAcherie
isisfish.launch.anonymous=lecture seule
+isisfish.launch.debugMode=debug mode
isisfish.launch.email=courriel
+isisfish.launch.find.public.key=Clef publique ssh (*.pub) associ\u00E9e \u00E0 la clef priv\u00E9e
+isisfish.launch.first=Premier d\u00E9marrage type vcs %1$s - version %2$s
isisfish.launch.firstname=nom
+isisfish.launch.howto.save.key=Comment enregister sa clef publique ssh aupr\u00E8s du labs
+isisfish.launch.init.done=init done in %1$s.
isisfish.launch.lasstname=pr\u00E9nom
+isisfish.launch.save.key=Acc\u00E9der au labs pour enregister votre clef publique ssh
isisfish.launch.server.authenticationMethod=droit d'acc\u00E8s au serveur
isisfish.launch.server.login=nom utilisateur
+isisfish.launch.server.ssh.confirm.change.method=Changer la m\u00E9thode d'authentification requi\u00E8re une migration de votre base au prochaine red\u00E9marrage, Confirmer cette action.
+isisfish.launch.server.ssh.confirm.overwrite.key=Le clef %1$s existe d\u00E9j\u00E0, confirmer pour l'\u00E9craser.
isisfish.launch.server.ssh.confirm.passphrase=confirmer la passphrase
isisfish.launch.server.ssh.key.change=Changer la clef ssh
+isisfish.launch.server.ssh.key.clipboard=Votre clef publique a \u00E9t\u00E9 copi\u00E9e dans le presse papier
isisfish.launch.server.ssh.key.generate=G\u00E9n\u00E9rer la clef ssh
+isisfish.launch.server.ssh.key.generate.error=La clef %1$s n'a pas \u00E9t\u00E9 g\u00E9n\u00E9r\u00E9e.
+isisfish.launch.server.ssh.key.generate.succes=Votre clef ssh %1$s a \u00E9t\u00E9 g\u00E9n\u00E9r\u00E9e,il faut d\u00E9sormais l'enregistrer aupr\u00E8s du serveur lab.
+isisfish.launch.server.ssh.key.no.key=Pas de clef ssh connu ou vous n'avez pas s\u00E9lectionn\u00E9 le mode SSH, voulez-vous quand meme continuer ?
+isisfish.launch.server.ssh.key.register=Enregister votre clef publique ssh sur le serveur du labs
isisfish.launch.server.ssh.no.passphrase=pas de passphrase
isisfish.launch.server.ssh.passphrase=passphrase
isisfish.launch.server.ssh.privateKeyFile=clef priv\u00E9e ssh
isisfish.launch.server.ssh.publicKeyFile=clef publique ssh
isisfish.launch.ssh=lecture-\u00E9criture (ssh)
+isisfish.launch.start=Lancement Isis-fish ... %1$s
+isisfish.launch.stop=Stopping simulation...
+isisfish.launching=after init done in %1$s.
+isisfish.log.addAppender=ajoute un appender [%1$s]
isisfish.log.body=Message \u00E0 joindre
-isisfish.log.mail.send.title",\ simulationFile.getName()));\ \ \ \ \ \ \ \ this.from\ =
+isisfish.log.closeAppender=ferme l'appender [%1$s] pour la categorie %2$s
+isisfish.log.mail.failed=Impossible d'envoyer le rapport par courriel. Le serveur smtp fonctionne ? (J'essaye de contacter < %1$s > smtp server)
+isisfish.log.mail.send=A report has been sent to %1$s
+isisfish.log.mail.send.title=Send simulation %1$s by email
isisfish.log.mailTo=Adresse du destinataire
+isisfish.log.removeAppender=supprime l'appender [%1$s]
+isisfish.log.restoreLogLevel=repositionne le niveau du logger %1$s du niveau %2$s au niveau %3$s
isisfish.log.sendAll=Envoyer la simulation complete
isisfish.log.sendMail=Envoyer par email
+isisfish.log.simulation.name=IsisFish simulation %1$s
+isisfish.log.swapLogLevel=permute le niveau du logger %1$s du niveau %2$s au niveau %3$s
isisfish.log.tooltip.body=Le message saisi sera joint au courriel envoy\u00E9
isisfish.log.tooltip.mailTo=Entrer l'adresse du destinataire du courriel
isisfish.log.tooltip.sendAll=Envoyer toute la simulation, ou uniquement le fichier de log
isisfish.log.tooltip.sendMail=Cliquer pour envoyer le courriel contentant les fichiers
+isisfish.message.add.cvs=Ajouter depuis %1$s fichiers %2$s.
+isisfish.message.add.objets.simulation=Add new objets simulation
+isisfish.message.add.queue=%1$s ajout\u00E9e \u00E0 la queue de simulations
+isisfish.message.add.queue.remote=%1$s ajout\u00E9 \u00E0 la queue de simulations distantes
+isisfish.message.backup.database.finished=backup database finished
+isisfish.message.backup.database.progress=backup database in progress
+isisfish.message.cancel.finished=Cancel finished
+isisfish.message.check.finished=v\u00E9rification termin\u00E9e
+isisfish.message.check.region=Check region ...
+isisfish.message.checking.cell=Checking cell
isisfish.message.choose.archive=choose archive file or directory
-isisfish.message.load.map",\ filename,\ shp,\ ssx));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ addShapeLayer(filename,\ shp,\ ssx,\ "ff000000",\ "ffbdde83=
+isisfish.message.comment.region.modification=Entrer un commentaire sur la modification de la r\u00E9gion
+isisfish.message.commit=Commiter les modifications
+isisfish.message.commit.cancelled=commit annul\u00E9
+isisfish.message.commit.finished=commit termin\u00E9
+isisfish.message.commit.region.canceled=Commit de la r\u00E9gion annul\u00E9
+isisfish.message.commiting.region=En train de commiter la r\u00E9gion %1$s ...
+isisfish.message.compilation.time=Temps de compilation %1$ss
+isisfish.message.confirm.delete.object=Voulez-vous vraiment supprimer l'objet %1$s
+isisfish.message.confirm.remove.region=Voulez-vous vraiement supprimer la r\u00E9gion %1$s ?
+isisfish.message.confirm.remove.script=Voulez-vous vraiment supprimer le script ? '%1$s'
+isisfish.message.copy.finished=Copie termin\u00E9e
+isisfish.message.copy.region=Copier la r\u00E9gion vers %1$s
+isisfish.message.copy.revision=Working copy initialize fine... Revision \: [ %1$s - %2$s ]
+isisfish.message.create.region.canceled=Creation de r\u00E9gion annul\u00E9e
+isisfish.message.creating.region=En train de cr\u00E9er la r\u00E9gion %1$s
+isisfish.message.creation.done=cr\u00E9ation termin\u00E9e %1$s
+isisfish.message.creation.finished=Cr\u00E9ation termin\u00E9e
+isisfish.message.delete.canceled=supression annul\u00E9e
+isisfish.message.delete.entities=Supprimer les entit\u00E9s
+isisfish.message.delete.entity=Supprimer l'entit\u00E9
+isisfish.message.delete.finished=Suppression termin\u00E9e
+isisfish.message.delete.object=Pour supprimer l'objet %1$s, tous les objets suivant seront aussi supprim\u00E9s \\n\\n
+isisfish.message.diff.finished=fichier dans l'\u00E9tat %1$s
+isisfish.message.directory.not.exists=Le r\u00E9pertoire parent de %1$s n'existe pas, Voulez-vous le cr\u00E9er ?
+isisfish.message.evaluation.finished=\u00E9valuation termin\u00E9e
+isisfish.message.export.cancelled=Export annul\u00E9
+isisfish.message.export.done=Export termin\u00E9
+isisfish.message.export.path.tozip=toZip %1$s
+isisfish.message.export.result=zip %1$s fichier(s) dans l'archive %2$s (taille %3$s)
+isisfish.message.export.scripts.file=Export vers le fichier %1$s
+isisfish.message.export.zip=Exporter dans le fichier zip %1$s
+isisfish.message.file.already.exists=Le fichier existe %1$s d\u00E9j\u00E0, Voulez-vous l'\u00E9craser ?
+isisfish.message.file.overwrite=Le fichier existe, Voulez-vous l'\u00E9craser ?
+isisfish.message.import=Importer %1$s
+isisfish.message.import.finished=Import termin\u00E9
+isisfish.message.import.region.name=Entre le nom de la r\u00E9egion \u00E0 importer
+isisfish.message.import.region.xml=XMLed Region
+isisfish.message.import.region.zipped=Zipped Region
+isisfish.message.import.scripts.file=Importation depuis le fichier %1$s
+isisfish.message.import.scripts.file.cancelled=Importation des scripts annul\u00E9
+isisfish.message.import.scripts.file.done=Importation des scripts termin\u00E9
+isisfish.message.import.scripts.zipped=Zipped Scripts
+isisfish.message.import.xml.v2.file\ =Import xml v2 file
+isisfish.message.import.zip=Import zip file
+isisfish.message.load.finished=Chargement termin\u00E9
+isisfish.message.load.map=Chargement de la carte \: %1$s (%2$s, %3$s)
+isisfish.message.load.region.canceled=chargement de r\u00E9gion annul\u00E9
+isisfish.message.loading.old.simulation=Chargement d'une ancienne simulation ...
+isisfish.message.loading.region=Chargement de la r\u00E9gion
+isisfish.message.name.imported.region=Entrez le nom de la r\u00E9gion \u00E0 importer
+isisfish.message.new.filename=Entrer le nom du nouveau du fichier.\n\t (utiliser uniquemment des caract\u00E8res et _ en commencant avec une majuscule)
+isisfish.message.new.region.name=Entrer le nom de la nouvell r\u00E9gion
+isisfish.message.no.diff=Pas de diff\u00E9rences trouv\u00E9s pour le fichier %1$s, \u00E9tant un '%2$s'
+isisfish.message.old.simulation.loaded=Anicenne simulation charg\uE009e
+isisfish.message.page.modified=Cette page a \u00E9t\u00E9 modifi\u00E9, voulez-vous la sauvegarder ?
+isisfish.message.presimulation.script.execution=Ex\u00E9cution des scripts de Presimulation
+isisfish.message.recruitment.number.month=Input the number of month of recruitment
+isisfish.message.region.commited=R\u00E9gion commit\u00E9e
+isisfish.message.region.loaded=R\u00E9gion charg\u00E9e
+isisfish.message.region.remove.canceled=Suppression de r\u00E9gion annul\u00E9
+isisfish.message.region.removed=R\u00E9gion supprim\u00E9e
+isisfish.message.remove.canceled=Suppression annul\u00E9e
+isisfish.message.remove.files=Suppresion des fichiers %1$s.
+isisfish.message.remove.finished=Suppresison termin\u00E9
+isisfish.message.remove.unnecessary.cells=Suppression de cellules no necessaires
+isisfish.message.removing.region=Suppression de lar\u00E9gion %1$s ...
isisfish.message.result.verif.region=R\u00E9sultat de la v\u00E9rification de la r\u00E9gion
+isisfish.message.save.finished=sauvegarde termin\u00E9e
+isisfish.message.saveModel.finished=Sauvegarde du mod\u00E8le termin\u00E9e
+isisfish.message.search.data=Recherche des donn\u00E9es ...
+isisfish.message.setting.cache.aspects=Mise en place des aspects Cache
+isisfish.message.setting.trace.aspects=Mise en place des aspects Trace
+isisfish.message.simulation.ended=Simulation termin\u00E9e
+isisfish.message.simulation.execution=Simulation execution
+isisfish.message.spacialized.visualisation=Spacialized visualisation
+isisfish.message.stop.with.error=stop with error %1$s
+isisfish.message.synchronize.done=synchronize termin\u00E9e.
+isisfish.message.tray.disabled=SystemTray disabled
+isisfish.message.update.finished=update finished
isisfish.metier.comments=Commentaires
isisfish.metier.name=Nom
isisfish.metier.rangeValues=Range of values
isisfish.metier.title=M\u00E9tier
+isisfish.metierMonitor.metiers=M\u00E9tiers
+isisfish.metierMonitor.strategies=Strat\u00E9gies
+isisfish.metierSeasonInfo.toString=%1$s saison %2$s-%3$s
isisfish.metierSeasonInfoSpecies.mainSpecies=Esp\u00E8ces principales pour le m\u00E9tier
isisfish.metierSeasonInfoSpecies.selectSeason=S\u00E9lectionnez une saison
isisfish.metierSeasonInfoSpecies.selectSpecies=Choix de l'esp\u00E8ce
@@ -389,7 +633,44 @@
isisfish.metierSeasonInfoZone.season=Saison
isisfish.metierSeasonInfoZone.selectSeason=S\u00E9lectionnez une saison
isisfish.metierSeasonInfoZone.title=Seasons / Zones
+isisfish.migration.cvs.description=Migrate de CVS vers SVN [v %1$s]
+isisfish.migration.svn.protocol.description=Migration de SVN [v %1$s - %2$s] vers SVN [v %3$s - %4$s]
+isisfish.migration.svn.version.description=Migration de SVN [v %1$s - %2$s] vers SVN [v %3$s - %4$s]
isisfish.monitor.title=Application Monitor
+isisfish.month.april=avril
+isisfish.month.august=ao\u00FBt
+isisfish.month.december=d\u00E9cembre
+isisfish.month.february=f\u00E9vrier
+isisfish.month.january=janvier
+isisfish.month.july=juillet
+isisfish.month.june=juin
+isisfish.month.march=mars
+isisfish.month.may=mai
+isisfish.month.november=novembre
+isisfish.month.october=octobre
+isisfish.month.september=september
+isisfish.option.description.addScript=ajoute un script d'un certain type (analyseplans|exports|formules\=type|rules|scripts|simulators) \u00E0 partir d'un fichier existant (file) (pour les formules il faut pr\u00E9ciser son type)
+isisfish.option.description.changeConfig=remplace la valeur d'une propri\u00E9t\u00E9 de clef **key** de la configuration [vcs] par la valeur **value**.
+isisfish.option.description.changeFileConfig=le fichier de configuration utilis\u00E9
+isisfish.option.description.createSshKey=create key pair for vcs ssh access using vcs.ssh.keyFileproperty or the given (privateKeyFile), with a (force) argument to overwrite
+isisfish.option.description.editConfig=pour lancer l'UI d'\u00E9dition de la configuration (main ou vcs)
+isisfish.option.description.exportData=export dans un nouveau fichier **fileZip** une region, ou une simulation en stipulant son nom, utilisez **force** pour \u00E9craser une archive existante.
+isisfish.option.description.exportScript=export dans un nouveau fichier (fileZip) des scripts d'un certain type **analyseplan|export|formule|rule|script|simulator** (pour les formules il faut fournir un **type**) avec possibilit\u00E9 d'effectuer un filtre **filter**, utilisez **force** pour \u00E9craser une archive existante.
+isisfish.option.description.help=Show this help
+isisfish.option.description.helpConfig=Show this help
+isisfish.option.description.import=importe un fichier existant (fileZip) pr\u00E9c\u00E9demmentexport\u00E9 d'Isis (region, simulation ou script)
+isisfish.option.description.importAndRenameRegion=import region from (regionFile) zip v3 file format and rename it (name)
+isisfish.option.description.list=affiche la liste d'un certain type d'objects Isis (analyseplans|exports|formules|regions|rules|scripts|simulations|simulators)avec possibilit\u00E9 d'appliquer un filtre (filter)
+isisfish.option.description.mavenFile=Checkout maven file from server (pom.xml)
+isisfish.option.description.resetConfig=R\u00E9initialisation de la configuration.
+isisfish.option.description.showConfig=Voir les d\u00E9tails d'une configuration
+isisfish.option.description.simulate=lance une simulation \u00E0 partir de son nom (simulation-id) et en sp\u00E9cifiant le fichier de param\u00E8tres de simulation existant (file)
+isisfish.option.description.sshKeyFile=change private ssh key file path in vcs configuration (vcs.ssh.keyFile)
+isisfish.option.description.ui=launch or not user interface (value)
+isisfish.option.description.update=update or not the local repository (value)
+isisfish.option.description.vcsAddRemove=ajoute ou supprime du r\u00E9pository local un ensemble de fichiers existants (file)
+isisfish.option.description.vcsUpdateCommitState=effectue une op\u00E9ration de communication avec le serveur distant (update|commit|state) avec possibilit\u00E9 de sp\u00E9cifier les fichiers cibles existants (file)
+isisfish.params.changeLogLev=Passe du niveau '%1$s' au niveau '%2$s'
isisfish.params.clearFilter=Reset filtre
isisfish.params.description=Description
isisfish.params.filter=Filtrer
@@ -400,9 +681,31 @@
isisfish.params.ruleParameters=Param\u00E8tres des r\u00E8gles
isisfish.params.simulationName=Nom de la simulation
isisfish.params.title=Param\u00E8tres
+isisfish.params.toString.fishery=P\u00EAcherie\: %1$s\\n\\n
+isisfish.params.toString.lib.logger.level=niveau du logger de librairies %1$s
+isisfish.params.toString.number.years=Nombre d'ann\u00E9\u00E9s \: %1$s\\n\\n
+isisfish.params.toString.plan=Plan\: %1$s
+isisfish.params.toString.plan.number=Analyse plan sequence number\: %1$s\\n\\n
+isisfish.params.toString.populations=Populations\:
+isisfish.params.toString.rule=Rule\: %1$s
+isisfish.params.toString.script.logger.level=niveau du logger de scripts %1$s
+isisfish.params.toString.script.presimulation=Script de presimulation
+isisfish.params.toString.simul.logger.level=niveau du logger de simulateur %1$s
+isisfish.params.toString.simulation.done=Simulation r\u00E9alis\u00E9e avec %1$s\:
+isisfish.params.toString.strategies=Strat\u00E9gies d'exploitation\:
isisfish.params.useAnalysePlan=Utiliser le plan d'analyse
isisfish.params.usePreSimulationScript=Utiliser un script de pr\u00E9-simulation
+isisfish.population.capturability=Capturabilit\u0E009e
isisfish.population.comments=Commentaires
+isisfish.population.group=Groupe
+isisfish.population.groups=Groupes
+isisfish.population.mappingZoneReproZoneRecru=MappingZoneReproZoneRecru
+isisfish.population.matrixAbundance=Matrice d'abondance
+isisfish.population.matrixAbundance1D=matrixAbundance1D
+isisfish.population.recruitment=Recrutement
+isisfish.population.reproduction=Reproduction
+isisfish.population.season=Saison
+isisfish.population.zones=Zones
isisfish.populationBasics.geographicID=Identifiant g\u00E9ographique
isisfish.populationBasics.growth=Croissance
isisfish.populationBasics.growthReverse=Croissance inverse
@@ -427,6 +730,7 @@
isisfish.populationGroup.price=prix
isisfish.populationGroup.reproductionRate=Taux de reproduction
isisfish.populationGroup.title=Saisie des groupes de population
+isisfish.populationGroup.toString=%1$s Groupe %2$s
isisfish.populationMigration.comments=Commentaires
isisfish.populationMigration.selectSeason=S\u00E9lectionnez une saison
isisfish.populationMigration.title=Migration
@@ -446,6 +750,15 @@
isisfish.populationRecruitment.recruitmentDistribution=Distribution du recrutement
isisfish.populationRecruitment.reproductionEquation=Equation de reproduction
isisfish.populationRecruitment.title=Saisie des recrutements
+isisfish.populationSeasonInfo.arrival=Arriv\u00E9e
+isisfish.populationSeasonInfo.departure=D\u00E9part
+isisfish.populationSeasonInfo.distributionSpawing=Distribution of spawing
+isisfish.populationSeasonInfo.emigration=Emigration
+isisfish.populationSeasonInfo.group=Groupe
+isisfish.populationSeasonInfo.immigration=Immigration
+isisfish.populationSeasonInfo.migration=Migration
+isisfish.populationSeasonInfo.months=Mois
+isisfish.populationSeasonInfo.toString=%1$s saison %2$s-%3$s
isisfish.populationSeasons.Reproduction=Reproduction
isisfish.populationSeasons.changeGroup=Changement de groupe
isisfish.populationSeasons.comments=Commentaires
@@ -468,22 +781,29 @@
isisfish.preScript.backParameter=Retour aux param\u00E8tres
isisfish.preScript.title=Script de pr\u00E9-simulation
isisfish.queue.cancelled=annul\u00E9
+isisfish.queue.id=identifiant
+isisfish.queue.local=Locale
+isisfish.queue.name=Queue
+isisfish.queue.plan=Plan
+isisfish.queue.progression=Progression
isisfish.queue.showLog=Voir les logs de la simulation
isisfish.queue.simulationLaunch=Lanceur de la queue des simulations
+isisfish.queue.status=Etat
isisfish.queue.stopSimulation=Arreter la simulation
isisfish.queue.title=Queue
isisfish.result.abundance=Abondance
isisfish.result.add=Ajouter un r\u00E9sultat\=
-isisfish.result.begin.simulation=En debut de Simulation\:
+isisfish.result.begin.simulation=En debut de Simulation\:
isisfish.result.capture=Capturer
isisfish.result.capture.metier=Capturer par metier
isisfish.result.choose.simulation=Choisir une simulation
isisfish.result.datas=Donn\u00E9es
isisfish.result.datasRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.donneeRadioButton
isisfish.result.desktopPane=defaultToolTip-fr.ifremer.resultat.ResultatView.desktopPane
-isisfish.result.dimension\ =Dimension
-isisfish.result.end.simulation=En fin de Simulation\:
+isisfish.result.dimension\ =Dimension
+isisfish.result.end.simulation=En fin de Simulation\:
isisfish.result.export=Export
+isisfish.result.export.file=Exporter text file
isisfish.result.file=Fichier
isisfish.result.graph=Graphe
isisfish.result.graphRadioButton=defaultToolTip-fr.ifremer.resultat.ResultatEdit.graphRadioButton
@@ -564,7 +884,7 @@
isisfish.script.menu.txtJavaHelp=Aide Java
isisfish.script.menu.txtNewAnalysePlan=Nouveau plan d'analyse
isisfish.script.menu.txtNewEquationModel=Nouvelle formule
-isisfish.script.menu.txtNewExport=Nouveau script d''export
+isisfish.script.menu.txtNewExport=Nouveau script d'export
isisfish.script.menu.txtNewRule=Nouvelle r\u00E8gle
isisfish.script.menu.txtNewScript=Nouveau Script
isisfish.script.menu.txtNewSimulator=Nouveau Simulateur
@@ -576,6 +896,7 @@
isisfish.script.title=Editeur de scripts
isisfish.script.txtExport=Exporter
isisfish.script.update=Mettre \u00E0 jour
+isisfish.season.toString=saison %1$s-%2$s
isisfish.selectivity.equation=Equation
isisfish.selectivity.selectPopulation=S\u00E9lectionnez une population
isisfish.selectivity.title=S\u00E9lectivit\u00E9
@@ -603,6 +924,7 @@
isisfish.setOfVessels.fixedCosts=Co\u00FBts fixes
isisfish.setOfVessels.name=nom
isisfish.setOfVessels.numberOfVessels=Nombre de navires
+isisfish.setOfVessels.technicalEfficiency=
isisfish.setOfVessels.title=Caract\u00E9ristiques
isisfish.setOfVessels.vesselType=Type de navire
isisfish.simpleResult.legendPanel=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.legendPanel
@@ -610,6 +932,8 @@
isisfish.simpleResult.resultatMap=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMap
isisfish.simpleResult.resultatMapToolBar=defaultToolTip-fr.ifremer.isisfish.map.SimpleIsisMapBeanBean.resultatMapToolBar
isisfish.simpleResult.table=defaultToolTip-fr.ifremer.isisfish.map.SimpleResultatMapBean.table12
+isisfish.simulation.log.console.title=Console de log simulation '%1$s'
+isisfish.simulation.log.showConsole=affichage de la console de log pour la simulation %1$s
isisfish.simulation.menu.about=A propos
isisfish.simulation.menu.close=Fermer
isisfish.simulation.menu.file=Fichier
@@ -627,12 +951,21 @@
isisfish.species.structured=Structur\u00E9
isisfish.species.title=Saisie des esp\u00E8ces
isisfish.strategy.comments=Commentaires
+isisfish.strategy.inactivity=
+isisfish.strategy.inactivityEquationUsed=
isisfish.strategy.name=nom
isisfish.strategy.proportionSetOfVessels=Proportion des ensembles de navires
isisfish.strategy.title=Caract\u00E9ristiques
+isisfish.strategyMonthInfo.metier=M\u00E9tier
isisfish.strategyMonthInfo.minInactivityDays=Jour minimums d'inactivit\u00E9
isisfish.strategyMonthInfo.numberOfTrips=Nombre de trajets
+isisfish.strategyMonthInfo.proportion=Proportion
isisfish.strategyMonthInfo.title=StrategyMonthInfo
+isisfish.strategyMonthInfo.toString=%1$s %2$s
+isisfish.timeUnit.day=Day
+isisfish.timeUnit.hours=Hours
+isisfish.tray.simulation=<b>Isis-fish<b><p>%1$s - %2$s/%3$s
+isisfish.tray.simulation.no=<b>Isis-fish<b><p><i>No simulation<i>
isisfish.tripType.comments=Commentaires
isisfish.tripType.duration=Dur\u00E9e
isisfish.tripType.minTime=Temps minimal entre deux voyages
@@ -644,6 +977,9 @@
isisfish.vcs.commit.cancel=annuler
isisfish.vcs.commit.label=Entrer quelques mots concernant la modification des scripts
isisfish.vcs.commit.ok=confirmer
+isisfish.vcs.config.title=Modification de la configuration vcs d'IsisFish
+isisfish.vcs.configuration.title=Configuration du serveur vcs
+isisfish.vcs.migrate.end=La migration est termin\u00E9e en %1$ss.\nLa nouvelle base est localis\u00E9e ici [%2$s]
isisfish.vcs.update=R\u00E9sultats de la synchronisation avec le serveur
isisfish.vcs.update.cancel=annuler
isisfish.vcs.update.checkAll=(de)-select tout
@@ -670,6 +1006,7 @@
isisfish.vcs.updateconfirm.label2='Etes vous sur de vouloir effectuer ces op\u00E9rations ?'
isisfish.vcs.updateconfirm.ok=confirmer
isisfish.vcs.updateconfirm.tooltip.checkAll=(D\u00E9-)S\u00E9lectionner tous les scripts que vous voulez traiter
+isisfish.versionStorage.removed=Surim\u00E9
isisfish.vesselType.activityRange=Intervalle d'activit\u00E9
isisfish.vesselType.comments=Commentaires
isisfish.vesselType.fuelCost=Co\u00FBt d'un trajet en fuel
@@ -713,4 +1050,36 @@
isisfish.zone.comments=Commentaires
isisfish.zone.name=Nom
isisfish.zone.title=Saisie zone
-null)\ {\ \ \ \ \ \ \ \ \ \ \ \ logMail\ =
+lutinutil.common.action=Action
+lutinutil.common.file=Fichier
+lutinutil.common.logDiff=LogDiff
+lutinutil.common.module=Module
+lutinutil.common.rev=R\u00E9vision
+lutinutil.common.select=S\u00E9lectionner
+lutinutil.error.checkout.dir=Can't checkout dir %1$s
+lutinutil.error.fieldmodel.already.registred=FieldAccess [%1$s] is already registred
+lutinutil.error.fieldmodel.not.registred=could not found a matching entry in cache for [%1$s]
+lutinutil.error.fieldmodel.unmatchin.options=
+lutinutil.error.init.config=config is not init, you should invoke on the config validate(true) method to validate it and finish his init %1$s
+lutinutil.error.init.no.config=should invoke %1$s\#init(VCSType,Properties) before required instance.
+lutinutil.vcs.action.add=Add
+lutinutil.vcs.action.changeLog=journal des changements
+lutinutil.vcs.action.checkout=R\u00E9cup\u00E9rer
+lutinutil.vcs.action.commit=Commiter
+lutinutil.vcs.action.delete=Supprimer
+lutinutil.vcs.action.diff=voir les diff\u00E9rences
+lutinutil.vcs.action.overwriteAndUpdate=Update
+lutinutil.vcs.action.revert=Rollback
+lutinutil.vcs.action.update=Update
+lutinutil.vcs.state.missing=fichier non pr\u00E9sent localement
+lutinutil.vcs.state.modified=fichier modifi\u00E9
+lutinutil.vcs.state.outofdate=fichier obsol\u00E8te
+lutinutil.vcs.state.outofdateAndModified=fichier modifi\u00E9 et obsol\u00E8te
+lutinutil.vcs.state.unknown=fichier d'\u00E9tat inconnu
+lutinutil.vcs.state.unversionned=fichier non versionn\u00E9
+lutinutil.vcs.state.unversionnedOrMissing=fichier non versionn\u00E9 ou non pr\u00E9sent localement
+lutinutil.vcs.state.uptodate=fichier \u00E0 jour
+no\ properties\ found\ or\ unsafe\ properties\ found\ %1$s=no properties found or unsafe properties found %1$s
+the\ property\ %1$s\ is\ mandatory\ but\ missed.=the property %1$s is mandatory but missed.
+to\ use\ ssh\ authentication\ mode,\ you\ must\ have\ a\ username.\ %1$s.=to use ssh authentication mode, you must have a username. %1$s.
+to\ use\ ssh\ authentication\ mode,\ you\ must\ have\ an\ existing\ private\ key\ %1$s\ \:\ %2$s.=to use ssh authentication mode, you must have an existing private key %1$s \: %2$s.
Modified: trunk/isis-fish/src/xmi/isis-fish.zargo
===================================================================
(Binary files differ)
1
0
r1302 - in trunk/isis-fish/src: java/fr/ifremer/isisfish java/fr/ifremer/isisfish/actions java/fr/ifremer/isisfish/datastore java/fr/ifremer/isisfish/datastore/migration java/fr/ifremer/isisfish/datastore/update java/fr/ifremer/isisfish/entities java/fr/ifremer/isisfish/equation java/fr/ifremer/isisfish/logging java/fr/ifremer/isisfish/logging/console java/fr/ifremer/isisfish/map java/fr/ifremer/isisfish/simulator java/fr/ifremer/isisfish/types java/fr/ifremer/isisfish/ui java/fr/ifremer
by bpoussin@users.labs.libre-entreprise.org Aug. 18, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 18, 2008
Aug. 18, 2008
Author: bpoussin
Date: 2008-08-18 13:42:57 +0000 (Mon, 18 Aug 2008)
New Revision: 1302
Added:
trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/
trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
Removed:
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointThread.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModelOld.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ExportDialog.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ImportDialog.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/IsisOptionParserTest.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisCommonActionsTest.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisScriptAndDataActionsTest.java
trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisVcsActionsTest.java
Modified:
trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
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/OtherAction.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/DataStorage.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/IsisH2Config.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/ResultStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EquationImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsole.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogMail.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/map/IsisMapBean.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/map/ResultatLayer.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/ResultManager.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationControl.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Date.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Month.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/types/TimeUnit.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/Welcome.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/Input.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItem.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultView.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/Action.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/util/CompileHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/util/DocHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JExportDialog.jaxx
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JImportDialog.jaxx
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xml
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JCommitDialog.jaxx
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateConfirmDialog.jaxx
trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateDialog.jaxx
Log:
gros nettoyage apres fusion avec la branche 3.2. (migration de schema, nouvelle equation, calcul en maille)
- en cours de finalisation du refactoring du vcs
compile, mais ne fonctionne pas, un commit est jamais mauvais :)
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisConfig.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -19,14 +19,15 @@
package fr.ifremer.isisfish;
-import fr.ifremer.isisfish.actions.ExportAction;
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.vcs.VCS;
import fr.ifremer.isisfish.vcs.VCSNone;
import java.io.File;
import java.net.MalformedURLException;
@@ -44,7 +45,9 @@
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;
/**
*
@@ -58,7 +61,7 @@
/** 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
@@ -74,16 +77,26 @@
* migration de donnees demande automatiquement un changement de version
* d'application.
*/
- // ATTENTION NE PAS MODIFIER LES LIGNES SUIVANTES OU BIEN VERIFIER QUE
- // LE SCRIPT 'publish' FONCTIONNE TOUJOURS
- static final public String VERSION_APPLICATION = "4";
- static final public String VERSION_DATABASE = VERSION_APPLICATION + ".0";
- static final public String VERSION_API_SCRIPT = VERSION_DATABASE + ".0";
- static final public String VERSION = VERSION_DATABASE + ".0";
+ protected final static VersionNumber version = new VersionNumber(3, 2, 0, 0);
+ protected final static VersionNumber databaseVersion = new VersionNumber(
+ version.getNumber(0), version.getNumber(1));
+
+ public static VersionNumber getVersionNumber() {
+ return version;
+ }
+
+ static public String getVersion() {
+ String result = version.toString();
+ return result;
+ }
- static final public String COPYRIGHT_TEXT = "Version " + VERSION + " IFREMER-MAERHA © 2000-2008";
- static final public String CONFIG_FILENAME = "isis-config-" + VERSION_APPLICATION;
+ public static VersionNumber getDatabaseVersion() {
+ return databaseVersion;
+ }
+ 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";
@@ -103,23 +116,25 @@
}
}
-
- static public String getVersion() {
- return VERSION;
- }
//////////////////////////////////////////////////
// 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);
- if (!result.exists()) {
- result.mkdirs();
- }
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()) {
@@ -128,42 +143,74 @@
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;
}
- public String getEncoding() {
+ /**
+ * Retourne l'encoding a utiliser pour les fichiers textes
+ * @return
+ */
+ public String getEncoding() {
String result = getOption(Option.ENCODING.key);
return result;
}
- public String getSmtpServer() {
+ /**
+ * 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;
@@ -177,7 +224,11 @@
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);
@@ -400,6 +451,75 @@
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", 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,
+ };
+
+ 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;
+ if (newKey == null) {
+ // pas d'equivalent a la cle, on la supprime
+ homefile.remove(oldKey);
+ } else {
+ setOption(newKey, value);
+ }
+ }
+ }
+ }
+ if (mustSave) {
+ saveForUser();
+ }
+ }
+
//////////////////////////////////////////////////
// Toutes les options disponibles
//////////////////////////////////////////////////
@@ -409,6 +529,7 @@
COMPILATION_DIRECTORY("compilation.directory", _("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-build"),
CONFIG_FILE("config.file", _("isisfish.config.main.configFileName.description"), getUserHome() + File.separator + "." + 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"), ""),
@@ -416,13 +537,16 @@
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("simulator.launcher", _("isisfish.config.main.localSimulator.description"), "local"),
+
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"),
@@ -439,14 +563,16 @@
SSH_PASSPHRASE("ssh.passphrase", _("isisfish.config.vcs.passphrase.description"), ""),
// can be None, CVS or SVN. only None or SVN work
- VCS_TYPE(VCSNone.VCS_TYPE, _("isisfish.config.vcs.type.description"), VCSNone.TYPE_SVN),
+ VCS_TYPE(VCS.VCS_TYPE, _("isisfish.config.vcs.type.description"), VCS.TYPE_SVN),
// depend of VCS_TYPE, for SVN can be http or ssh
- VCS_CONNECTION(VCSNone.VCS_CONNECTION, _("isisfish.config.vcs.useSshConnexion.description"), "http"),
+ VCS_PROTOCOLE(VCS.VCS_PROTOCOLE, _("isisfish.config.vcs.useSshConnexion.description"), "http"),
+ 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(VCSNone.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), "anonymous"),
- VCS_HOST_NAME(VCSNone.VCS_HOST_NAME, _("isisfish.config.vcs.hostName.description"), "labs.libre-entreprise.org"),
- VCS_PATH(VCSNone.VCS_PATH, _("isisfish.config.vcs.remotePath.description"), "svnroot/isis-fish-data"),
- VCS_TAG(VCSNone.VCS_TAG, _("isisfish.config.vcs.remoteDatabase.description"), "tag/" + VERSION_DATABASE),
+ VCS_USER_NAME(VCS.VCS_USER_NAME, _("isisfish.config.vcs.userName.description"), "anonymous"),
+ 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"),
@@ -471,6 +597,10 @@
// 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"),
@@ -521,6 +651,6 @@
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisFish.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,6 +31,7 @@
package fr.ifremer.isisfish;
+import com.sun.tools.internal.xjc.generator.util.ExistingBlockReference;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
import fr.ifremer.isisfish.datastore.FormuleStorage;
import fr.ifremer.isisfish.datastore.RegionStorage;
@@ -49,15 +50,17 @@
import fr.ifremer.isisfish.util.RangeOfValuesConverter;
import fr.ifremer.isisfish.util.StringConverter;
import fr.ifremer.isisfish.util.TimeUnitConverter;
-import fr.ifremer.isisfish.vcs.VCSNone;
+import fr.ifremer.isisfish.vcs.VCS;
+import fr.ifremer.isisfish.vcs.VCSFactory;
import java.io.File;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.log.LutinLogFactory;
import org.codelutin.math.matrix.DoubleBigVector;
import org.codelutin.math.matrix.MatrixFactory;
import java.util.Locale;
+import org.apache.commons.logging.Log;
import org.swixat.SwiXAT;
import org.swixat.model.Context;
import org.swixml.ConverterLibrary;
@@ -76,13 +79,13 @@
public class IsisFish { // IsisFish
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(IsisFish.class);
+
/** ui context location */
static final private String CONTEXT_FILE = "fr/ifremer/isisfish/ui/context.xml";
static final public String LAST_RELEASE_LAUNCH = "lastReleaseLaunched";
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static final private org.apache.commons.logging.Log log;
-
static {
System.setProperty("org.apache.commons.logging.LogFactory",
LutinLogFactory.class.getName()
@@ -92,79 +95,57 @@
static public IsisConfig config = null;
static public int step = 0; // action step
- static public VCSNone vcs = null;
+ static public VCS vcs = null;
static public Context uiContext = null;
- static protected boolean quit = false;
/**
* ask for application quit
*/
static public void quit() {
- quit = true;
+ System.exit(0);
}
- public static boolean isQuit() {
- return quit;
- }
-
static public void main(String... args) {
try {
-
// initialisation de l'application
IsisFish.init(args);
log.debug(_("isisfish.launch.init.done", config.getElapsedTimeAsString()));
+
+ // action after init
+ config.doAction(IsisConfig.Step.AfterInit.ordinal());
- // action before check database
- config.doAction(step++);
-
- checkReleaseLaunched();
-
- checkDatabase();
-
- // action before check vcs
- config.doAction(step++);
-
initVCS();
log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
- // last actions before launching or quitting
- config.doAction(step++);
+ // after init vcs and local data
+ config.doAction(IsisConfig.Step.AfterInitVCS.ordinal());
launchUI();
// action after ui launched
- config.doAction(step++);
+ config.doAction(IsisConfig.Step.AfterUI.ordinal());
} catch (Exception e) {
e.printStackTrace();
quit();
- } finally {
- startQuitDaemon();
}
}
/**
- * Start daemon that monitor quit value, if value is true, quit isis
+ * Start daemon that monitor quit value, if value is true, quit isis. Ce
+ * mecanisme permet de faire des actions avant de quitter l'application
*/
- static public void startQuitDaemon() {
- Thread quitDaemon = new Thread(new Runnable() {
- public void run() {
- while(true) {
- try {
- if (isQuit()) {
- config.doAction(step);
- System.exit(0);
- }
- Thread.sleep(1000);
- } catch (Exception eee) {
- log.info("Error in quit daemon", eee);
- }
- }
+ static public class IsisQuitHook extends Thread {
+
+ @Override
+ public void run() {
+ try {
+ config.doAction(IsisConfig.Step.BeforeExit.ordinal());
+ } catch (Exception eee) {
+ log.info("Error in quit daemon", eee);
}
- }, "Isis quit daemon");
- quitDaemon.setDaemon(true);
- quitDaemon.start();
+ }
}
/**
@@ -174,8 +155,6 @@
* @throws Exception if any exception while build configuration
*/
static public void init(String ... args) throws Exception {
- config = new IsisConfig();
-
log.info(_("isisfish.launch.start", java.util.Arrays.toString(args)));
StringBuilder builder = new StringBuilder();
builder.append(java.text.SimpleDateFormat.getInstance().format(new java.util.Date()));
@@ -184,13 +163,18 @@
log.info(builder.toString());
log.debug(_("isisfish.launch.debugMode"));
+ // first load converter and matrixFactory
+ initConvertersAndMatrixFactory();
+ // after init shutdown hook
+ Runtime.getRuntime().addShutdownHook(new IsisQuitHook());
+
+ config = new IsisConfig();
+
// parsing des options à partir des arguments passés
config.parse(args);
I18n.init(config.getLocale(), config.getEncoding());
- // post load hook (converter and matrixFactory)
- initConvertersAndMatrixFactory();
}
// public static void initVCS() {
@@ -209,56 +193,15 @@
// }
/**
- * Check last version launch to determine is user change his release
- */
- static public void checkReleaseLaunched() {
- String version = config.getOption(LAST_RELEASE_LAUNCH);
- if (version == null) { // first launch of isis ?
- // ask user for some configuration
- // FIXME
- // try to checkout vcs data
- // FIXME
- } else if(!version.equals(config.getVersion())) {
- // user has upgraded isis
- // TODO: utiliser ce block pour faire des actions d'upgrade entre deux versions
- }
- // update last version launch
- config.setOption(LAST_RELEASE_LAUNCH, config.getVersion());
- }
-
- /**
- * Check and recreate necessary directory for isis work successfull
- */
- static public void checkDatabase() {
- // check database repository directory
- File[] dirs = new File[]{
- config.getDatabaseDirectory(),
- AnalysePlanStorage.getAnalysePlanDirectory(),
- FormuleStorage.getFormuleDirectory(),
- RegionStorage.getRegionDirectory(),
- RuleStorage.getRuleDirectory(),
- ScriptStorage.getScriptDirectory(),
- SimulationStorage.getSimulationDirectory(),
- SimulatorStorage.getSimulatorDirectory(),
- };
-
- for(File f : dirs) {
- if (!f.exists()) {
- f.mkdirs();
- }
- }
- }
-
- /**
* Initialise le VCSNone et check s'il y a des mises a jour pour prevenir
* l'utilisateur
*/
static public void initVCS() {
// init vcs
- vcs = VCSNone.createVCS(config);
+ vcs = VCSFactory.createVCS(config);
// check connection status
- vcs.checkConnection();
+ vcs.checkProtocol();
// check release
vcs.checkRelease();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/IsisTray.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import static org.codelutin.i18n.I18n.n_;
import java.awt.AWTException;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/actions/OtherAction.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -22,8 +22,10 @@
import static org.codelutin.i18n.I18nf._;
import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.vcs.VCSNone;
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.vcs.VCS;
import java.io.File;
+import java.util.Arrays;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,11 +53,11 @@
}
public void chekoutMavenFile() throws Exception {
- VCSNone vcs = config.getVCS();
+ VCS vcs = IsisFish.vcs;
File dest = config.getDatabaseDirectory();
File file = new File(dest, "pom.xml");
log.info(_("Checkout pom.xml to %s", file));
- vcs.update(file);
+ vcs.update(Arrays.asList(file));
}
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -38,7 +38,7 @@
import fr.ifremer.isisfish.util.Docable;
import fr.ifremer.isisfish.vcs.VCSException;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.commons.lang.ObjectUtils;
@@ -88,6 +88,7 @@
static public File getAnalysePlanDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, ANALYSE_PLAN_PATH);
+ result.mkdirs();
return result;
}
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/CodeSourceStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -75,7 +75,7 @@
* @param directory le repertoire ou devrait se trouver la classe. Ce
* répertoire doit etre un sous répertoire de rootSrc
* @param name le nom de la classe
- * @param suffix TODO
+ * @param suffix l'extension des fichiers
*/
protected CodeSourceStorage(File rootSrc, File directory, String name, String suffix) {
// if name end with suffix we don't add suffix to filename
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/DataStorage.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/DataStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -30,7 +30,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.IOException;
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -40,7 +40,7 @@
import fr.ifremer.isisfish.util.Docable;
import fr.ifremer.isisfish.vcs.VCSException;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.commons.logging.Log;
@@ -81,6 +81,7 @@
static public File getExportDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, EXPORT_PATH);
+ result.mkdirs();
return result;
}
@@ -151,7 +152,7 @@
*/
public Doc getFieldDoc(String fieldName) {
throw new IsisFishRuntimeException(_("isisfish.error.not.found.class" +
- "support Docable#getFieldDoc(String) method {0}",this));
+ "support Docable#getFieldDoc(String) method %1$s",this));
}
/**
@@ -164,7 +165,7 @@
*/
public String getDescription() {
throw new IsisFishRuntimeException(_("isisfish.error.not.support.class" +
- "Docable#getDescription() method {0}",this));
+ "Docable#getDescription() method %1$s",this));
}
}
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -84,6 +84,7 @@
static public File getFormuleDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, FORMULE_PATH);
+ result.mkdirs();
return result;
}
@@ -210,9 +211,11 @@
static public List<String> getCategories() {
List<String> result = new ArrayList<String>();
File dir = getFormuleDirectory();
- for (File f : dir.listFiles()) {
- if (f.isDirectory() && getVCS().isVersionnableAbleFile(f)) {
- result.add(f.getName());
+ if (dir.exists()) {
+ for (File f : dir.listFiles()) {
+ if (f.isDirectory() && getVCS().isVersionnableAbleFile(f)) {
+ result.add(f.getName());
+ }
}
}
return result;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/IsisH2Config.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -18,19 +18,15 @@
* ##% */
package fr.ifremer.isisfish.datastore;
-import fr.ifremer.isisfish.commandline.configs.IsisAbstractConfigH2;
-import fr.ifremer.isisfish.IsisContext;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.datastore.migration.SwingMigrationCallbackHandler;
import org.codelutin.topia.migration.TopiaMigrationServiceImpl;
-import org.codelutin.util.H2TypeEnum;
import org.hibernate.cfg.Environment;
import java.io.File;
-import java.io.IOException;
-import java.io.BufferedOutputStream;
-import java.text.MessageFormat;
import java.util.Properties;
+import org.hibernate.dialect.H2Dialect;
/**
* Isis H2 concrete Config implementation
@@ -38,30 +34,59 @@
* @author chemit
* @see IsisAbstractConfigH2
*/
-public class IsisH2Config extends IsisAbstractConfigH2 {
+public class IsisH2Config {
- protected void init() throws Exception {
- // h2 config is fully static final transient :)
- loadFromDefaultValue();
- }
+ static final private String commonUrl =
+ // on peut aussi utiliser mysql ou postgresql
+ "MODE=hsqldb;" +
+ // Sets the default lock timeout (in milliseconds) in this database
+ // that is used for the new sessions.
+ "DEFAULT_LOCK_TIMEOUT=1000;" +
+ // -1: the database is never closed until the close delay is set to
+ // some other rev or SHUTDOWN is called., 0: no delay (default; the
+ // database is closed if the last connection to it is closed)., n:
+ // the database is left open for n second after the last connection
+ // is closed.
+ "DB_CLOSE_DELAY=0;" +
+ // 0: no locking (should only be used for testing),
+ // 1: table level locking (default),
+ // 2: table level locking with garbage collection (if the
+ // application does not close all connections).
+ // LOCK_MODE 3 (READ_COMMITTED). Table level locking, but only when
+ // writing (no read locks).
+ "LOCK_MODE=3;" +
+ // Levels: 0=off, 1=error, 2=info, 3=debug.
+ "TRACE_LEVEL_FILE=0;" +
+ // on system.out: 0=off, 1=error, 2=info, 3=debug.
+ "TRACE_LEVEL_SYSTEM_OUT=1";
- @Override
- public void save(BufferedOutputStream bufferedOutputStream) throws IOException {
- // h2 config is fully static final transient :)
- }
-
+ static final private String h2Url =
+ "jdbc:h2:file:%s;" +
+ // on peut aussi utiliser file, socket
+ "FILE_LOCK=file;" +
+ //1 or 2 is needed to restore avec crash
+ // 0: logging is disabled (faster),
+ // 1: logging of the data is enabled, but logging of the index
+ // changes is disabled (default), 2: logging of both data and index
+ // changes are enabled
+ "LOG=1;" +
+ commonUrl;
+
+ static final private String h2memUrl =
+ "jdbc:h2:mem:%s;" +
+ "LOG=0;" +
+ commonUrl;
/**
* @param rootDir le rᅵpertoire de base du DataStorage
* @return le rᅵpertoire de donnᅵes d'un Data storage ᅵ partir de son rᅵpertoire de base
* @see #STORAGE_DATA_PROPERTY_KEY
*/
static public File getStorageDataDirectory(File rootDir) {
- String name = IsisContext.get().getH2Config().getStorageData();
- return new File(rootDir, name);
+ return new File(rootDir, "data");
}
//////////////////////////////////////////////////
- // Les opᅵrations sur base embarquᅵe
+ // Les operations sur base embarquee
//////////////////////////////////////////////////
/**
@@ -72,17 +97,21 @@
* @return l'objet config passᅵ en parametre
*/
static public Properties addMemDatabaseConfig(Properties config, String id) {
- IsisAbstractConfigH2 conf = IsisContext.get().getH2Config();
- if (conf.getH2MemType() != H2TypeEnum.h2) {
- //TODO see if this is possible ? I don't known in fact
- }
- config.setProperty(Environment.USER, conf.getH2MemUser());
- config.setProperty(Environment.PASS, conf.getH2MemPass());
- System.setProperty(Environment.BYTECODE_PROVIDER, conf.getH2MemBytecodeProvider());
- config.setProperty(Environment.DIALECT, conf.getH2MemDialect());
- config.setProperty(Environment.DRIVER, conf.getH2MemDriver());
- String url = MessageFormat.format(conf.getH2MemURL(), id);
+ // On utilise pas cglib pour eviter les OutOfMemory: PermGen
+ System.setProperty(Environment.BYTECODE_PROVIDER, "javassist");
+
+ config.setProperty(Environment.USER, "sa");
+ config.setProperty(Environment.PASS, "");
+ config.setProperty(Environment.DIALECT, H2Dialect.class.getName());
+ config.setProperty(Environment.DRIVER, org.h2.Driver.class.getName());
+ // correct error : org.hibernate.HibernateException: No CurrentSessionContext configured!
+ config.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
+
+ // config.setProperty(Environment.SHOW_SQL, "true");
+
+ String url = String.format(h2memUrl, id);
config.setProperty(Environment.URL, url);
+
return config;
}
@@ -97,68 +126,27 @@
static public Properties addDatabaseConfig(Properties config, File directory) {
File databasePath = getStorageDataDirectory(directory);
databasePath.mkdirs();
- IsisAbstractConfigH2 conf = IsisContext.get().getH2Config();
- config.setProperty(Environment.USER, conf.getH2User());
- config.setProperty(Environment.PASS, conf.getH2Pass());
+ // on reutilise les memes valeurs, seul l'url change, mais on l'ecrase ensuite
+ addMemDatabaseConfig(config, "");
- config.setProperty(Environment.DIALECT, conf.getH2Dialect());
- config.setProperty(Environment.DRIVER, conf.getH2Driver());
-
- config.setProperty("topia.dao.flatfile.directory", directory.getPath());
-
-// config.setProperty(Environment.SHOW_SQL, "true");
-// config.setProperty(Environment.HBM2DDL_AUTO, "create");
-
- H2TypeEnum h2Type = conf.getH2Type();
- if (h2Type == null) {
- // fatal error
- throw new IsisFishRuntimeException("could not found h2 type, check the property " + H2_TYPE_PROPERTY_KEY);
- }
-
- // correct error : org.hibernate.HibernateException: No CurrentSessionContext configured!
- config.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, conf.getH2CurrentSessionContextClass());
-
- String url = null;
- switch (h2Type) {
- case derby:
- url = MessageFormat.format(conf.getH2URL(), databasePath.getPath());
- break;
- case h2:
- // On utilise pas cglib pour eviter les OutOfMemory: PermGen
- System.setProperty(Environment.BYTECODE_PROVIDER, conf.getH2BytecodeProvider());
- // pour h2 on remet STORAGE_DATA car il ne cree pas de repertoire
- url = MessageFormat.format(conf.getH2URL(), getStorageDataDirectory(databasePath).getPath());
- break;
- case hsql:
- url = MessageFormat.format(conf.getH2URL(), databasePath.getPath());
- break;
- case mckoi:
- File dbconf = new File(databasePath, "db.conf");
- try {
- dbconf.createNewFile();
- } catch (IOException eee) {
- throw new IsisFishRuntimeException("can't create mckoi db.conf file");
- }
- url = MessageFormat.format(conf.getH2URL(), dbconf.getPath(), databasePath.getPath());
- break;
- }
+ // pour h2 on remet STORAGE_DATA car il ne cree pas de repertoire
+ String url = String.format(h2Url, getStorageDataDirectory(databasePath).getPath());
config.setProperty(Environment.URL, url);
- // migrate database
- if (conf.isUpdateschemaDatabase()) {
- // migration configuration
- config.put(TopiaMigrationServiceImpl.MIGRATION_APPLICATION_VERSION, conf.getMigrationApplicationVersion());
- config.put(TopiaMigrationServiceImpl.MIGRATION_PREVIOUS_MAPPING_DIRECTORY, conf.getMigrationPreviousMappingDirectory());
- config.put(TopiaMigrationServiceImpl.MIGRATION_MODEL_NAMES, conf.getMigrationModelNames());
- config.put(TopiaMigrationServiceImpl.MIGRATION_CALLBACKHANDLERS, conf.getMigrationCallBackhandlers());
- config.put("topia.service.migration", conf.getMigrationTopiaService());
- }
+ // migration configuration, seulement pour les fichiers, pas pour les bases memoires
+ config.put(TopiaMigrationServiceImpl.MIGRATION_APPLICATION_VERSION, IsisConfig.getDatabaseVersion().toString());
+ config.put(TopiaMigrationServiceImpl.MIGRATION_PREVIOUS_MAPPING_DIRECTORY, "oldmappings");
+ config.put(TopiaMigrationServiceImpl.MIGRATION_MODEL_NAMES, "IsisFish");
+ config.put(TopiaMigrationServiceImpl.MIGRATION_CALLBACKHANDLERS, SwingMigrationCallbackHandler.class.getName());
+ config.put("topia.service.migration", TopiaMigrationServiceImpl.class.getName());
+
return config;
}
+
/**
- * Permet d'ajouter les differents mapping hibernate spᅵcifique a l'application
+ * Permet d'ajouter les differents mapping hibernate specifique a l'application
*
* @param config l'objet properties dans lequel il faut ajouter les informations
* @return l'objet config passᅵ en parametre
@@ -170,131 +158,4 @@
return config;
}
- static public Properties addMemDatabaseConfigOld(Properties config, String id) {
- config.setProperty("hibernate.connection.username", "sa");
- config.setProperty("hibernate.connection.password", "");
-
- // On utilise pas cglib pour eviter les OutOfMemory: PermGen
- System.setProperty("hibernate.bytecode.provider", "javassist");
- config.setProperty("hibernate.dialect",
- "org.hibernate.dialect.H2Dialect");
- config.setProperty("hibernate.connection.driver_class",
- "org.h2.Driver");
- config.setProperty("hibernate.connection.url",
- // pour h2 on remet STORAGE_DATA car il ne cree pas de repertoire
- "jdbc:h2:mem:" + id
- + ";MODE=hsqldb" // on peut aussi utiliser mysql ou postgresql
- + ";DEFAULT_LOCK_TIMEOUT=1000" // Sets the default lock timeout (in milliseconds) in this database that is used for the new sessions.
-// + ";ASSERT=0" // 0: no assertions (for higher performance), 1: assertions are switched on (default)
- + ";DB_CLOSE_DELAY=0" // -1: the database is never closed until the close delay is set to some other value or SHUTDOWN is called., 0: no delay (default; the database is closed if the last connection to it is closed)., n: the database is left open for n second after the last connection is closed.
- // FIXME essai avec un LOCK_MODE=3, pour voir si on supprime le probleme de fenetre de lancement qui ne permet plus de modifier la region (voir s'il n'y a pas d'autre probleme)
- + ";LOCK_MODE=3" // 0: no locking (should only be used for testing), 1: table level locking (default), 2: table level locking with garbage collection (if the application does not close all connections). LOCK_MODE 3 (READ_COMMITTED). Table level locking, but only when writing (no read locks).
- + ";LOG=0" //1 or 2 is needed to restore avec crash 0: logging is disabled (faster), 1: logging of the data is enabled, but logging of the index changes is disabled (default), 2: logging of both data and index changes are enabled
- + ";TRACE_LEVEL_FILE=0" // Levels: 0=off, 1=error, 2=info, 3=debug.
- + ";TRACE_LEVEL_SYSTEM_OUT=1" // on system.out: 0=off, 1=error, 2=info, 3=debug.
-// + ";STORAGE=TEXT" // on peut ne rien mettre pour avoir un format binaire (plus rapide)
-// + ";IGNORE_UNKNOWN_SETTINGS=TRUE"
- );
-
- return config;
- }
-
- static public Properties addDatabaseConfigOld(Properties config, File directory) {
- File databasePath = getStorageDataDirectory(directory);
- //File databasePath = new File(directory, STORAGE_DATA);
- databasePath.mkdirs();
-
-// config.setProperty("hibernate.show_sql", "true");
-// config.setProperty("hibernate.hbm2ddl.auto", "create");
-
- config.setProperty("topia.dao.flatfile.directory", directory.getPath());
-
- //config.setProperty("hibernate.connection.username", "dbuser");
- //config.setProperty("hibernate.connection.password", "xxxxxxxx");
-
- System.setProperty("hibernate.bytecode.provider", "javassist");
- //config.setProperty("hibernate.bytecode.provider","javassist");
-
- // correct error : org.hibernate.HibernateException: No CurrentSessionContext configured!
- config.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
-
- // Pour utiliser derby
-// config.setProperty("hibernate.dialect",
-// "org.hibernate.dialect.DerbyDialect");
-// config.setProperty("hibernate.connection.driver_class",
-// "org.apache.derby.jdbc.EmbeddedDriver");
-// config.setProperty("hibernate.connection.url",
-// "jdbc:derby:" + new File(directory, STORAGE_DATA).getPath() + ";create=true");
-
- // Pour utiliser hsql
- config.setProperty("hibernate.connection.username", "sa");
- config.setProperty("hibernate.connection.password", "");
-
- // On utilise pas cglib pour eviter les OutOfMemory: PermGen
- System.setProperty("hibernate.bytecode.provider", "javassist");
- config.setProperty("hibernate.dialect",
- "org.hibernate.dialect.H2Dialect");
- config.setProperty("hibernate.connection.driver_class",
- "org.h2.Driver");
- config.setProperty("hibernate.connection.url",
- // pour h2 on remet STORAGE_DATA car il ne cree pas de repertoire
- "jdbc:h2:file:" + getStorageDataDirectory(databasePath).getPath()
- //"jdbc:h2:file:" + new File(databasePath, STORAGE_DATA).getPath()
- + ";FILE_LOCK=file" // on peut aussi utiliser file, socket
- + ";MODE=hsqldb" // on peut aussi utiliser mysql ou postgresql
- + ";DEFAULT_LOCK_TIMEOUT=1000" // Sets the default lock timeout (in milliseconds) in this database that is used for the new sessions.
- + ";DB_CLOSE_DELAY=0" // -1: the database is never closed until the close delay is set to some other rev or SHUTDOWN is called., 0: no delay (default; the database is closed if the last connection to it is closed)., n: the database is left open for n second after the last connection is closed.
- // FIXME essai avec un LOCK_MODE=3, pour voir si on supprime le probleme de fenetre de lancement qui ne permet plus de modifier la region (voir s'il n'y a pas d'autre probleme)
- + ";LOCK_MODE=3" // 0: no locking (should only be used for testing), 1: table level locking (default), 2: table level locking with garbage collection (if the application does not close all connections). LOCK_MODE 3 (READ_COMMITTED). Table level locking, but only when writing (no read locks).
- + ";LOG=1" //1 or 2 is needed to restore avec crash 0: logging is disabled (faster), 1: logging of the data is enabled, but logging of the index changes is disabled (default), 2: logging of both data and index changes are enabled
- + ";TRACE_LEVEL_FILE=0" // Levels: 0=off, 1=error, 2=info, 3=debug.
- + ";TRACE_LEVEL_SYSTEM_OUT=1" // on system.out: 0=off, 1=error, 2=info, 3=debug.
-// + ";STORAGE=TEXT" // on peut ne rien mettre pour avoir un format binaire (plus rapide)
- );
-
- // Pour utiliser HSQL
-// config.setProperty("hibernate.dialect",
-// "org.hibernate.dialect.HSQLDialect");
-// config.setProperty("hibernate.connection.driver_class",
-// "org.hsqldb.jdbcDriver");
-// config.setProperty("hibernate.connection.url",
-// "jdbc:hsqldb:file:" + new File(directory, STORAGE_DATA).getPath()
-// + ";shutdown=true");
-
- // Pour utiliser McKoi
-// config.setProperty("hibernate.dialect",
-// "org.hibernate.dialect.MckoiDialect");
-// config.setProperty("hibernate.connection.driver_class",
-// "com.mckoi.JDBCDriver");
-// File datadir = new File(directory, STORAGE_DATA);
-// File dbconf = new File(datadir, "db.conf");
-// try {
-// dbconf.createNewFile();
-// } catch (IOException eee) {
-// throw new IsisFishRuntimeException("can't create mckoi db.conf file");
-// }
-// config.setProperty("hibernate.connection.url",
-// "jdbc:mckoi:local://" + dbconf.getPath() +
-// "?create_or_boot=true" +
-// "&database_path=" + datadir.getPath() +
-// "&log_path=" + datadir.getPath() +
-// "&use_nio_if_available=enabled" +
-// "&dont_synch_filesystem=enabled" +
-// "&io_safety_level=3"
-// );
-
- // migrate database
- if (IsisContext.get().getH2Config().isUpdateschemaDatabase()) {
- //if (IsisConfig.UPDATESCHEMA_DATABASE) {
- // migration configuration
- //TODO Use config static,final,mandatory properties
- config.setProperty(TopiaMigrationServiceImpl.MIGRATION_APPLICATION_VERSION, "1");
- config.setProperty(TopiaMigrationServiceImpl.MIGRATION_PREVIOUS_MAPPING_DIRECTORY, "oldmappings");
- config.setProperty(TopiaMigrationServiceImpl.MIGRATION_MODEL_NAMES, "IsisFish");
- config.setProperty(TopiaMigrationServiceImpl.MIGRATION_CALLBACKHANDLERS,
- fr.ifremer.isisfish.datastore.migration.SwingMigrationCallbackHandler.class.getName());
- config.setProperty("topia.service.migration", TopiaMigrationServiceImpl.class.getName());
- }
- return config;
- }
}
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -34,7 +34,7 @@
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.util.CompileHelper;
import org.apache.commons.lang.ClassUtils;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.PrintWriter;
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -40,7 +40,7 @@
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.topia.TopiaContext;
import org.codelutin.topia.TopiaException;
import org.codelutin.util.FileUtil;
@@ -83,6 +83,7 @@
static public File getRegionDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, REGION_PATH);
+ result.mkdirs();
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.util.ArrayList;
@@ -537,7 +537,7 @@
// recuperation des noms des dimensions
String [] dimNames = new String[1 + mat.getNbDim()];
- dimNames[0] = I18n._("isisfish.common.date");
+ dimNames[0] = _("isisfish.common.date");
for(int i=1; i<dimNames.length; i++){
dimNames[i] = mat.getDimensionName(i-1);
}
@@ -610,7 +610,7 @@
try {
doAddResult(date, name, mat, context.getDbResult());
} catch (TopiaException eee) {
- log.warn(_("Can''t add result ''{0}'' at date {1}", name, date) , eee);
+ log.warn(_("Can't add result '%1$s' at date %2$s", name, date) , eee);
}
}
@@ -623,7 +623,7 @@
result = getMatrix(date, name, context.getDbResult());
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("Can''t get result: {0}", name), eee);
+ log.warn(_("Can't get result: %1$s", name), eee);
}
}
return result;
@@ -638,7 +638,7 @@
result = getMatrix(name, context.getDbResult());
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("Can''t get result: {0}", name), eee);
+ log.warn(_("Can't get result: %1$s", name), eee);
}
}
return result;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -38,7 +38,7 @@
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.vcs.VCSException;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.commons.lang.ObjectUtils;
@@ -89,6 +89,7 @@
static public File getRuleDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, RULE_PATH);
+ result.mkdirs();
return result;
}
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -39,7 +39,7 @@
import fr.ifremer.isisfish.util.Docable;
import fr.ifremer.isisfish.vcs.VCSException;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.commons.logging.Log;
@@ -80,6 +80,7 @@
static public File getScriptDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, SCRIPT_PATH);
+ result.mkdirs();
return result;
}
@@ -207,6 +208,6 @@
*/
public String getDescription() {
throw new IsisFishRuntimeException(_("isisfish.error.not.support.class" +
- "Docable#getDescription() method {0}",this));
+ "Docable#getDescription() method %1$s",this));
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationInformation.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.FileReader;
@@ -275,6 +275,10 @@
setInfo(SIMULATION_EXCEPTION, v);
}
+ public boolean hasError() {
+ boolean result = getException() != null && getException().length() > 0;
+ return result;
+ }
public String getInfomation() {
String result = info.getProperty(OTHER_INFO);
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.datastore;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.FileInputStream;
@@ -56,6 +56,7 @@
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.entities.FisheryRegionDAO;
import fr.ifremer.isisfish.logging.SimulationLoggerUtil;
+import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.vcs.VCSException;
@@ -101,6 +102,10 @@
setParameter(parameter);
}
+ /**
+ * Retourne le repertoire de base de stockage des simultions
+ * @return
+ */
static public File getSimulationDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, SIMULATION_PATH);
@@ -110,6 +115,11 @@
return result;
}
+ /**
+ * Retourne le repertoire de stockage d'une simulation portant le nom name
+ * @param name le nom de la simulation dont on souhaite le repertoire
+ * @return
+ */
static public File getSimulationDirectory(String name) {
File result = getSimulationDirectory();
result = new File(result, name);
@@ -119,6 +129,12 @@
return result;
}
+ /**
+ * Retourne le repertoire de stockage des exports de resulatat d'une
+ * simulation.
+ * @param root le repertoire de stockage de la simulation
+ * @return
+ */
static public File getResultExportDirectory(File root) {
File result = new File(root, RESULT_EXPORT_DIRECTORY);
if (!result.exists()) {
@@ -127,26 +143,105 @@
return result;
}
+ /**
+ * Retourne le fichier de stockage des parametres de la simulation
+ * @param root le repertoire de stockage de la simulation
+ * @return
+ */
static public File getSimulationParametersFile(File root) {
File result = new File(root, PARAMETERS_FILENAME);
return result;
}
+ /**
+ * Retourne le fichier de stockage des inforations de la simulation
+ * @param root le repertoire de stockage de la simulation
+ * @return
+ */
static public File getSimulationInformationFile(File root) {
File result = new File(root, INFORMATION_FILENAME);
return result;
}
+ /**
+ * Retourne le fichier de stockage des resultats sous format XML mexico
+ * de la simulation
+ * @param root le repertoire de stockage de la simulation
+ * @return
+ */
static public File getSimulationResultXmlFile(File root) {
File result = new File(root, RESULT_XML_FILENAME);
return result;
}
+ /**
+ * Retourne le fichier de stockage des parametres de la simulation courante
+ * @return
+ */
protected File getSimulationParametersFile() {
File result = getSimulationParametersFile(getDirectory());
return result;
}
+ protected transient File simulationControlFile = null;
+ /**
+ * 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
+ */
+ protected File getSimulationControlFile() {
+ if (simulationControlFile == null) {
+ simulationControlFile = new File(getDirectory(), "control");
+ }
+ return simulationControlFile;
+ }
+
+ /**
+ * Force la sauvegarde du fichier de control d'une simulation, ce fichier
+ * est sous la forme d'un fichier de proprietes
+ * @param control l'objet control de la simulation courante
+ */
+ public void saveControl(SimulationControl control) {
+ try {
+ Properties prop = control.getProperties();
+ File file = getSimulationControlFile();
+ FileOutputStream out = new FileOutputStream(file);
+ prop.store(out, "Control");
+ out.close();
+ } catch (Exception eee) {
+ // juste un log, car la sauvegarde d'un control ne doit jamais echouer
+ // car simplement utilise pour indique l'etat de simulation
+ log.warn("Can't save control", eee);
+ }
+ }
+
+ /**
+ * Reli le fichier contenant les infos de SimulationControl, en excluant
+ * certain champs
+ * @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) {
+ 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);
+ }
+ control.updateFromProperties(prop);
+ } catch (Exception eee) {
+ log.warn("Can't read control", eee);
+ }
+ }
+
+ /**
+ * Modifie les parametres de la simulation
+ * @param parameter les nouveaux parametres
+ */
public void setParameter(SimulationParameter parameter) {
this.parameter = parameter;
if (parameter != null) {
@@ -213,6 +308,10 @@
return this.parameter;
}
+ /**
+ * Retourne le nom du fichier contenant les informations de simulation
+ * @return
+ */
protected File getInformationFile() {
File result = new File(getDirectory(), INFORMATION_FILENAME);
return result;
@@ -354,8 +453,17 @@
return result;
}
+ /**
+ *
+ * @return
+ * @throws fr.ifremer.isisfish.datastore.StorageException
+ * @deprecated ne plus utiliser car le context n'est jamais ferme, plutot
+ * utiliser {@link #getFisheryRegion(TopiaContext)}
+ */
+ @Deprecated
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
+ // 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);
@@ -366,6 +474,12 @@
}
}
+ /**
+ * Retourne la {@link FisheryRegion} associee a cette simulation
+ * @param context
+ * @return
+ * @throws fr.ifremer.isisfish.datastore.StorageException
+ */
static public FisheryRegion getFisheryRegion(TopiaContext context)
throws StorageException {
FisheryRegion result;
@@ -539,17 +653,21 @@
}
}
- /** @return the appender id used for this simulation (simulation_name.hashcode()) */
+ /**
+ * @return the appender id used for this simulation (simulation_name.hashcode())
+ */
protected String getAppenderId() {
//TODO Perharps we could just use simulation name
//TODO since it seems to be unique.
return "simulation_" + Math.abs(hashCode());
}
- /** @return the simulation log file */
+ /**
+ * @return the simulation log file
+ */
public String getSimulationLogFile() {
File root = getSimulationDirectory(name);
- //TODO Should be IsisCOnfig.DEFAULT_SIMULATION_LOGFILE ?
+ //TODO Should be IsisConfig.DEFAULT_SIMULATION_LOGFILE ?
return root + File.separator + "simulation.log";
}
} // SimulationStorage
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -66,6 +66,7 @@
static public File getSimulatorDirectory() {
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, SIMULATOR_PATH);
+ result.mkdirs();
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -32,10 +32,10 @@
package fr.ifremer.isisfish.datastore;
import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.vcs.VCS;
import fr.ifremer.isisfish.vcs.VCSException;
-import fr.ifremer.isisfish.vcs.VCSNone;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.util.FileUtil;
import org.apache.commons.logging.Log;
@@ -43,6 +43,7 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -56,7 +57,7 @@
/** Logger for this class */
private static final Log log = LogFactory.getLog(VersionStorage.class);
- static protected VCSNone getVCS() {
+ static protected VCS getVCS() {
return IsisFish.vcs;
}
@@ -223,14 +224,14 @@
/**
* Permet de mettre a jour le fichier local en fonction de ce qu'il y
- * a sur le VCSNone
+ * a sur le VCS
*
* @throws VCSException si pb pendant l'op
*
*/
public void update() throws VCSException {
prepare();
- getVCS().update(getFile());
+ getVCS().update(Arrays.asList(getFile()));
}
public boolean isUpToDate() throws VCSException {
@@ -267,7 +268,6 @@
}
}
}
-
Collections.sort(result);
return result;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -18,12 +18,19 @@
package fr.ifremer.isisfish.datastore.migration;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
import javax.swing.JOptionPane;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.migration.DatabaseManager;
import org.codelutin.topia.migration.callback.MigrationCallbackHandler;
+import org.codelutin.topia.migration.callback.MigrationCallbackHandler.MigrationChoice;
+import org.codelutin.util.VersionNumberUtil;
-
/**
* MigrationCallbackHandler
*
@@ -35,11 +42,15 @@
*/
public class SwingMigrationCallbackHandler implements MigrationCallbackHandler {
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(SwingMigrationCallbackHandler.class);
+
/* (non-Javadoc)
* @see org.codelutin.topia.migration.callback.MigrationCallbackHandler#doMigration(java.lang.String, java.lang.String)
*/
@Override
- public MigrationChoice doMigration(String dbVersion, String applicationVersion) {
+ public MigrationChoice doMigration(DatabaseManager dbManager,
+ String dbVersion, String applicationVersion) {
int answer = JOptionPane
.showConfirmDialog(
@@ -53,8 +64,58 @@
);
MigrationChoice result = ( answer == JOptionPane.YES_OPTION ) ? MigrationChoice.MIGRATION : MigrationChoice.NO_MIGRATION;
-
+ if (result == MigrationChoice.MIGRATION) {
+ // migration manuel sans l'aide de topia-service
+ // tant que c pas fait on dit non
+ result = MigrationChoice.NO_MIGRATION;
+ // ouverture d'une connexion direct JDBC sur la base
+ try {
+ Connection conn = dbManager.getConnection();
+ try {
+ conn.setAutoCommit(false);
+ if (VersionNumberUtil.smallerThan(dbVersion, "3.2")) {
+ // on fait une migration vers 3.2
+ migrateTo3_2(conn);
+ }
+
+ // do same thing for other version
+
+ // commit des modifs
+ conn.commit();
+ // la migration a reussi, on dit que c fait
+ result = MigrationChoice.CUSTOM_MIGRATION;
+ } catch (Exception eee) {
+ // en cas d'erreur
+ log.error("Migration impossible de la base", eee);
+ // rollback du travail en cours
+ conn.rollback();
+ } finally {
+ // close database connexion
+ conn.close();
+ }
+ } catch (Exception eee) {
+ log.error("Error lors de la tentative de migration", eee);
+ }
+ }
return result;
}
+ private void migrateTo3_2(Connection conn) throws SQLException {
+ log.info("Migrate to version 3.2");
+ //alteration du schema
+ // nouvelles equations dans les tables
+
+ String [] sqls = new String[]{
+ "alter table SETOFVESSELS add column TECHNICALEFFICIENCYEQUATION VARCHAR(255);",
+ "alter table STRATEGY add column INACTIVITYEQUATIONUSED BIT default false;",
+ "alter table STRATEGY add column INACTIVITYEQUATION VARCHAR(255);",
+ };
+ for (String sql : sqls) {
+ log.info("try " + sql);
+ PreparedStatement sta = conn.prepareStatement(sql);
+ sta.executeUpdate();
+ log.info("done " + sql);
+ }
+ }
+
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,6 +31,8 @@
package fr.ifremer.isisfish.datastore.update;
+import static org.codelutin.i18n.I18nf._;
+
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
@@ -57,7 +59,6 @@
import org.apache.commons.lang.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.i18n.I18n;
import org.codelutin.math.matrix.MatrixFactory;
import org.codelutin.math.matrix.MatrixHelper;
import org.codelutin.math.matrix.MatrixND;
@@ -197,14 +198,14 @@
*/
private File convertXML(File file, String versionStart, String versionEnd) throws Exception {
if(VersionNumberUtil.greaterThan(versionStart, versionEnd)){
- throw new Exception(I18n._("isisfish.error.import.recent.files"));
+ throw new Exception(_("isisfish.error.import.recent.files"));
}else if(VersionNumberUtil.smallerThan(versionStart, versionEnd)){
// upgrate du fichier
try{
// recherche des fichiers XSL de conversion
URL [] xslurl = getXSLFile(versionStart, versionEnd);
if(xslurl == null){
- throw new Exception(I18n._("isisfish.error.import.convertible"));
+ throw new Exception(_("isisfish.error.import.convertible"));
}
File dest = file;
for (URL aXslurl : xslurl) {
@@ -214,7 +215,7 @@
}
file = dest;
}catch(Exception eee){
- throw new Exception(I18n._("isisfish.error.conversion.data"), eee);
+ throw new Exception(_("isisfish.error.conversion.data"), eee);
}
}
return file;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EffortDescriptionImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
/**
* @author poussin
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EquationImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EquationImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/EquationImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -39,7 +39,7 @@
import fr.ifremer.isisfish.equation.Language;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.util.EvaluatorHelper;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.Serializable;
import java.util.HashMap;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/MetierSeasonInfoImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.util.ArrayList;
import java.util.List;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import static org.codelutin.i18n.I18n.n_;
import java.util.Arrays;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import static org.codelutin.i18n.I18n.n_;
import java.util.ArrayList;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SeasonImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -35,7 +35,7 @@
import java.util.List;
import fr.ifremer.isisfish.types.Month;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
/**
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,10 +1,19 @@
package fr.ifremer.isisfish.entities;
+import static org.codelutin.i18n.I18nf._;
+
+import fr.ifremer.isisfish.IsisFishDAOHelper;
import java.io.Serializable;
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.StorageException;
+import fr.ifremer.isisfish.equation.Language;
+import fr.ifremer.isisfish.equation.SoVTechnicalEfficiencyEquation;
+import fr.ifremer.isisfish.types.Date;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.TopiaException;
/**
* Implantation des operations pour l'entité SetOfVessels.
@@ -13,6 +22,11 @@
private static final long serialVersionUID = 1L;
+ /**
+ * Logger for this class
+ */
+ private static final Log log = LogFactory.getLog(SetOfVesselsImpl.class);
+
public FisheryRegion getFisheryRegion() {
try {
FisheryRegion result = RegionStorage.getFisheryRegion(getTopiaContext());
@@ -22,6 +36,68 @@
}
}
+ /**
+ * override to change name of equation
+ * @see fr.ifremer.isisfish.entities.SetOfVesselsAbstract#setName(java.lang.String)
+ */
+ @Override
+ public void setName(String value) {
+ super.setName(value);
+ Equation eq = getTechnicalEfficiencyEquation();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ }
+
+ /**
+ * Compute or return inactivity days
+ * @param length length of group
+ * @param group group
+ * @return age in month
+ */
+ @Override
+ public double getTechnicalEfficiency(Date date, Metier metier) {
+ double result = 0;
+
+ try {
+ Gear gear = metier.getGear();
+ Equation eq = getTechnicalEfficiencyEquation();
+ if (eq != null) {
+ result = eq.evaluate("date", date, "metier", metier, "gear", gear);
+ }
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Error in technical efficiency equation");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("StackTrace", eee);
+ }
+ }
+ return result;
+ }
+
+ public void setEquationTechnicalEfficiency(String content) {
+ try {
+ Equation eq = getTechnicalEfficiencyEquation();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper.getEquationDAO(getTopiaContext());
+ // create Growth equation
+ eq = dao.create();
+ eq.setCategory("TechnicalEfficiency");
+ eq.setJavaInterface(SoVTechnicalEfficiencyEquation.class);
+ eq.setLanguage(Language.JAVA);
+ setTechnicalEfficiencyEquation(eq);
+ }
+
+ eq.setName(getName());
+ eq.setContent(content);
+ eq.update();
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(_("isisfish.change.equation"), eee);
+ }
+ }
+
/* (non-Javadoc)
* @see fr.ifremer.isisfish.entities.FisheryRegionAbstract#toString()
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.Serializable;
import java.util.ArrayList;
@@ -14,6 +14,8 @@
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.StorageException;
+import fr.ifremer.isisfish.equation.Language;
+import fr.ifremer.isisfish.equation.StrategyInactivityEquation;
import fr.ifremer.isisfish.types.Month;
/**
@@ -34,6 +36,19 @@
throw new IsisFishRuntimeException(eee);
}
}
+
+ /**
+ * override to change name of equation
+ * @see fr.ifremer.isisfish.entities.StrategyAbstract#setName(java.lang.String)
+ */
+ @Override
+ public void setName(String value) {
+ super.setName(value);
+ Equation eq = getInactivityEquation();
+ if (eq != null) {
+ eq.setName(getName());
+ }
+ }
/* (non-Javadoc)
* @see fr.ifremer.isisfish.entities.StrategyAbstract#getStrategyMonthInfo()
@@ -88,6 +103,55 @@
return result;
}
+ /**
+ * Compute or return inactivity days
+ * @param length length of group
+ * @param group group
+ * @return age in month
+ */
+ public double getInactivityDays(Month month) {
+ double result = 0;
+
+ StrategyMonthInfo info = getStrategyMonthInfo(month);
+ if (!getInactivityEquationUsed()) {
+ result = info.getMinInactivityDays();
+ } else {
+ try {
+ Equation eq = getInactivityEquation();
+ result = eq.evaluate("month", month, "info", info);
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Error in inactivityDays equation");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("StackTrace", eee);
+ }
+ }
+ }
+ return result;
+ }
+ public void setEquationInactivity(String content) {
+ try {
+ Equation eq = getInactivityEquation();
+
+ if (eq == null) {
+ EquationDAO dao = IsisFishDAOHelper.getEquationDAO(getTopiaContext());
+ // create Growth equation
+ eq = dao.create();
+ eq.setCategory("Inactivity");
+ eq.setJavaInterface(StrategyInactivityEquation.class);
+ eq.setLanguage(Language.JAVA);
+ setInactivityEquation(eq);
+ }
+
+ eq.setName(getName());
+ eq.setContent(content);
+ eq.update();
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(_("isisfish.change.equation"), eee);
+ }
+ }
+
/* (non-Javadoc)
* @see fr.ifremer.isisfish.entities.StrategyAbstract#toString()
*/
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/StrategyMonthInfoImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import static org.codelutin.i18n.I18n.n_;
import java.util.ArrayList;
@@ -152,7 +152,10 @@
public void computeNumberOfTrips() {
TripType tripType = getTripType();
- int inactivity = getMinInactivityDays();
+ // remplace un simple getMinInactivityDays(), pour pouvoir utiliser une
+ // equation si besoin (tout est pret, il ne manque que l'interface
+ // graphique pour saisir l'equation dans strategie
+ double inactivity = getStrategy().getInactivityDays(getMonth());
if(tripType != null && tripType.getTripDuration() != null && inactivity >= 0){
int nbDayMonth = getMonth().getNumbersOfDays();
double result = (int)((nbDayMonth - inactivity) / tripType.getTripDuration().getDay());
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.entities;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Copied: trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.java (from rev 1300, branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.java)
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/SoVTechnicalEfficiencyEquation.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -0,0 +1,46 @@
+/*
+ * 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.equation;
+
+import fr.ifremer.isisfish.entities.Gear;
+import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.util.Args;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface SoVTechnicalEfficiencyEquation {
+
+ /**
+ * @param context
+ * @param metier le metier pour lequel on demande le calcul
+ * @param gear l'engin utilise par le metier
+ * @return
+ */
+ @Args({"context", "metier", "gear"})
+ public double compute(SimulationContext context, Metier metier, Gear gear) throws Exception;
+
+}
Copied: trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.java (from rev 1300, branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.java)
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/equation/StrategyInactivityEquation.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -0,0 +1,47 @@
+/*
+ * 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.equation;
+
+import fr.ifremer.isisfish.entities.StrategyMonthInfo;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.types.Month;
+import fr.ifremer.isisfish.util.Args;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface StrategyInactivityEquation {
+
+ /**
+ *
+ * @param context
+ * @param month le mois courant de simulation
+ * @param info l'objet associe a la strategie pour le mois courant
+ * @return
+ */
+ @Args({"context", "month", "info"})
+ public double compute(SimulationContext context, Month month, StrategyMonthInfo info) throws Exception;
+
+}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/SimulationLoggerUtil.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.IOException;
@@ -40,6 +40,10 @@
import java.util.Map;
/**
+ * FIXME poussin, a priori cette classe ne supporte pas plusieurs simulation
+ * en meme temps, ce qui est le cas si on a plusieurs processeurs de dispo :(
+ *
+ *
* Usefull class for dealing with hot configuration of log4J. this is temporary
* we must find a way to abstract this layer.
* <p/>
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsole.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsole.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsole.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -21,7 +21,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.widget.IconFactory;
import org.codelutin.log.LutinLogFactory;
@@ -83,7 +83,7 @@
defaultFrom, String defaultTo, String title) throws IOException, IllegalArgumentException {
if (!logFile.exists()) {
- String message1 = _("could not found log file {0}", logFile);
+ String message1 = _("could not found log file %1$s", logFile);
log.warn(message1);
throw new IllegalArgumentException(message1);
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogConsoleHandler.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
import org.apache.commons.logging.Log;
import static org.apache.commons.logging.LogFactory.getLog;
import org.codelutin.i18n.I18n;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.widget.StatusBar;
import javax.swing.*;
@@ -133,7 +133,7 @@
try {
levelsReader.close();
} catch (IOException e) {
- log.warn(I18n._("could not close reader {0}", levelsReader));
+ log.warn(_("could not close reader %1$s", levelsReader));
}
}
@@ -141,7 +141,7 @@
try {
reader.close();
} catch (IOException e) {
- log.warn(I18n._("could not close reader {0}", reader));
+ log.warn(_("could not close reader %1$s", reader));
}
}
}
@@ -202,7 +202,7 @@
dontAdjust = true;
read(newOffset);
} catch (IOException e1) {
- log.warn(I18n._("could not read at offset {0} for reason {1}", newOffset, e1.getMessage()));
+ log.warn(_("could not read at offset %1$s for reason %2$s", newOffset, e1.getMessage()));
}
}
@@ -215,7 +215,7 @@
dontAdjust = true;
read(e.getValue());
} catch (IOException e1) {
- log.warn(I18n._("could not read at offset {0} for reason {1}", e.getValue(), e1.getMessage()));
+ log.warn(_("could not read at offset %1$s for reason %2$s", e.getValue(), e1.getMessage()));
}
}
@@ -348,7 +348,7 @@
read(0);
dontAdjust = true;
model.fireStateChanged();
- getStatusBar().setStatus(I18n._("filter loaded in {0} ms : found {1} lines.", (System.currentTimeMillis() - t0), reader.getNbLines()));
+ getStatusBar().setStatus(_("filter loaded in %1$s ms : found %2$s lines.", (System.currentTimeMillis() - t0), reader.getNbLines()));
} catch (IOException e) {
log.warn("could not open reader [" + this.reader + "] for reason " + e.getMessage());
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogMail.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogMail.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/logging/console/LogMail.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -19,8 +19,7 @@
* ##% */
package fr.ifremer.isisfish.logging.console;
-import static org.codelutin.i18n.I18n._;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.util.FileUtil;
import org.codelutin.util.ZipUtil;
import org.codelutin.widget.StatusBar;
@@ -85,7 +84,7 @@
protected StatusBar statusBar;
public LogMail(final StatusBar statusBar, String from, File logFile, File simulationFile, final String smtpServer) {
- setTitle(I18n._("isisfish.log.mail.send.title", simulationFile.getName()));
+ setTitle(_("isisfish.log.mail.send.title", simulationFile.getName()));
this.from = from;
this.logFile = logFile;
this.simulationFile = simulationFile;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/map/IsisMapBean.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/map/IsisMapBean.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/map/IsisMapBean.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -32,6 +32,8 @@
package fr.ifremer.isisfish.map;
+import static org.codelutin.i18n.I18nf._;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -39,7 +41,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.i18n.I18n;
import org.codelutin.topia.TopiaContext;
import org.codelutin.topia.TopiaException;
import org.codelutin.util.Resource;
@@ -357,11 +358,11 @@
try{
//recherche l'url, si pas trouve leve une exception
Resource.getURL(shp);
- log.info(I18n._("isisfish.message.load.map", filename, shp, ssx));
+ log.info(_("isisfish.message.load.map", filename, shp, ssx));
addShapeLayer(filename, shp, ssx, "ff000000", "ffbdde83");
shapeLoaded = true;
}catch(Exception eee){
- log.error(I18n._("isisfish.error.load.map", filename), eee);
+ log.error(_("isisfish.error.load.map", filename), eee);
}
}
}
@@ -376,7 +377,7 @@
}
} catch(Exception eee) {
- log.error(I18n._("isisfish.error.init.map"), eee);
+ log.error(_("isisfish.error.init.map"), eee);
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/map/ResultatLayer.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/map/ResultatLayer.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/map/ResultatLayer.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,6 +1,8 @@
package fr.ifremer.isisfish.map;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
@@ -12,13 +14,10 @@
import javax.swing.JOptionPane;
import javax.swing.JPanel;
-import org.codelutin.i18n.I18n;
import org.codelutin.math.matrix.MatrixND;
import com.bbn.openmap.LatLonPoint;
import com.bbn.openmap.event.MapMouseListener;
-import com.bbn.openmap.event.NavMouseMode;
-import com.bbn.openmap.event.NullMouseMode;
import com.bbn.openmap.event.ProjectionEvent;
import com.bbn.openmap.event.SelectMouseMode;
import com.bbn.openmap.layer.OMGraphicHandlerLayer;
@@ -356,10 +355,10 @@
for (Object datamap : datamaps) {
DefaultDataMap dataMap = (DefaultDataMap) datamap;
if (dataMap.getInfo() != null)
- info += I18n._("Info") + ": " + dataMap.getInfo().getLabels()
- + " " + I18n._("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
+ info += _("Info") + ": " + dataMap.getInfo().getLabels()
+ + " " + _("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
else
- info += " " + I18n._("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
+ info += " " + _("isisfish.common.value") + ":" + dataMap.getValue() + "\n";
}
// System.out.println(info);
// InfoDisplayEvent infoevt = new InfoDisplayEvent(this,info);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AbstractSimulationQueueModel.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.simulator;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.log.LutinLog;
import org.codelutin.log.LutinLogFactory;
@@ -15,6 +15,7 @@
import java.awt.Component;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -29,13 +30,14 @@
*
* @author chemit
*/
-public abstract class AbstractSimulationQueueModel extends JComponent implements TableModel, SimulationQueueListener, PropertyChangeListener {
+public abstract class AbstractSimulationQueueModel extends JComponent
+ implements TableModel, SimulationQueueListener, PropertyChangeListener {
/** @return list of ids of simulations contained in this model */
protected abstract List<String> getSimulationIds();
/** @return map of QueueItems (indexed by id) */
- protected abstract Map<String, SimulationManager.QueueItem> getQueueItemsAsMap();
+ protected abstract Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap();
/** to use log facility, just put in your code: log.info("..."); */
protected static LutinLog log = LutinLogFactory.getLutinLog(AbstractSimulationQueueModel.class);
@@ -50,7 +52,14 @@
protected String[] header = new String[]{_("isisfish.queue.id"), _("isisfish.queue.plan"), _("isisfish.queue.name"), _("isisfish.queue.local"), _("isisfish.queue.status"), _("isisfish.queue.progression")};
/** columns types */
- protected Class[] columnClass = new Class[]{String.class, String.class, Boolean.class, Boolean.class, String.class, JProgressBar.class};
+ protected Class[] columnClass = new Class[]{
+ String.class, // id
+ String.class, // analyse plan number
+ Boolean.class, // in queue
+ String.class, // local, remote, batch
+ String.class, // text
+ JProgressBar.class // progress
+ };
/** progress bar (one for each row) */
protected Map<String, JProgressBar> progress = new HashMap<String, JProgressBar>();
@@ -116,7 +125,7 @@
* @param id id of the QueueItem to find
* @return the queueItem found via his id
*/
- protected SimulationManager.QueueItem getItem(String id) {
+ protected SimulationManager.SimulationItem getItem(String id) {
return getQueueItemsAsMap().get(id);
}
@@ -124,7 +133,7 @@
* @param rowIndex rowIndex of the QueueItem to find
* @return the queueItem found via his rowIndex
*/
- protected SimulationManager.QueueItem getItem(int rowIndex) {
+ protected SimulationManager.SimulationItem getItem(int rowIndex) {
String id = getSimulationId(rowIndex);
return id == null ? null : getQueueItemsAsMap().get(id);
}
@@ -134,24 +143,16 @@
* @return the SimulationControl of the given simulation
*/
protected SimulationControl getSimulationControl(String id) {
- SimulationControl result = null;
- SimulationManager.QueueItem item = getItem(id);
- if (item != null) {
- result = item.control;
- } else {
+ SimulationControl result = queue.getControl(id);
+ if (result == null) {
log.user(_("isisfish.error.invalid.simulation.id", id, getSimulationIds()));
}
return result;
}
public SimulationControl getSimulationControl(int rowIndex) {
- SimulationControl result = null;
- SimulationManager.QueueItem item = getItem(rowIndex);
- if (item != null) {
- result = item.control;
- } else {
- log.user(_("isisfish.error.invalid.simulation.index", rowIndex));
- }
+ String id = getSimulationId(rowIndex);
+ SimulationControl result = getSimulationControl(id);
return result;
}
/**
@@ -160,7 +161,7 @@
*/
protected SimulationParameter getSimulationParameter(String id) {
SimulationParameter result = null;
- SimulationManager.QueueItem item = getItem(id);
+ SimulationManager.SimulationItem item = getItem(id);
if (item != null) {
result = item.param;
} else {
@@ -189,6 +190,24 @@
}
/////////////////////////////////////////////
+ // SimulationQueueListener implementation
+ /////////////////////////////////////////////
+
+ /* (non-Javadoc)
+ * @see SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
+ */
+ public void simulationStart(SimulationQueueEvent e) {
+ // nothing to do
+ }
+
+ /* (non-Javadoc)
+ * @see SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
+ */
+ public void simulationStop(SimulationQueueEvent e) {
+ // nothing to do
+ }
+
+ /////////////////////////////////////////////
// TableModel implementation
/////////////////////////////////////////////
@@ -260,7 +279,15 @@
result = param.getInQueue();
break;
case 3:
- result = param.getLocal();
+ if (param.getLocal()) {
+ if (param.isSubProcess()) {
+ result = "batch";
+ } else {
+ result = "local";
+ }
+ } else {
+ result = "remote";
+ }
break;
case 4:
if (control != null) {
Copied: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.java (from rev 1300, branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.java)
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/AnalysePlanIndependent.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -0,0 +1,46 @@
+/* *##%
+ * Copyright (C) 2007
+ * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.
+ *##%*/
+
+/* *
+ * AnalysePlan.java
+ *
+ * Created: 1 mars 07 20:27:28
+ *
+ * @author poussin
+ * @version $Revision: 336 $
+ *
+ * Last update: $Date: 2007-03-09 15:10:40 +0100 (ven, 09 mar 2007) $
+ * by : $Author: bpoussin $
+ */
+
+package fr.ifremer.isisfish.simulator;
+
+/**
+ * Use for Analyse plan that don't need previous simulation to do next
+ * simulation. When Simulation use this plan type, Isis can do more than one
+ * simulation in same time.
+ *
+ * author poussin
+ */
+public interface AnalysePlanIndependent extends AnalysePlan {
+
+
+}
+
+
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/PlanGenerator.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.util.Collection;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/ResultManager.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/ResultManager.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/ResultManager.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.util.Collection;
import java.util.HashSet;
@@ -130,7 +130,7 @@
}
} catch (IsisFishException eee) {
if (log.isWarnEnabled()) {
- log.warn(_("Can't instanciate export {0}", exportName), eee);
+ log.warn(_("Can't instanciate export %1$s", exportName), eee);
}
}
}
Copied: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java (from rev 1300, branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java)
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointExternalProcessThread.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -0,0 +1,81 @@
+/**
+* SimulationCheckpointThread.java
+*
+* Created: Wed Aug 28 2002
+*
+* @author <poussin at codelutin.com>
+* Copyright Code Lutin
+* @version $Revision: 1187 $
+*
+* Mise a jour: $Date: 2008-03-19 01:26:10 +0100 (mer, 19 mar 2008) $
+* par : $Author: tchemit $
+*/
+
+package fr.ifremer.isisfish.simulator;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+
+import java.io.InputStream;
+
+/**
+ * This thread is responsable to synchronized SimulationControl used localy with
+ * remote simulation control for remote simulation.
+ *
+ * This thread dead when {@link SimulationControl#isRunning()} is false
+ *
+ * @author poussin
+ */
+public class SimulationCheckpointExternalProcessThread extends Thread { // SimulationCheckpointThread
+
+ /**
+ * Logger for this class
+ */
+ private static final Log log = LogFactory
+ .getLog(SimulationCheckpointExternalProcessThread.class);
+
+ protected SimulationControl control = null;
+ protected SimulationStorage simulation = 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) {
+ this.control = control;
+ this.simulation = simulation;
+ this.process = process;
+ out = process.getInputStream();
+
+ }
+
+ public void run(){
+ int sleepTime = 2000;
+ int error = 0;
+ while(true){
+ 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");
+
+ if (control.isStopSimulationRequest()) {
+ // FIXME, un destroy du process est peut-etre un peu violent ?
+ process.destroy();
+ // passe artificiellement le control a fini
+ control.stopSimulation();
+ }
+ if (!control.isRunning()) {
+ return;
+ }
+ } catch (Exception eee) {
+ log.debug("Can't update control for " + control.getId(), eee);
+ }
+ }
+
+ }
+
+} // SimulationCheckpointThread
Copied: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java (from rev 1300, branches/isis-fish-3.1.4/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java)
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java (rev 0)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointRemoteThread.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -0,0 +1,92 @@
+/**
+* SimulationCheckpointRemoteThread.java
+*
+* Created: Wed Aug 28 2002
+*
+* @author <poussin at codelutin.com>
+* Copyright Code Lutin
+* @version $Revision$
+*
+* Mise a jour: $Date$
+* par : $Author$
+*/
+
+package fr.ifremer.isisfish.simulator;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.xmlrpc.XmlRpcClient;
+
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+
+/**
+ * This thread is responsable to synchronized SimulationControl used localy with
+ * remote simulation control for remote simulation.
+ *
+ * This thread dead when {@link SimulationControl#isRunning()} is false
+ *
+ * @author poussin
+ */
+public class SimulationCheckpointRemoteThread extends Thread { // SimulationCheckpointRemoteThread
+
+ /**
+ * Logger for this class
+ */
+ private static final Log log = LogFactory
+ .getLog(SimulationCheckpointRemoteThread.class);
+
+ protected SimulationControl control = null;
+ int badId = 0;
+
+ public SimulationCheckpointRemoteThread(SimulationControl control) {
+ this.control = control;
+ }
+
+ public void run(){
+ int sleepTime = 2000;
+ while(true){
+ try{
+ Thread.sleep(sleepTime);
+
+ updateControl(control);
+ // on remet de le temps normal, vu que la connexion a reussi
+ sleepTime = 2000;
+
+ if (!control.isRunning()) {
+ return;
+ }
+
+ } catch (Exception eee) {
+ // on supporte 10 erreurs puis ensuite on quitte le thread.
+ if ( badId++ > 10){
+ log.error("Error !!! ", eee);
+ break;
+ }else{
+ // on a echouer sur une tentative, on allonge un
+ // peu le temps
+ sleepTime += 2000;
+ }
+ }
+ }
+
+ }
+
+ public void updateControl(SimulationControl control) throws Exception {
+ // essai l'ancienne etait en dur: "http://localhost:9090"
+ IsisConfig config = IsisFish.config;
+ XmlRpcClient c = new XmlRpcClient(config.getSimulatorServer());
+ c.setBasicAuthentication(config.getSimulatorUsername(), config.getSimulatorPassword());
+
+ Vector a = new Vector();
+ a.add(control.getUpdateHashtable());
+ Hashtable<String, Object> result = (Hashtable<String, Object>)c.execute("checkPoint", a);
+ // on remet de le temps normal, vu que la connexion a reussi
+ control.updateFromHashtable(result);
+ }
+
+} // SimulationCheckpointRemoteThread
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointThread.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointThread.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationCheckpointThread.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,93 +0,0 @@
-/**
-* SimulationCheckpointThread.java
-*
-* Created: Wed Aug 28 2002
-*
-* @author <poussin at codelutin.com>
-* Copyright Code Lutin
-* @version $Revision$
-*
-* Mise a jour: $Date$
-* par : $Author$
-*/
-
-package fr.ifremer.isisfish.simulator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.apache.xmlrpc.XmlRpcClient;
-
-import fr.ifremer.isisfish.IsisConfig;
-import fr.ifremer.isisfish.IsisFish;
-
-/**
- * This thread is responsable to synchronized SimulationControl used localy with
- * remote simulation control for remote simulation.
- *
- * This thread dead when {@link SimulationControl#isRunning()} is false
- *
- * @author poussin
- */
-public class SimulationCheckpointThread extends Thread { // SimulationCheckpointThread
-
- /**
- * Logger for this class
- */
- private static final Log log = LogFactory
- .getLog(SimulationCheckpointThread.class);
-
- protected SimulationControl control = null;
- int badId = 0;
-
- public SimulationCheckpointThread(SimulationControl control) {
- this.control = control;
- }
-
- public void run(){
- int sleepTime = 2000;
- while(true){
- try{
- Thread.sleep(sleepTime);
-
- updateControl(control);
- // on remet de le temps normal, vu que la connexion a reussi
- sleepTime = 2000;
-
- if (!control.isRunning()) {
- return;
- }
-
- } catch (Exception eee) {
- // on supporte 10 erreurs puis ensuite on quitte le thread.
- if ( badId++ > 10){
- log.error("Error !!! ", eee);
- break;
- }else{
- // on a echouer sur une tentative, on allonge un
- // peu le temps
- sleepTime += 2000;
- }
- }
- }
-
- }
-
- public void updateControl(SimulationControl control) throws Exception {
- // essai l'ancienne etait en dur: "http://localhost:9090"
- XmlRpcClient c = new XmlRpcClient(IsisFish.config.getSimulatorServer());
- c.setBasicAuthentication(IsisFish.config.getSimulatorUsername(),
- IsisFish.config.getSimulatorPassword());
-
- Vector a = new Vector();
- a.add(control.getUpdateHashtable());
- Hashtable<String, Object> result =
- (Hashtable<String, Object>)c.execute("checkPoint", a);
- // on remet de le temps normal, vu que la connexion a reussi
- control.updateFromHashtable(result);
- }
-
-} // SimulationCheckpointThread
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationControl.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationControl.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationControl.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,6 +31,7 @@
package fr.ifremer.isisfish.simulator;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
@@ -40,6 +41,7 @@
import org.apache.commons.logging.LogFactory;
import fr.ifremer.isisfish.types.Date;
+import java.util.Properties;
/**
* Permit to communicate with user interface from simulation thread
@@ -52,8 +54,12 @@
protected PropertyChangeSupport listeners = new PropertyChangeSupport(this);
protected boolean inUpdateFromHashtable = false;
+ protected transient SimulationStorage simulation = null;
+ /** si vrai des qu'une propriete change, sauvegarde sont etat */
+ protected transient boolean autoSaveState = false;
protected String id = null;
+ protected boolean started = false;
protected boolean running = true;
protected boolean stop = false;
protected Date date = new Date();
@@ -70,16 +76,60 @@
this.id = id;
addPropertyChangeListener(this);
}
+
+ public void setAutoSaveState(boolean autoSaveState) {
+ this.autoSaveState = autoSaveState;
+ }
+
+ public boolean isAutoSaveState() {
+ return autoSaveState;
+ }
+ /**
+ * Retourne la simulation associe a ce control
+ * @return retourne null si la simulation n'existe pas encore
+ */
+ public SimulationStorage getSimulation() {
+ if (simulation == null) {
+ simulation = SimulationStorage.getSimulation(id);
+ }
+ return simulation;
+ }
+
+
+
+ public void addPropertyChangeListener(String propName, PropertyChangeListener l) {
+ listeners.addPropertyChangeListener(propName, l);
+ }
+
public void addPropertyChangeListener(PropertyChangeListener l) {
listeners.addPropertyChangeListener(l);
}
+ public void removePropertyChangeListener(String propName, PropertyChangeListener l) {
+ listeners.removePropertyChangeListener(propName, l);
+ }
+
public void removePropertyChangeListener(PropertyChangeListener l) {
listeners.removePropertyChangeListener(l);
}
+ public boolean isStarted() {
+ return started;
+ }
+
/**
+ * appelee juste avant de reellement demarrer le thread de simulation
+ * indique que cette simulation est en cours et qu'il ne faut plus la lancer
+ * @param running The running to set.
+ */
+ public void setStarted(boolean started) {
+ boolean oldValue = this.started;
+ this.started = started;
+ listeners.firePropertyChange("started", oldValue, this.started);
+ }
+
+ /**
* Method running
*
* @return faux une fois que stopSimulation a ete appele.
@@ -221,12 +271,75 @@
}
/**
+ * Met dans un Properties tous les champs
+ * @return un Properties avec tous les champs
+ */
+ public Properties getProperties() {
+ Properties result = new Properties();
+ result.setProperty("id", id);
+ result.setProperty("started", String.valueOf(started));
+ result.setProperty("running", String.valueOf(running));
+ result.setProperty("stop", String.valueOf(stop));
+ result.setProperty("date", String.valueOf(date.getDate()));
+ result.setProperty("progressMax", String.valueOf(progressMax));
+ result.setProperty("progress", String.valueOf(progress));
+ result.setProperty("text", text);
+
+ return result;
+ }
+
+ /**
+ * update current object from Properties representation
+ *
+ */
+ public void updateFromProperties(Properties h) {
+ inUpdateFromHashtable = true;
+ try {
+ if (h.contains("started")) {
+ boolean started = "true".equalsIgnoreCase(h.getProperty("started"));
+ setStarted(started);
+ }
+ if (h.contains("running")) {
+ boolean running = "true".equalsIgnoreCase(h.getProperty("running"));
+ setRunning(running);
+ }
+ if (h.contains("stop")) {
+ boolean stop = "true".equalsIgnoreCase(h.getProperty("stop"));
+ setStopSimulationRequest(stop);
+ }
+ if (h.contains("date")) {
+ Date date = new Date(Integer.parseInt(h.getProperty("date")));
+ setDate(date);
+ }
+ if (h.contains("progressMax")) {
+ int progressMax = Integer.parseInt(h.getProperty("progressMax"));
+ setProgressMax(progressMax);
+ }
+ if (h.contains("progress")) {
+ int progress = Integer.parseInt(h.getProperty("progress"));
+ setProgress(progress);
+ }
+ if (h.contains("text")) {
+ String text = h.getProperty("text");
+ setText(text);
+ }
+ } finally {
+ inUpdateFromHashtable = false;
+ }
+ }
+
+
+ /**
* update current object from hashtable representation
*
*/
public void updateFromHashtable(Hashtable h) {
inUpdateFromHashtable = true;
try {
+ if (h.contains("started")) {
+ boolean started = (Boolean)h.get("started");
+ setStarted(started);
+ }
if (h.contains("running")) {
boolean running = (Boolean)h.get("running");
setRunning(running);
@@ -266,6 +379,9 @@
} else {
Object value = e.getNewValue();
update.put(property, value);
+ if (isAutoSaveState() && getSimulation() != null) {
+ getSimulation().saveControl(this);
+ }
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationDoneQueueModel.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -34,7 +34,7 @@
import fr.ifremer.isisfish.datastore.SimulationInformation;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.i18n.I18nf._;
/**
* Model that represents a set of done or stopped simulations
@@ -62,13 +62,13 @@
* @see AbstractSimulationQueueModel at getSimulationIds()
*/
protected java.util.List<String> getSimulationIds() {
- return getQueue().idDones;
+ return getQueue().getDoneIds();
}
/* (non-Javadoc)
* @see AbstractSimulationQueueModel at getQueueItemsAsMap()
*/
- protected java.util.Map<String, SimulationManager.QueueItem> getQueueItemsAsMap() {
+ protected java.util.Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap() {
return getQueue().mapDones;
}
@@ -89,57 +89,32 @@
// IsisConfig.SIMULATION_SHOW_ONLY_XXX properties)
int pos = getSimulationIndex(e.getId());
if (isRowIndexValid(pos)) {
- log.info(" in done model for " + e.getId() + " pos " + getSimulationIndex(e.getId()));
+ log.info(" in done model for " + e.getId() + " pos " + pos);
fireTableRowsInserted(pos, pos);
+
+ // on indique si la simulation a ete annulee
SimulationControl control = getSimulationControl(e.getId());
log.info("isStopSimulationRequest : "+control.isStopSimulationRequest());
if (control.isStopSimulationRequest()) {
- control.setText(I18n._("isisfish.queue.cancelled"));
+ control.setText(_("isisfish.queue.cancelled"));
}
- SimulationManager.QueueItem item = getQueueItemsAsMap().get(e.getId());
- try {
- //TODO I don't known if this is good ?
- SimulationStorage lastSim = item.lastSimulation;
- SimulationParameter simulationParameter = getSimulationParameter(e.getId());
- if (lastSim != null) {
- if (simulationParameter.getUseAnalysePlan()) {
- //TODO Is the lastSimulation is the good one ???
- SimulationInformation infos = getItem(e.getId()).lastSimulation.getInformation();
- if (infos != null && infos.getException() != null) {
- // should deal with error
- log.error(I18n._("isisfish.error.while.simulation", infos.getException()));
- control.setText(I18n._("isisfish.message.stop.with.error"));
- }
- } else if (lastSim.getName().equals(e.getId())) {
- SimulationInformation infos = getItem(e.getId()).lastSimulation.getInformation();
- if (infos != null && infos.getException() != null) {
- // should deal with error
- log.error(I18n._("isisfish.error.while.simulation", infos.getException()));
- control.setText(I18n._("isisfish.message.stop.with.error",infos.getException()));
- }
+ // on change le message pour dire qu'il y a eu une erreur
+ try {
+ SimulationManager.SimulationItem item = getQueueItemsAsMap().get(e.getId());
+ if (!item.hasSimulation()) {
+ SimulationInformation infos = item.getSimulation().getInformation();
+ if (infos.hasError()) {
+ log.error(_("isisfish.error.while.simulation", infos.getException()));
+ control.setText(_("isisfish.message.stop.with.error"));
}
}
- // I don't known if you can come here with no previous simulation ?
- } catch (Exception e1) {
- log.warn(I18n._("isisfish.error.obtain.information.file", e.getId()));
+ } catch (Exception eee) {
+ log.warn(_("isisfish.error.obtain.information.file", e.getId()), eee);
}
control.addPropertyChangeListener(this);
}
}
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStart(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStop(SimulationQueueEvent e) {
- // nothing to do
- }
}// SimulationDoneQueueModel
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationHelper.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -30,7 +30,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.FileOutputStream;
@@ -48,7 +48,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.xmlrpc.XmlRpcClient;
-import org.codelutin.i18n.I18n;
import org.codelutin.profiling.LutinTrace;
import org.codelutin.topia.TopiaContext;
import org.codelutin.topia.TopiaException;
@@ -62,6 +61,7 @@
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.aspect.AspectClassLoader;
import fr.ifremer.isisfish.aspect.Cache;
import fr.ifremer.isisfish.aspect.Trace;
@@ -73,7 +73,6 @@
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.util.CompileHelper;
/**
@@ -292,28 +291,30 @@
*/
static public void simulate(String simulId, SimulationParameter param,
boolean inQueue) throws SimulationException {
- // Ajout automatiquement de la date+heure a la fin de l'identifiant
- // comme demandé par Steph 20070227
- simulId += " " + dateFormat.format(new java.util.Date());
+ try {
+ simulId += " " + dateFormat.format(new java.util.Date());
- if (simulId == null ||
- "".equals(simulId) ||
- SimulationStorage.localyExists(simulId) ||
- SimulationManager.getInstance().exists(simulId)) {
- log.error("Can't start simulation, bad id: " + simulId);
- throw new SimulationException(_("isisfish.error.start" +
- " simulation, bad id: {0}", "" + simulId));
+ if (simulId == null || "".equals(simulId) || SimulationStorage.localyExists(simulId) || SimulationManager.getInstance().exists(simulId)) {
+ log.error("Can't start simulation, bad id: " + simulId);
+ throw new SimulationException(_("isisfish.error.start"));
+ }
+ SimulationParameter p = param.copy();
+ p.setInQueue(inQueue);
+
+ SimulationManager.getInstance().addSimulation(simulId, p);
+ } catch (Exception eee) {
+ throw new SimulationException("Can't add simulation", eee);
}
- SimulationParameter p = param.copy();
- p.setInQueue(inQueue);
-
- SimulationManager.getInstance().addSimulation(simulId, p);
}
static public SimulationStorage simulate(SimulationControl control, SimulationStorage simulation) throws Exception {
SimulationStorage result;
if (simulation.getParameter().getLocal()) {
- result = localSimulate(control, simulation);
+ if (simulation.getParameter().isSubProcess()) {
+ result = subProcessSimulate(control, simulation);
+ } else {
+ result = localSimulate(control, simulation);
+ }
} else {
result = remoteSimulate(control, simulation);
}
@@ -330,14 +331,15 @@
* @return le storage après simulation
* @throws Exception pour toute erreur
*/
- static public SimulationStorage remoteSimulate(SimulationControl control, SimulationStorage simulation) throws Exception {
+ static public SimulationStorage remoteSimulate(SimulationControl control,
+ SimulationStorage simulation) throws Exception {
// export en zip du storage
File zip = simulation.createZip();
if (control != null) {
// creation du thread de surveillance de la simulation distante
// qui sert a mettre a jour les valeurs de control
- new SimulationCheckpointThread(control).start();
+ new SimulationCheckpointRemoteThread(control).start();
}
// envoie le zip au serveur de simulation
@@ -364,7 +366,41 @@
result = SimulationStorage.importAndRenameZip(tmpzip, control.getId());
return result;
}
-
+
+ static public SimulationStorage subProcessSimulate(SimulationControl control,
+ SimulationStorage simulation) throws Exception {
+
+ String simulationId = simulation.getName();
+
+ // on ferme le SimulationStorage pour ne pas interferer avec le process
+ simulation.closeStorage();
+
+ String java = System.getProperty("java.home") +
+ File.separator + "bin" + File.separator + "java";
+ String classpath = System.getProperty("java.class.path");
+
+ // prepare le process
+ ProcessBuilder processBuilder = new ProcessBuilder(java, "-classpath", classpath,
+ IsisFish.class.getName(),
+ "--simulate", simulationId);
+ processBuilder.redirectErrorStream(true);
+
+ // demarrage du process
+ Process process = processBuilder.start();
+
+ if (control != null) {
+ // prepare de thread de surveillance du process si control n'est pas null
+ Thread monitor = new SimulationCheckpointExternalProcessThread(control, simulation, process);
+ }
+
+ // on attend que la simulation soit fini
+ process.waitFor();
+
+ // on retourne directement le simulation storage passe en argument
+ // car la simulation a ete faite avec
+ return simulation;
+ }
+
/**
* fait la simulation en local dans un nouveau thread, cela permet
* pour chaque simulation d'avoir les bons scripts dans le classloader
@@ -386,7 +422,7 @@
simulation.addSimulationLogger(simulLogLevel,scriptLogLevel,libLogLevel,simThread.getName());
} catch (Exception e) {
if (log.isWarnEnabled()) {
- log.warn(I18n._("isisfish.error.add.logger.simulation ", e));
+ log.warn(_("isisfish.error.add.logger.simulation ", e));
}
}
try {
@@ -395,7 +431,7 @@
simThread.join();
} catch (InterruptedException eee) {
if (log.isWarnEnabled()) {
- log.warn(I18n._("isisfish.error.wait.simThread"), eee);
+ log.warn(_("isisfish.error.wait.simThread"), eee);
}
}
} finally {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationManager.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,12 +31,14 @@
package fr.ifremer.isisfish.simulator;
+import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.types.Date;
+import java.beans.PropertyChangeEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.util.FileUtil;
import org.codelutin.util.ListenerSet;
@@ -44,11 +46,11 @@
import java.beans.PropertyChangeSupport;
import java.io.File;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.PriorityBlockingQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
/**
@@ -63,30 +65,36 @@
static protected SimulationManager instance = null;
- protected boolean autoLaunch = false;
+ // FIXME pouvoir configurer ceci en fichier de config
+ // FIXME ainsi que la mise a false, lors de la simulation de la derniere
+ // (sans doute ajoute un boolean, simulationListAsQueue = true|false)
+ protected boolean autoLaunch = true;
protected ListenerSet<SimulationQueueListener> listeners = new ListenerSet<SimulationQueueListener>();
protected PropertyChangeSupport propertyListeners = new PropertyChangeSupport(this);
- protected SimulationThread localThread;
- protected SimulationThread remoteThread;
+// protected SimulationThread localThread;
+// protected SimulationThread remoteThread;
- /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation local*/
- protected PriorityBlockingQueue<QueueItem> localQueue = new PriorityBlockingQueue<QueueItem>();
- /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation remote*/
- protected PriorityBlockingQueue<QueueItem> remoteQueue = new PriorityBlockingQueue<QueueItem>();
- /** La liste des simulations terminées */
- protected LinkedHashSet<QueueItem> dones = new LinkedHashSet<QueueItem>();
+ protected ExecutorService localExecutor;
+ protected ExecutorService remoteExecutor;
+
+// /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation local*/
+// protected PriorityBlockingQueue<QueueItem> localQueue = new PriorityBlockingQueue<QueueItem>();
+// /** La queue, bloquante lorsqu'elle est vide, utilisé par le thread de simulation remote*/
+// protected PriorityBlockingQueue<QueueItem> remoteQueue = new PriorityBlockingQueue<QueueItem>();
+// /** La liste des simulations terminées */
+// protected LinkedHashSet<SimulationItem> dones = new LinkedHashSet<SimulationItem>();
- /** une liste des id (local et remote) */
- protected ArrayList<String> ids = new ArrayList<String>();
- /** une map id->item pour accelerer les acces */
- protected Map<String, QueueItem> map = new HashMap<String, QueueItem>();
+// /** une liste des id (local et remote) */
+// protected ArrayList<String> ids = new ArrayList<String>();
+ /** une map id->simItem pour accelerer les acces */
+ protected Map<String, SimulationItem> map = new LinkedHashMap<String, SimulationItem>();
- /** une liste des id des simulations terminées */
- protected ArrayList<String> idDones = new ArrayList<String>();
- /** une map id->item pour accelerer les acces aux simulation terminées */
- protected Map<String, QueueItem> mapDones = new HashMap<String, QueueItem>();
+// /** une liste des id des simulations terminées */
+// protected ArrayList<String> idDones = new ArrayList<String>();
+ /** une map id->simItem pour accelerer les acces aux simulation terminées */
+ protected Map<String, SimulationItem> mapDones = new LinkedHashMap<String, SimulationItem>();
static public SimulationManager getInstance() {
if (instance == null) {
@@ -99,11 +107,19 @@
* Cree l'objet et lance les deux threads de simulation (local/remote)
*/
protected SimulationManager() {
- localThread = new SimulationThread("local", this, localQueue);
- remoteThread = new SimulationThread("remote", this, remoteQueue);
+// localThread = new SimulationThread("local", this, localQueue);
+// remoteThread = new SimulationThread("remote", this, remoteQueue);
+//
+// localThread.start();
+// remoteThread.start();
- localThread.start();
- remoteThread.start();
+ // TODO passer ces valeurs en valeur configurable
+ int cpus = Runtime.getRuntime().availableProcessors();
+ int MAX_REMOTE_SIMULATION = 1;
+ log.info(_("Launch Simulation executor with %s cpu(s) for local, and %s" +
+ " process for remote", cpus, MAX_REMOTE_SIMULATION));
+ localExecutor = Executors.newFixedThreadPool(cpus);
+ remoteExecutor = Executors.newFixedThreadPool(MAX_REMOTE_SIMULATION);
}
@@ -134,28 +150,69 @@
* @param autoLaunch The autoLaunch to set.
*/
public void setAutoLaunch(boolean autoLaunch) {
- boolean oldValue = this.autoLaunch;
- this.autoLaunch = autoLaunch;
- propertyListeners.firePropertyChange("autoLaunch", oldValue, autoLaunch);
+ synchronized (this) {
+ boolean oldValue = this.autoLaunch;
+ this.autoLaunch = autoLaunch;
+ if (this.autoLaunch) {
+ this.notifyAll();
+ }
+ propertyListeners.firePropertyChange("autoLaunch", oldValue, autoLaunch);
+ }
}
+ public void waitAutoLaunch() {
+ synchronized(this) {
+ while (!isAutoLaunch()) {
+ try {
+ log.info("autoLaunch is false waiting queue start");
+ this.wait();
+ } catch (InterruptedException eee) {
+ log.warn("Error during wait autoLaunch flag", eee);
+ }
+ }
+ }
+ }
+
/**
* Cree l'objet de gestion de la simulation en interne et le place dans la
* bonne queue de simulation (local/remote). Appel le
- * {@link #fireAddEvent(String, QueueItem)}
+ * {@link #fireAddEvent(String, SimulationItem)}
* @param id l'id de simulation
* @param param les paramètres de la simulation
*/
- public void addSimulation(String id, SimulationParameter param) {
- QueueItem item = new QueueItem(id, param);
- fireAddEvent(id, item); // must be before thread notification because thread look in map
+ public void addSimulation(String id, SimulationParameter param) throws Exception {
+ ExecutorService executor = null;
if (param.getLocal()) {
- localQueue.add(item);
+ executor = localExecutor;
log.debug(_("isisfish.message.add.queue", id));
} else {
- remoteQueue.add(item);
+ executor = remoteExecutor;
log.debug(_("isisfish.message.add.queue.remote", id));
}
+
+
+
+ // on construit le bon type de SimulationItem pour le job
+ SimulationItem item = null;
+ if (param.getUseAnalysePlan()) {
+ // c un plan d'analyse, il peut etre independant ou dependant
+ if (!param.isIndependentPlan()) {
+ item = new SimulationItemPlan(id, param);
+ executor.execute(new SimulationJob(this, item));
+ } else {
+ // on met dans la queue local le process de generation de toutes
+ // les simus
+ item = new SimulationItemPlanIndependent(id, param);
+ localExecutor.execute(
+ new PrepareIndependentSimulationJob(this, executor, item));
+ }
+ } else {
+ // une simulation normal
+ item = new SimulationItem(id, param);
+ log.info("Simulation added to executor: " + executor.isShutdown() + ", " + executor.isTerminated());
+ executor.execute(new SimulationJob(this, item));
+ }
+ fireAddEvent(id, item); // must be before thread notification because thread look in map
}
/**
@@ -165,7 +222,7 @@
* @param id l'id de simulation
*/
public void removeSimulation(String id) {
- QueueItem item = map.get(id);
+ SimulationItem item = map.get(id);
if (item != null) {
item.control.setStopSimulationRequest(true);
}
@@ -173,6 +230,26 @@
}
/**
+ * Retourne une liste toujours dans le meme ordre des ids de simulation
+ * a faire
+ * @return
+ */
+ public List<String> getIds() {
+ List<String> result = new ArrayList<String>(map.keySet());
+ return result;
+ }
+
+ /**
+ * Retourne une liste toujours dans le meme ordre des ids de simulation
+ * a faire
+ * @return
+ */
+ public List<String> getDoneIds() {
+ List<String> result = new ArrayList<String>(mapDones.keySet());
+ return result;
+ }
+
+ /**
* @param id l'id de simulation
* @return <code>true</code> si un identifiant est utilisé pour une simulation
*/
@@ -201,8 +278,8 @@
listeners.remove(l);
}
- protected void fireAddEvent(String id, QueueItem item) {
- ids.add(id);
+ protected void fireAddEvent(String id, SimulationItem item) {
+// ids.add(id);
map.put(id, item);
SimulationQueueEvent e = new SimulationQueueEvent(this, id);
for (SimulationQueueListener l : listeners) {
@@ -215,21 +292,29 @@
// add the simulation in done model
// check if we should keep the simulation in done model
if (mustShowSimulationDone(id)) {
- idDones.add(id);
- SimulationManager.QueueItem queueItem = map.get(id);
- dones.add(queueItem);
+// idDones.add(id);
+ SimulationItem queueItem = map.get(id);
+// dones.add(queueItem);
mapDones.put(id, queueItem);
}
SimulationQueueEvent e = new SimulationQueueEvent(this, id);
for (SimulationQueueListener l : listeners) {
l.simulationWillBeRemoved(e);
}
- ids.remove(id);
+// ids.remove(id);
map.remove(id);
}
}
- protected void fireStartEvent(String id) {
+ protected void fireStartEvent(String id, SimulationItem item) {
+ if (!exists(id) && item.isIndependent()) {
+ // la simulation qui vient d'etre lancee n'existe pas, c parce qu'il
+ // s'agit d'une simulation de plan, on l'ajoute a la liste pour que
+ // l'utilisateur puisse la visualiser. On ne le fait pas pour les
+ // plan dependant car, il partage le meme controleur, donc
+ // l'utilisateur voit deja ce qui se passe
+ fireAddEvent(id, item);
+ }
SimulationQueueEvent e = new SimulationQueueEvent(this, id);
for (SimulationQueueListener l : listeners) {
l.simulationStart(e);
@@ -257,7 +342,11 @@
*/
public SimulationControl getControl(String id) {
SimulationControl result = null;
- QueueItem item = map.get(id);
+ SimulationItem item = map.get(id);
+ if (item == null) {
+ // try to find it in done simulation
+ item = mapDones.get(id);
+ }
if (item != null) {
result = item.control;
}
@@ -272,234 +361,521 @@
protected boolean mustShowSimulationDone(String id) {
boolean result = true;
- QueueItem item = map.get(id);
- SimulationParameter simulationParameter = getParameter(id);
- if (IsisFish.config.isSimulationShowOnlyQueue() && !simulationParameter.getLocal()) {
- return false;
- }
+ try {
+ IsisConfig config = IsisFish.config;
- try {
- //TODO cela ne fonctionne pas, le fichier existe-il à ce moment ?
- if (IsisFish.config.isSimulationShowOnlyError() && item.lastSimulation.getInformation().getException() != null) {
- return true;
+ SimulationItem item = map.get(id);
+ if (item.hasPlanItem() && !item.getSimulation().getInformation().hasError()) {
+ // on ne met jamais dans la queue done les simulations de plan
+ // sauf si elle echoue
+ result = false;
+// FIXME a revoir la condition avec showOnly error et showOnly queue (qui ne sert plus)
+ } else if (!(config.isSimulationShowOnlyError() &&
+ !(item instanceof SimulationItemPlan) &&
+ item.getSimulation().getInformation().hasError())) {
+ result = false;
}
- } catch (Exception e) {
+ } catch (Exception eee) {
+ log.debug("Ne devrait pas arriver", eee);
// I don't known how it could appear, but in doubt, show it!
- return true;
}
return result;
}
+// /**
+// * Thread permettant de faire les simulations se trouvant dans la queue
+// * passée en parametre.
+// * <p>
+// * Si la simulation prise dans la queue n'existe plus, au moment ou on
+// * souhaite l'utiliser dans le {@link SimulationManager} alors elle est
+// * passée et on en recherche une autre.
+// *
+// * @author poussin
+// */
+// static class SimulationThread extends Thread {
+// protected SimulationManager simulationManager;
+// protected BlockingQueue<QueueItem> queue;
+//
+// /**
+// *
+// * @param name just small name to differenciate thread (local/remote)
+// * @param simulationManager le manager de simulation
+// * @param queue la queue de simulations
+// */
+// public SimulationThread(String name, SimulationManager simulationManager, BlockingQueue<QueueItem> queue) {
+// super("Simulation Thread " + name);
+// this.simulationManager = simulationManager;
+// this.queue = queue;
+// }
+//
+// /* (non-Javadoc)
+// * @see java.lang.Thread#run()
+// */
+// @Override
+// public void run() {
+// log.info("Start simulation thread");
+// while (true) {
+// // simItem qui sert a faire la simulation courante
+// QueueItem simItem = null;
+// try {
+// //
+// // recheche d'une simulation
+// //
+// while (simItem == null) {
+// log.debug("try to take simulation");
+// simItem = queue.take();
+// log.debug("Just take " + simItem.id);
+// if (!simulationManager.exists(simItem.id)) {
+// // on ne le retrouve pas dans la map, la simulation
+// // a donc ete supprimée par l'utilisateur on passe a la
+// // suivante
+// simItem = null;
+// } else if (!simulationManager.isAutoLaunch() && simItem.param.getInQueue()) {
+// // don't use simItem, because is queue and queue is not launched
+// queue.add(simItem);
+// simItem = null;
+// // sleep 1s. Because all other simItem is in queue too
+// // this sleep permit to user to put not queue simItem,
+// // with out eat cpu
+// sleep(1000);
+// }
+// }
+//
+// log.debug("use if has next simulation: " + simItem.id);
+// if (simItem.hasNext()) {
+// SimulationStorage sim = simItem.getSimulation();
+// String simId = sim.getName();
+// log.debug("Start simulation: " + simId);
+// SimulationControl control = simItem.control;
+// // set date to 0 at beginning of simulation
+// control.setDate(new Date());
+// control.setProgress(0);
+// control.setStarted(true);
+//
+// simulationManager.fireStartEvent(simItem.id);
+// try {
+// sim = SimulationHelper.simulate(control, sim);
+// simItem.setLastSimulation(sim);
+// } finally {
+// simulationManager.fireStopEvent(simItem.id);
+// }
+// // copie les exports de simulation dans le repertoire
+// // souhaiter par l'utilisateur
+// SimulationParameter param = sim.getParameter();
+// if (param.getExportNames() != null && param.getExportNames().size() > 0) {
+// File exportDir = IsisConfig.getResultExportDirectory(sim.getDirectory());
+// FileUtil.copyAndRenameRecursively(
+// exportDir,
+// new File(param.getExportDirectory()),
+// exportDir.getName(), simItem.id);
+//// FileUtil.copyAndRenameRecursively(
+//// exportDir,
+//// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
+//// IsisConfig.RESULT_EXPORT, simItem.id);
+// }
+//
+// if (simItem.hasNext() && simulationManager.exists(simItem.id)) {
+// // il y a encore des simulations a faire pour cet simItem
+// // on le remet dans la queue (on ne fait pas les autres
+// // simulations de cet simItem
+// // tout de suite car l'simItem peut-etre un simItem de queue
+// // moins prioritaire que les autres simulations
+// // il faut donc qu'il reprenne sa place dans l'ordre)
+//
+// queue.add(simItem);
+// } else {
+// // Si l'utilisateur souhaite seulement les exports
+// // on supprimer la/les simulations. Il faut le faire
+// // lorsqu'il n'y a plus de next car le calcul des plans
+// // peut avoir besoin des simulations precedentes
+// if (param.getOnlyExport()) {
+// if (param.getUseAnalysePlan()) {
+// for(File file : FileUtil.find(
+// IsisConfig.getSimulationDirectory(),
+// simItem.id + "_[0-9]+$", false)) {
+// log.debug("Delete simulation " + file);
+// FileUtil.deleteRecursively(file);
+// }
+// } else {
+// sim.delete(false);
+// }
+// }
+// simulationManager.fireRemoveEvent(simItem.id);
+//
+// if (simulationManager.isAutoLaunch() && simItem.param.getInQueue()) {
+// // if simItem is last in queue, stop the queue after that
+// QueueItem [] items = queue.toArray(new QueueItem[queue.size()]);
+// if (items.length > 0) {
+// QueueItem last = items[items.length-1];
+// if (!last.param.getInQueue()) {
+// // la derniere n'est pas en queue, donc plus de simulation en queue
+// simulationManager.setAutoLaunch(false);
+// }
+// } else {
+// // aucun simulation, donc forcement plus en queue non plus
+// simulationManager.setAutoLaunch(false);
+// }
+// }
+// }
+// }
+//
+//// } catch (Exception eee) {
+// } catch (Throwable eee) {
+// try {
+// // on sauvegarde l'erreur rencontrée, elle sera traité lors
+// // du fireRemoveEvent
+// simItem.lastSimulation.getInformation().setException(eee);
+// } catch (Exception e) {
+// if (log.isWarnEnabled()) {
+// log.warn(_("isisfish.error.during.simulation.information.file", simItem.id), eee);
+// }
+// } finally {
+// // error during simulation, remove bad simulation
+// simulationManager.fireRemoveEvent(simItem.id);
+// if (log.isWarnEnabled()) {
+// log.warn(_("isisfish.error.during.simulation", simItem.id), eee);
+// }
+// }
+//
+// } finally {
+// simItem = null;
+// }
+// }
+// }
+// }
+
+// /**
+// * Utilise pour les simulations avec plan d'analyse dependant
+// */
+// static class SimulationPlanJob implements Runnable {
+//
+// protected SimulationManager simulationManager;
+// protected SimulationItemPlan item;
+//
+// public SimulationPlanJob(SimulationManager simulationManager, SimulationItemPlan item) {
+// this.simulationManager = simulationManager;
+// this.item = item;
+// }
+//
+// public void run() {
+// try {
+// log.debug("use if has next simulation: " + item.id);
+// // on traite tout l'simItem dans le meme thread
+// while (simulationManager.exists(item.id) && item.hasNext()) {
+// SimulationStorage sim = item.getSimulation();
+// String simId = sim.getName();
+// log.debug("Start simulation: " + simId);
+// SimulationControl control = item.control;
+// // set date to 0 at beginning of simulation
+// control.setDate(new Date());
+// control.setProgress(0);
+// control.setStarted(true);
+//
+// simulationManager.fireStartEvent(item.id);
+// try {
+// sim = SimulationHelper.simulate(control, sim);
+// item.setLastSimulation(sim);
+// } finally {
+// simulationManager.fireStopEvent(item.id);
+// }
+// // copie les exports de simulation dans le repertoire
+// // souhaiter par l'utilisateur
+// SimulationParameter param = sim.getParameter();
+// if (param.getExportNames() != null &&
+// param.getExportNames().size() > 0) {
+// File exportDir = IsisConfig.getResultExportDirectory(
+// sim.getDirectory());
+// FileUtil.copyAndRenameRecursively(
+//
+// exportDir,
+// new File(param.getExportDirectory()),
+// exportDir.getName(), item.id);
+//// FileUtil.copyAndRenameRecursively(
+//// exportDir,
+//// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
+//// IsisConfig.RESULT_EXPORT, simItem.id);
+// }
+// }
+//
+// if (item.lastSimulation != null) {
+// SimulationParameter param = item.param;
+// // Si l'utilisateur souhaite seulement les exports
+// // on supprimer la/les simulations. Il faut le faire
+// // lorsqu'il n'y a plus de next car le calcul des plans
+// // peut avoir besoin des simulations precedentes
+// if (param.getOnlyExport()) {
+// if (param.getUseAnalysePlan()) {
+// for (File file : FileUtil.find(
+// IsisConfig.getSimulationDirectory(),
+// item.id + "_[0-9]+$", false)) {
+// log.debug("Delete simulation " + file);
+// FileUtil.deleteRecursively(file);
+// }
+// } else {
+// item.lastSimulation.delete(false);
+// }
+// }
+// }
+// // on previent que c la fin de la simulation
+// simulationManager.fireRemoveEvent(item.id);
+// } catch (Throwable eee) {
+// try {
+// // on sauvegarde l'erreur rencontrée, elle sera traité lors
+// // du fireRemoveEvent
+// if (item.lastSimulation != null) {
+// item.lastSimulation.getInformation().setException(eee);
+// }
+// } catch (Exception e) {
+// if (log.isWarnEnabled()) {
+// log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
+// }
+// } finally {
+// // error during simulation, remove bad simulation
+// simulationManager.fireRemoveEvent(item.id);
+// if (log.isWarnEnabled()) {
+// log.warn(_("isisfish.error.during.simulation", item.id), eee);
+// }
+// }
+//
+// } finally {
+// item = null;
+// }
+// }
+//
+// }
+
+ class PrepareIndependentSimulationJob implements Runnable {
+
+ protected SimulationManager simulationManager;
+ protected ExecutorService executor;
+ protected SimulationItem item;
+
+ public PrepareIndependentSimulationJob(SimulationManager simulationManager,
+ ExecutorService executor,
+ SimulationItem item) {
+ this.simulationManager = simulationManager;
+ this.executor = executor;
+ this.item = item;
+ }
+
+ public void run() {
+ simulationManager.waitAutoLaunch();
+ // l'item est independant, on ajoute toutes ces simulations en plus
+ // mais pas dans la map pour qu'il n'y ait bien que l'initiale
+ // plus celles en cours d'affichees
+ while (item.hasNext()) {
+ try {
+ executor.execute(new SimulationJob(simulationManager, item.next()));
+ } catch (Exception eee) {
+ log.error("Can't add simulation: " + item, eee);
+ }
+ }
+
+ }
+
+ }
+
/**
- * Thread permettant de faire les simulations se trouvant dans la queue
- * passée en parametre.
- * <p>
- * Si la simulation prise dans la queue n'existe plus, au moment ou on
- * souhaite l'utiliser dans le {@link SimulationManager} alors elle est
- * passée et on en recherche une autre.
- *
- * @author poussin
+ * Utilise pour les simulations sans plan d'analyse ou des plans independant
*/
- static class SimulationThread extends Thread {
+ class SimulationJob implements Runnable {
+
protected SimulationManager simulationManager;
- protected BlockingQueue<QueueItem> queue;
+ protected SimulationItem simItem;
/**
- *
- * @param name just small name to differenciate thread (local/remote)
- * @param simulationManager le manager de simulation
- * @param queue la queue de simulations
+ *
+ * @param simulationManager
+ * @param parentId si ce job est le resulat d'un plan d'analyse
+ * independant, sinon null ou la meme valeur que id
+ * @param id l'identifiant de la simulation (avec _N pour ceux qui
+ * proviennent d'un plan d'analyse)
+ * @param zip le zip contenant la simulation
*/
- public SimulationThread(String name, SimulationManager simulationManager, BlockingQueue<QueueItem> queue) {
- super("Simulation Thread " + name);
+ public SimulationJob(SimulationManager simulationManager,
+ SimulationItem item) {
this.simulationManager = simulationManager;
- this.queue = queue;
+ this.simItem = item;
}
-
- /* (non-Javadoc)
- * @see java.lang.Thread#run()
- */
- @Override
+
public void run() {
- log.info("Start simulation thread");
- while (true) {
- // item qui sert a faire la simulation courante
- QueueItem item = null;
- try {
- //
- // recheche d'une simulation
- //
- while (item == null) {
- log.debug("try to take simulation");
- item = queue.take();
- log.debug("Just take " + item.id);
- if (!simulationManager.exists(item.id)) {
- // on ne le retrouve pas dans la map, la simulation
- // a donc ete supprimée par l'utilisateur on passe a la
- // suivante
- item = null;
- } else if (!simulationManager.isAutoLaunch() && item.param.getInQueue()) {
- // don't use item, because is queue and queue is not launched
- queue.add(item);
- item = null;
- // sleep 1s. Because all other item is in queue too
- // this sleep permit to user to put not queue item,
- // with out eat cpu
- sleep(1000);
- }
- }
+ log.info("Start simulation : " + simItem.id);
+ simulationManager.waitAutoLaunch();
+ try {
+ // si l'simItem exist encore (que l'utilisateur ne la pas retire)
+ while (simulationManager.exists(simItem.getPlanIdOrId()) &&
+ simItem.hasNext()) {
+ SimulationItem item = simItem.next();
+ try {
+ String id = item.id;
- log.debug("use if has next simulation: " + item.id);
- if (item.hasNext()) {
- SimulationStorage sim = item.getSimulation();
- String simId = sim.getName();
- log.debug("Start simulation: " + simId);
+ log.debug("Start simulation: " + id);
+ SimulationStorage simulation = item.getSimulation();
SimulationControl control = item.control;
// set date to 0 at beginning of simulation
control.setDate(new Date());
control.setProgress(0);
+ control.setStarted(true);
- simulationManager.fireStartEvent(item.id);
+ simulationManager.fireStartEvent(id, item);
try {
- sim = SimulationHelper.simulate(control, sim);
- item.setLastSimulation(sim);
+ simulation = SimulationHelper.simulate(control, simulation);
+ item.setLastSimulation(simulation);
} finally {
- simulationManager.fireStopEvent(item.id);
+ simulationManager.fireStopEvent(id);
}
// copie les exports de simulation dans le repertoire
// souhaiter par l'utilisateur
- SimulationParameter param = sim.getParameter();
- if (param.getExportNames() != null && param.getExportNames().size() > 0) {
- File exportDir = SimulationStorage.getResultExportDirectory(sim.getDirectory());
+ SimulationParameter param = simulation.getParameter();
+ if (param.getExportNames() != null &&
+ param.getExportNames().size() > 0) {
+ File exportDir = SimulationStorage.getResultExportDirectory(
+ simulation.getDirectory());
FileUtil.copyAndRenameRecursively(
exportDir,
new File(param.getExportDirectory()),
- exportDir.getName(), item.id);
+ // FIXME, est-ce bien parentId et pas id ?
+ exportDir.getName(), id);
// FileUtil.copyAndRenameRecursively(
// exportDir,
// new File(sim.getDirectory(), IsisConfig.RESULT_EXPORT),
-// IsisConfig.RESULT_EXPORT, item.id);
+// IsisConfig.RESULT_EXPORT, simItem.id);
}
-
- if (item.hasNext() && simulationManager.exists(item.id)) {
- // il y a encore des simulations a faire pour cet item
- // on le remet dans la queue (on ne fait pas les autres
- // simulations de cet item
- // tout de suite car l'item peut-etre un item de queue
- // moins prioritaire que les autres simulations
- // il faut donc qu'il reprenne sa place dans l'ordre)
-
- queue.add(item);
- } else {
- // Si l'utilisateur souhaite seulement les exports
- // on supprimer la/les simulations. Il faut le faire
- // lorsqu'il n'y a plus de next car le calcul des plans
- // peut avoir besoin des simulations precedentes
- if (param.getOnlyExport()) {
- if (param.getUseAnalysePlan()) {
- for(File file : FileUtil.find(
- SimulationStorage.getSimulationDirectory(),
- item.id + "_[0-9]+$", false)) {
- log.debug("Delete simulation " + file);
- FileUtil.deleteRecursively(file);
- }
- } else {
- sim.delete(false);
- }
+ // Si l'utilisateur souhaite seulement les exports
+ // on supprimer la/les simulations.
+ // pour les plan dependant il faut le faire apres toutes
+ // les simulations
+ if (simItem.isIndependent() && param.getOnlyExport()) {
+ simulation.delete(false);
+ }
+ // on previent que c la fin de la simulation
+ simulationManager.fireRemoveEvent(id);
+ } catch (Throwable eee) {
+ try {
+ // on sauvegarde l'erreur rencontrée, elle sera traité lors
+ // du fireRemoveEvent
+ item.getSimulation().getInformation().setException(eee);
+ } catch (Exception e) {
+ if (log.isWarnEnabled()) {
+ log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
}
+ } finally {
+ // error during simulation, remove bad simulation
simulationManager.fireRemoveEvent(item.id);
-
- if (simulationManager.isAutoLaunch() && item.param.getInQueue()) {
- // if item is last in queue, stop the queue after that
- QueueItem [] items = queue.toArray(new QueueItem[queue.size()]);
- if (items.length > 0) {
- QueueItem last = items[items.length-1];
- if (!last.param.getInQueue()) {
- // la derniere n'est pas en queue, donc plus de simulation en queue
- simulationManager.setAutoLaunch(false);
- }
- } else {
- // aucun simulation, donc forcement plus en queue non plus
- simulationManager.setAutoLaunch(false);
- }
+ if (log.isWarnEnabled()) {
+ log.warn(_("isisfish.error.during.simulation", item.id), eee);
}
}
}
-
-// } catch (Exception eee) {
- } catch (Throwable eee) {
- try {
- // on sauvegarde l'erreur rencontrée, elle sera traité lors
- // du fireRemoveEvent
- item.lastSimulation.getInformation().setException(eee);
- } catch (Exception e) {
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.during.simulation.information.file", item.id), eee);
- }
- } finally {
- // error during simulation, remove bad simulation
- simulationManager.fireRemoveEvent(item.id);
- if (log.isWarnEnabled()) {
- log.warn(_("isisfish.error.during.simulation", item.id), eee);
- }
- }
-
- } finally {
- item = null;
}
+ } catch (Exception eee) {
+ log.error("Can't take next simulation: " + simItem.id, eee);
}
- }
+ // suppression des simulations pour les plans dependants
+ // Si l'utilisateur souhaite seulement les exports
+ // on supprimer la/les simulations. Il faut le faire
+ // lorsqu'il n'y a plus de next car le calcul des plans
+ // peut avoir besoin des simulations precedentes
+ if (!simItem.isIndependent() && simItem.param.getOnlyExport()) {
+ for (File file : FileUtil.find(
+ SimulationStorage.getSimulationDirectory(),
+ simItem.id + "_[0-9]+$", false)) {
+ log.debug("Delete simulation " + file);
+ FileUtil.deleteRecursively(file);
+ }
+ }
+
+ if (!simItem.control.isRunning() && simItem.hasSimulation()) {
+ // c'etait la derniere simulation du plan, on arrete le plan
+ simulationManager.fireStopEvent(simItem.id);
+ simulationManager.fireRemoveEvent(simItem.id);
+ }
+ }
}
/**
- * Permet de comparer les simulations pour les ordonner.
- * Les simulations de queue soit moins prioritaire que les autres, ensuite
- * l'ordre se fait sur la date d'arrivé dans la queue de simulation
- *
- * @author poussin
+ * Une simulation a faire sans plan d'experience
*/
- public class QueueItem implements Comparable<QueueItem> {
-
- protected long time;
+ public class SimulationItem {
+
protected String id;
protected SimulationParameter param;
- protected PlanGenerator plan = null;
+ protected SimulationItemPlan planItem = null;
protected File zip;
protected SimulationControl control;
protected SimulationStorage lastSimulation = null;
- public QueueItem(String id, SimulationParameter param) {
- this.time = System.nanoTime();
+ protected SimulationItem() {
+ }
+
+ public boolean isIndependent() {
+ return true;
+ }
+
+ /**
+ * Utilise pour servir sous simItem pour les items de plan d'experience
+ * @param id
+ * @param control
+ * @param sim
+ */
+ public SimulationItem(SimulationItemPlan planItem, SimulationControl control,
+ SimulationStorage sim) {
+ this.planItem = planItem;
+ this.id = sim.getName();
+ param = sim.getParameter();
+ this.control = control;
+ lastSimulation = sim;
+ }
+
+ /**
+ * Retourne l'id du plan qui a genere cet item, si cet item n'est
+ * pas genere par un plan, retourne directement l'id
+ * @return
+ */
+ public String getPlanIdOrId() {
+ String result = id;
+ if (hasPlanItem()) {
+ result = getPlanItem().id;
+ }
+ return result;
+ }
+
+ public SimulationItemPlan getPlanItem() {
+ return planItem;
+ }
+
+ public boolean hasPlanItem() {
+ boolean result = planItem != null;
+ return result;
+ }
+
+ /**
+ * creer un simItem de simulation et prepare le zip
+ * @param id
+ * @param param
+ */
+ public SimulationItem(String id, SimulationParameter param) {
this.id = id;
this.param = param;
this.control = new SimulationControl(id);
- // ne pas inverser la creation de PlanGenerator et du zip.
- // car le init des plans est fait dans le constructeur de
- // PlanGenerator, et le init peut modifier les parametres
- // de simulation
- if (param.getUseAnalysePlan()) {
- plan = new PlanGenerator(id, control, param);
- }
zip = SimulationHelper.prepareSimulationZipFile(control, param, true);
- if (plan != null) {
- plan.setZip(zip);
- }
}
-
+
+ public boolean hasSimulation() {
+ boolean result = lastSimulation != null;
+ return result;
+ }
+
/**
* Retourne la simulation qu'il faut faire
* @return le storage de simulation
* @throws Exception si problème pendant l'import de la simulation
*/
public SimulationStorage getSimulation() throws Exception {
- SimulationStorage result;
- if (plan != null) {
- result = plan.next();
- } else {
- result = SimulationStorage.importAndRenameZip(zip, id);
+ if (lastSimulation == null) {
+ lastSimulation = SimulationStorage.importAndRenameZip(zip, id);
}
- lastSimulation = result;
- return result;
+ return lastSimulation;
}
/**
@@ -512,8 +888,8 @@
*/
public void setLastSimulation(SimulationStorage lastSimulation) {
this.lastSimulation = lastSimulation;
- if (plan != null) {
- plan.setLastSimulation(lastSimulation);
+ if (hasPlanItem()) {
+ getPlanItem().setLastSimulation(lastSimulation);
}
}
@@ -524,18 +900,26 @@
*/
public boolean hasNext() {
boolean result;
- result = (plan != null && plan.hasNext()) || lastSimulation == null;
+ result = !control.isStarted();
return result;
}
-
+
+ /**
+ * Ce retourne lui meme, car il n'y a pas de plan
+ * @return
+ */
+ public SimulationItem next() throws Exception {
+ return this;
+ }
+
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
boolean result = false;
- if (obj instanceof QueueItem) {
- result = param.equals(((QueueItem)obj).param);
+ if (obj instanceof SimulationItem) {
+ result = param.equals(((SimulationItem)obj).param);
}
return result;
}
@@ -543,33 +927,164 @@
@Override
public int hashCode() {
int hash = 3;
- hash = 37 * hash + (this.param != null ? this.param.hashCode() : 0);
+ hash = 53 * hash + (this.param != null ? this.param.hashCode() : 0);
return hash;
}
+
+ }
- /* (non-Javadoc)
- * @see java.lang.Comparable#compareTo(java.lang.Object)
+ /**
+ * Une simulation a faire qui contient un plan d'experience dependant
+ */
+ public class SimulationItemPlan extends SimulationItem
+ implements PropertyChangeListener {
+ // FIXME a mettre en config MAX_SIMULATION_PLAN
+ // nombre maximal de simulation de plan par simulation
+ // (pour eviter les plans qui ne retroune jamais faux
+ protected static final int MAX_SIMULATION_PLAN = 10000;
+
+ protected int simulationNumber = 0;
+ protected int simulationFinished = 0;
+ protected PlanGenerator plan = null;
+
+ public SimulationItemPlan(String id, SimulationParameter param) {
+ this.id = id;
+ this.param = param;
+ this.control = new SimulationControl(id);
+ // ne pas inverser la creation de PlanGenerator et du zip.
+ // car le init des plans est fait dans le constructeur de
+ // PlanGenerator, et le init peut modifier les parametres
+ // de simulation
+ if (!param.getUseAnalysePlan()) {
+ throw new SimulationException("Your simulation is not a plan:" + id);
+ }
+
+ plan = new PlanGenerator(id, control, param);
+ zip = SimulationHelper.prepareSimulationZipFile(control, param, true);
+ plan.setZip(zip);
+ }
+
+ @Override
+ public boolean isIndependent() {
+ return false;
+ }
+
+ /**
+ * Retourne la simulation qu'il faut faire
+ * @return le storage de simulation
+ * @throws Exception si problème pendant l'import de la simulation
*/
- public int compareTo(QueueItem o) {
- int result;
+ @Override
+ public SimulationStorage getSimulation() throws Exception {
+ throw new UnsupportedOperationException("Plan item don't have simulation");
+ }
- boolean inQueue1 = param.getInQueue();
- boolean inQueue2 = o.param.getInQueue();
- if (inQueue1 == inQueue2) {
- // this et o ont la meme valeur, on compare les temps
- // le plus vieux devant (donc le plus petit)
- result = time<o.time ? -1 : (time==o.time ? 0 : 1);
- } else if (inQueue1) {
- // this est dans la queue donc moins prioritaire
- // on le met donc a la fin
- result = 1;
- } else {
- // o est dans la queue donc moins prioritaire
- result = -1;
+ /**
+ * Retourne la simulation qu'il faut faire
+ * @return le storage de simulation
+ * @throws Exception si problème pendant l'import de la simulation
+ */
+ public SimulationStorage getNextSimulation() throws Exception {
+ SimulationStorage result;
+ result = plan.next();
+ simulationNumber++;
+ lastSimulation = result;
+ return result;
+ }
+
+ /**
+ * Appelé apres que la simulation est vraiment eu lieu. On en a besoin
+ * car pour une simulation distante apres la simulation le storage
+ * a ete changé par rapport au storage initialement cree pour la
+ * simulation
+ *
+ * @param lastSimulation The lastSimulation to set.
+ */
+ @Override
+ public void setLastSimulation(SimulationStorage lastSimulation) {
+ this.lastSimulation = lastSimulation;
+ plan.setLastSimulation(lastSimulation);
+ }
+
+ /**
+ * @return <code>true</code> s'il y a encore une simulation si on
+ * utilise un plan et qu'il dit qu'il y en a encore, ou si la simulation
+ * n'a pas encore ete faite.
+ */
+ @Override
+ public boolean hasNext() {
+ boolean result;
+ result = simulationNumber < MAX_SIMULATION_PLAN &&
+ ((plan != null && plan.hasNext()) || lastSimulation == null);
+ return result;
+ }
+
+ /**
+ * On utilise le meme control pour les plans dependants
+ * @return
+ */
+ @Override
+ public SimulationItem next() throws Exception {
+ SimulationStorage sim = getNextSimulation();
+ SimulationItem result = new SimulationItem(this, control, sim);
+ return result;
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ // Attention il faut bien que toutes les simultions soit
+ // genere (ou qu'il en reste au moins une en cours
+ // sinon, la condition est tout de suite vrai et la simulation
+ // s'arrete. Ce qui est normalement le cas ici, car on utilise
+ // le meme executor pour genere les simultions que pour les faire
+ // et les generes est mis en premier dans l'executor, mais si
+ // on est multi cpu, et que le temps de simulation est inferieur
+ // au temps de generation des simulations, on pourrai finir par
+ // avoir un probleme.
+
+ if (Boolean.FALSE.equals(evt.getNewValue())) {
+ simulationFinished++;
+ control.setProgress(simulationFinished);
+ control.setText(simulationFinished + " / " + simulationNumber);
+ if (simulationFinished >= simulationNumber) {
+ log.info("All simulations have been executed: " + simulationFinished);
+ control.stopSimulation();
+ String id = control.getId();
+ SimulationManager.this.fireStopEvent(id);
+ SimulationManager.this.fireRemoveEvent(id);
+ }
}
+ }
+ }
+
+ /**
+ * Une simulation a faire qui contient un plan d'experience independant
+ */
+ public class SimulationItemPlanIndependent extends SimulationItemPlan {
+
+ public SimulationItemPlanIndependent(String id, SimulationParameter param) {
+ super(id, param);
+ }
+
+ @Override
+ public boolean isIndependent() {
+ return true;
+ }
+
+ /**
+ * On utilise un nouveau control pour les plans independants
+ * @return
+ */
+ @Override
+ public SimulationItem next() throws Exception {
+ SimulationStorage sim = getNextSimulation();
+ control.setProgressMax(simulationNumber);
+ SimulationControl control = new SimulationControl(sim.getName());
+ control.addPropertyChangeListener("running", this);
+ SimulationItem result = new SimulationItem(this, control, sim);
return result;
}
+
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationMeta.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -5,7 +5,7 @@
import fr.ifremer.isisfish.ui.widget.filter.FilterParamModel;
import fr.ifremer.isisfish.ui.widget.filter.ValueGetter;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -44,7 +44,7 @@
import fr.ifremer.isisfish.rule.RuleHelper;
import fr.ifremer.isisfish.util.ConverterUtil;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.math.matrix.MatrixFactory;
import org.codelutin.math.matrix.MatrixHelper;
import org.codelutin.math.matrix.MatrixND;
@@ -127,6 +127,9 @@
/** La simulation doit etre faite en local */
protected boolean local = true;
+ /** La simulation doit etre faite dans un sous process */
+ protected boolean subProcess = false;
+
/** La simulation doit etre lancé dans la queue de simulation (non prioritaire)*/
protected boolean inQueue = false;
@@ -273,6 +276,7 @@
result.setProperty("exports", exportList);
result.setProperty("local", String.valueOf(local));
+ result.setProperty("subProcess", String.valueOf(subProcess));
result.setProperty("inQueue", String.valueOf(inQueue));
result.setProperty("usePreScript", String.valueOf(usePreScript));
result.setProperty("preScript", preScript);
@@ -415,6 +419,7 @@
}
local = Boolean.parseBoolean(props.getProperty("local", "true"));
+ subProcess = Boolean.parseBoolean(props.getProperty("subProcess", "false"));
inQueue = Boolean.parseBoolean(props.getProperty("inQueue", "false"));
usePreScript = Boolean.parseBoolean(props.getProperty("usePreScript",
"false"));
@@ -680,7 +685,14 @@
this.local = local;
}
+ public void setSubProcess(boolean subProcess) {
+ this.subProcess = subProcess;
+ }
+ public boolean isSubProcess() {
+ return subProcess;
+ }
+
/**
* @return Returns the inQueue.
*/
@@ -715,6 +727,17 @@
public boolean getUseStatistic() {
return this.useStatistic;
}
+
+ public boolean isIndependentPlan() {
+ boolean result = true;
+ for (AnalysePlan plan : getAnalysePlans()) {
+ if (!(plan instanceof AnalysePlanIndependent)) {
+ result = false;
+ break;
+ }
+ }
+ return result;
+ }
/**
* @param useStatistic The useStatistic to set.
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationProperties.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,9 +1,8 @@
package fr.ifremer.isisfish.simulator;
-import fr.ifremer.isisfish.IsisConfig;
+import static org.codelutin.i18n.I18nf._;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import org.codelutin.i18n.I18n;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,7 +50,7 @@
reader = new FileReader(file);
this.data.load(reader);
} catch (IOException e) {
- log.warn(I18n._("isisfish.error.load.file", file));
+ log.warn(_("isisfish.error.load.file", file));
} finally {
if (reader != null) try {
reader.close();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModel.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,6 +31,9 @@
package fr.ifremer.isisfish.simulator;
+import java.util.ArrayList;
+import java.util.List;
+
/** @author poussin */
public class SimulationQueueModel extends AbstractSimulationQueueModel {
@@ -53,13 +56,13 @@
* @see AbstractSimulationQueueModel at getSimulationIds()
*/
protected java.util.List<String> getSimulationIds() {
- return getQueue().ids;
+ return getQueue().getIds();
}
/* (non-Javadoc)
* @see AbstractSimulationQueueModel at getQueueItemsAsMap()
*/
- protected java.util.Map<String, SimulationManager.QueueItem> getQueueItemsAsMap() {
+ protected java.util.Map<String, SimulationManager.SimulationItem> getQueueItemsAsMap() {
return getQueue().map;
}
@@ -70,7 +73,11 @@
int row = getRowCount();
fireTableRowsInserted(row, row);
SimulationControl control = getSimulationControl(e.getId());
- control.addPropertyChangeListener(this);
+ if (control != null) {
+ control.addPropertyChangeListener(this);
+ } else {
+ log.warn("Simulation without controler: " + e.getId());
+ }
}
/* (non-Javadoc)
@@ -89,18 +96,4 @@
progress.remove(id);
}
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStart(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStop(SimulationQueueEvent e) {
- // nothing to do
- }
-
} // SimulationQueueModel
\ No newline at end of file
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModelOld.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModelOld.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationQueueModelOld.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,409 +0,0 @@
-/* *##%
- * Copyright (C) 2006
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 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.
- *##%*/
-
-/* *
- * SimulationQueueModel.java
- *
- * Created: 18 août 2006 00:05:41
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
-package fr.ifremer.isisfish.simulator;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.awt.Component;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.swing.JComponent;
-import javax.swing.JProgressBar;
-import javax.swing.JTable;
-import javax.swing.event.EventListenerList;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableModel;
-
-import org.codelutin.log.LutinLog;
-import org.codelutin.log.LutinLogFactory;
-
-
-/**
- * @author poussin
- *
- */
-
-public class SimulationQueueModelOld extends JComponent implements TableModel, SimulationQueueListener, PropertyChangeListener {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private LutinLog log = LutinLogFactory.getLutinLog(SimulationQueueModel.class);
-
- /** List of listeners */
- protected EventListenerList listenerList = new EventListenerList();
-
- protected SimulationManager queue;
- protected String [] header = new String[]{_("isisfish.queue.id"),_("isisfish.queue.plan"),_("isisfish.queue.name"),_("isisfish.queue.local"),_("isisfish.queue.status"),_("isisfish.queue.progression")};
- protected Class [] columnClass = new Class[]{String.class, String.class, Boolean.class, Boolean.class, String.class, JProgressBar.class};
-
- protected Map<String, JProgressBar> progress = new HashMap<String, JProgressBar>();
-
- /**
- * use SimulationQueue.getInstance() as queue
- */
- public SimulationQueueModelOld() {
- this(SimulationManager.getInstance());
- }
-
- /**
- * if queue is null, then the model used SimulationQueue.getInstance() as queue
- */
- public SimulationQueueModelOld(SimulationManager queue) {
- this.queue = queue;
- if (queue == null) {
- this.queue = SimulationManager.getInstance();
- }
- this.queue.addSimulationQueueListener(this);
-
- // add this model as listener on all already launched simulation
- for (String id : this.queue.ids) {
- SimulationControl control = this.queue.getControl(id);
- if (control != null) {
- control.addPropertyChangeListener(this);
- }
- }
- }
-
- /**
- * @param queue The queue to set.
- */
- public void setQueue(SimulationManager queue) {
- this.queue = queue;
- fireTableDataChanged();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getRowCount()
- */
- public int getRowCount() {
- int result = queue.ids.size();
- return result;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- public int getColumnCount() {
- return header.length;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#getColumnName(int)
- */
- public String getColumnName(int column) {
- return header[column];
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
- */
- public Class<?> getColumnClass(int columnIndex) {
- return columnClass[columnIndex];
- }
-
- public SimulationControl getSimulationControl(int rowIndex) {
- SimulationControl result = null;
- if (rowIndex >= 0) {
- String id = queue.ids.get(rowIndex);
- result = queue.getControl(id);
- } else {
- log.user(_("isisfish.error.invalide.simulation.index"));
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- public Object getValueAt(int rowIndex, int columnIndex) {
- Object result = "";
- if (rowIndex >= queue.ids.size()) {
- return "error";
- }
- String id = queue.ids.get(rowIndex);
- SimulationControl control = queue.getControl(id);
- switch (columnIndex) {
- case 0:
- result = id;
- break;
- case 1:
- int number = queue.getParameter(id).getAnalysePlanNumber();
- if (number >= 0) {
- result = number;
- } else {
- result = _("isisfish.common.no");
- }
- break;
- case 2:
- result = queue.getParameter(id).getInQueue();
- break;
- case 3:
- result = queue.getParameter(id).getLocal();
- break;
- case 4:
- if (control != null) {
- if (control.isStopSimulationRequest()) {
- result = _("isisfish.launch.stop");
- } else {
- result = control.getText();
- }
- }
- break;
- case 5:
- JProgressBar pb = getProgressBar(id);
- if (control != null) {
- pb.setMaximum(control.getProgressMax());
- pb.setValue(control.getProgress());
- pb.setString(control.date.getMonth() + "/" + control.date.getYear());
- }
- result = pb;
- break;
- }
- return result;
- }
-
- protected JProgressBar getProgressBar(String id) {
- JProgressBar result = progress.get(id);
- if (result == null) {
- result = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
- result.setStringPainted(true);
- progress.put(id, result);
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent evt) {
- SimulationControl control = (SimulationControl)evt.getSource();
- int row = queue.ids.indexOf(control.getId());
- fireTableRowsUpdated(row, row);
- }
-
- /* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationAdded(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationAdded(SimulationQueueEvent e) {
- int row = getRowCount();
- fireTableRowsInserted(row, row);
- SimulationControl control = queue.getControl(e.getId());
- control.addPropertyChangeListener(this);
- }
-
- /* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationRemoved(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationWillBeRemoved(SimulationQueueEvent e) {
- String id = e.getId();
-
- SimulationControl control = queue.getControl(id);
- if (control != null) {
- control.removePropertyChangeListener(this);
- }
-
- int row = queue.ids.indexOf(id);
- fireTableRowsDeleted(row, row);
- progress.remove(id);
- }
-
- /* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStart(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStart(SimulationQueueEvent e) {
- // nothing to do
- }
- /* (non-Javadoc)
- * @see fr.ifremer.isisfish.simulator.SimulationQueueListener#simulationStop(fr.ifremer.isisfish.simulator.SimulationQueueEvent)
- */
- public void simulationStop(SimulationQueueEvent e) {
- // nothing to do
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#isCellEditable(int, int)
- */
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return false;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
- */
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#addTableModelListener(javax.swing.event.TableModelListener)
- */
- public void addTableModelListener(TableModelListener l) {
- listenerList.add(TableModelListener.class, l);
- if (l instanceof JTable) {
- ((JTable)l).setDefaultRenderer(JProgressBar.class, new JProgressBarTableCellRenderer());
- }
-
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#removeTableModelListener(javax.swing.event.TableModelListener)
- */
- public void removeTableModelListener(TableModelListener l) {
- listenerList.remove(TableModelListener.class, l);
- }
-
- /**
- * Notifies all listeners that all cell values in the table's
- * rows may have changed. The number of rows may also have changed
- * and the <code>JTable</code> should redraw the
- * table from scratch. The structure of the table (as in the order of the
- * columns) is assumed to be the same.
- *
- * @see TableModelEvent
- * @see EventListenerList
- * @see JTable#tableChanged(TableModelEvent)
- */
- public void fireTableDataChanged() {
- fireTableChanged(new TableModelEvent(this));
- }
-
- /**
- * Notifies all listeners that the table's structure has changed.
- * The number of columns in the table, and the names and types of
- * the new columns may be different from the previous state.
- * If the <code>JTable</code> receives this event and its
- * <code>autoCreateColumnsFromModel</code>
- * flag is set it discards any table columns that it had and reallocates
- * default columns in the order they appear in the model. This is the
- * same as calling <code>setModel(TableModel)</code> on the
- * <code>JTable</code>.
- *
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableStructureChanged() {
- fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been inserted.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- *
- * @see TableModelEvent
- * @see EventListenerList
- *
- */
- public void fireTableRowsInserted(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been updated.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- *
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsUpdated(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.UPDATE));
- }
-
- /**
- * Notifies all listeners that rows in the range
- * <code>[firstRow, lastRow]</code>, inclusive, have been deleted.
- *
- * @param firstRow the first row
- * @param lastRow the last row
- *
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableRowsDeleted(int firstRow, int lastRow) {
- fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
- TableModelEvent.ALL_COLUMNS, TableModelEvent.DELETE));
- }
-
- /**
- * Notifies all listeners that the value of the cell at
- * <code>[row, column]</code> has been updated.
- *
- * @param row row of cell which has been updated
- * @param column column of cell which has been updated
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableCellUpdated(int row, int column) {
- fireTableChanged(new TableModelEvent(this, row, row, column));
- }
-
- /**
- * Forwards the given notification event to all
- * <code>TableModelListeners</code> that registered
- * themselves as listeners for this table model.
- *
- * @param e the event to be forwarded
- *
- * @see #addTableModelListener
- * @see TableModelEvent
- * @see EventListenerList
- */
- public void fireTableChanged(TableModelEvent e) {
- // Guaranteed to return a non-null array
- Object[] listeners = listenerList.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event
- for (int i = listeners.length-2; i>=0; i-=2) {
- if (listeners[i]==TableModelListener.class) {
- ((TableModelListener)listeners[i+1]).tableChanged(e);
- }
- }
- }
-
-
- public class JProgressBarTableCellRenderer implements TableCellRenderer {
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- return (JProgressBar)value;
- }
- }// JProgressBarTableCellRenderer
-
-}
\ No newline at end of file
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulationResultXML.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -41,7 +41,7 @@
import org.apache.commons.logging.LogFactory;
import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFishException;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -30,7 +30,7 @@
package fr.ifremer.isisfish.simulator;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.util.Hashtable;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Date.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Date.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Date.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.types;
import java.io.Serializable;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
/**
* This object can't be modified. If this beaviour is modified pay attention
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Month.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Month.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/types/Month.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -22,7 +22,7 @@
package fr.ifremer.isisfish.types;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.Serializable;
import java.util.ArrayList;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/types/TimeUnit.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/types/TimeUnit.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/types/TimeUnit.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.types;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.Serializable;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/ScriptActionHelper.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -20,16 +20,16 @@
package fr.ifremer.isisfish.ui;
import fr.ifremer.isisfish.ui.script.Action;
-import fr.ifremer.isisfish.ui.script.ExportDialog;
-import fr.ifremer.isisfish.ui.script.ImportDialog;
-import fr.ifremer.isisfish.ui.script.action.CancelAction;
-import fr.ifremer.isisfish.ui.script.action.ExportAction;
-import fr.ifremer.isisfish.ui.script.action.ImportAction;
+//import fr.ifremer.isisfish.ui.script.ExportDialog;
+//import fr.ifremer.isisfish.ui.script.ImportDialog;
+//import fr.ifremer.isisfish.ui.script.action.CancelAction;
+//import fr.ifremer.isisfish.ui.script.action.ExportAction;
+//import fr.ifremer.isisfish.ui.script.action.ImportAction;
import fr.ifremer.isisfish.IsisFish;
-import org.codelutin.vcs.ui.FieldModelUtil;
+//import org.codelutin.vcs.ui.FieldModelUtil;
import org.apache.commons.logging.Log;
-import static org.apache.commons.logging.LogFactory.getLog;
-import static org.codelutin.i18n.I18n._;
+import org.apache.commons.logging.LogFactory;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.util.FileUtil;
import org.codelutin.util.ZipUtil;
import org.swixat.framework.AbstractFrame;
@@ -47,116 +47,125 @@
* @author tony
*/
public class ScriptActionHelper {
- static private Log log = getLog(ScriptActionHelper.class);
+ static private Log log = LogFactory.getLog(ScriptActionHelper.class);
public static boolean importScript(File file, boolean force, boolean useUI, AbstractFrame frame) throws IOException {
- if (file == null && useUI) {
- // ask user form a .zscript file
- file = FileUtil.getFile(".*.zip$", _("isisfish.message.import.scripts.zipped"));
- }
- if (file == null || !file.exists()) {
- //TODO log
- return false;
- }
- String message = _("isisfish.message.import.scripts.file", file);
- logMessage(useUI, frame, message);
-
- File root = IsisFish.config.getDatabaseDirectory();
-
- // get two list of relative path (one for new files,one for exisiting files)
- List<String>[] explode = ZipUtil.scanAndExplodeZip(file, root, Action.getSCRIPT_FILE_FILTER());
-
- // build model for dialog (list of new items), (list of exisiting items)
- boolean noNew = explode[0].size() == 0;
- boolean noConflict = explode[1].size() == 0;
- FieldModelUtil.ModuleFile<String> modelNewItems = null;
- FieldModelUtil.ModuleFile<String> modelItems = null;
- ImportAction okAction;
- ImportDialog dialog = null;
- CancelAction cancelAction = null;
-
- if (!noNew) {
- modelNewItems = FieldModelUtil.createModuleFileTableModelWithSelect(explode[0]);
- modelNewItems.checkAll();
- }
- if (!noConflict) {
- modelItems = FieldModelUtil.createModuleFileTableModelWithSelect(explode[1]);
- // check if you can overwritte existing files
- if (!useUI && !force) {
- // this is an error, quit
- throw new IllegalArgumentException(_("isisfish.error.import.scripts.force"));
- }
- modelItems.checkAll();
- }
-
- if (useUI) {
- // create import dialog
- dialog = new ImportDialog();
- // create cancel action
- cancelAction = new CancelAction(dialog);
- }
- // create import action
- okAction = new ImportAction(dialog, file, root, modelNewItems, modelItems);
-
- if (useUI) {
- // prepare dialog and launch
- dialog.prepareDialog(20, modelNewItems, modelItems, file, okAction, cancelAction, true);
- } else {
- okAction.actionPerformed(null);
- }
- // after action
- return cancelAction == null || !cancelAction.isUsed();
+ // FIXME a reimplanter
+ throw new UnsupportedOperationException("En reparation");
+
+// if (file == null && useUI) {
+// // ask user form a .zscript file
+// file = FileUtil.getFile(".*.zip$", _("isisfish.message.import.scripts.zipped"));
+// }
+// if (file == null || !file.exists()) {
+// //TODO log
+// return false;
+// }
+// String message = _("isisfish.message.import.scripts.file", file);
+// logMessage(useUI, frame, message);
+//
+// File root = IsisFish.config.getDatabaseDirectory();
+//
+// // get two list of relative path (one for new files,one for exisiting files)
+// List<String>[] explode = ZipUtil.scanAndExplodeZip(
+// file, root, Action.getSCRIPT_FILE_FILTER());
+//
+// // build model for dialog (list of new items), (list of exisiting items)
+// boolean noNew = explode[0].size() == 0;
+// boolean noConflict = explode[1].size() == 0;
+// FieldModelUtil.ModuleFile<String> modelNewItems = null;
+// FieldModelUtil.ModuleFile<String> modelItems = null;
+// ImportAction okAction;
+// ImportDialog dialog = null;
+// CancelAction cancelAction = null;
+//
+// if (!noNew) {
+// modelNewItems = FieldModelUtil.createModuleFileTableModelWithSelect(
+// explode[0]);
+// modelNewItems.checkAll();
+// }
+// if (!noConflict) {
+// modelItems = FieldModelUtil.createModuleFileTableModelWithSelect(
+// explode[1]);
+// // check if you can overwritte existing files
+// if (!useUI && !force) {
+// // this is an error, quit
+// throw new IllegalArgumentException(_("isisfish.error.import.scripts.force"));
+// }
+// modelItems.checkAll();
+// }
+//
+// if (useUI) {
+// // create import dialog
+// dialog = new ImportDialog();
+// // create cancel action
+// cancelAction = new CancelAction(dialog);
+// }
+// // create import action
+// okAction = new ImportAction(dialog, file, root, modelNewItems, modelItems);
+//
+// if (useUI) {
+// // prepare dialog and launch
+// dialog.prepareDialog(20, modelNewItems, modelItems, file, okAction, cancelAction, true);
+// } else {
+// okAction.actionPerformed(null);
+// }
+// // after action
+// return cancelAction == null || !cancelAction.isUsed();
}
public static boolean exportScript(File dst, List<String> listFiles, boolean force, boolean useUI, AbstractFrame frame) throws IOException {
- if (dst == null && useUI) {
- // ask user form a .zscript file
- String f = FileUtil.getDirectory();
- String pattern = Action.dateFormat.format(new Date());
- dst = f == null ? null : new File(dst, "exportScript-" + pattern + ".zip");
- }
- if (dst == null) {
- //TODO log
- return false;
- }
- if (dst.exists()) {
- if (!useUI && !force) {
- // this is an error, quit
- throw new IllegalArgumentException(_("isisfish.error.export.scripts.force"));
- }
- }
- File root = IsisFish.config.getDatabaseDirectory();
+ // FIXME a reimplanter
+ throw new UnsupportedOperationException("En reparation");
- String message = _("isisfish.message.export.scripts.file", dst);
- logMessage(useUI, frame, message);
-
- // create model
- FieldModelUtil.ModuleFile<String> model = FieldModelUtil.createModuleFileTableModelWithSelect(listFiles);
- model.checkAll();
- ExportDialog dialog = null;
- CancelAction cancelAction = null;
- ExportAction okAction;
- JTextField field;
-
- if (useUI) {
- dialog = new ExportDialog();
- cancelAction = new CancelAction(dialog);
- field = dialog.getArchivePath();
- } else {
- field = new JTextField(dst.getAbsolutePath());
- }
-
- okAction = new ExportAction(dialog, field, root, model);
-
- if (useUI) {
- // launch export dialog
- dialog.prepareDialog(10, model, dst.getAbsolutePath(), okAction, cancelAction, true);
- } else {
- // perform export
- okAction.actionPerformed(null);
- }
- // after action
- return cancelAction == null || !cancelAction.isUsed();
+// if (dst == null && useUI) {
+// // ask user form a .zscript file
+// String f = FileUtil.getDirectory();
+// String pattern = Action.dateFormat.format(new Date());
+// dst = f == null ? null : new File(dst, "exportScript-" + pattern + ".zip");
+// }
+// if (dst == null) {
+// //TODO log
+// return false;
+// }
+// if (dst.exists()) {
+// if (!useUI && !force) {
+// // this is an error, quit
+// throw new IllegalArgumentException(_("isisfish.error.export.scripts.force"));
+// }
+// }
+// File root = IsisFish.config.getDatabaseDirectory();
+//
+// String message = _("isisfish.message.export.scripts.file", dst);
+// logMessage(useUI, frame, message);
+//
+// // create model
+// FieldModelUtil.ModuleFile<String> model = FieldModelUtil.createModuleFileTableModelWithSelect(listFiles);
+// model.checkAll();
+// ExportDialog dialog = null;
+// CancelAction cancelAction = null;
+// ExportAction okAction;
+// JTextField field;
+//
+// if (useUI) {
+// dialog = new ExportDialog();
+// cancelAction = new CancelAction(dialog);
+// field = dialog.getArchivePath();
+// } else {
+// field = new JTextField(dst.getAbsolutePath());
+// }
+//
+// okAction = new ExportAction(dialog, field, root, model);
+//
+// if (useUI) {
+// // launch export dialog
+// dialog.prepareDialog(10, model, dst.getAbsolutePath(), okAction, cancelAction, true);
+// } else {
+// // perform export
+// okAction.actionPerformed(null);
+// }
+// // after action
+// return cancelAction == null || !cancelAction.isUsed();
}
private static void logMessage(boolean useUI, AbstractFrame frame, String message) {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/Welcome.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/Welcome.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/Welcome.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -34,35 +34,33 @@
import fr.ifremer.isisfish.ui.input.Input;
import fr.ifremer.isisfish.ui.result.ResultView;
import fr.ifremer.isisfish.vcs.VCSException;
-import org.codelutin.vcs.VCSAction;
-import org.codelutin.vcs.VCSRepositoryState;
-import org.codelutin.vcs.VCSFileState;
-import org.codelutin.vcs.VCSHelper;
-import fr.ifremer.isisfish.versionning.ui.VCSUIHelper;
-import fr.ifremer.isisfish.versionning.IsisRepositoryState;
-import fr.ifremer.isisfish.IsisConfig;
+//import org.codelutin.vcs.VCSAction;
+//import org.codelutin.vcs.VCSRepositoryState;
+//import org.codelutin.vcs.VCSFileState;
+//import org.codelutin.vcs.VCSHelper;
+//import fr.ifremer.isisfish.versionning.ui.VCSUIHelper;
+//import fr.ifremer.isisfish.versionning.IsisRepositoryState;
import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.actions.VCSAction;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.FormuleStorage;
import fr.ifremer.isisfish.datastore.RuleStorage;
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.vcs.VCSNone;
+import fr.ifremer.isisfish.vcs.VCS;
import org.swixat.framework.AbstractFrame;
import org.swixat.framework.OutputView;
import org.swixat.model.GenericContext;
-import static org.codelutin.i18n.I18n._;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.topia.TopiaContext;
-import org.codelutin.option.ui.ConfigUI;
+//import org.codelutin.option.ui.ConfigUI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.JLabel;
import static javax.swing.JOptionPane.showMessageDialog;
import java.util.List;
import java.util.EnumSet;
@@ -74,8 +72,8 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(Welcome.class);
- static protected VCSNone getVCS() {
- return IsisFish.config.getVCS();
+ static protected VCS getVCS() {
+ return IsisFish.vcs;
}
/**
@@ -99,7 +97,7 @@
}
/**
- * Permet d'ouvrir une nouvelle fenetre de rendu des resultats
+ * Permet d'ouvrir une nouvelle fenetre de saisie
*
* @return null ou un fenetre d'erreur
*/
@@ -132,69 +130,68 @@
public static void updateVCS(AbstractFrame frame)
throws VCSException {
- try {
+ // FIXME a reimplanter
+ throw new UnsupportedOperationException("En reparation");
- boolean hasFrame = frame != null;
-
- if (!getVCS().isConnected()) {
- String errorMsg = I18n._("isisfish.error.not.connected");
- if (hasFrame) {
- frame.viewOutput(new OutputView("Error.xml", "error", errorMsg));
- } else {
- log.error(errorMsg);
- }
- return;
- }
- if (hasFrame) {
- frame.setInfoText(_("isisfish.message.search.data"));
- }
-
- EnumSet<VCSAction> actions = VCSHelper.getAuthorizedActions();
-
- // init repo synchrinization
- VCSRepositoryState repoState = new IsisRepositoryState(IsisFish.config.getDatabaseDirectory(),actions,
- AnalysePlanStorage.getAnalysePlanDirectory(),
- ExportStorage.getExportDirectory(),
- FormuleStorage.getFormuleDirectory(),
- RuleStorage.getRuleDirectory(),
- ScriptStorage.getScriptDirectory(),
- SimulatorStorage.getSimulatorDirectory());
-
- // create ui models
- repoState.createUIModels();
-
- // obtain from user files to treate from repo state
- List<VCSFileState> filesToTreate = VCSUIHelper.showUpdateDialog(repoState);
-
- if (filesToTreate == null || filesToTreate.isEmpty()) {
- // nothing more to do here
- if (hasFrame) {
- frame.setInfoText("");
- }
- return;
- }
- // ask user to confirm unsafe operations, then process vcs actions
- boolean notCancel = VCSUIHelper.showConfirmUpdateDialog(repoState.getRoot(), filesToTreate);
-
- if (notCancel && hasFrame) {
- frame.setInfoText("");
- return;
- }
-
- if (hasFrame)
- frame.setInfoText(_("isisfish.message.synchronize.done"));
- else
- showMessageDialog(null, new JLabel(_("isisfish.message.synchronize.done")));
-
- } catch (Exception eee) {
- log.error(_("isisfish.error.update.repository"), eee);
- if (frame != null) {
- frame.viewOutput(new OutputView("Error.xml", "error", eee.getMessage()));
- }
- }
+// try {
+//
+// boolean hasFrame = frame != null;
+//
+// if (!getVCS().isConnected()) {
+// log.error(I18nf._("isisfish.error.not.connected"));
+// return;
+// }
+// if (hasFrame) {
+// frame.setInfoText(_("isisfish.message.search.data"));
+// }
+//
+// EnumSet<VCSAction> actions = VCSHelper.getAuthorizedActions();
+//
+// // init repo synchronization
+// VCSRepositoryState repoState = new IsisRepositoryState(
+// IsisFish.config.getDatabaseDirectory(),
+// actions,
+// AnalysePlanStorage.getAnalysePlanDirectory(),
+// ExportStorage.getExportDirectory(),
+// FormuleStorage.getFormuleDirectory(),
+// RuleStorage.getRuleDirectory(),
+// ScriptStorage.getScriptDirectory(),
+// SimulatorStorage.getSimulatorDirectory());
+//
+// // create ui models
+// repoState.createUIModels();
+//
+// // obtain from user files to treate from repo state
+// List<VCSFileState> filesToTreate = VCSUIHelper.showUpdateDialog(repoState);
+//
+// if (filesToTreate == null || filesToTreate.isEmpty()) {
+// // nothing more to do here
+// if (hasFrame) {
+// frame.setInfoText("");
+// }
+// return;
+// }
+// // ask user to confirm unsafe operations, then process vcs actions
+// boolean notCancel = VCSUIHelper.showConfirmUpdateDialog(repoState.getRoot(), filesToTreate);
+//
+// if (notCancel && hasFrame) {
+// frame.setInfoText("");
+// return;
+// }
+//
+// if (hasFrame) {
+// frame.setInfoText(_("isisfish.message.synchronize.done"));
+// }
+//
+// } catch (Exception eee) {
+// log.error(_("isisfish.error.update.repository"), eee);
+// if (frame != null) {
+// frame.viewOutput(new OutputView("Error.xml", "error", eee.getMessage()));
+// }
+// }
}
- static ConfigUI ui;
+// static ConfigUI ui;
static public Object showConfig() {
try {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/Input.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/Input.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/Input.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -51,7 +51,7 @@
import org.swixat.framework.OutputView;
import org.swixat.model.Context;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.topia.TopiaContext;
import org.codelutin.topia.TopiaException;
import org.codelutin.topia.event.TopiaEntityEvent;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputEffortDescription.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -30,7 +30,7 @@
*/
package fr.ifremer.isisfish.ui.input;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import javax.swing.JTree;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputFisheryRegion.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.ui.input;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.awt.geom.Point2D;
import java.io.File;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/InputPopulation.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -30,7 +30,7 @@
*/
package fr.ifremer.isisfish.ui.input;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.util.ArrayList;
import java.util.List;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckRegion.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -32,7 +32,7 @@
package fr.ifremer.isisfish.ui.input.check;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.util.Collection;
import java.util.Collections;
@@ -40,7 +40,6 @@
import java.util.List;
import java.util.Set;
-import org.codelutin.i18n.I18n;
import org.codelutin.math.matrix.MatrixIterator;
import org.codelutin.math.matrix.MatrixND;
@@ -90,7 +89,7 @@
static public void check(Equation eq, CheckResult result) {
if (0 != EvaluatorHelper.check(eq.getJavaInterface(), eq.getContent(), null)) {
- result.addError(eq, I18n._("isisfish.error.invalid.equation"));
+ result.addError(eq, _("isisfish.error.invalid.equation"));
}
}
@@ -101,53 +100,53 @@
static public void check(PopulationGroup classPop, CheckResult result){
// error
if(classPop.getMeanWeight() < 0){
- result.addError(classPop, I18n._("isisfish.error.invalid.mean.weight"));
+ result.addError(classPop, _("isisfish.error.invalid.mean.weight"));
}
// if(classPop.getMortaliteNaturelle() < 0){
- // result.addError(classPop, I18n._("isisfish.error.invalidate.natural.death"));
+ // result.addError(classPop, _("isisfish.error.invalidate.natural.death"));
// }
// warning
if(classPop.getMeanWeight() == 0){
- result.addWarning(classPop, I18n._("isisfish.error.not.null.mean.weight"));
+ result.addWarning(classPop, _("isisfish.error.not.null.mean.weight"));
}
// if(classPop.getMortaliteNaturelle() == 0){
- // result.addWarning(classPop, I18n._("isisfish.error.not.null.natiral.death"));
+ // result.addWarning(classPop, _("isisfish.error.not.null.natiral.death"));
// }
}
static public void check(Gear engin, CheckResult result){
if("".equals(engin.getName())){
- result.addWarning(engin, I18n._("isisfish.error.empty.name"));
+ result.addWarning(engin, _("isisfish.error.empty.name"));
}
if("".equals(engin.getEffortUnit())){
- result.addWarning(engin, I18n._("isisfish.error.empty.unit"));
+ result.addWarning(engin, _("isisfish.error.empty.unit"));
}
Collection<Selectivity> selectivites = engin.getPopulationSelectivity();
if(selectivites.size() == 0){
- result.addWarning(engin, I18n._("isisfish.error.empty.selectivity"));
+ result.addWarning(engin, _("isisfish.error.empty.selectivity"));
}else{
for(Selectivity selectivity : selectivites){
check(selectivity, result);
}
}
if(engin.getPossibleValue() == null){
- result.addWarning(engin, I18n._("isisfish.error.invalid.range"));
+ result.addWarning(engin, _("isisfish.error.invalid.range"));
}
if("".equals(engin.getParameterName())){
- result.addInfo(engin, I18n._("isisfish.error.empty.params.name"));
+ result.addInfo(engin, _("isisfish.error.empty.params.name"));
}
}
static public void check(MetierSeasonInfo infoSaisonMetier, CheckResult result){
if(infoSaisonMetier.getZone() == null || infoSaisonMetier.getZone().size() == 0){
- result.addWarning(infoSaisonMetier, I18n._("isisfish.error.no.sector"));
+ result.addWarning(infoSaisonMetier, _("isisfish.error.no.sector"));
}
Collection<TargetSpecies> especeCaptus = infoSaisonMetier.getSpeciesTargetSpecies();
if(especeCaptus.size() == 0){
- result.addInfo(infoSaisonMetier, I18n._("isisfish.error.empty.species"));
+ result.addInfo(infoSaisonMetier, _("isisfish.error.empty.species"));
}else{
for(TargetSpecies i : especeCaptus){
check(i, result);
@@ -196,136 +195,136 @@
check(infoSaisonPop.getImmigrationEquation(), result);
} else {
if (isEmptyMatrix(infoSaisonPop.getMigrationMatrix())) {
- result.addInfo(infoSaisonPop, I18n._("isisfish.error.empty.migration"));
+ result.addInfo(infoSaisonPop, _("isisfish.error.empty.migration"));
} else if(isNullMatrix(infoSaisonPop.getMigrationMatrix())) {
- result.addInfo(infoSaisonPop, I18n._("isisfish.error.emty.migration"));
+ result.addInfo(infoSaisonPop, _("isisfish.error.emty.migration"));
} else if(isNegativeMatrix(infoSaisonPop.getMigrationMatrix())) {
- result.addError(infoSaisonPop, I18n._("isisfish.error.migration.negative"));
+ result.addError(infoSaisonPop, _("isisfish.error.migration.negative"));
}
if (isEmptyMatrix(infoSaisonPop.getEmigrationMatrix())) {
- result.addInfo(infoSaisonPop, I18n._("isisfish.error.emty.emigration"));
+ result.addInfo(infoSaisonPop, _("isisfish.error.emty.emigration"));
} else if(isNullMatrix(infoSaisonPop.getEmigrationMatrix())) {
- result.addInfo(infoSaisonPop, I18n._("isisfish.error.empty.emigration"));
+ result.addInfo(infoSaisonPop, _("isisfish.error.empty.emigration"));
} else if(isNegativeMatrix(infoSaisonPop.getEmigrationMatrix())) {
- result.addError(infoSaisonPop, I18n._("isisfish.error.emigration.negative"));
+ result.addError(infoSaisonPop, _("isisfish.error.emigration.negative"));
}
if (isEmptyMatrix(infoSaisonPop.getImmigrationMatrix())) {
- result.addInfo(infoSaisonPop, I18n._("isisfish.error.empty.immigration"));
+ result.addInfo(infoSaisonPop, _("isisfish.error.empty.immigration"));
} else if(isNullMatrix(infoSaisonPop.getImmigrationMatrix())) {
- result.addInfo(infoSaisonPop, I18n._("isisfish.error.empty.immigration"));
+ result.addInfo(infoSaisonPop, _("isisfish.error.empty.immigration"));
} else if(isNegativeMatrix(infoSaisonPop.getImmigrationMatrix())) {
- result.addError(infoSaisonPop, I18n._("isisfish.error.immigration.negative"));
+ result.addError(infoSaisonPop, _("isisfish.error.immigration.negative"));
}
}
}
static public void check(Cell maille, CheckResult result){
if("".equals(maille.getName())){
- result.addWarning(maille, I18n._("isisfish.error.empty.name"));
+ result.addWarning(maille, _("isisfish.error.empty.name"));
}
}
static public void check(Species metaPop, CheckResult result){
Collection<Population> pops = metaPop.getPopulation();
if(pops.size() == 0){
- result.addWarning(metaPop, I18n._("isisfish.error.empty.population"));
+ result.addWarning(metaPop, _("isisfish.error.empty.population"));
}else{
for(Population pop : pops){
check(pop, result);
}
}
if("".equals(metaPop.getName())){
- result.addInfo(metaPop, I18n._("isisfish.error.empty.species.name"));
+ result.addInfo(metaPop, _("isisfish.error.empty.species.name"));
}
if("".equals(metaPop.getScientificName())){
- result.addInfo(metaPop, I18n._("isisfish.error.empty.scientific.name"));
+ result.addInfo(metaPop, _("isisfish.error.empty.scientific.name"));
}
if("".equals(metaPop.getCodeRubbin())){
- result.addInfo(metaPop, I18n._("isisfish.error.empty.code.rubbin"));
+ result.addInfo(metaPop, _("isisfish.error.empty.code.rubbin"));
}
}
static public void check(Metier metier, CheckResult result){
if("".equals(metier.getName())){
- result.addWarning(metier, I18n._("isisfish.error.empty.name"));
+ result.addWarning(metier, _("isisfish.error.empty.name"));
}
List<MetierSeasonInfo> infoSaisons = metier.getMetierSeasonInfo();
if(infoSaisons.size() == 0){
- result.addWarning(metier, I18n._("isisfish.error.empty.season"));
+ result.addWarning(metier, _("isisfish.error.empty.season"));
}else{
Set<Month> months = new HashSet<Month>();
for(MetierSeasonInfo info : infoSaisons){
if (!Collections.disjoint(months, info.getMonths())) {
- result.addError(info, I18n._("isisfish.error.overlap.season"));
+ result.addError(info, _("isisfish.error.overlap.season"));
}
months.addAll(info.getMonths());
check(info, result);
}
}
if(metier.getGear() == null){
- result.addError(metier, I18n._("isisfish.error.undefined.gear"));
+ result.addError(metier, _("isisfish.error.undefined.gear"));
}else{
check(metier.getGear(), result);
}
if (!metier.getGear().getPossibleValue().contains(metier.getGearParameterValue())) {
- result.addWarning(metier, I18n._("isisfish.error.invalid.values.params"));
+ result.addWarning(metier, _("isisfish.error.invalid.values.params"));
}
}
static public void check(Population pop, CheckResult result){
if("".equals(pop.getName())){
- result.addWarning(pop, I18n._("isisfish.error.empty.name"));
+ result.addWarning(pop, _("isisfish.error.empty.name"));
}
if("".equals(pop.getGeographicId())){
- result.addInfo(pop, I18n._("isisfish.error.empty.id.geographic"));
+ result.addInfo(pop, _("isisfish.error.empty.id.geographic"));
}
if(pop.getMaturityGroup() == null){
- result.addInfo(pop, I18n._("isisfish.error.not.null.class.grown"));
+ result.addInfo(pop, _("isisfish.error.not.null.class.grown"));
}
check(pop.getGrowth(), result);
check(pop.getGrowthReverse(), result);
List<PopulationGroup> classes = pop.getPopulationGroup();
if(classes.size() == 0){
- result.addWarning(pop, I18n._("isisfish.error.undefined.classes"));
+ result.addWarning(pop, _("isisfish.error.undefined.classes"));
}else{
for(PopulationGroup group : classes){
check(group, result);
}
}
// if(pop.getMortNatClasseNaissance() == 0){
- // result.addInfo(pop, I18n._("isisfish.error.undefined.natural.death"));
+ // result.addInfo(pop, _("isisfish.error.undefined.natural.death"));
// }
// if(pop.getMortNatClasseNaissance() < 0){
- // result.addWarning(pop, I18n._("isisfish.error.invalid.natural.death"));
+ // result.addWarning(pop, _("isisfish.error.invalid.natural.death"));
// }
if(pop.getMonthGapBetweenReproRecrutement() < 0){
- result.addWarning(pop, I18n._("isisfish.error.invalid.interval.reproduction.recruitment"));
+ result.addWarning(pop, _("isisfish.error.invalid.interval.reproduction.recruitment"));
}
if (isNullMatrix(pop.getMappingZoneReproZoneRecru())) {
- result.addWarning(pop, I18n._("isisfish.error.undefined.correspondence.zones.reproduction.recruitment"));
+ result.addWarning(pop, _("isisfish.error.undefined.correspondence.zones.reproduction.recruitment"));
}
if(pop.getPopulationZone() == null || pop.getPopulationZone().size() == 0){
- result.addWarning(pop, I18n._("isisfish.error.undefined.zone.population"));
+ result.addWarning(pop, _("isisfish.error.undefined.zone.population"));
}
if(pop.getRecruitmentZone() == null || pop.getRecruitmentZone().size() == 0){
- result.addWarning(pop, I18n._("isisfish.error.undefined.zone.recruitment"));
+ result.addWarning(pop, _("isisfish.error.undefined.zone.recruitment"));
}
if(pop.getReproductionZone() == null || pop.getReproductionZone().size() == 0){
- result.addWarning(pop, I18n._("isisfish.error.undefined.zone.reproduction"));
+ result.addWarning(pop, _("isisfish.error.undefined.zone.reproduction"));
}
List<PopulationSeasonInfo> infoSaisons = pop.getPopulationSeasonInfo();
if(infoSaisons.size() == 0){
- result.addWarning(pop, I18n._("isisfish.error.empty.season"));
+ result.addWarning(pop, _("isisfish.error.empty.season"));
}else{
Set<Month> months = new HashSet<Month>();
for(PopulationSeasonInfo info : infoSaisons){
if (!Collections.disjoint(months, info.getMonths())) {
- result.addError(info, I18n._("isisfish.error.overlap.season"));
+ result.addError(info, _("isisfish.error.overlap.season"));
}
months.addAll(info.getMonths());
check(info, result);
@@ -343,12 +342,12 @@
static public void check(FisheryRegion region, CheckResult result){
if("".equals(region.getName())){
- result.addWarning(region, I18n._("isisfish.error.empty.name"));
+ result.addWarning(region, _("isisfish.error.empty.name"));
}
List<Zone> secteurs = region.getZone();;
if(secteurs.size() == 0){
- result.addWarning(region, I18n._("isisfish.error.undefined.sector"));
+ result.addWarning(region, _("isisfish.error.undefined.sector"));
}else{
for(Zone zone : secteurs){
check(zone, result);
@@ -356,7 +355,7 @@
}
List<Cell> mailles = region.getCell();
if(mailles.size() == 0){
- result.addWarning(region, I18n._("isisfish.error.undefined.mesh"));
+ result.addWarning(region, _("isisfish.error.undefined.mesh"));
}else{
for(Cell cell : mailles){
check(cell, result);
@@ -364,7 +363,7 @@
}
List<Species> metaPops = region.getSpecies();
if(metaPops.size() == 0){
- result.addWarning(region, I18n._("isisfish.error.undefined.meta.population"));
+ result.addWarning(region, _("isisfish.error.undefined.meta.population"));
}else{
for(Species species : metaPops){
check(species, result);
@@ -372,7 +371,7 @@
}
List<Metier> metiers = region.getMetier();
if(metiers.size() == 0){
- result.addWarning(region, I18n._("isisfish.error.undefined.meta.population"));
+ result.addWarning(region, _("isisfish.error.undefined.meta.population"));
}else{
for(Metier metier : metiers){
check(metier, result);
@@ -380,7 +379,7 @@
}
List<Strategy> strategies = region.getStrategy();
if(strategies.size() == 0){
- result.addWarning(region, I18n._("isisfish.error.undefined.stategy"));
+ result.addWarning(region, _("isisfish.error.undefined.stategy"));
}else{
for(Strategy strategy : strategies){
check(strategy, result);
@@ -390,10 +389,10 @@
static public void check(Zone secteur, CheckResult result){
if("".equals(secteur.getName())){
- result.addWarning(secteur, I18n._("isisfish.error.empty.name"));
+ result.addWarning(secteur, _("isisfish.error.empty.name"));
}
if(secteur.getCell().size() == 0){
- result.addWarning(secteur, I18n._("isisfish.error.undefined.mesh.sector"));
+ result.addWarning(secteur, _("isisfish.error.undefined.mesh.sector"));
}
}
@@ -404,13 +403,13 @@
static public void check(Strategy strategy, CheckResult result){
if("".equals(strategy.getName())){
- result.addWarning(strategy, I18n._("isisfish.error.empty.name"));
+ result.addWarning(strategy, _("isisfish.error.empty.name"));
}
check(strategy.getSetOfVessels(), result);
List<StrategyMonthInfo> smi = strategy.getStrategyMonthInfo();
if(smi.size() != 12){
- result.addWarning(strategy, I18n._("isisfish.error.undefined.stategy.months"));
+ result.addWarning(strategy, _("isisfish.error.undefined.stategy.months"));
}else{
for(StrategyMonthInfo info : smi){
check(info, result);
@@ -422,14 +421,14 @@
static public void check(SetOfVessels sov, CheckResult result){
check(sov.getPort(), result);
if(sov.getNumberOfVessels() < 0){
- result.addWarning(sov, I18n._("isisfish.error.invalid.number"));
+ result.addWarning(sov, _("isisfish.error.invalid.number"));
}
if(sov.getFixedCosts() < 0){
- result.addWarning(sov, I18n._("isisfish.error.invalid.costs.fix"));
+ result.addWarning(sov, _("isisfish.error.invalid.costs.fix"));
}
Collection<EffortDescription> efforts = sov.getPossibleMetiers();
if(efforts.size() == 0){
- result.addWarning(sov, I18n._("isisfish.error.not.possible.metier"));
+ result.addWarning(sov, _("isisfish.error.not.possible.metier"));
}else{
for(EffortDescription effort : efforts) {
check(effort, result);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/input/check/CheckResultFrame.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,8 +31,9 @@
package fr.ifremer.isisfish.ui.input.check;
+import static org.codelutin.i18n.I18nf._;
+
import javax.swing.JFrame;
-import org.codelutin.i18n.I18n;
import javax.swing.WindowConstants;
import javax.swing.JScrollPane;
import javax.swing.JTable;
@@ -46,7 +47,7 @@
}
public CheckResultFrame(){
- super(I18n._("isisfish.message.result.verif.region"));
+ super(_("isisfish.message.result.verif.region"));
model = new CheckResultTableModel(new CheckResult());
JTable table = new JTable(model);
model.addMouseListenerToHeaderInTable(table);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/DataResultUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -33,8 +35,6 @@
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
-import org.codelutin.i18n.I18n;
-
public abstract class DataResultUI extends JPanel implements DataResultUICallback{
protected void init(){
@@ -120,7 +120,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.dataResult.table2"));
+ result.setToolTipText(_("isisfish.dataResult.table2"));
__table2__ = result;
}
@@ -138,8 +138,8 @@
private JLabel __descriptionLabel__ = null;
public JLabel getDescriptionLabel(){
if(__descriptionLabel__ == null){
- JLabel result = new JLabel(I18n._("isisfish.simulation.name"));
- result.setToolTipText(I18n._("isisfish.dataResult.descriptionLabel"));
+ JLabel result = new JLabel(_("isisfish.simulation.name"));
+ result.setToolTipText(_("isisfish.dataResult.descriptionLabel"));
__descriptionLabel__ = result;
}
@@ -151,8 +151,8 @@
if(__exportButton__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.dataResult.export.csv"), icon);
- result.setToolTipText(I18n._("isisfish.dataResult.exportButton"));
+ JButton result = new JButton(_("isisfish.dataResult.export.csv"), icon);
+ result.setToolTipText(_("isisfish.dataResult.exportButton"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_exportButton_clicked();
@@ -179,7 +179,7 @@
}
else
result = new JScrollPane(child);
- result.setToolTipText(I18n._("isisfish.dataResult.scrolledwindow2"));
+ result.setToolTipText(_("isisfish.dataResult.scrolledwindow2"));
__scrolledwindow2__ = result;
}
@@ -200,7 +200,7 @@
new JTable(new DefaultTableModel(new Vector(), head));
result.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setSignalMatriceTableHeader(result);
- result.setToolTipText(I18n._("isisfish.dataResult.matriceTable"));
+ result.setToolTipText(_("isisfish.dataResult.matriceTable"));
__matriceTable__ = result;
}
@@ -209,9 +209,9 @@
public Vector getMatriceTableHead(){
Vector<String> result = new Vector<String>();
- result.add(I18n._("isisfish.dataResult.label"));
- result.add(I18n._("isisfish.dataResult.label"));
- result.add(I18n._("isisfish.dataResult.label"));
+ result.add(_("isisfish.dataResult.label"));
+ result.add(_("isisfish.dataResult.label"));
+ result.add(_("isisfish.dataResult.label"));
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphBeanUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -33,8 +35,6 @@
import javax.swing.JSplitPane;
import javax.swing.JViewport;
-import org.codelutin.i18n.I18n;
-
public abstract class GraphBeanUI extends JPanel implements GraphBeanUICallback{
protected void init(){
@@ -92,7 +92,7 @@
result.setOneTouchExpandable(true);
result.setDividerSize(10);
- result.setToolTipText(I18n._("isisfish.graphBean.graphSplitPane"));
+ result.setToolTipText(_("isisfish.graphBean.graphSplitPane"));
__graphSplitPane__ = result;
}
@@ -146,7 +146,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.graphBean.table3"));
+ result.setToolTipText(_("isisfish.graphBean.table3"));
__table3__ = result;
}
@@ -164,8 +164,8 @@
private JLabel __label1__ = null;
public JLabel getLabel1(){
if(__label1__ == null){
- JLabel result = new JLabel(I18n._("isisfish.graphBean.graph.render"));
- result.setToolTipText(I18n._("isisfish.graphBean.label"));
+ JLabel result = new JLabel(_("isisfish.graphBean.graph.render"));
+ result.setToolTipText(_("isisfish.graphBean.label"));
__label1__ = result;
}
@@ -187,7 +187,7 @@
}
else
result = new JScrollPane(child);
- result.setToolTipText(I18n._("isisfish.graphBean.scrolledwindow"));
+ result.setToolTipText(_("isisfish.graphBean.scrolledwindow"));
__scrolledwindow1__ = result;
}
@@ -238,7 +238,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.graphBean.table"));
+ result.setToolTipText(_("isisfish.graphBean.table"));
__table99__ = result;
}
@@ -255,7 +255,7 @@
public javax.swing.JPanel getGraphPanel(){
if(__graphPanel__ == null){
javax.swing.JPanel result = new javax.swing.JPanel();
- result.setToolTipText(I18n._("isisfish.graphBean.graphPanel"));
+ result.setToolTipText(_("isisfish.graphBean.graphPanel"));
__graphPanel__ = result;
}
@@ -267,7 +267,7 @@
if(__graphRendererCombo__ == null){
JComboBox result = new JComboBox();
result.setEditable(true);
- result.setToolTipText(I18n._("isisfish.graphBean.graphRendererCombo"));
+ result.setToolTipText(_("isisfish.graphBean.graphRendererCombo"));
result.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
on_graphRendererCombo_selectionChanged(e);
@@ -309,7 +309,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.graphBean.table"));
+ result.setToolTipText(_("isisfish.graphBean.table"));
__table1__ = result;
}
@@ -343,7 +343,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.graphBean.table"));
+ result.setToolTipText(_("isisfish.graphBean.table"));
__table2__ = result;
}
@@ -360,7 +360,7 @@
public javax.swing.JPanel getPalettePanel(){
if(__palettePanel__ == null){
javax.swing.JPanel result = new javax.swing.JPanel();
- result.setToolTipText(I18n._("isisfish.graphBean.palettePanel"));
+ result.setToolTipText(_("isisfish.graphBean.palettePanel"));
__palettePanel__ = result;
}
@@ -372,8 +372,8 @@
if(__appliquer__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.common.apply"), icon);
- result.setToolTipText(I18n._("isisfish.common.apply"));
+ JButton result = new JButton(_("isisfish.common.apply"), icon);
+ result.setToolTipText(_("isisfish.common.apply"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_appliquer_clicked();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/GraphComboRenderer.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,12 +1,12 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
-import org.codelutin.i18n.I18n;
-
import com.jrefinery.chart.AreaCategoryItemRenderer;
import com.jrefinery.chart.HorizontalBarRenderer;
import com.jrefinery.chart.LineAndShapeRenderer;
@@ -37,21 +37,21 @@
super.getListCellRendererComponent(liste, o, attributeIndex,
isSelected, hasFocus);
if (o instanceof StackedVerticalBarRenderer)
- setText(I18n._("isisfish.graphCombo.render.bar.vertical.stacked"));
+ setText(_("isisfish.graphCombo.render.bar.vertical.stacked"));
else if (o instanceof VerticalBarRenderer3D)
- setText(I18n._("isisfish.graphCombo.render.bar.vertical.3d"));
+ setText(_("isisfish.graphCombo.render.bar.vertical.3d"));
else if (o instanceof VerticalBarRenderer)
- setText(I18n._("isisfish.graphCombo.render.bar.vertical"));
+ setText(_("isisfish.graphCombo.render.bar.vertical"));
else if (o instanceof StackedHorizontalBarRenderer)
- setText(I18n._("isisfish.graphCombo.render.bar.horizontal.stacked"));
+ setText(_("isisfish.graphCombo.render.bar.horizontal.stacked"));
else if (o instanceof HorizontalBarRenderer)
- setText(I18n._("isisfish.graphCombo.render.bar.horizontal"));
+ setText(_("isisfish.graphCombo.render.bar.horizontal"));
else if (o instanceof AreaCategoryItemRenderer)
- setText(I18n._("isisfish.graphCombo.render.surface"));
+ setText(_("isisfish.graphCombo.render.surface"));
else if (o instanceof LineAndShapeRenderer)
- setText(I18n._("isisfish.graphCombo.render.line"));
+ setText(_("isisfish.graphCombo.render.line"));
else if (o instanceof MinMaxCategoryRenderer)
- setText(I18n._("isisfish.graphCombo.render.min.max"));
+ setText(_("isisfish.graphCombo.render.min.max"));
else
setText((o == null) ? "" : o.toString());
return this;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItem.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItem.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItem.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -14,11 +14,12 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.ListSelectionModel;
-import org.codelutin.i18n.I18n;
import org.codelutin.util.Resource;
public class InfoItem extends InfoItemUI implements InfoPanelable {
@@ -35,7 +36,7 @@
getSumButton().setIcon(sigmabarre);
getSumButton().setBorder(BorderFactory.createEtchedBorder());
getSumButton().setBorderPainted(true);
- getSumButton().setToolTipText(I18n._("isisfish.infoItem.sum"));
+ getSumButton().setToolTipText(_("isisfish.infoItem.sum"));
getList().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDate.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -14,11 +14,12 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.ListSelectionModel;
-import org.codelutin.i18n.I18n;
import org.codelutin.util.Resource;
public class InfoItemDate extends InfoItemDateUI implements InfoPanelable {
@@ -29,14 +30,14 @@
super();
init();
- getLabel().setText(I18n._("isisfish.common.date"));
+ getLabel().setText(_("isisfish.common.date"));
ImageIcon sigmabarre = Resource.getIcon("images/sigma-barre.gif");
ImageIcon sigma = Resource.getIcon("images/sigma.gif");
getSumButton().setSelectedIcon(sigma);
getSumButton().setIcon(sigmabarre);
getSumButton().setBorder(BorderFactory.createEtchedBorder());
getSumButton().setBorderPainted(true);
- getSumButton().setToolTipText(I18n._("isisfish.infoItem.sum"));
+ getSumButton().setToolTipText(_("isisfish.infoItem.sum"));
ImageIcon sigmaAnBarre = Resource.getIcon("images/sigma_an-barre.gif");
ImageIcon sigmaAn = Resource.getIcon("images/sigma_an.gif");
@@ -44,7 +45,7 @@
getSumAnButton().setIcon(sigmaAnBarre);
getSumAnButton().setBorder(BorderFactory.createEtchedBorder());
getSumAnButton().setBorderPainted(true);
- getSumAnButton().setToolTipText(I18n._("isisfish.infoItem.sum.year"));
+ getSumAnButton().setToolTipText(_("isisfish.infoItem.sum.year"));
getList().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
getList().setCellRenderer(new InfoItemDateListRenderer());
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemDateUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -29,8 +31,6 @@
import javax.swing.JViewport;
import javax.swing.ListSelectionModel;
-import org.codelutin.i18n.I18n;
-
public abstract class InfoItemDateUI extends JPanel implements InfoItemDateUICallback{
protected void init(){
@@ -106,7 +106,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.infoItem.table"));
+ result.setToolTipText(_("isisfish.infoItem.table"));
__table31__ = result;
}
@@ -160,7 +160,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.infoItem.table"));
+ result.setToolTipText(_("isisfish.infoItem.table"));
__table32__ = result;
}
@@ -178,8 +178,8 @@
private JLabel __label__ = null;
public JLabel getLabel(){
if(__label__ == null){
- JLabel result = new JLabel(I18n._("isisfish.infoItem.label"));
- result.setToolTipText(I18n._("isisfish.infoItem.label"));
+ JLabel result = new JLabel(_("isisfish.infoItem.label"));
+ result.setToolTipText(_("isisfish.infoItem.label"));
__label__ = result;
}
@@ -189,8 +189,8 @@
private JRadioButton __sumAnButton__ = null;
public JRadioButton getSumAnButton(){
if(__sumAnButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.common.blank"), false);
- result.setToolTipText(I18n._("isisfish.common.sum"));
+ JRadioButton result = new JRadioButton(_("isisfish.common.blank"), false);
+ result.setToolTipText(_("isisfish.common.sum"));
__sumAnButton__ = result;
}
@@ -200,8 +200,8 @@
private JRadioButton __sumButton__ = null;
public JRadioButton getSumButton(){
if(__sumButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.common.blank"), false);
- result.setToolTipText(I18n._("isisfish.infoItem.sum"));
+ JRadioButton result = new JRadioButton(_("isisfish.common.blank"), false);
+ result.setToolTipText(_("isisfish.infoItem.sum"));
__sumButton__ = result;
}
@@ -223,7 +223,7 @@
}
else
result = new JScrollPane(child);
- result.setToolTipText(I18n._("isisfish.infoItem.scrolledwindow"));
+ result.setToolTipText(_("isisfish.infoItem.scrolledwindow"));
__scrolledwindow2__ = result;
}
@@ -241,7 +241,7 @@
if(__list__ == null){
JList result = new JList(new DefaultListModel());
result.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- result.setToolTipText(I18n._("isisfish.infoItem.list"));
+ result.setToolTipText(_("isisfish.infoItem.list"));
__list__ = result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/InfoItemUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -29,8 +31,6 @@
import javax.swing.JViewport;
import javax.swing.ListSelectionModel;
-import org.codelutin.i18n.I18n;
-
public abstract class InfoItemUI extends JPanel implements InfoItemUICallback{
protected void init(){
@@ -106,7 +106,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.infoItem..table"));
+ result.setToolTipText(_("isisfish.infoItem..table"));
__table29__ = result;
}
@@ -150,7 +150,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.infoItem.table"));
+ result.setToolTipText(_("isisfish.infoItem.table"));
__table30__ = result;
}
@@ -167,8 +167,8 @@
private JLabel __label__ = null;
public JLabel getLabel(){
if(__label__ == null){
- JLabel result = new JLabel(I18n._("isisfish.infoItem.label"));
- result.setToolTipText(I18n._("isisfish.infoItem.label"));
+ JLabel result = new JLabel(_("isisfish.infoItem.label"));
+ result.setToolTipText(_("isisfish.infoItem.label"));
__label__ = result;
}
@@ -178,8 +178,8 @@
private JRadioButton __sumButton__ = null;
public JRadioButton getSumButton(){
if(__sumButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.common.blank"), false);
- result.setToolTipText(I18n._("isisfish.common.sum"));
+ JRadioButton result = new JRadioButton(_("isisfish.common.blank"), false);
+ result.setToolTipText(_("isisfish.common.sum"));
__sumButton__ = result;
}
@@ -201,7 +201,7 @@
}
else
result = new JScrollPane(child);
- result.setToolTipText(I18n._("isisfish.infoItem.scrolledwindow"));
+ result.setToolTipText(_("isisfish.infoItem.scrolledwindow"));
__scrolledwindow1__ = result;
}
@@ -219,7 +219,7 @@
if(__list__ == null){
JList result = new JList(new DefaultListModel());
result.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- result.setToolTipText(I18n._("isisfish.infoItem.list"));
+ result.setToolTipText(_("isisfish.infoItem.list"));
__list__ = result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEdit.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -13,6 +13,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
@@ -39,8 +41,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.i18n.I18n;
-import static org.codelutin.i18n.I18n._;
import org.codelutin.math.matrix.MatrixND;
import org.codelutin.topia.TopiaContext;
import org.codelutin.util.FileUtil;
@@ -60,12 +60,12 @@
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory.getLog(ResultEdit.class);
- static final String ABONDANCE_STRING = I18n._("isisfish.result.abundance");
- static final String CAPTUREPARMETIER_STRING = I18n._("isisfish.result.capture.metier");
- static final String REJETPARMETIER_STRING = I18n._("isisfish.result.reject.metier");
- static final String DEBARQUEMENTPARMETIER_STRING = I18n._("isisfish.result.unload.metier");
- static final String EFFORTPARMETIER_STRING = I18n._("isisfish.result.stress.metier");
- static final String CAPTURE_STRING = I18n._("isisfish.result.capture");
+ static final String ABONDANCE_STRING = _("isisfish.result.abundance");
+ static final String CAPTUREPARMETIER_STRING = _("isisfish.result.capture.metier");
+ static final String REJETPARMETIER_STRING = _("isisfish.result.reject.metier");
+ static final String DEBARQUEMENTPARMETIER_STRING = _("isisfish.result.unload.metier");
+ static final String EFFORTPARMETIER_STRING = _("isisfish.result.stress.metier");
+ static final String CAPTURE_STRING = _("isisfish.result.capture");
/** la simulation visualise */
SimulationStorage simulation = null;
@@ -157,9 +157,9 @@
// on affecte le nom
if (group.getDimensionName(i).equals("")){
- item.getLabel().setText(I18n._("isisfish.result.dimension ")+i);
+ item.getLabel().setText(_("isisfish.result.dimension ")+i);
}else{
- item.getLabel().setText(I18n._(group.getDimensionName(i)));
+ item.getLabel().setText(_(group.getDimensionName(i)));
}
List elems = group.getSemantics(i);
@@ -264,13 +264,13 @@
mat1 = mat1.sumOverDim(0);
mat1 = mat1.sumOverDim(1);
mat1 = mat1.reduce();
- resume.append(I18n._("isisfish.result.begin.simulation")+mat1.getName()+": "+mat1.getValue(0)+"\n");
+ resume.append(_("isisfish.result.begin.simulation")+mat1.getName()+": "+mat1.getValue(0)+"\n");
mat1 = resultManager.getMatrix(resultManager.getLastDate(), name, tx);
mat1 = mat1.sumOverDim(0);
mat1 = mat1.sumOverDim(1);
mat1 = mat1.reduce();
- resume.append(I18n._("isisfish.result.end.simulation")+mat1.getName()+": "+mat1.getValue(0)+"\n");
+ resume.append(_("isisfish.result.end.simulation")+mat1.getName()+": "+mat1.getValue(0)+"\n");
}
else if(name.startsWith(REJETPARMETIER_STRING)){
MatrixND mat1 = resultManager.getMatrix(name, tx);
@@ -280,7 +280,7 @@
mat1 = mat1.sumOverDim(3);
mat1 = mat1.reduce();
- resume.append(I18n._("isisfish.common.sum")+mat1.getName()+": "+mat1.getValue(0)+"\n");
+ resume.append(_("isisfish.common.sum")+mat1.getName()+": "+mat1.getValue(0)+"\n");
}
else if (!name.startsWith(CAPTUREPARMETIER_STRING) && name.startsWith(CAPTURE_STRING)){
MatrixND mat1 = resultManager.getMatrix(name, tx);
@@ -289,10 +289,10 @@
mat1 = mat1.sumOverDim(2);
mat1 = mat1.reduce();
- resume.append(I18n._("isisfish.common.sum")+mat1.getName()+": "+mat1.getValue(0)+"\n");
+ resume.append(_("isisfish.common.sum")+mat1.getName()+": "+mat1.getValue(0)+"\n");
}
} catch (Exception eee) {
- resume.append(I18n._("isisfish.error.no.matrix" + name));
+ resume.append(_("isisfish.error.no.matrix" + name));
}
}
@@ -366,15 +366,15 @@
matrix = matrix.sumOverDim(i, item.getSumStep());
if(matrix.getDim(i) == 1){
// c une somme global sur tous les elements
- matrix.setDimensionName(i, I18n._("isisfish.common.sum"));
+ matrix.setDimensionName(i, _("isisfish.common.sum"));
}else{
// c une somme partielle
String name = matrix.getDimensionName(i)+" "+
- I18n._("isisfish.common.sum");
+ _("isisfish.common.sum");
//si c une somme pour les annees, on change l'intitule
if (item instanceof InfoItemDate){
- name = I18n._("isisfish.common.year");
+ name = _("isisfish.common.year");
}
matrix.setDimensionName(i, name);
@@ -407,7 +407,7 @@
if (matInfo.getNbDim() > 2) {
// matrice superieur a 2 dimensions non geree!!
- JOptionPane.showMessageDialog(null, I18n._("isisfish.error.matrix.more.2d"), I18n._("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(null, _("isisfish.error.matrix.more.2d"), _("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
return;
}
@@ -421,7 +421,7 @@
mapBean.addResultatLayer(matInfo.getName(), layer);
}catch(Exception eee){
Logger.getLogger(getClass().getName() + ".addRendu").log(Level.WARNING, "Erreur lors de l'ajout du résultat à la carte. ", eee);
- JOptionPane.showMessageDialog(null, I18n._("isisfish.error.add.card"), I18n._("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(null, _("isisfish.error.add.card"), _("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
}
}
@@ -430,7 +430,7 @@
graphBean.getModel().setMatrix(matInfo);
}catch(Exception eee){
log.warn("Erreur lors de l'ajout du résultat au graph.", eee);
- JOptionPane.showMessageDialog(null, I18n._("isisfish.error.add.result.graph"), I18n._("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(null, _("isisfish.error.add.result.graph"), _("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
}
// ajout au data
@@ -438,7 +438,7 @@
dataBean.setMatrix(matInfo);
}catch(Exception eee){
log.warn("Erreur lors de l'ajout du résultat au data.", eee);
- JOptionPane.showMessageDialog(null, I18n._("isisfish.error.add.result.data"), I18n._("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(null, _("isisfish.error.add.result.data"), _("isisfish.common.alert"), JOptionPane.ERROR_MESSAGE);
}
setStatusOK(true);
@@ -538,7 +538,7 @@
* ECMAScript d'export.
*/
protected JMenuItem getExportMenu(String methodName){
- JMenuItem result = new JMenuItem(I18n._(methodName));
+ JMenuItem result = new JMenuItem(_(methodName));
result.addActionListener(new ExportActionListener(methodName));
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultEditUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -42,12 +44,10 @@
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
-import org.codelutin.i18n.I18n;
-
public abstract class ResultEditUI extends JFrame implements ResultEditUICallback{
public ResultEditUI(){
- super(I18n._("isisfish.result.title"));
+ super(_("isisfish.result.title"));
}
protected void init(){
@@ -101,7 +101,7 @@
Vector childs = getVbox2Childs();
Box result = Box.createVerticalBox();
for (Object child : childs) result.add((Component) child);
- result.setToolTipText(I18n._("isisfish.result.vbox"));
+ result.setToolTipText(_("isisfish.result.vbox"));
__vbox2__ = result;
}
@@ -120,7 +120,7 @@
Vector childs = getMenubar2Childs();
JMenuBar result = new JMenuBar();
for (Object child : childs) result.add((JMenuItem) child);
- result.setToolTipText(I18n._("isisfish.result.menubar"));
+ result.setToolTipText(_("isisfish.result.menubar"));
__menubar2__ = result;
}
@@ -137,9 +137,9 @@
public JMenu getMenuExport(){
if(__menuExport__ == null){
Vector childs = getMenuExport_menuChilds();
- JMenu result = new JMenu(I18n._("isisfish.result.export"));
+ JMenu result = new JMenu(_("isisfish.result.export"));
for (Object child : childs) result.add((Component) child);
- result.setToolTipText(I18n._("isisfish.result.menuExport"));
+ result.setToolTipText(_("isisfish.result.menuExport"));
__menuExport__ = result;
}
@@ -156,7 +156,7 @@
public JSeparator getMenuitem6(){
if(__menuitem6__ == null){
JSeparator result = new JSeparator();
- result.setToolTipText(I18n._("isisfish.result.menuitem"));
+ result.setToolTipText(_("isisfish.result.menuitem"));
__menuitem6__ = result;
}
@@ -193,7 +193,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table23__ = result;
}
@@ -237,7 +237,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table22__ = result;
}
@@ -256,8 +256,8 @@
if(__statusImage__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.common.blank"), icon);
- result.setToolTipText(I18n._("isisfish.result.statusImage"));
+ JButton result = new JButton(_("isisfish.common.blank"), icon);
+ result.setToolTipText(_("isisfish.result.statusImage"));
__statusImage__ = result;
}
@@ -267,8 +267,8 @@
private JLabel __statusbar1__ = null;
public JLabel getStatusbar1(){
if(__statusbar1__ == null){
- JLabel result = new JLabel(I18n._("isisfish.result.statusBar"));
- result.setToolTipText(I18n._("isisfish.result.statusBar"));
+ JLabel result = new JLabel(_("isisfish.result.statusBar"));
+ result.setToolTipText(_("isisfish.result.statusBar"));
__statusbar1__ = result;
}
@@ -291,7 +291,7 @@
result.setOneTouchExpandable(true);
result.setDividerSize(10);
- result.setToolTipText(I18n._("isisfish.result.hpaned"));
+ result.setToolTipText(_("isisfish.result.hpaned"));
__hpaned2__ = result;
}
@@ -335,7 +335,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table1__ = result;
}
@@ -379,7 +379,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table7__ = result;
}
@@ -413,7 +413,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table8__ = result;
}
@@ -431,8 +431,8 @@
if(__ajoutRendu__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.common.add.short"), icon);
- result.setToolTipText(I18n._("isisfish.result.add"));
+ JButton result = new JButton(_("isisfish.common.add.short"), icon);
+ result.setToolTipText(_("isisfish.result.add"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_ajoutRendu_clicked();
@@ -459,7 +459,7 @@
}
else
result = new JScrollPane(child);
- result.setToolTipText(I18n._("isisfish.result.scroll"));
+ result.setToolTipText(_("isisfish.result.scroll"));
__scroll__ = result;
}
@@ -482,7 +482,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.infoPanel"));
+ result.setToolTipText(_("isisfish.result.infoPanel"));
__infoPanel__ = result;
}
@@ -500,7 +500,7 @@
if(__resultat__ == null){
JComboBox result = new JComboBox();
result.setEditable(true);
- result.setToolTipText(I18n._("isisfish.result.resultat"));
+ result.setToolTipText(_("isisfish.result.resultat"));
result.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
on_resultat_selection_notify_event(e);
@@ -542,7 +542,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table25__ = result;
}
@@ -560,7 +560,7 @@
public javax.swing.JPanel getViewPanel(){
if(__viewPanel__ == null){
javax.swing.JPanel result = new javax.swing.JPanel();
- result.setToolTipText(I18n._("isisfish.result.viewPanel"));
+ result.setToolTipText(_("isisfish.result.viewPanel"));
__viewPanel__ = result;
}
@@ -617,7 +617,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table26__ = result;
}
@@ -636,8 +636,8 @@
private JRadioButton __graphRadioButton__ = null;
public JRadioButton getGraphRadioButton(){
if(__graphRadioButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.result.graph"), false);
- result.setToolTipText(I18n._("isisfish.result.graphRadioButton"));
+ JRadioButton result = new JRadioButton(_("isisfish.result.graph"), false);
+ result.setToolTipText(_("isisfish.result.graphRadioButton"));
result.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
on_graphRadioButton_toggled(e);
@@ -652,8 +652,8 @@
private JRadioButton __mapRadioButton__ = null;
public JRadioButton getMapRadioButton(){
if(__mapRadioButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.result.map"), false);
- result.setToolTipText(I18n._("isisfish.result.mapRadioButton"));
+ JRadioButton result = new JRadioButton(_("isisfish.result.map"), false);
+ result.setToolTipText(_("isisfish.result.mapRadioButton"));
result.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
on_mapRadioButton_toggled(e);
@@ -668,8 +668,8 @@
private JRadioButton __donneeRadioButton__ = null;
public JRadioButton getDonneeRadioButton(){
if(__donneeRadioButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.result.datas"), false);
- result.setToolTipText(I18n._("isisfish.result.datasRadioButton"));
+ JRadioButton result = new JRadioButton(_("isisfish.result.datas"), false);
+ result.setToolTipText(_("isisfish.result.datasRadioButton"));
result.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
on_donneeRadioButton_toggled(e);
@@ -684,8 +684,8 @@
private JRadioButton __resumeRadioButton__ = null;
public JRadioButton getResumeRadioButton(){
if(__resumeRadioButton__ == null){
- JRadioButton result = new JRadioButton(I18n._("isisfish.result.summary"), false);
- result.setToolTipText(I18n._("isisfish.result.summaryRadioButton"));
+ JRadioButton result = new JRadioButton(_("isisfish.result.summary"), false);
+ result.setToolTipText(_("isisfish.result.summaryRadioButton"));
result.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
on_resumeRadioButton_toggled(e);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultView.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultView.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultView.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -10,15 +10,15 @@
* @version
*/
+import static org.codelutin.i18n.I18nf._;
+
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import static fr.ifremer.isisfish.datastore.SimulationStorage.getSimulationNames;
import fr.ifremer.isisfish.logging.SimulationLoggerUtil;
import fr.ifremer.isisfish.simulator.SimulationProperties;
import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil;
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.i18n.I18n;
import javax.swing.*;
import java.awt.*;
@@ -43,13 +43,13 @@
try {
initSimulation();
} catch (Exception e) {
- log.warn(I18n._("could not create simulation filter model for reason {0}",e.getMessage()),e);
+ log.warn(_("could not create simulation filter model for reason %1$s",e.getMessage()),e);
}
}
private void initSimulation() throws IOException, ParseException {
// keep in context list of old simulation names (for filter process)
- java.util.List<String> value = getSimulationNames();
+ java.util.List<String> value = SimulationStorage.getSimulationNames();
// create filter model
filterModel = SimulationFilterUtil.createFilterModel(value);
// to used directly model.getFilteredResult() in xml
@@ -144,7 +144,7 @@
model.addElement(s);
}
} catch (Exception e) {
- log.warn(I18n._("could not filter on simulations"), e);
+ log.warn(_("could not filter on simulations"), e);
}
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResultViewUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,7 +9,7 @@
package fr.ifremer.isisfish.ui.result;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.i18n.I18nf._;
import javax.swing.*;
import java.awt.*;
@@ -27,7 +27,7 @@
public abstract class ResultViewUI extends JFrame implements ResultViewUICallback{
public ResultViewUI(){
- super(I18n._("isisfish.result.title"));
+ super(_("isisfish.result.title"));
}
protected void init(){
@@ -87,7 +87,7 @@
for (Object child : childs) {
result.add((Component) child);
}
- result.setToolTipText(I18n._("isisfish.result.vbox"));
+ result.setToolTipText(_("isisfish.result.vbox"));
__vbox1__ = result;
}
@@ -108,7 +108,7 @@
for (Object child : childs) {
result.add((JMenuItem) child);
}
- result.setToolTipText(I18n._("isisfish.result.menubar"));
+ result.setToolTipText(_("isisfish.result.menubar"));
__menubar1__ = result;
}
@@ -125,11 +125,11 @@
public JMenu getMenuitem1(){
if(__menuitem1__ == null){
Vector childs = getMenuitem1_menuChilds();
- JMenu result = new JMenu(I18n._("isisfish.result.file"));
+ JMenu result = new JMenu(_("isisfish.result.file"));
for (Object child : childs) {
result.add((Component) child);
}
- result.setToolTipText(I18n._("isisfish.result.menuitem"));
+ result.setToolTipText(_("isisfish.result.menuitem"));
__menuitem1__ = result;
}
@@ -147,9 +147,9 @@
if(__menuitem2__ == null){
ImageIcon icon = null;
- JMenuItem result = new JMenuItem(I18n._("isisfish.result.quit"), icon);
+ JMenuItem result = new JMenuItem(_("isisfish.result.quit"), icon);
- result.setToolTipText(I18n._("isisfish.result.menuitem"));
+ result.setToolTipText(_("isisfish.result.menuitem"));
result.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
on_Resultat_destroy_event();
@@ -242,7 +242,7 @@
for(int i=0; i<childs.size(); i++) {
result.add(childs.get(i), cs[i]);
}
- result.setToolTipText(I18n._("isisfish.result.table"));
+ result.setToolTipText(_("isisfish.result.table"));
__table33__ = result;
}
@@ -264,8 +264,8 @@
private JLabel __label9__ = null;
public JLabel getLabel9(){
if(__label9__ == null){
- JLabel result = new JLabel(I18n._("isisfish.result.choose.simulation"));
- result.setToolTipText(I18n._("isisfish.result.label"));
+ JLabel result = new JLabel(_("isisfish.result.choose.simulation"));
+ result.setToolTipText(_("isisfish.result.label"));
__label9__ = result;
}
@@ -280,7 +280,7 @@
javax.swing.JDesktopPane
result = new javax.swing.JDesktopPane
();
- result.setToolTipText(I18n._("isisfish.result.desktopPane"));
+ result.setToolTipText(_("isisfish.result.desktopPane"));
__desktopPane__ = result;
}
@@ -292,7 +292,7 @@
if(__simulation__ == null){
JComboBox result = new JComboBox();
result.setEditable(true);
- result.setToolTipText(I18n._("isisfish.result.simulation"));
+ result.setToolTipText(_("isisfish.result.simulation"));
result.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
on_simulation_selection_notify_event(e);
@@ -309,8 +309,8 @@
if(__openWindowButton__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.result.new.window"), icon);
- result.setToolTipText(I18n._("isisfish.result.openWindowButton"));
+ JButton result = new JButton(_("isisfish.result.new.window"), icon);
+ result.setToolTipText(_("isisfish.result.openWindowButton"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_openWindowButton_clicked();
@@ -327,8 +327,8 @@
if(__supprimerSimulationButton__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.result.remove.simulation"), icon);
- result.setToolTipText(I18n._("isisfish.result.removeSimulationButton"));
+ JButton result = new JButton(_("isisfish.result.remove.simulation"), icon);
+ result.setToolTipText(_("isisfish.result.removeSimulationButton"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_supprimerSimulationButton_clicked();
@@ -346,8 +346,8 @@
if(__voirSimulationLogButton__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.result.show.simulation.log"), icon);
- result.setToolTipText(I18n._("isisfish.result.tooltip.show.simulation.log"));
+ JButton result = new JButton(_("isisfish.result.show.simulation.log"), icon);
+ result.setToolTipText(_("isisfish.result.tooltip.show.simulation.log"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_voirSimulationLogButton_clicked();
@@ -365,9 +365,9 @@
if(__filterSimulationButton__ == null){
ImageIcon icon = null;
- JButton result = new JButton(I18n._("isisfish.filter"), icon);
+ JButton result = new JButton(_("isisfish.filter"), icon);
- result.setToolTipText(I18n._("isisfish.filter.simulation"));
+ result.setToolTipText(_("isisfish.filter.simulation"));
result.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
on_filterSimulationLogButton_clicked();
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/ResumePanelUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -25,8 +27,6 @@
import javax.swing.JTextArea;
import javax.swing.JViewport;
-import org.codelutin.i18n.I18n;
-
public abstract class ResumePanelUI extends JPanel implements ResumePanelUICallback{
protected void init(){
@@ -102,7 +102,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.resume.table"));
+ result.setToolTipText(_("isisfish.resume.table"));
__table1__ = result;
}
@@ -131,7 +131,7 @@
}
else
result = new JScrollPane(child);
- result.setToolTipText(I18n._("isisfish.resume.scrolledwindow"));
+ result.setToolTipText(_("isisfish.resume.scrolledwindow"));
__scrolledwindow2__ = result;
}
@@ -147,9 +147,9 @@
private JTextArea __resumeTextArea__ = null;
public JTextArea getResumeTextArea(){
if(__resumeTextArea__ == null){
- JTextArea result = new JTextArea(I18n._("isisfish.common.blank"));
+ JTextArea result = new JTextArea(_("isisfish.common.blank"));
result.setEditable(false);
- result.setToolTipText(I18n._("isisfish.resume.resumeTextArea"));
+ result.setToolTipText(_("isisfish.resume.resumeTextArea"));
__resumeTextArea__ = result;
}
@@ -166,7 +166,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.resume.matrixInfoGrid"));
+ result.setToolTipText(_("isisfish.resume.matrixInfoGrid"));
__matriceInfoGrid__ = result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBean.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.ui.result;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.i18n.I18nf._;
import com.bbn.openmap.gui.OMToolSet;
import com.bbn.openmap.gui.Tool;
@@ -37,7 +37,7 @@
getInformationDelegator().setMap(getIsisMapBean());
getInformationDelegator().setShowLights(false);
- getInformationDelegator().setLabel(I18n._("isisfish.simpleResult.more.information"));
+ getInformationDelegator().setLabel(_("isisfish.simpleResult.more.information"));
}
public void addResultatLayer(String id, ResultatLayer layer) {
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/result/SimpleResultatMapBeanUI.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -9,6 +9,8 @@
package fr.ifremer.isisfish.ui.result;
+import static org.codelutin.i18n.I18nf._;
+
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
@@ -22,8 +24,6 @@
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
-import org.codelutin.i18n.I18n;
-
public abstract class SimpleResultatMapBeanUI extends JPanel implements SimpleResultatMapBeanUICallback{
protected void init(){
@@ -119,7 +119,7 @@
JPanel result = new JPanel(new GridBagLayout());
for(int i=0; i<childs.size(); i++)
result.add((Component)childs.get(i), cs[i]);
- result.setToolTipText(I18n._("isisfish.simpleResult.table"));
+ result.setToolTipText(_("isisfish.simpleResult.table"));
__table12__ = result;
}
@@ -139,7 +139,7 @@
public fr.ifremer.isisfish.map.IsisMapBean getIsisMapBean(){
if(__resultatMap__ == null){
fr.ifremer.isisfish.map.IsisMapBean result = new fr.ifremer.isisfish.map.IsisMapBean();
- result.setToolTipText(I18n._("isisfish.simpleResult.resultatMap"));
+ result.setToolTipText(_("isisfish.simpleResult.resultatMap"));
__resultatMap__ = result;
}
@@ -164,7 +164,7 @@
com.bbn.openmap.gui.ToolPanel
result = new com.bbn.openmap.gui.ToolPanel
();
- result.setToolTipText(I18n._("isisfish.simpleResult.resultatMapToolBar"));
+ result.setToolTipText(_("isisfish.simpleResult.resultatMapToolBar"));
__resultatMapToolBar__ = result;
}
@@ -175,7 +175,7 @@
public LegendPanel getLegendPanel(){
if(__legendPanel__ == null){
LegendPanel result = new LegendPanel();
- result.setToolTipText(I18n._("isisfish.simpleResult.legendPanel"));
+ result.setToolTipText(_("isisfish.simpleResult.legendPanel"));
__legendPanel__ = result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/Action.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/Action.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/Action.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,6 @@
package fr.ifremer.isisfish.ui.script;
-import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
import fr.ifremer.isisfish.datastore.CodeSourceStorage;
@@ -44,16 +43,16 @@
import static fr.ifremer.isisfish.equation.Language.JAVA;
import fr.ifremer.isisfish.ui.UIHelper;
import fr.ifremer.isisfish.ui.ScriptActionHelper;
-import fr.ifremer.isisfish.versionning.vcsSvn.SVNMigrateHelper;
-import org.codelutin.vcs.VCSState;
-import org.codelutin.vcs.VCSAction;
-import org.codelutin.vcs.VCSFileState;
-import org.codelutin.vcs.VCSFileStateManager;
-import org.codelutin.vcs.VCSHelper;
-import fr.ifremer.isisfish.versionning.ui.VCSUIHelper;
+//import fr.ifremer.isisfish.versionning.vcsSvn.SVNMigrateHelper;
+//import org.codelutin.vcs.VCSState;
+//import org.codelutin.vcs.VCSAction;
+//import org.codelutin.vcs.VCSFileState;
+//import org.codelutin.vcs.VCSFileStateManager;
+//import org.codelutin.vcs.VCSHelper;
+//import fr.ifremer.isisfish.versionning.ui.VCSUIHelper;
import org.apache.commons.logging.Log;
import static org.apache.commons.logging.LogFactory.getLog;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.swixat.databinding.JTreeModel;
import org.swixat.databinding.JTreeNode;
import org.swixat.databinding.TreeNodeWrapper;
@@ -76,6 +75,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import org.codelutin.util.FileUtil;
/**
* @author dessard
@@ -100,7 +100,16 @@
//public static Object opened(Context uiContext, AbstractFrame frame) {
public static Object opened(Context uiContext) {
- updateVCSContext(uiContext,null,-1);
+
+ // updateVCSContext(uiContext,null,-1);
+
+ // TODO compute if this action is allowed or not, this permit
+ // to disable some action in ui
+ uiContext.setData(CAN_COMMIT, false);
+ uiContext.setData(CAN_UPDATE, false);
+ uiContext.setData(CAN_DELETE, false);
+ uiContext.setData(CAN_DIFF, false);
+
return null;
}
@@ -156,8 +165,10 @@
uiContext.setData(ACTION_LOG, "");
uiContext.setData(SCRIPT_STORAGE, script);
uiContext.setData(SCRIPT_TYPE, scriptType);
- updateVCSContext(uiContext,script,script==null?-1:script.getFile().lastModified());
-
+
+ // FIXME a remettre en place
+ // updateVCSContext(uiContext,script,script==null?-1:script.getFile().lastModified());
+
frame.refreshView("scriptJedit");
frame.refreshView("actionLogArea");
frame.refreshView("buttonBar");
@@ -165,48 +176,50 @@
}
return null;
}
- //TODO this method should be call when a evetn occurs in editor to compute
- // TODO new filte state
- public static void updateVCSState(Context uiContext, CodeSourceStorage script,String content) {
- VCSFileState state = (VCSFileState) uiContext.getData(VCS_STATE);
- if (state==null) {
- return;
- }
- //TODO finish it
- log.info("state "+state);
- }
- private static void updateVCSContext(Context uiContext, CodeSourceStorage script,long oldTilestamp) {
- Boolean canCommit=false;
- Boolean canUpdate=false;
- Boolean canDelete=false;
- Boolean canDiff=false;
- boolean write=false;
- if (script!=null && VCSHelper.isConnected()) {
- write = VCSHelper.hasWriteAccess();
- VCSFileState state = VCSFileStateManager.getState(oldTilestamp, script.getFile());
- uiContext.setData(VCS_STATE, state);
- VCSState vcsState = state.getState();
- canCommit = write && vcsState != VCSState.OUT_OF_DATE && vcsState != VCSState.OUT_OF_DATE_AND_MODIFIED;
- //canCommit = write && vcsState.authorizeAction(VCSAction.COMMIT,VCSAction.ADD);
- canDelete = write && vcsState != VCSState.UNVERSIONNED;
- //canDelete = write && vcsState!= VCSState.UNVERSIONNED && vcsState.authorizeAction(VCSAction.DELETE);
- canUpdate = vcsState != VCSState.UNVERSIONNED && (vcsState == VCSState.OUT_OF_DATE || vcsState != VCSState.OUT_OF_DATE_AND_MODIFIED);
- //canUpdate= vcsState.authorizeAction(VCSAction.UPDATE,VCSAction.OVERWRITE_AND_UPDATE,VCSAction.REVERT);
- canDiff = vcsState.authorizeAction(VCSAction.DIFF);
- log.info(vcsState);
- }
- log.info("can write " + (write));
- log.info("can commit " + (canCommit));
- log.info("can update " + (canUpdate));
- log.info("can delete " + (canDelete));
- log.info("can diff "+(canDiff));
+// //TODO this method should be call when a evetn occurs in editor to compute
+// // TODO new filte state
+// public static void updateVCSState(Context uiContext, CodeSourceStorage script,String content) {
+// VCSFileState state = (VCSFileState) uiContext.getData(VCS_STATE);
+// if (state==null) {
+// return;
+// }
+// //TODO finish it
+// log.info("state "+state);
+// }
- uiContext.setData(CAN_COMMIT, canCommit);
- uiContext.setData(CAN_UPDATE, canUpdate);
- uiContext.setData(CAN_DELETE, canDelete);
- uiContext.setData(CAN_DIFF, canDiff);
- }
+// private static void updateVCSContext(Context uiContext, CodeSourceStorage script,long oldTilestamp) {
+// Boolean canCommit=false;
+// Boolean canUpdate=false;
+// Boolean canDelete=false;
+// Boolean canDiff=false;
+// boolean write=false;
+// if (script!=null && VCSHelper.isConnected()) {
+// write = VCSHelper.hasWriteAccess();
+// VCSFileState state = VCSFileStateManager.getState(oldTilestamp, script.getFile());
+// uiContext.setData(VCS_STATE, state);
+// VCSState vcsState = state.getState();
+// canCommit = write && vcsState != VCSState.OUT_OF_DATE && vcsState != VCSState.OUT_OF_DATE_AND_MODIFIED;
+// //canCommit = write && vcsState.authorizeAction(VCSAction.COMMIT,VCSAction.ADD);
+// canDelete = write && vcsState != VCSState.UNVERSIONNED;
+// //canDelete = write && vcsState!= VCSState.UNVERSIONNED && vcsState.authorizeAction(VCSAction.DELETE);
+// canUpdate = vcsState != VCSState.UNVERSIONNED && (vcsState == VCSState.OUT_OF_DATE || vcsState != VCSState.OUT_OF_DATE_AND_MODIFIED);
+// //canUpdate= vcsState.authorizeAction(VCSAction.UPDATE,VCSAction.OVERWRITE_AND_UPDATE,VCSAction.REVERT);
+// canDiff = vcsState.authorizeAction(VCSAction.DIFF);
+// log.info(vcsState);
+// }
+// log.info("can write " + (write));
+// log.info("can commit " + (canCommit));
+// log.info("can update " + (canUpdate));
+// log.info("can delete " + (canDelete));
+// log.info("can diff "+(canDiff));
+//
+//
+// uiContext.setData(CAN_COMMIT, canCommit);
+// uiContext.setData(CAN_UPDATE, canUpdate);
+// uiContext.setData(CAN_DELETE, canDelete);
+// uiContext.setData(CAN_DIFF, canDiff);
+// }
/**
* Creer un nouveau script, ici un script peut-etre un Script, un Simulator,
@@ -385,7 +398,9 @@
boolean remote) {
log.debug("deleteScript called");
ScriptMapping mapping = guessMapping(tree);
- if (mapping == null) return null;
+ if (mapping == null) {
+ return null;
+ }
try {
int resp = JOptionPane.showConfirmDialog(frame.getRootComponent(),_("isisfish.message.confirm.remove.script" , script.getName()));
//TODO desactive editor
@@ -425,7 +440,9 @@
// save script before commit
script.setContent(content);
- String msg = VCSUIHelper.getCommitMessage(script.getFile(), true);
+ String msg = JOptionPane.showInputDialog(_("Indiquez vos modifications"));
+
+// String msg = VCSUIHelper.getCommitMessage(script.getFile(), true);
if (msg == null) {
frame.setInfoText(_("isisfish.message.commit.cancelled"));
} else {
@@ -467,30 +484,32 @@
JTree tree, CodeSourceStorage script,
String content) {
log.debug("commitScript called");
- ScriptMapping mapping = guessMapping(tree);
- if (mapping == null) return null;
- try {
- long oldTilestamp = script.getFile().lastModified();
- // save script before commit
- script.setContent(content);
-
- String diff;
- VCSFileState state = VCSFileStateManager.getState(oldTilestamp,script.getFile());
- boolean canDiff = state.getState().authorizeAction(VCSAction.DIFF);
- if (canDiff) {
- diff = script.diff();
- } else {
- diff = _("isisfish.message.no.diff" , script.getFile(),state.getState().libelle() );
- }
-
- frame.setInfoText(_("isisfish.message.diff.finished" , state.getState().libelle() ));
- uiContext.setData(ACTION_LOG, diff);
- frame.refreshView("actionLogArea");
-
- } catch (Exception eee) {
- return returnError(_("isisfish.error.script.diff",script==null?null:script.getFile(), eee.getMessage()),eee);
- }
- return null;
+// TODO a refaire
+ throw new UnsupportedOperationException("En reparation");
+// ScriptMapping mapping = guessMapping(tree);
+// if (mapping == null) return null;
+// try {
+// long oldTilestamp = script.getFile().lastModified();
+// // save script before commit
+// script.setContent(content);
+//
+// String diff;
+// VCSFileState state = VCSFileStateManager.getState(oldTilestamp,script.getFile());
+// boolean canDiff = state.getState().authorizeAction(VCSAction.DIFF);
+// if (canDiff) {
+// diff = script.diff();
+// } else {
+// diff = _("isisfish.message.no.diff" , script.getFile(),state.getState().libelle() );
+// }
+//
+// frame.setInfoText(_("isisfish.message.diff.finished" , state.getState().libelle() ));
+// uiContext.setData(ACTION_LOG, diff);
+// frame.refreshView("actionLogArea");
+//
+// } catch (Exception eee) {
+// return returnError(_("isisfish.error.script.diff",script==null?null:script.getFile(), eee.getMessage()),eee);
+// }
+// return null;
}
public static Object checkScript(Context uiContext, AbstractFrame frame,
@@ -655,8 +674,6 @@
List<File> dirFound = new ArrayList<File>();
List<File> dirWithFileFound = new ArrayList<File>();
- FileFilter excludeFilter = getSCRIPT_FILE_FILTER();
-
for (TreePath selectedPath : selectedPaths) {
TreeNodeWrapper node = (TreeNodeWrapper) selectedPath.getPathComponent(1);
@@ -690,7 +707,17 @@
for (File dir : dirFound) {
// take all files and directories in the dir
// (without VCS and data dirs)
- SVNMigrateHelper.grabbFiles(dir, excludeFilter, listF);
+// SVNMigrateHelper.grabbFiles(dir, excludeFilter, listF);
+
+
+ // getFilteredElements use include file filter, we inverse excludeFilter
+ FileFilter filter = new FileFilter() {
+ FileFilter excludeFilter = getSCRIPT_FILE_FILTER();
+ public boolean accept(File pathname) {
+ return !excludeFilter.accept(pathname);
+ }
+ };
+ listF.addAll(FileUtil.getFilteredElements(dir, filter, true));
}
for (File file : listF)
result.add(file.getAbsolutePath().substring(prefixLength));
@@ -798,7 +825,7 @@
"import java.io.Writer;\n" +
"\n" +
- "import static org.codelutin.i18n.I18n._;\n" +
+ "import static org.codelutin.i18n.I18nf._;\n" +
"import org.codelutin.math.matrix.*;\n" +
"\n" +
"import fr.ifremer.isisfish.util.Doc;\n" +
@@ -863,7 +890,7 @@
*/
"package rules{0};\n" +
"\n" +
- "import static org.codelutin.i18n.I18n._;\n" +
+ "import static org.codelutin.i18n.I18nf._;\n" +
"\n" +
"import org.apache.commons.logging.Log;\n" +
"import org.apache.commons.logging.LogFactory;\n" +
@@ -966,7 +993,7 @@
*/
"package analyseplans{0};\n" +
"\n" +
- "import static org.codelutin.i18n.I18n._;\n" +
+ "import static org.codelutin.i18n.I18nf._;\n" +
"\n" +
"import org.apache.commons.logging.Log;\n" +
"import org.apache.commons.logging.LogFactory;\n" +
@@ -1104,7 +1131,7 @@
public static FileFilter getSCRIPT_FILE_FILTER() {
if (SCRIPT_FILE_FILTER == null) {
- SCRIPT_FILE_FILTER = new ScriptFileFilter(IsisFish.config.getVCS());
+ SCRIPT_FILE_FILTER = new ScriptFileFilter(IsisFish.vcs);
}
return SCRIPT_FILE_FILTER;
}
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ExportDialog.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ExportDialog.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ExportDialog.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,109 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin,
-* Benjamin Poussin, Tony Chemit
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-* ##% */
-package fr.ifremer.isisfish.ui.script;
-
-import fr.ifremer.isisfish.ui.UIHelper;
-import fr.ifremer.isisfish.ui.script.jaxx.JExportDialog;
-import fr.ifremer.isisfish.ui.util.IDialog;
-import org.codelutin.vcs.ui.FieldModelUtil;
-
-import javax.swing.AbstractAction;
-import javax.swing.JScrollPane;
-
-public class ExportDialog extends JExportDialog implements IDialog {
-
- private static final long serialVersionUID = 3713567360166530726L;
- /**
- * ok action to be burned by {@link #getOk()} button
- */
- protected AbstractAction okAction;
- /**
- * cancel action to be burned by {@link #getCancel()} button
- */
- protected AbstractAction cancelAction;
- /**
- * maximum width authorized
- */
- protected int maxWidth;
- /**
- * minimum height authorized
- */
- protected int minHeight;
- /**
- * maximum height authorized
- */
- protected int maxHeight;
-
- public int computeHeight() {
- int height = minHeight;
- if (!isEmpty()) {
- height += 16 * (model.getRowCount());
- }
- return height;
- }
-
- public int computeWidth() {
- return maxWidth;
- }
-
- public void prepareDialog(int nbRows,
- FieldModelUtil.ModuleFile model,
- String absolutePath,
- AbstractAction okAction,
- AbstractAction cancelAction,
- boolean show) {
- items.setModel(this.model = model);
- archivePath.setText(absolutePath);
-
- if (!isEmpty()) {
- // check all items (check really items before coming here...)
- checkAll.setSelected(true);
- }
-
- table.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
- //items.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- int maxWidth = 400;
- if (!isEmpty()) {
- UIHelper.setColumnsWidth(items, 10, 100, maxWidth - (items.getRowCount() > nbRows ? 16 : -2) - (6 * 3) - 100 - 10);
- }
- UIHelper.prepareDialog(this, okAction, cancelAction, show, maxWidth, 136, 136 + (16 * nbRows));
- }
-
- public void setOkAction(AbstractAction okAction) {
- this.okAction = okAction;
- }
-
- public void setCancelAction(AbstractAction cancelAction) {
- this.cancelAction = cancelAction;
- }
-
- public void setMaxWidth(int maxWidth) {
- this.maxWidth = maxWidth;
- }
-
- public void setMinHeight(int minHeight) {
- this.minHeight = minHeight;
- }
-
- public void setMaxHeight(int maxHeight) {
- this.maxHeight = maxHeight;
- }
-
-}
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ImportDialog.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ImportDialog.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/ImportDialog.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,125 +0,0 @@
-package fr.ifremer.isisfish.ui.script;
-
-import fr.ifremer.isisfish.ui.UIHelper;
-import static fr.ifremer.isisfish.ui.UIHelper.setColumnsWidth;
-import fr.ifremer.isisfish.ui.script.jaxx.JImportDialog;
-import fr.ifremer.isisfish.ui.util.IDialog;
-import org.codelutin.vcs.ui.FieldModelUtil;
-
-import javax.swing.AbstractAction;
-import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER;
-import java.io.File;
-
-public class ImportDialog extends JImportDialog implements IDialog {
-
- private static final long serialVersionUID = 7147876575187312082L;
- /** ok action to be burned by {@link #getOk()} button */
- protected AbstractAction okAction;
- /** cancel action to be burned by {@link #getCancel()} button */
- protected AbstractAction cancelAction;
- /** maximum width authorized */
- protected int maxWidth;
- /** minimum height authorized */
- protected int minHeight;
- /** maximum height authorized */
- protected int maxHeight;
- /** maximum number of row */
- protected int nbRowMax;
-
- public int computeWidth() {
- return maxWidth;
- }
-
- public int computeHeight() {
- int height = minHeight;
- boolean noNew = isNewItemEmpty();
- boolean noConflict = isItemEmpty();
- boolean noOne = isEmpty();
- int nbRow = 0;
- int nbRowNew = 0;
- int nbT = 0;
- if (!noNew) {
- nbRowNew = modelNewItems.getRowCount();
- nbT++;
- }
- if (!noConflict) {
- nbRow = modelItems.getRowCount();
- nbT++;
- }
- if (!noOne) {
- height += 28;
- }
- if (!noConflict) {
- height += 28;
- }
- int max = nbRow > nbRowNew ? nbRow : nbRowNew;
- if (nbT == 1) {
- if (noConflict) {
- height+=16;
- if (max <= nbRowMax) {
- height += 16;
- }
- }
- } else if (nbT == 2) {
- //TODO Finish it
- }
- height += nbT == 2 ? 16 * ((2 * (max + 2))) : 16 * (nbRow + nbRowNew + 1);
- return height;
- }
-
- public void prepareDialog(int nbRows,
- FieldModelUtil.ModuleFile modelNewItems,
- FieldModelUtil.ModuleFile<String> modelItems,
- File source,
- AbstractAction okAction,
- AbstractAction cancelAction,
- boolean show) {
- nbRowMax = nbRows;
- if (modelItems != null) {
- items.setModel(this.modelItems = modelItems);
- }
- if (modelNewItems != null) {
- newItems.setModel(this.modelNewItems = modelNewItems);
- }
- archivePath.setText(source.getAbsolutePath());
- this.archivePath.setEditable(false);
-
- table1.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
- table2.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
-
- if (!isEmpty()) {
- checkAll.setSelected(true);
- }
- int maxWidth = 450;
- int minHeight = 67;
- if (!isItemEmpty()) {
- setColumnsWidth(items, 10, 100, maxWidth - (items.getRowCount() > nbRows ? 16 : -2) - (6 * 3) - 100 - 10);
- }
- if (!isNewItemEmpty()) {
- setColumnsWidth(newItems, 10, 100, maxWidth - (newItems.getRowCount() > nbRows ? 16 : -2) - (6 * 3) - 100 - 10);
- }
-
- UIHelper.prepareDialog(this, okAction, cancelAction, show, maxWidth, minHeight, minHeight + (16 * nbRows));
- }
-
- public void setOkAction(AbstractAction okAction) {
- this.okAction = okAction;
- }
-
- public void setCancelAction(AbstractAction cancelAction) {
- this.cancelAction = cancelAction;
- }
-
- public void setMaxWidth(int maxWidth) {
- this.maxWidth = maxWidth;
- }
-
- public void setMinHeight(int minHeight) {
- this.minHeight = minHeight;
- }
-
- public void setMaxHeight(int maxHeight) {
- this.maxHeight = maxHeight;
- }
-
-}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ChooseFileAction.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.ui.script.action;
-import org.codelutin.i18n.I18n;
+import static org.codelutin.i18n.I18nf._;
import javax.swing.AbstractAction;
import javax.swing.JDialog;
@@ -37,7 +37,7 @@
}
JFileChooser chooser = new JFileChooser(dir);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- int ret = chooser.showDialog(dialog, I18n._("isisfish.message.choose.archive"));
+ int ret = chooser.showDialog(dialog, _("isisfish.message.choose.archive"));
if (ret == JFileChooser.APPROVE_OPTION) {
File newFile = chooser.getSelectedFile();
String path;
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ExportAction.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,118 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin,
-* Benjamin Poussin, Tony Chemit
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-* ##% */
-package fr.ifremer.isisfish.ui.script.action;
-
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.ui.util.IsisAction;
-import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
-
-import static org.codelutin.i18n.I18n._;
-import org.codelutin.util.ZipUtil;
-import org.codelutin.util.StringUtil;
-
-import org.apache.commons.logging.Log;
-import static org.apache.commons.logging.LogFactory.getLog;
-
-import javax.swing.JDialog;
-import static javax.swing.JOptionPane.CANCEL_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import javax.swing.JTextField;
-import java.awt.event.ActionEvent;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class ExportAction extends IsisAction {
-
- static private Log log = getLog(ExportAction.class);
-
- protected ModuleFile<String> model;
- protected JTextField file;
- protected File root;
-
- private List<String> selected;
- private File dst;
- private static final long serialVersionUID = 3373564473968724365L;
-
- public ExportAction(JDialog dialog, JTextField file, File root,
- ModuleFile<String> model) {
- super(dialog);
- this.file = file;
- this.root = root;
- this.model = model;
- }
-
- protected boolean prepare() {
- dst = new File(file.getText());
-
- if ("".equals(dst.getAbsolutePath())) return false;
-
- if (dst.exists()) {
- int resp = showConfirmDialog(dialog,_("isisfish.message.file.already.exists", dst));
- if (resp == CANCEL_OPTION) {
- dialog.dispose();
- return false;
- }
- if (resp == YES_OPTION) {
- dst.getParentFile().mkdirs();
- }
- else {
- return false;
- }
- } else if (!dst.getParentFile().exists()) {
- int resp = showConfirmDialog(dialog,_("isisfish.message.directory.not.exists", dst));
- if (resp == CANCEL_OPTION) {
- dialog.dispose();
- return false;
- }
- if (resp == YES_OPTION) {
- dst.getParentFile().mkdirs();
- }
- else return false;
- }
-
- selected = model.getSelected(0);
-
- return !(selected == null || selected.isEmpty());
- }
-
- protected void perform(ActionEvent e) {
- try {
-
- List<File> toZip = new ArrayList<File>();
-
- for (String path : selected) {
- toZip.add(new File(root, path));
- log.info(_("isisfish.message.export.path.tozip",path));
- }
-
- if (dst.exists()) dst.delete();
-
- dst.createNewFile();
-
- ZipUtil.compressFiles(dst, root, toZip);
- log.info(_("isisfish.message.export.result",toZip.size(), dst,StringUtil.convertMemory(dst.length())));
- } catch (IOException e1) {
- throw new IsisFishRuntimeException(e1);
- }
- }
-}
\ No newline at end of file
Deleted: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/script/action/ImportAction.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,90 +0,0 @@
-package fr.ifremer.isisfish.ui.script.action;
-
-import fr.ifremer.isisfish.ui.util.IsisActionWithBackup;
-import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
-import org.apache.commons.logging.Log;
-import static org.apache.commons.logging.LogFactory.getLog;
-import org.codelutin.util.ZipUtil;
-
-import javax.swing.JDialog;
-import java.awt.event.ActionEvent;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class ImportAction extends IsisActionWithBackup {
-
- /**
- * model to contains new files to add from import
- */
- protected ModuleFile<String> model;
- /**
- * model to contains files conflicted from import
- */
- protected ModuleFile<String> modelWithBackup;
- /**
- * location of archive to import
- */
- protected File source;
- /**
- * List of relative path to import (is init in {@link #prepare()} method)
- */
- private List<String> toImport;
- private static final long serialVersionUID = 2459027106690418279L;
-
- public ImportAction(JDialog dialog, File source, File root,
- ModuleFile<String> modelNewItems,
- ModuleFile<String> modelItems) {
- super(dialog, root);
- this.source = source;
- this.model = modelNewItems;
- this.modelWithBackup = modelItems;
- }
-
- protected void perform(ActionEvent e) {
-
- // do backup stuff
- super.perform(e);
-
- // unflate files to destination (root)
- try {
- for (String newFile : toImport) {
- log.info("unzip " + newFile);
- }
- ZipUtil.uncompress(source, root, toImport,null,null);
-
- } catch (IOException e1) {
- throw new RuntimeException(e1);
- }
- log.info("unzip " + toImport.size() + " entry(ies) from '" + source + "'");
- toImport.clear();
- }
-
- protected boolean prepare() {
- if (source == null || (model == null && modelWithBackup == null) ||
- "".equals(source.getAbsolutePath())) return false;
-
- toImport = new ArrayList<String>();
- if (model != null) {
- // add new files
- toImport.addAll(model.getSelected(0));
- }
-
- if (modelWithBackup != null) {
- // add selected files (force overwrite)
- toImport.addAll(modelWithBackup.getSelected(0));
- }
-
- return !toImport.isEmpty();
- }
-
- protected List<String> getFilesToBackup() {
- List<String> toBackup = new ArrayList<String>();
- if (modelWithBackup != null)
- toBackup.addAll(modelWithBackup.getSelected(0));
- return toBackup;
- }
-
- static private Log log = getLog(ImportAction.class);
-}
\ No newline at end of file
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorAction.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -49,7 +49,7 @@
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.codelutin.topia.TopiaContext;
import org.swixat.framework.AbstractFrame;
import org.swixat.framework.OutputView;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/SimulatorListeners.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -4,7 +4,7 @@
import fr.ifremer.isisfish.ui.widget.EnabledIfListNotEmpty;
import fr.ifremer.isisfish.ui.widget.EnabledIfItemSelectedInList;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -85,8 +85,7 @@
public static void initButtonRemoveIfItemSelected(
final JButton button, final JList list) {
if (button == null || list == null) {
- log.warn(_("isisfish.error.init.remove.button" +
- "or list is null) button : {0}, list : {1}", button, list));
+ log.warn(_("isisfish.error.init.remove.button", button, list));
return;
}
button.setEnabled(list.getSelectedIndex() > -1);
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/simulator/filter/SimulationFilterUtil.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -5,7 +5,7 @@
import fr.ifremer.isisfish.ui.widget.filter.FilterModel;
import fr.ifremer.isisfish.ui.widget.filter.FilterParamModel;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/ui/widget/editor/EquationTableEditor.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,12 +31,12 @@
package fr.ifremer.isisfish.ui.widget.editor;
+import static org.codelutin.i18n.I18nf._;
+
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.ui.input.EquationEditorPane;
-import org.codelutin.i18n.I18n;
-
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
@@ -89,7 +89,7 @@
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column){
equation = (Equation)value;
- String name = I18n._("isisfish.common.empty");
+ String name = _("isisfish.common.empty");
if (equation != null) {
name = equation.getName();
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/util/CompileHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/util/CompileHelper.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/util/CompileHelper.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.util;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.IOException;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/util/DocHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/util/DocHelper.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/util/DocHelper.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,6 +1,6 @@
package fr.ifremer.isisfish.util;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/util/EvaluatorHelper.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -31,7 +31,7 @@
package fr.ifremer.isisfish.util;
-import static org.codelutin.i18n.I18n._;
+import static org.codelutin.i18n.I18nf._;
import java.io.File;
import java.io.IOException;
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/AbstractVCS.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -20,10 +20,23 @@
package fr.ifremer.isisfish.vcs;
+import fr.ifremer.isisfish.IsisConfig;
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.FormuleStorage;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.util.ApplicationConfig;
+import org.codelutin.topia.TopiaException;
/**
*
@@ -38,12 +51,92 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(AbstractVCS.class);
- protected ApplicationConfig config;
+ protected File localRepository;
+ protected String protocol;
+ protected String host;
+ protected String path;
+ protected String tag;
+ protected File sshKeyFile;
+ protected String login;
+ protected String password;
+
+ public AbstractVCS(File localRepository,
+ String protocol, String host, String path, String tag,
+ File sshKeyFile, String login, String password) {
+ this.localRepository = localRepository;
+ this.protocol = protocol;
+ this.host = host;
+ this.path = path;
+ this.tag = tag;
+ this.sshKeyFile = sshKeyFile;
+ this.login = login;
+ this.password = password;
+ }
- public AbstractVCS(ApplicationConfig config) {
- this.config = config;
+ public File getLocalRepository() {
+ return localRepository;
}
+
+ public void setLocalRepository(File localRepository) {
+ this.localRepository = localRepository;
+ }
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getTag() {
+ return tag;
+ }
+
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
+ public File getSshKeyFile() {
+ return sshKeyFile;
+ }
+
+ public void setSshKeyFile(File sshKeyFile) {
+ this.sshKeyFile = sshKeyFile;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
public boolean accept(File pathname) {
return isVersionnableAbleFile(pathname);
}
@@ -53,4 +146,82 @@
return !".svn".equals(filename) && !"CVS".equals(filename) && !filename.endsWith("~");
}
+ /**
+ * Verifie la connexion et si le protocole a change, switch le repository
+ * pour utiliser le nouveau protocole. Si on est en mode interface (mode
+ * graphique) et que le switch se passe mal, demande a l'utilisateur
+ * de nouvelle valeur pour le protocole (+ identifiant, ...)
+ */
+ public void checkProtocol() throws VCSException {
+ if (isConnected()) {
+ // Si le repo local exist mais n'est pas en svn, on renome ce repertoire
+ // FIXME a faire
+ File local = getLocalRepository();
+ if(local.exists()) {
+ File svn = new File(local, ".svn");
+ if (!svn.exists()) {
+ File localBackup = new File(local.getParentFile(),
+ local.getName() + "-" +
+ new SimpleDateFormat().format(new Date()));
+ if(!local.renameTo(localBackup)) {
+ throw new IsisFishRuntimeException("Can rename local repository that don't use svn");
+ }
+ }
+ }
+
+ // Si le repo local n'existe pas on fait un check out complet
+ if (!local.exists()) {
+ // On modifie la version a a checkouter pour etre sur d'avoir la bonne
+
+ AnalysePlanStorage.checkout();
+ ExportStorage.checkout();
+ FormuleStorage.checkout();
+ RuleStorage.checkout();
+ ScriptStorage.checkout();
+ SimulatorStorage.checkout();
+
+ checkout(getLocalRepository(), SimulationStorage.SIMULATION_PATH, false);
+ checkout(getLocalRepository(), RegionStorage.REGION_PATH, false);
+ try {
+ RegionStorage.checkout("DemoRegion");
+ } catch (TopiaException eee) {
+ log.warn("Can't checkout DemoRegion", eee);
+ }
+ }
+
+ if (!local.exists()) {
+ throw new IsisFishRuntimeException("Can't find local repository");
+ }
+ // si le protocole a change on le change
+// if (getLocalTag() != )
+ // FIXME a faire
+ }
+ }
+
+ /**
+ * Verifie que l'utilisateur utilise la bonne version de script en fonction
+ * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
+ * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
+ */
+ public void checkRelease() throws VCSException {
+ if (isConnected()) {
+ // Si on utilise pas la bonne branche on change de branche
+ // FIXME a faire
+ }
+ }
+
+ /**
+ * Verifie si tous les fichiers du repository local sont les dernieres
+ * version par rapport au serveur. Si ce n'est pas le cas et que l'on est
+ * en mode interactif (mode graphique), on lui propose de mettre a jour
+ * les fichiers, avec la possibilite de voir les changements sur les
+ * fichiers
+ */
+ public void checkFileStatus() throws VCSException {
+ if (isConnected()) {
+ // si des fichiers ont ete mis a jour sur le serveur on se synchronise
+ // FIXME a faire
+ }
+ }
+
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCS.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -38,10 +38,18 @@
public static final String TYPE_NONE = "none";
public static final String TYPE_SVN = "svn";
/**
+ * can be None, CVS or SVN. only None or SVN work
+ */
+ public static final String VCS_TYPE = "vcs.type";
+ /**
* can be http, ssh, pserver, ...
*/
public static final String VCS_PROTOCOLE = "vcs.protocole";
/**
+ * ssh key file
+ */
+ public static final String VCS_SSH_KEY_FILE = "vcs.ssh.keyFile";
+ /**
* remote server adresse (ip or serveur name) ex: labs.libre-entreprise.org
*/
public static final String VCS_HOST_NAME = "vcs.hostName";
@@ -50,23 +58,41 @@
*/
public static final String VCS_PATH = "vcs.path";
/**
- * repository tag to used ex: "3.2" or "" for no tag
+ * repository tag to used ex: "/branches/3.2" or "HEAD", "/trunk" or ""
*/
public static final String VCS_TAG = "vcs.tag";
/**
- * can be None, CVS or SVN. only None or SVN work
- */
- public static final String VCS_TYPE = "vcs.type";
- /**
* user login to access vcs ex: bpoussin
*/
public static final String VCS_USER_NAME = "vcs.username";
/**
- * user passwd or passphrase to access vcs ex: xxxxxxxx
+ * user passwd or passphrase (protocole dependent) to access vcs ex: xxxxxxxx
*/
public static final String VCS_USER_PASSWORD = "vcs.password";
/**
+ * Get local repository directory
+ */
+ public File getLocalRepository();
+
+ /**
+ * Get the server address of the local file
+ * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish/trunk/isis-fish/pom.xml
+ *
+ * @param f file that we want to know the source
+ * @return
+ */
+ public String getLocalRepositorySource(File f) throws VCSException;
+
+ /**
+ * Get the root server address of the local repository
+ * ex: svn+ssh://bpoussin at labs.libre-entreprise.org/svnroot/isis-fish
+ *
+ * @return
+ */
+ public String getLocalRepositoryRoot() throws VCSException;
+
+ /**
* Usefull to permit to use VCSNone as filter
* @param pathname
* @return
@@ -74,6 +100,14 @@
public boolean accept(File pathname);
/**
+ * Commit specified files
+ * @param files files to commit
+ * @param msg message used to commit
+ * @throws fr.ifremer.isisfish.vcs.VCSException
+ */
+ public void commit(List<File> files, String msg) throws VCSException;
+
+ /**
* Add and commit file in server repository
* @param files list of file to add
* @param msg message for commit
@@ -85,10 +119,10 @@
* get repository module on server and put it in destDir
* @param destDir destination directory
* @param module module name
- * @param b // FIXME
+ * @param recurse if file is directory checkout sub file
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public void checkout(File destDir, String module, boolean b) throws VCSException;
+ public void checkout(File destDir, String module, boolean recurse) throws VCSException;
/**
* Change repository tag, used when we use some tag and we want to go to
@@ -193,10 +227,34 @@
/**
* Update file
- * @param file file to update
+ * @param files files to update
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(File file) throws VCSException;
+ public boolean update(List<File> files) throws VCSException;
+ /**
+ * Verifie la connexion et si le protocole a change, switch le repository
+ * pour utiliser le nouveau protocole. Si on est en mode interface (mode
+ * graphique) et que le switch se passe mal, demande a l'utilisateur
+ * de nouvelle valeur pour le protocole (+ identifiant, ...)
+ */
+ void checkProtocol() throws VCSException;
+
+ /**
+ * Verifie si tous les fichiers du repository local sont les dernieres
+ * version par rapport au serveur. Si ce n'est pas le cas et que l'on est
+ * en mode interactif (mode graphique), on lui propose de mettre a jour
+ * les fichiers, avec la possibilite de voir les changements sur les
+ * fichiers
+ */
+ void checkFileStatus() throws VCSException;
+
+ /**
+ * Verifie que l'utilisateur utilise la bonne version de script en fonction
+ * de sa version de logiciel. Si ce n'est pas le cas et que l'on est en
+ * interactif (mode graphique), on lui demande ce qu'il souhaite faire.
+ */
+ void checkRelease() throws VCSException;
+
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSFactory.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -19,6 +19,8 @@
package fr.ifremer.isisfish.vcs;
+import fr.ifremer.isisfish.IsisConfig;
+import java.io.File;
import static org.codelutin.i18n.I18nf._;
import java.util.Properties;
@@ -26,9 +28,9 @@
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.util.ApplicationConfig;
/**
+ * Permet de recupere le bon VCS en fonction de la configuration
*
* @author poussin
* @version $Revision$
@@ -49,7 +51,7 @@
* @param config
* @return usable VCSNone
*/
- static public VCSNone createVCS(ApplicationConfig config) {
+ static public VCSNone createVCS(IsisConfig config) {
Properties aliases = new Properties();
// for empty and TYPE_NONE we used this class
aliases.setProperty("", VCSNone.class.getName());
@@ -62,13 +64,24 @@
String type = config.getOption(VCS.VCS_TYPE);
// try to convert if type is not class name but an alias
String classname = aliases.getProperty(type, type);
+
+ File dataDir = config.getDatabaseDirectory();
+ String protocol = config.getOption(VCS.VCS_PROTOCOLE);
+ String host = config.getOption(VCS.VCS_HOST_NAME);
+ String path = config.getOption(VCS.VCS_PATH);
+ String tag = config.getOption(VCS.VCS_TAG);
+ File sshKeyFile = config.getOptionAsFile(VCS.VCS_SSH_KEY_FILE);
+ String login = config.getOption(VCS.VCS_USER_NAME);
+ String password = config.getOption(VCS.VCS_USER_PASSWORD);
+
try {
- Class clazz = (Class)ConvertUtils.convert(classname, Class.class);
- result = (VCSNone) ConstructorUtils.invokeConstructor(clazz, config);
+ Class clazz = (Class) ConvertUtils.convert(classname, Class.class);
+ result = (VCSNone) ConstructorUtils.invokeConstructor(clazz,
+ new Object[]{dataDir, protocol, host, path, tag, sshKeyFile, login, password});
} catch (Exception eee) {
log.error(_("Can't instanciate wanted VCS (%s), use default",
config.getOption(VCS.VCS_TYPE)), eee);
- result = new VCSNone(config);
+ result = new VCSNone(dataDir, protocol, host, path, tag, sshKeyFile, login, password);
}
return result;
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSNone.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -19,6 +19,7 @@
package fr.ifremer.isisfish.vcs;
+import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
@@ -28,7 +29,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.util.ApplicationConfig;
import org.codelutin.util.VersionNumber;
/**
@@ -46,8 +46,10 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VCSNone.class);
- public VCSNone(ApplicationConfig config) {
- super(config);
+ public VCSNone(File localRepository,
+ String protocol, String host, String path, String tag,
+ File sshKeyFile, String login, String password) {
+ super(localRepository, protocol, host, path, tag, sshKeyFile, login, password);
}
/**
@@ -84,6 +86,10 @@
public Map<File, String> getChanglog(List<File> files) {
return new HashMap<File, String>();
}
+
+ public void commit(List<File> files, String msg) throws VCSException {
+ throw new VCSException("Can't commit file with dummy VCS");
+ }
/**
* Add and commit file in server repository
@@ -166,11 +172,11 @@
/**
* Update file
- * @param file file to update
+ * @param files file to update
* @return true if there are some merging conflict, false otherwize
* @throws fr.ifremer.isisfish.vcs.VCSException
*/
- public boolean update(File file) throws VCSException {
+ public boolean update(List<File> files) throws VCSException {
throw new VCSException("Can't update file with dummy VCS");
}
@@ -182,5 +188,13 @@
// do nothing
}
+ public String getLocalRepositorySource(File f) throws VCSException {
+ throw new VCSException("Not supported.");
+ }
+
+ public String getLocalRepositoryRoot() throws VCSException {
+ throw new VCSException("Not supported.");
+ }
+
}
Modified: trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java
===================================================================
--- trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -19,14 +19,25 @@
package fr.ifremer.isisfish.vcs;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import static org.codelutin.i18n.I18nf._;
+import fr.ifremer.isisfish.IsisConfig;
import java.io.File;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codelutin.util.ApplicationConfig;
import org.codelutin.util.VersionNumber;
+import org.tmatesoft.svn.core.SVNCommitInfo;
+import org.tmatesoft.svn.core.SVNException;
+import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.wc.ISVNOptions;
+import org.tmatesoft.svn.core.wc.SVNClientManager;
+import org.tmatesoft.svn.core.wc.SVNInfo;
+import org.tmatesoft.svn.core.wc.SVNRevision;
+import org.tmatesoft.svn.core.wc.SVNWCUtil;
/**
*
@@ -41,20 +52,147 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VCSSVN.class);
- public VCSSVN(ApplicationConfig config) {
- super(config);
+ protected String protocol;
+ protected String host;
+ protected String path;
+ protected String tag;
+ protected File sshKeyFile;
+ protected String login;
+ protected String password;
+
+ protected SVNClientManager svnManager = null;
+
+ public VCSSVN(File localRepository,
+ String protocol, String host, String path, String tag,
+ File sshKeyFile, String login, String password) {
+ super(localRepository, protocol, host, path, tag, sshKeyFile, login, password);
}
+
+ protected SVNClientManager getSVNManager() {
+ if (svnManager == null) {
+ String login = getLogin();
+ String passwd = getPassword();
+ if (getProtocol().contains("ssh")) {
+ ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
+ options.setPropertyValue("svnkit.ssh2.key", getSshKeyFile().getAbsolutePath());
+ options.setPropertyValue("svnkit.ssh2.username", login);
+ if (passwd != null && !"".equals(passwd)) {
+ options.setPropertyValue("svnkit.ssh2.passphrase", passwd);
+ }
+ svnManager = SVNClientManager.newInstance(options);
+ } else {
+ ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
+ svnManager = SVNClientManager.newInstance(options, login, passwd);
+ }
+ }
+ return svnManager;
+ }
+
+ protected SVNURL getRemoteURL() throws SVNException {
+ SVNURL remoteURL = SVNURL.parseURIEncoded(getRemoteRepository());
+ return remoteURL;
+ }
+
+ public String getLocalRepositoryRoot() throws VCSException {
+ try {
+ File localRoot = getLocalRepository();
+ SVNInfo info = getSVNManager().getWCClient().doInfo(localRoot, SVNRevision.WORKING);
+ SVNURL url = info.getCopyFromURL();
+ String result = url.toDecodedString();
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+ }
+ }
+
+ public String getLocalRepositorySource(File f) throws VCSException {
+ try {
+ // TODO perhaps, check if file is in getLocalRepository() file ?
+ SVNInfo info = getSVNManager().getWCClient().doInfo(f, SVNRevision.WORKING);
+ SVNURL url = info.getURL();
+ String result = url.toDecodedString();
+ return result;
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't get address on serveur of local repository"), eee);
+ }
+ }
+
+ /**
+ * Retourne l'url du repository distant
+ * ex: ssh+svn://labs.le.org/svnroot/isis-fish/data/branches/3.2
+ * @return
+ */
+ public String getRemoteRepository() {
+ String proto = getProtocol();
+ String host = getHost();
+ String path = getPath();
+ String tag = getTag();
+
+ if (tag == null && "".equals(tag)) {
+ tag = "/trunk";
+ }
+
+ String result = proto + "://" + host + path + tag;
+ return result;
+ }
+
+ @Override
+ public boolean isVersionnableAbleFile(File file) {
+ boolean result = super.isVersionnableAbleFile(file);
+ result = result && !getSVNManager().getOptions().isIgnored(file);
+ return result;
+ }
+
+ public void commit(List<File> files, String msg) throws VCSException {
+ try {
+ SVNCommitInfo commitInfo = getSVNManager().getCommitClient()
+ .doCommit(files.toArray(new File[files.size()]),
+ false, msg, false, true);
+ log.debug("to revision " + commitInfo.getNewRevision());
+ } catch (SVNException eee) {
+ throw new VCSException("Can't commit files", eee);
+ }
+ }
+
public void add(List<File> files, String msg) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ try {
+ for (File file : files) {
+ // FIXME check argument in documentation
+ getSVNManager().getWCClient().doAdd(file,
+ true, // force add to allready added file (no error)
+ false, // don't create dir if not exist
+ true, // add parent dir if is not versionned
+ false, // no recurse
+ false); // don't add ignore file
+ }
+ commit(files, msg);
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
}
- public void checkout(File destDir, String module, boolean b) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public void checkout(File destDir, String module, boolean recurse) throws VCSException {
+ try {
+ SVNURL source = getRemoteURL().appendPath(module, false);
+ File destination = new File(destDir, module);
+ getSVNManager().getUpdateClient().doCheckout(source, destination, null,
+ SVNRevision.HEAD, recurse);
+ } catch (SVNException eee) {
+ throw new VCSException(_("Can't checkout file %s", module), eee);
+ }
}
public void delete(List<File> files, String msg) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ try {
+ for (File file : files) {
+ // FIXME check argument in documentation
+ getSVNManager().getWCClient().doDelete(file, true, msg != null, false);
+ }
+ commit(files, msg);
+ } catch (SVNException eee) {
+ throw new VCSException("Can't add file", eee);
+ }
}
public Map<File, String> getChanglog(List<File> files) {
@@ -93,8 +231,15 @@
throw new UnsupportedOperationException("Not supported yet.");
}
- public boolean update(File file) throws VCSException {
- throw new UnsupportedOperationException("Not supported yet.");
+ public boolean update(List<File> files) throws VCSException {
+ for (File file : files) {
+ try {
+ getSVNManager().getUpdateClient().doUpdate(file, SVNRevision.HEAD, true);
+ } catch (SVNException eee) {
+ throw new VCSException("Can't update files", eee);
+ }
+ }
+ return false; // FIXME rechercher s'il y a eu des conflits dans les fichiers
}
public void switchTag(VersionNumber version) throws VCSException {
Deleted: trunk/isis-fish/src/test/fr/ifremer/isisfish/IsisOptionParserTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/IsisOptionParserTest.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/IsisOptionParserTest.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,315 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007,2008 Code Lutin,
-* Tony Chemit
-*
-* 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 fr.ifremer.isisfish.commandline.IsisOptionKey;
-import fr.ifremer.isisfish.commandline.IsisOptionParser;
-import junit.framework.TestCase;
-import org.codelutin.log.LutinLogFactory;
-import org.codelutin.option.Option;
-import org.codelutin.option.OptionParser;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * pour tester que le parser {@link fr.ifremer.isisfish.commandline.IsisOptionParser} accepte bien les options.
- * <p/>
- * Pour chaque option {@link Option}, on donne deux méthodes :
- * <p/>
- * <code>testBAD_XXX</code> pour tester les cas non acceptants
- * <code>testOK_XXX</code> pour tester les cas acceptants
- *
- * @author chemit
- * @version 1.0
- * @since <pre>12/15/2007</pre>
- */
-public class IsisOptionParserTest extends TestCase {
-
- static {
- System.setProperty("org.apache.commons.logging.LogFactory", LutinLogFactory.class.getName());
- //I18n.init("fr", "FR");
- }
-
- protected OptionParser parser;
- protected IsisOptionKey option;
- static IsisContext context = IsisContext.get();
-
- public void testBAD_AddScriptOption() throws Exception {
- parser = context.parseOptions("-a");
- assertParserFailed();
-
- parser = context.parseOptions("--add");
- assertParserFailed();
- }
-
- public void testOK_AddScriptOption() throws Exception {
- option = IsisOptionParser.ADD_SCRIPT_OPTION_KEY;
- File f = File.createTempFile("addScriptTest", ".java");
- f.deleteOnExit();
- parser = context.parseOptions("-a", "scripts", f.getAbsolutePath());
- assertParserFoundOption();
-
- parser = context.parseOptions("--add", "scripts", f.getAbsolutePath());
- assertParserFoundOption();
- }
-
- public void testBAD_ConfigOption() throws Exception {
- parser = context.parseOptions("--config");
- assertParserFailed();
- }
-
- public void testOK_ConfigOption() throws Exception {
- option = IsisOptionParser.CHANGE_CONFIG_OPTION_KEY;
- parser = context.parseOptions("--config", "compileDirectory", "/tmp");
- assertParserFoundOption();
- }
-
- public void testBAD_CreateSshKeyOption() throws Exception {
- }
-
- public void testOK_CreateSshKeyOption() throws Exception {
- option = IsisOptionParser.CREATE_SSH_KEY_OPTION_KEY;
- parser = context.parseOptions("-c");
- assertParserFoundOption();
- parser = context.parseOptions("--create-ssh-key", "force");
- assertParserFoundOption();
- }
-
- public void testBAD_ExportDataOption() throws Exception {
- parser = context.parseOptions("-o");
- assertParserFailed();
- parser = context.parseOptions("--export");
- assertParserFailed();
- }
-
- public void testOK_ExportDataOption() throws Exception {
- option = IsisOptionParser.EXPORT_DATA_OPTION_KEY;
- File f = File.createTempFile("exportData", ".zip");
- f.deleteOnExit();
- parser = context.parseOptions("-o", f.getAbsolutePath(), "region", "demoRegion");
- assertParserFoundOption();
- parser = context.parseOptions("--export", f.getAbsolutePath(), "simulation", "demoRegion", "force");
- assertParserFoundOption();
- }
-
- public void testBAD_ExportScriptOption() throws Exception {
- parser = context.parseOptions("-os");
- assertParserFailed();
- parser = context.parseOptions("--export-script");
- assertParserFailed();
- }
-
- public void testOK_ExportScriptOption() throws Exception {
- option = IsisOptionParser.EXPORT_SCRIPT_OPTION_KEY;
- File f = File.createTempFile("exportScript", ".zip");
- f.deleteOnExit();
- parser = context.parseOptions("-os", f.getAbsolutePath(), "scripts", "theFilter");
- assertParserFoundOption();
- parser = context.parseOptions("--export-script", f.getAbsolutePath(), "formules=typeFormule", "force");
- assertParserFoundOption();
- }
-
- public void testBAD_HelpOption() throws Exception {
- }
-
- public void testOK_HelpOption() throws Exception {
- option = IsisOptionParser.HELP_OPTION_KEY;
- parser = context.parseOptions("--help");
- assertParserFoundOption();
- parser = context.parseOptions("-h");
- assertParserFoundOption();
- }
-
- public void testBAD_ImportScriptOption() throws Exception {
- parser = context.parseOptions("-i", "script");
- assertParserFailed();
-
- parser = context.parseOptions("--import", "region");
- assertParserFailed();
- }
-
- public void testOK_ImportScriptOption() throws Exception {
- option = IsisOptionParser.IMPORT_OPTION_KEY;
- File f = File.createTempFile("import", ".dat");
- f.deleteOnExit();
- parser = context.parseOptions("-i", "region", f.getAbsolutePath());
- assertParserFoundOption();
-
- parser = context.parseOptions("--import", "script", f.getAbsolutePath(), "force");
- assertParserFoundOption();
- }
-
- public void testBAD_ImportAndRenmaeRegionOption() throws Exception {
- parser = context.parseOptions("--importAndRenameRegion");
- assertParserFailed();
- }
-
- public void testOK_ImportAndRenmaeRegionOption() throws Exception {
- option = IsisOptionParser.IMPORT_AND_RENAME_REGION_OPTION_KEY;
- File f = File.createTempFile("importAndRenameRegion", ".sql.gz");
- f.deleteOnExit();
- parser = context.parseOptions("--importAndRenameRegion", f.getAbsolutePath(), "theNewRegion");
- assertParserFoundOption();
- }
-
- public void testBAD_ListOption() throws Exception {
- parser = context.parseOptions("-l");
- assertParserFailed();
-
- parser = context.parseOptions("--list");
- assertParserFailed();
- }
-
- public void testOK_ListOption() throws Exception {
- option = IsisOptionParser.LIST_OPTION_KEY;
- parser = context.parseOptions("-l", "analyseplans", "theFilter");
- assertParserFoundOption();
-
- parser = context.parseOptions("--list", "scripts", "theFilter2");
- assertParserFoundOption();
- }
-
- public void testBAD_MavenFileOption() throws Exception {
- }
-
- public void testOK_MavenFileOption() throws Exception {
- option = IsisOptionParser.MAVEN_FILE_OPTION_KEY;
- parser = context.parseOptions("--mavenFile");
- assertParserFoundOption();
- }
-
- public void testBAD_ResetConfigOption() throws Exception {
- }
-
- public void testOK_ResetConfigOption() throws Exception {
- option = IsisOptionParser.RESET_CONFIG_OPTION_KEY;
- parser = context.parseOptions("--resetConfig");
- assertParserFoundOption();
- }
-
- public void testBAD_SimulateOption() throws Exception {
- parser = context.parseOptions("--simulate");
- assertParserFailed();
- }
-
- public void testOK_SimulateOption() throws Exception {
- option = IsisOptionParser.SIMULATE_OPTION_KEY;
- File f = File.createTempFile("simulation-parameters", ".properties");
- f.deleteOnExit();
- parser = context.parseOptions("--simulate", "simulationId", f.getAbsolutePath());
- assertParserFoundOption();
- }
-
- public void testBAD_SshKeyFileOption() throws Exception {
- parser = context.parseOptions("--ssh-key-file");
- assertParserFailed();
- parser = context.parseOptions("-k");
- assertParserFailed();
- }
-
- public void testOK_SshKeyFileOption() throws Exception {
- option = IsisOptionParser.SSH_KEY_FILE_OPTION_KEY;
- File f = File.createTempFile("sshKeyFile", ".pubKey");
- f.deleteOnExit();
- parser = context.parseOptions("--ssh-key-file", f.getAbsolutePath());
- assertParserFoundOption();
-
- parser = context.parseOptions("-k", f.getAbsolutePath());
- assertParserFoundOption();
- }
-
- public void testBAD_UIOption() throws Exception {
- parser = context.parseOptions("--ui");
- assertParserFailed();
-
- parser = context.parseOptions("--ui", "falase");
- assertParserFailed();
- }
-
- public void testOK_UIOption() throws Exception {
- option = IsisOptionParser.UI_OPTION_KEY;
- parser = context.parseOptions("--ui", "true");
- assertParserFoundOption();
-
- parser = context.parseOptions("--ui", "False");
- assertParserFoundOption();
- }
-
- public void testBAD_UpdateOption() throws Exception {
- parser = context.parseOptions("--update");
- assertParserFailed();
- parser = context.parseOptions("-u");
- assertParserFailed();
-
- parser = context.parseOptions("-u", "rfs");
- assertParserFailed();
- }
-
- public void testOK_UpdateOption() throws Exception {
- option = IsisOptionParser.UPDATE_OPTION_KEY;
- parser = context.parseOptions("--update", "true");
- assertParserFoundOption();
- parser = context.parseOptions("-u", "false");
- assertParserFoundOption();
- }
-
- public void testBAD_VCSAddRemoveOption() throws Exception {
- parser = context.parseOptions("--vcs2");
- assertParserFailed();
- }
-
- public void testOK_VCSAddRemoveOption() throws Exception {
- option = IsisOptionParser.VCS_ADD_REMOVE_OPTION_KEY;
- File f = File.createTempFile("addVcsScript", ".java");
- f.deleteOnExit();
- parser = context.parseOptions("--vcs2", "add", f.getAbsolutePath());
- assertParserFoundOption();
- }
-
- public void testBAD_VCSUpdateCommitStateOption() throws Exception {
- parser = context.parseOptions("--vcs");
- assertParserFailed();
- }
-
- public void testOK_VCSUpdateCommitStateOption() throws Exception {
- option = IsisOptionParser.VCS_UPDATE_COMMIT_STATE_OPTION_KEY;
- parser = context.parseOptions("--vcs", "update");
- assertParserFoundOption();
- }
-
- protected void assertParserFailed() throws IOException {
- assertTrue(parser.getLastResult() != null);
- /*StringWriter w;
- parser.printErrors(w = new StringWriter());
- System.out.println(w.toString());
- w.close();*/
- }
-
- protected void assertParserFoundOption() throws IOException {
- assertFalse(parser.getLastResult() == null);
- /*StringWriter w;
- parser.printErrors(w = new StringWriter());
- System.out.println(w.toString());
- w.close();*/
- assertTrue(parser.getLastResult().isOptionEnabled(option));
- }
-
-
-}
\ No newline at end of file
Deleted: trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisCommonActionsTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisCommonActionsTest.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisCommonActionsTest.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,114 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin,
-* Benjamin Poussin, Tony Chemit
-*
-*
-* 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.actions;
-
-import fr.ifremer.isisfish.IsisContext;
-import fr.ifremer.isisfish.commandline.IsisAbstractOptionAction;
-import fr.ifremer.isisfish.commandline.IsisOptionKey;
-import fr.ifremer.isisfish.commandline.IsisOptionParser;
-import junit.framework.TestCase;
-import org.codelutin.log.LutinLogFactory;
-import org.codelutin.option.Option;
-import org.codelutin.option.OptionParser;
-
-/**
- * Pour chaque action {@link IsisAbstractOptionAction}, on donne deux méthodes :
- * <p/>
- * <code>testBAD_XXX</code> pour tester les cas non acceptants
- * <code>testOK_XXX</code> pour tester les cas acceptants
- *
- * @author chemit
- * @version 1.0
- * @see fr.ifremer.isisfish.commandline.IsisAbstractOptionAction
- * @see IsisOptionParser
- * @see Option
- * @since <pre>01/01/2008</pre>
- */
-public class IsisCommonActionsTest extends TestCase {
-
- static {
- System.setProperty("org.apache.commons.logging.LogFactory", LutinLogFactory.class.getName());
- //I18n.init("fr", "FR");
- }
-
- protected OptionParser parser;
- protected IsisOptionKey optionKey;
- protected Option option;
- protected IsisAbstractOptionAction action;
- static IsisContext context = IsisContext.get();
-
- public void testBAD_ConfigAction() throws Exception {
- parser = context.parseOptions("--config");
- assertParserFailed();
- }
-
- public void testOK_ConfigAction() throws Exception {
- optionKey = IsisOptionParser.CHANGE_CONFIG_OPTION_KEY;
- parser = context.parseOptions("--config", "username", "codelutin");
- assertParserFoundOption();
- }
-
- public void testBAD_HelpAction() throws Exception {
- }
-
- public void testOK_HelpAction() throws Exception {
- optionKey = IsisOptionParser.HELP_OPTION_KEY;
- parser = context.parseOptions("--help");
- assertParserFoundOption();
- parser = context.parseOptions("-h");
- assertParserFoundOption();
- }
-
- public void testBAD_ResetConfigAction() throws Exception {
- }
-
- public void testOK_ResetConfigAction() throws Exception {
- optionKey = IsisOptionParser.RESET_CONFIG_OPTION_KEY;
- parser = context.parseOptions("--resetConfig");
- assertParserFoundOption();
- }
-
- public void testBAD_UIAction() throws Exception {
- parser = context.parseOptions("--ui");
- assertParserFailed();
-
- parser = context.parseOptions("--ui", "falase");
- assertParserFailed();
- }
-
- public void testOK_UIAction() throws Exception {
- optionKey = IsisOptionParser.UI_OPTION_KEY;
- parser = context.parseOptions("--ui", "true");
- assertParserFoundOption();
-
- parser = context.parseOptions("--ui", "False");
- assertParserFoundOption();
- }
-
- protected void assertParserFailed() {
- assertTrue(parser.getLastResult() != null);
- }
-
- protected void assertParserFoundOption() {
- assertFalse(parser.getLastResult() == null);
- assertTrue(parser.getLastResult().isOptionEnabled(optionKey));
- }
-
-}
\ No newline at end of file
Deleted: trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisScriptAndDataActionsTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisScriptAndDataActionsTest.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisScriptAndDataActionsTest.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,175 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin,
-* Benjamin Poussin, Tony Chemit
-*
-*
-* 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.actions;
-
-import fr.ifremer.isisfish.IsisContext;
-import fr.ifremer.isisfish.commandline.IsisAbstractOptionAction;
-import fr.ifremer.isisfish.commandline.IsisOptionKey;
-import fr.ifremer.isisfish.commandline.IsisOptionParser;
-import junit.framework.TestCase;
-import org.codelutin.log.LutinLogFactory;
-import org.codelutin.option.Option;
-import org.codelutin.option.OptionParser;
-
-/**
- * Pour tester les actions communes liées aux options du parser {@link IsisOptionParser}
- * <p/>
- * implantées dans{@link fr.ifremer.isisfish.commandline.actions.ScriptUtil}
- * <p/>
- * Pour chaque action {@link IsisAbstractOptionAction}, on donne deux méthodes :
- * <p/>
- * <code>testBAD_XXX</code> pour tester les cas non acceptants
- * <code>testOK_XXX</code> pour tester les cas acceptants
- *
- * @author chemit
- * @version 1.0
- * @see fr.ifremer.isisfish.commandline.actions.ScriptUtil
- * @see IsisAbstractOptionAction
- * @see IsisOptionParser
- * @see Option
- * @since <pre>01/01/2008</pre>
- */
-public class IsisScriptAndDataActionsTest extends TestCase {
-
- static {
- System.setProperty("org.apache.commons.logging.LogFactory", LutinLogFactory.class.getName());
- //I18n.init("fr", "FR");
- }
-
- protected OptionParser parser;
- protected IsisOptionKey optionKey;
- protected Option option;
- protected IsisAbstractOptionAction action;
- static IsisContext context = IsisContext.get();
-
- public void testBAD_AddScriptAction() throws Exception {
-
- parser = context.parseOptions("-a");
- assertParserFailed();
-
- parser = context.parseOptions("--add");
- assertParserFailed();
- }
-
- public void testOK_AddScriptAction() throws Exception {
- optionKey = IsisOptionParser.ADD_SCRIPT_OPTION_KEY;
- parser = context.parseOptions("-a");
- assertParserFoundOption();
-
- parser = context.parseOptions("--add");
- assertParserFoundOption();
- }
-
- public void testBAD_ExportDataAction() throws Exception {
- parser = context.parseOptions("-o");
- assertParserFailed();
- parser = context.parseOptions("--export");
- assertParserFailed();
- }
-
- public void testOK_ExportDataAction() throws Exception {
- optionKey = IsisOptionParser.EXPORT_DATA_OPTION_KEY;
- parser = context.parseOptions("-o");
- assertParserFoundOption();
- parser = context.parseOptions("--export");
- assertParserFoundOption();
- }
-
- public void testBAD_ExportScriptAction() throws Exception {
- parser = context.parseOptions("-os");
- assertParserFailed();
- parser = context.parseOptions("--export-script");
- assertParserFailed();
- }
-
- public void testOK_ExportScriptAction() throws Exception {
- optionKey = IsisOptionParser.EXPORT_SCRIPT_OPTION_KEY;
- parser = context.parseOptions("-os");
- assertParserFoundOption();
- parser = context.parseOptions("--export-script");
- assertParserFoundOption();
- }
-
- public void testBAD_ImportScriptAction() throws Exception {
- parser = context.parseOptions("-i");
- assertParserFailed();
-
- parser = context.parseOptions("--import");
- assertParserFailed();
- }
-
- public void testOK_ImportScriptAction() throws Exception {
- optionKey = IsisOptionParser.IMPORT_OPTION_KEY;
- parser = context.parseOptions("-i");
- assertParserFoundOption();
-
- parser = context.parseOptions("--import");
- assertParserFoundOption();
- }
-
- public void testBAD_ImportAndRenmaeRegionAction() throws Exception {
- parser = context.parseOptions("--importAndRenameRegion");
- assertParserFailed();
- }
-
- public void testOK_ImportAndRenmaeRegionAction() throws Exception {
- optionKey = IsisOptionParser.IMPORT_AND_RENAME_REGION_OPTION_KEY;
- parser = context.parseOptions("--importAndRenameRegion");
- assertParserFoundOption();
- }
-
- public void testBAD_ListAction() throws Exception {
- parser = context.parseOptions("-l");
- assertParserFailed();
-
- parser = context.parseOptions("--list");
- assertParserFailed();
- }
-
- public void testOK_ListAction() throws Exception {
- optionKey = IsisOptionParser.LIST_OPTION_KEY;
- parser = context.parseOptions("-l");
- assertParserFoundOption();
-
- parser = context.parseOptions("--list");
- assertParserFoundOption();
- }
-
- public void testBAD_SimulateAction() throws Exception {
- parser = context.parseOptions("--simulate");
- assertParserFailed();
- }
-
- public void testOK_SimulateAction() throws Exception {
- optionKey = IsisOptionParser.SIMULATE_OPTION_KEY;
- parser = context.parseOptions("--simulate");
- assertParserFoundOption();
- }
-
- protected void assertParserFailed() {
- assertTrue(parser.getLastResult() != null);
- }
-
- protected void assertParserFoundOption() {
- assertFalse(parser.getLastResult() == null);
- assertTrue(parser.getLastResult().isOptionEnabled(optionKey));
- }
-
-}
\ No newline at end of file
Deleted: trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisVcsActionsTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisVcsActionsTest.java 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/actions/IsisVcsActionsTest.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,150 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Code Lutin,
-* Benjamin Poussin, Tony Chemit
-*
-*
-* 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.actions;
-
-import fr.ifremer.isisfish.IsisContext;
-import fr.ifremer.isisfish.commandline.IsisAbstractOptionAction;
-import fr.ifremer.isisfish.commandline.IsisOptionKey;
-import fr.ifremer.isisfish.commandline.IsisOptionParser;
-import junit.framework.TestCase;
-import org.codelutin.log.LutinLogFactory;
-import org.codelutin.option.Option;
-import org.codelutin.option.OptionParser;
-
-/**
- * Pour tester les actions communes liées aux options du parser {@link IsisOptionParser}
- * <p/>
- * Pour chaque action {@link fr.ifremer.isisfish.commandline.IsisAbstractOptionAction}, on donne deux méthodes :
- * <p/>
- * <code>testBAD_XXX</code> pour tester les cas non acceptants
- * <code>testOK_XXX</code> pour tester les cas acceptants
- *
- * @author chemit
- * @version 1.0
- * @see fr.ifremer.isisfish.commandline.IsisAbstractOptionAction
- * @see IsisOptionParser
- * @see Option
- * @since <pre>01/01/2008</pre>
- */
-public class IsisVcsActionsTest extends TestCase {
-
- static {
- System.setProperty("org.apache.commons.logging.LogFactory", LutinLogFactory.class.getName());
- //I18n.init("fr", "FR");
- }
-
- static IsisContext context = IsisContext.get();
-
- protected OptionParser parser;
- protected IsisOptionKey optionKey;
- protected Option option;
- protected IsisAbstractOptionAction action;
-
- public void testBAD_CreateSshKeyAction() throws Exception {
- parser = context.parseOptions("-c");
- assertParserFailed();
- parser = context.parseOptions("--create-ssh-key");
- assertParserFailed();
- }
-
- public void testOK_CreateSshKeyAction() throws Exception {
- optionKey = IsisOptionParser.CREATE_SSH_KEY_OPTION_KEY;
- parser = context.parseOptions("-c");
- assertParserFoundOption();
- parser = context.parseOptions("--create-ssh-key");
- assertParserFoundOption();
- }
-
-
- public void testBAD_MavenFileAction() throws Exception {
- }
-
- public void testOK_MavenFileAction() throws Exception {
- optionKey = IsisOptionParser.MAVEN_FILE_OPTION_KEY;
- parser = context.parseOptions("--mavenFile");
- assertParserFoundOption();
- }
-
- public void testBAD_SshKeyFileAction() throws Exception {
- parser = context.parseOptions("--ssh-key-file");
- assertParserFailed();
- parser = context.parseOptions("-k");
- assertParserFailed();
- }
-
- public void testOK_SshKeyFileAction() throws Exception {
- optionKey = IsisOptionParser.SSH_KEY_FILE_OPTION_KEY;
- parser = context.parseOptions("--ssh-key-file");
- assertParserFoundOption();
-
- parser = context.parseOptions("-k");
- assertParserFoundOption();
- }
-
- public void testBAD_UpdateAction() throws Exception {
- parser = context.parseOptions("--update");
- assertParserFailed();
- parser = context.parseOptions("-u");
- assertParserFailed();
-
- parser = context.parseOptions("-u", "rfs");
- assertParserFailed();
- }
-
- public void testOK_UpdateAction() throws Exception {
- optionKey = IsisOptionParser.UPDATE_OPTION_KEY;
- parser = context.parseOptions("--update", "true");
- assertParserFoundOption();
- parser = context.parseOptions("-u", "false");
- assertParserFoundOption();
- }
-
- public void testBAD_VCSAddRemoveAction() throws Exception {
- parser = context.parseOptions("--vcs2");
- assertParserFailed();
- }
-
- public void testOK_VCSAddRemoveAction() throws Exception {
- optionKey = IsisOptionParser.VCS_ADD_REMOVE_OPTION_KEY;
- parser = context.parseOptions("--vcs2");
- assertParserFoundOption();
- }
-
- public void testBAD_VCSUpdateCommitStateAction() throws Exception {
- parser = context.parseOptions("--vcs");
- assertParserFailed();
- }
-
- public void testOK_VCSUpdateCommitStateAction() throws Exception {
- optionKey = IsisOptionParser.VCS_UPDATE_COMMIT_STATE_OPTION_KEY;
- parser = context.parseOptions("--vcs");
- assertParserFoundOption();
- }
-
- protected void assertParserFailed() {
- assertTrue(parser.getLastResult() != null);
- }
-
- protected void assertParserFoundOption() {
- assertFalse(parser.getLastResult() == null);
- assertTrue(parser.getLastResult().isOptionEnabled(optionKey));
- }
-
-}
\ No newline at end of file
Added: trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java
===================================================================
--- trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java (rev 0)
+++ trunk/isis-fish/src/test/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2008-08-18 13:42:57 UTC (rev 1302)
@@ -0,0 +1,374 @@
+/*
+ * 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.vcs;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+import org.codelutin.util.VersionNumber;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.wc.SVNClientManager;
+
+/**
+ *
+ * @author poussin
+ */
+public class VCSSVNTest {
+
+ VCSSVN instance = null;
+
+ public VCSSVNTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+// instance = new VCSSVN(config);
+ }
+
+ /**
+ * Test of getSVNManager method, of class VCSSVN.
+ */
+ @Test
+ public void getSVNManager() {
+ System.out.println("getSVNManager");
+ VCSSVN instance = null;
+ SVNClientManager expResult = null;
+ SVNClientManager result = instance.getSVNManager();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getRemoteURL method, of class VCSSVN.
+ */
+ @Test
+ public void getRemoteURL() throws Exception {
+ System.out.println("getRemoteURL");
+ VCSSVN instance = null;
+ SVNURL expResult = null;
+ SVNURL result = instance.getRemoteURL();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getLocalRepositoryRoot method, of class VCSSVN.
+ */
+ @Test
+ public void getLocalRepositoryRoot() throws Exception {
+ System.out.println("getLocalRepositoryRoot");
+ VCSSVN instance = null;
+ String expResult = "";
+ String result = instance.getLocalRepositoryRoot();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getLocalRepositorySource method, of class VCSSVN.
+ */
+ @Test
+ public void getLocalRepositorySource() throws Exception {
+ System.out.println("getLocalRepositorySource");
+ File f = null;
+ VCSSVN instance = null;
+ String expResult = "";
+ String result = instance.getLocalRepositorySource(f);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getRemoteRepository method, of class VCSSVN.
+ */
+ @Test
+ public void getRemoteRepository() {
+ System.out.println("getRemoteRepository");
+ VCSSVN instance = null;
+ String expResult = "";
+ String result = instance.getRemoteRepository();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of isVersionnableAbleFile method, of class VCSSVN.
+ */
+ @Test
+ public void isVersionnableAbleFile() {
+ System.out.println("isVersionnableAbleFile");
+ File file = null;
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.isVersionnableAbleFile(file);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of commit method, of class VCSSVN.
+ */
+ @Test
+ public void commit() throws Exception {
+ System.out.println("commit");
+ List<File> files = null;
+ String msg = "";
+ VCSSVN instance = null;
+ instance.commit(files, msg);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of add method, of class VCSSVN.
+ */
+ @Test
+ public void add() throws Exception {
+ System.out.println("add");
+ List<File> files = null;
+ String msg = "";
+ VCSSVN instance = null;
+ instance.add(files, msg);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of checkout method, of class VCSSVN.
+ */
+ @Test
+ public void checkout() throws Exception {
+ System.out.println("checkout");
+ File destDir = null;
+ String module = "";
+ boolean recurse = false;
+ VCSSVN instance = null;
+ instance.checkout(destDir, module, recurse);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of delete method, of class VCSSVN.
+ */
+ @Test
+ public void delete() throws Exception {
+ System.out.println("delete");
+ List<File> files = null;
+ String msg = "";
+ VCSSVN instance = null;
+ instance.delete(files, msg);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getChanglog method, of class VCSSVN.
+ */
+ @Test
+ public void getChanglog() {
+ System.out.println("getChanglog");
+ List<File> files = null;
+ VCSSVN instance = null;
+ Map<File, String> expResult = null;
+ Map<File, String> result = instance.getChanglog(files);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getDiff method, of class VCSSVN.
+ */
+ @Test
+ public void getDiff() throws Exception {
+ System.out.println("getDiff");
+ File file = null;
+ VCSSVN instance = null;
+ String expResult = "";
+ String result = instance.getDiff(file);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getFileList method, of class VCSSVN.
+ */
+ @Test
+ public void getFileList() throws Exception {
+ System.out.println("getFileList");
+ File directory = null;
+ VCSSVN instance = null;
+ List<String> expResult = null;
+ List<String> result = instance.getFileList(directory);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of getUpdatedFile method, of class VCSSVN.
+ */
+ @Test
+ public void getUpdatedFile() {
+ System.out.println("getUpdatedFile");
+ VCSSVN instance = null;
+ List<File> expResult = null;
+ List<File> result = instance.getUpdatedFile();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of haveUpdate method, of class VCSSVN.
+ */
+ @Test
+ public void haveUpdate() {
+ System.out.println("haveUpdate");
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.haveUpdate();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of isConnected method, of class VCSSVN.
+ */
+ @Test
+ public void isConnected() {
+ System.out.println("isConnected");
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.isConnected();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of isOnRemote method, of class VCSSVN.
+ */
+ @Test
+ public void isOnRemote() throws Exception {
+ System.out.println("isOnRemote");
+ File file = null;
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.isOnRemote(file);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of isTag method, of class VCSSVN.
+ */
+ @Test
+ public void isTag() {
+ System.out.println("isTag");
+ VersionNumber version = null;
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.isTag(version);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of isUpToDate method, of class VCSSVN.
+ */
+ @Test
+ public void isUpToDate() throws Exception {
+ System.out.println("isUpToDate");
+ File file = null;
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.isUpToDate(file);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of update method, of class VCSSVN.
+ */
+ @Test
+ public void update() throws Exception {
+ System.out.println("update");
+ List<File> files = null;
+ VCSSVN instance = null;
+ boolean expResult = false;
+ boolean result = instance.update(files);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of switchTag method, of class VCSSVN.
+ */
+ @Test
+ public void switchTag() throws Exception {
+ System.out.println("switchTag");
+ VersionNumber version = null;
+ VCSSVN instance = null;
+ instance.switchTag(version);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of switchProtocole method, of class VCSSVN.
+ */
+ @Test
+ public void switchProtocole() throws Exception {
+ System.out.println("switchProtocole");
+ String protocoleType = "";
+ VCSSVN instance = null;
+ instance.switchProtocole(protocoleType);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+}
\ No newline at end of file
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration.xgl 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/PopulationMigration.xgl 2008-08-18 13:42:57 UTC (rev 1302)
@@ -33,7 +33,7 @@
</tr>
</table>
-<table Zonespacing="5">
+<table cellspacing="5">
<tr>
<td fill="Both" width="100%">buttonPopulationMigrationSave</td>
<td fill="Both" width="100%">buttonPopulationMigrationCancel</td>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xgl 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xgl 2008-08-18 13:42:57 UTC (rev 1302)
@@ -26,11 +26,25 @@
<td class="label">labelSetOfVesselsFixedCosts</td>
<td class="field">fieldSetOfVesselsFixedCosts</td>
</tr>
+
<tr>
- <td class="label" rowspan="3">labelSetOfVesselsComment</td>
- <td class="field" height="20%" rowspan="3">fieldSetOfVesselsComment</td>
+ <td class="label">labelSetOfVesselsTechnicalEfficiency</td>
+ <td class="field">fieldSetOfVesselsTechnicalEfficiency</td>
</tr>
+ <tr>
+ <td class="label">buttonSetOfVesselsTechnicalEfficiencySaveAsModel</td>
+ <td class="field" height="30%" rowspan="3">fieldScriptSetOfVesselsTechnicalEfficiency</td>
+ </tr>
+ <tr>
+ <td class="label">buttonSetOfVesselsTechnicalEfficiencyEquationEditor</td>
+ </tr>
<tr></tr>
+
+
+ <tr>
+ <td class="label" rowspan="2">labelSetOfVesselsComment</td>
+ <td class="field" height="20%" rowspan="2">fieldSetOfVesselsComment</td>
+ </tr>
<tr></tr>
<tr>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xml 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/SetOfVessels.xml 2008-08-18 13:42:57 UTC (rev 1302)
@@ -36,6 +36,31 @@
<DocumentEvents onModified="Update($fieldSetOfVesselsFixedCosts/text)"/>
</textfield>
+
+ <label constraints="labelSetOfVesselsTechnicalEfficiency" text="isisfish.setOfVessels.technicalEfficiency"/>
+ <combobox constraints="fieldSetOfVesselsTechnicalEfficiency" id="fieldSetOfVesselsTechnicalEfficiency"
+ origin="$SetOfVessels/technicalEfficiencyEquation" renderer="name" firstNull="true"
+ actionCommand="Update($fieldSetOfVesselsTechnicalEfficiency/selectedItem/content, $fieldScriptSetOfVesselsTechnicalEfficiency/text)">
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "TechnicalEfficiency")'/>
+ </combobox>
+
+ <button constraints="buttonSetOfVesselsTechnicalEfficiencySaveAsModel" text="isisfish.common.saveModel"
+ actionCommand='input.Input.saveEquationAsModel($SetOfVessels/technicalEfficiencyEquation);refreshView($fieldSetOfVesselsTechnicalEfficiency)'/>
+
+ <button constraints="buttonSetOfVesselsTechnicalEfficiencyEquationEditor" text="isisfish.common.openEditor"
+ actionCommand='input.Input.openEditor($SetOfVessels/technicalEfficiencyEquation/category,$SetOfVessels/technicalEfficiencyEquation/name,$SetOfVessels/technicalEfficiencyEquation/javaInterface,$SetOfVessels/technicalEfficiencyEquation/content,$fieldScriptSetOfVesselsTechnicalEfficiency)'/>
+
+ <editor constraints="fieldScriptSetOfVesselsTechnicalEfficiency" askIfNotSaved="false"
+ id="fieldScriptSetOfVesselsTechnicalEfficiency"
+ origin="org.codelutin.util.FileUtil.getTempFile($SetOfVessels/technicalEfficiencyEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationTechnicalEfficiency($SetOfVessels, $fieldScriptSetOfVesselsTechnicalEfficiency/text)"/>
+ </DocumentEvents>
+ </editor>
+
+
+
<label constraints="labelSetOfVesselsComment" text="isisfish.setOfVessels.comments"/>
<scrollPane constraints="fieldSetOfVesselsComment">
<textarea id="fieldSetOfVesselsComment" origin="$SetOfVessels/comment">
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xgl 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xgl 2008-08-18 13:42:57 UTC (rev 1302)
@@ -18,9 +18,18 @@
<td class="label">labelStrategyProportionSetOfVessels</td>
<td class="field">fieldStrategyProportionSetOfVessels</td>
</tr>
+
+ <tr>
+ <td></td>
+ <td class="field">fieldUseEquationInactivity</td>
+ </tr>
+ <tr>
+ <td class="labelTitle" fill="Both" height="100%" width="100%" colspan="2">hideablePanelInactivityEquation</td>
+ </tr>
+
<tr>
- <td class="label" rowspan="3">labelStrategyComment</td>
- <td class="field" height="20%" rowspan="3">fieldStrategyComment</td>
+ <td class="label" rowspan="2">labelStrategyComment</td>
+ <td class="field" height="20%" rowspan="2">fieldStrategyComment</td>
</tr>
<tr></tr>
<tr></tr>
@@ -30,5 +39,26 @@
</tr>
</table>
+ <table>
+ <tr>
+ <td fill="Both" height="100%" width="100%">fieldUseEquation</td>
+ </tr>
+ </table>
+
+ <table cellspacing="2">
+ <tr>
+ <td class="label">labelStrategyInactivity</td>
+ <td class="field">fieldStrategyInactivity</td>
+ </tr>
+ <tr>
+ <td class="label">buttonStrategyInactivitySaveAsModel</td>
+ <td class="field" height="30%" rowspan="3">fieldScriptStrategyInactivity</td>
+ </tr>
+ <tr>
+ <td class="label">buttonStrategyInactivityEquationEditor</td>
+ </tr>
+ <tr></tr>
+ </table>
+
</layout>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xml
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xml 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/input/Strategy.xml 2008-08-18 13:42:57 UTC (rev 1302)
@@ -22,6 +22,42 @@
<DocumentEvents onModified="Update($fieldStrategyProportionSetOfVessels/text)"/>
</textfield>
+ <checkbox constraints="fieldUseEquationInactivity" id="fieldUseEquationInactivity"
+ origin="$Strategy/inactivityEquationUsed" text="isisfish.strategy.inactivityEquationUsed">
+ <ItemEvents onStateChanged="Update($fieldUseEquationInactivity/selected, $Strategy/inactivityEquationUsed, refreshView($hideablePanelInactivityEquation))"/>
+ </checkbox>
+
+
+ <panel id="hideablePanelInactivityEquation" constraints="hideablePanelInactivityEquation" layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/Strategy.xgl)">
+
+ <hidablePanel constraints="fieldUseEquation"
+ origin="getInactivityEquationUsed($Strategy)"
+ layout="XMLGridLayout(fr/ifremer/isisfish/ui/input/Strategy.xgl)">
+ <label constraints="labelStrategyInactivity" text="isisfish.strategy.inactivity"/>
+ <combobox constraints="fieldStrategyInactivity" id="fieldStrategyInactivity"
+ origin="$Strategy/inactivityEquation" renderer="name" firstNull="true"
+ actionCommand="Update($fieldStrategyInactivity/selectedItem/content, $fieldScriptStrategyInactivity/text)">
+ <ComboBoxModel origin='fr.ifremer.isisfish.datastore.FormuleStorage.getFormules($TopiaContext, "Inactivity")'/>
+ </combobox>
+
+ <button constraints="buttonStrategyInactivitySaveAsModel" text="isisfish.common.saveModel"
+ actionCommand='input.Input.saveEquationAsModel($Strategy/inactivityEquation);refreshView($fieldStrategyInactivity)'/>
+
+ <button constraints="buttonStrategyInactivityEquationEditor" text="isisfish.common.openEditor"
+ actionCommand='input.Input.openEditor($Strategy/inactivityEquation/category,$Strategy/inactivityEquation/name,$Strategy/inactivityEquation/javaInterface,$Strategy/inactivityEquation/content,$fieldScriptStrategyInactivity)'/>
+
+ <editor constraints="fieldScriptStrategyInactivity" askIfNotSaved="false"
+ id="fieldScriptStrategyInactivity"
+ origin="org.codelutin.util.FileUtil.getTempFile($Strategy/inactivityEquation/content, '.java')">
+ <DocumentEvents onModified="Update">
+ <UpdateOrigin
+ target="setEquationInactivity($Strategy, $fieldScriptStrategyInactivity/text)"/>
+ </DocumentEvents>
+ </editor>
+
+ </hidablePanel>
+ </panel>
+
<label constraints="labelStrategyComment" text="isisfish.strategy.comments"/>
<scrollPane constraints="fieldStrategyComment">
<textarea id="fieldStrategyComment" origin="$Strategy/comment">
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JExportDialog.jaxx
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JExportDialog.jaxx 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JExportDialog.jaxx 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,16 +1,18 @@
<JDialog modal="true" resizable='false' title='isisfish.script.export'>
<script>
- public org.codelutin.vcs.ui.FieldModelUtil.ModuleFile model;
-
+ // FIXME a refaire
+
+// public org.codelutin.vcs.ui.FieldModelUtil.ModuleFile model;
+ public Object model = null;
public boolean isOkEnabled() {
- return !isEmpty() && model.getSelected(0).size() > 0;
+ return !isEmpty(); // && model.getSelected(0).size() > 0;
}
public boolean isEmpty() {
- return model == null || model.getRowCount() == 0;
+ return model == null; // || model.getRowCount() == 0;
}
public void doCheckAll() {
- if (model!=null) model.checkAll();
+// if (model!=null) model.checkAll();
doRefresh();
}
@@ -18,7 +20,8 @@
fr.ifremer.isisfish.ui.util.JaxxUtil.refresh(this,"items.enabled",
"checkAll.enabled","ok.enabled","chooseDir.enabled",
"archivePath.enabled");
- }
+ }
+
</script>
<Table anchor='center'>
<!--row fill='horizontal'>
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JImportDialog.jaxx
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JImportDialog.jaxx 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/script/jaxx/JImportDialog.jaxx 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,21 +1,26 @@
<JDialog modal="true" resizable='false' title='isisfish.script.import'>
<script>
- import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
+ // FIXME a refaire
+
+// import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
- protected ModuleFile modelItems;
- protected ModuleFile modelNewItems;
+// protected ModuleFile modelItems;
+// protected ModuleFile modelNewItems;
+ protected Object modelItems;
+ protected Object modelNewItems;
public boolean isOkEnabled() {
- return (!isItemEmpty() && modelItems.getSelected(0).size() > 0) ||
- (!isNewItemEmpty() && modelNewItems.getSelected(0).size() > 0);
+ return true;
+// (!isItemEmpty() && modelItems.getSelected(0).size() > 0) ||
+// (!isNewItemEmpty() && modelNewItems.getSelected(0).size() > 0);
}
protected boolean isItemEmpty() {
- return modelItems == null || modelItems.getRowCount() == 0;
+ return modelItems == null;// || modelItems.getRowCount() == 0;
}
protected boolean isNewItemEmpty() {
- return modelNewItems == null || modelNewItems.getRowCount() == 0;
+ return modelNewItems == null;// || modelNewItems.getRowCount() == 0;
}
public boolean isEmpty() {
@@ -29,11 +34,11 @@
}
public void doCheckAll() {
- if (!isItemEmpty()) modelItems.checkAll();
- if (!isNewItemEmpty()) modelNewItems.checkAll();
+// if (!isItemEmpty()) modelItems.checkAll();
+// if (!isNewItemEmpty()) modelNewItems.checkAll();
doRefresh();
}
- </script>
+</script>
<Table>
<row fill='horizontal'>
<cell columns='3' weightx="1">
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xgl 2008-08-18 13:42:57 UTC (rev 1302)
@@ -20,7 +20,8 @@
<td width="99%" colspan="3" fill="Horizontal">fieldSimulAdvParamsSimulatorSelect</td>
</tr>
<tr>
- <td fill="Horizontal" colspan="2" width="33%">fieldSimulAdvParamsSimulatorLocal</td>
+ <td fill="Horizontal" width="33%">fieldSimulAdvParamsSimulatorLocal</td>
+ <td fill="Horizontal" width="33%">fieldSimulAdvParamsSimulatorSubProcess</td>
<td fill="Horizontal" width="33%">fieldSimulationStatistique</td>
<td fill="Horizontal" width="33%">fieldSimulationCache</td>
</tr>
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-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/ui/simulator/AdvancedParams.xml 2008-08-18 13:42:57 UTC (rev 1302)
@@ -33,6 +33,12 @@
origin="$SimulationParameter/local"
actionCommand="Update($fieldSimulAdvParamsSimulatorLocal/selected)"/>
+ <checkbox text="isisfish.advancedParams.subProcessSimulation"
+ constraints="fieldSimulAdvParamsSimulatorSubProcess"
+ id="fieldSimulAdvParamsSimulatorSubProcess"
+ origin="$SimulationParameter/subProcess"
+ actionCommand="Update($fieldSimulAdvParamsSimulatorSubProcess/selected)"/>
+
<!--
|
| Trace/Cache option
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JCommitDialog.jaxx
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JCommitDialog.jaxx 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JCommitDialog.jaxx 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,11 +1,14 @@
<JDialog id="Update" modal="true" title='isisfish.vcs.commit'>
<!--width="400" height="300">-->
<script>
- import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
- import org.codelutin.vcs.VCSFileState;
+ // FIXME a refaire
- protected ModuleFile<VCSFileState> model;
+// import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
+// import org.codelutin.vcs.VCSFileState;
+// protected ModuleFile<VCSFileState> model;
+ protected Object model;
+
public JCommitDialog(Dialog owner, boolean modal) {
super(owner, modal);
}
@@ -21,6 +24,7 @@
protected void reSize(JTable table) {
// implements me...
}
+
</script>
<Table weightx="1">
<row>
@@ -49,7 +53,7 @@
<cell>
<JButton id='ok' text='isisfish.vcs.commit.ok'
enabled='{isOkEnabled()}'
- onActionPerformed='fr.ifremer.isisfish.versionning.ui.VCSUIHelper.COMMIT_MSG=message.getText();dispose()'/>
+ onActionPerformed='/*fr.ifremer.isisfish.versionning.ui.VCSUIHelper.COMMIT_MSG=message.getText();*/dispose()'/>
</cell>
<cell>
<JButton id='cancel' text='isisfish.vcs.commit.cancel'
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateConfirmDialog.jaxx
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateConfirmDialog.jaxx 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateConfirmDialog.jaxx 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,21 +1,25 @@
<JDialog modal="true" title='isisfish.vcs.updateconfirm'>
<script>
- import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
- import org.codelutin.vcs.VCSFileState;
+ // FIXME a refaire
- protected ModuleFile<VCSFileState> model;
+// import org.codelutin.vcs.ui.FieldModelUtil.ModuleFile;
+// import org.codelutin.vcs.VCSFileState;
+
+// protected ModuleFile<VCSFileState> model;
+ protected Object model;
+
public void doCheckAll() {
- if (model != null && model.getRowCount()>0) {
- model.checkAll();
- doRefresh();
- }
+// if (model != null && model.getRowCount()>0) {
+// model.checkAll();
+// doRefresh();
+// }
}
public boolean isEmpty() {
- return model==null || model.getRowCount()==0;
+ return model==null; // || model.getRowCount()==0;
}
public boolean isOkEnabled() {
- return !isEmpty() && model.getSelectedSize(0)>0;
+ return !isEmpty(); // && model.getSelectedSize(0)>0;
}
protected void reSize(JTable table) {
// implements me...
Modified: trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateDialog.jaxx
===================================================================
--- trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateDialog.jaxx 2008-08-18 13:42:49 UTC (rev 1301)
+++ trunk/isis-fish/src/uimodel/fr/ifremer/isisfish/versionning/ui/jaxx/JUpdateDialog.jaxx 2008-08-18 13:42:57 UTC (rev 1302)
@@ -1,32 +1,35 @@
<JDialog modal="true" title='isisfish.vcs.update'>
<script>
- import static org.codelutin.vcs.VCSState.*;
- import org.codelutin.vcs.VCSState;
+ // FIXME a refaire
- protected org.codelutin.vcs.VCSRepositoryState model;
+// import static org.codelutin.vcs.VCSState.*;
+// import org.codelutin.vcs.VCSState;
+// protected org.codelutin.vcs.VCSRepositoryState model;
+ protected Object model;
+
public void doCheckAll() {
- if (model!=null) {
- model.checkAll(checkAll.isSelected());
- doRefresh();
- }
+// if (model!=null) {
+// model.checkAll(checkAll.isSelected());
+// doRefresh();
+// }
}
public boolean isEmpty() {
- return model==null || model.isModelEmpty();
+ return model==null; // || model.isModelEmpty();
}
public boolean isOkEnabled() {
- return !isEmpty() && model.getModelSelectedSize()>0;
+ return !isEmpty(); // && model.getModelSelectedSize()>0;
}
public void doRefresh() {
fr.ifremer.isisfish.ui.util.JaxxUtil.refresh(this,"checkAll.enabled","ok.enabled");
}
- protected void reSize(VCSState state,JTable table) {
-
- }
+// protected void reSize(VCSState state,JTable table) {
+//
+// }
</script>
<Table weightx="1">
<row>
@@ -54,7 +57,6 @@
<JScrollPane id='scroll_missing'>
<JTable id="table_missing"
autoResizeMode='3'
- onComponentResized="reSize(MISSING,table_missing)"
onMouseClicked="doRefresh()"/>
</JScrollPane>
</cell>
@@ -71,7 +73,6 @@
<JScrollPane id='scroll_outofdate'>
<JTable id="table_outofdate"
autoResizeMode='3'
- onComponentResized="reSize(OUT_OF_DATE,table_outofdate)"
onMouseClicked="doRefresh()"
rowSelectionAllowed="true"/>
</JScrollPane>
@@ -97,7 +98,6 @@
<JScrollPane id='scroll_unversionned'>
<JTable id="table_unversionned"
autoResizeMode='3'
- onComponentResized="reSize(UNVERSIONNED,table_unversionned)"
rowSelectionAllowed="true"
onMouseClicked="doRefresh()"/>
</JScrollPane>
@@ -115,7 +115,6 @@
<JScrollPane id='scroll_modified'>
<JTable id="table_modified"
autoResizeMode='3'
- onComponentResized="reSize(MODIFIED,table_modified)"
rowSelectionAllowed="true"
onMouseClicked="doRefresh()"/>
</JScrollPane>
@@ -133,7 +132,6 @@
<JScrollPane id='scroll_outofdateAndModified'>
<JTable id="table_outofdateAndModified"
autoResizeMode='3'
- onComponentResized="reSize(OUT_OF_DATE_AND_MODIFIED,table_outofdateAndModified)"
rowSelectionAllowed="true"
onMouseClicked="doRefresh()"/>
</JScrollPane>
1
0
r1301 - in trunk/isis-fish/src: java/fr/ifremer/isisfish/entities test/fr/ifremer/isisfish
by bpoussin@users.labs.libre-entreprise.org Aug. 18, 2008
by bpoussin@users.labs.libre-entreprise.org Aug. 18, 2008
Aug. 18, 2008
Author: bpoussin
Date: 2008-08-18 13:42:49 +0000 (Mon, 18 Aug 2008)
New Revision: 1301
Removed:
trunk/isis-fish/src/java/fr/ifremer/isisfish/entities/migration/
trunk/isis-fish/src/test/fr/ifremer/isisfish/versionning/
Log:
gros nettoyage apres fusion avec la branche 3.2. (migration de schema, nouvelle equation, calcul en maille)
- en cours de finalisation du refactoring du vcs
compile, mais ne fonctionne pas, un commit est jamais mauvais :)
1
0
Author: bpoussin
Date: 2008-08-14 14:59:39 +0000 (Thu, 14 Aug 2008)
New Revision: 1300
Modified:
trunk/isis-fish/doc/Todo.rst
Log:
ajout de todo
Modified: trunk/isis-fish/doc/Todo.rst
===================================================================
--- trunk/isis-fish/doc/Todo.rst 2008-08-14 14:58:23 UTC (rev 1299)
+++ trunk/isis-fish/doc/Todo.rst 2008-08-14 14:59:39 UTC (rev 1300)
@@ -1,3 +1,22 @@
+Pour la version 3.2.0:
+- parsing d'option
+- vcs
+- equation 1
+- equation 2
+- 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.
+
+Pour la version 4.0.0.0:
+- db4o (test de perf pour simulation, sauvegarde/rendu des resultats)
+- jaxx + validator
+
+Pour la version 4.0.0.1:
+- utilisation de velocity pour les templates de script
+
+
+
+
- dans interface de demande de config, proposer le choix de l'emplacement de la base (montre la place disque restante)
- Ajouter dans le wiki, la signification du 3eme chiffre de version (version API de script)
1
0