Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- 3175 discussions
Author: chatellier
Date: 2010-01-22 15:42:22 +0000 (Fri, 22 Jan 2010)
New Revision: 2939
Modified:
isis-fish/trunk/changelog.txt
Log:
Udpate changelog
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2010-01-22 15:42:09 UTC (rev 2938)
+++ isis-fish/trunk/changelog.txt 2010-01-22 15:42:22 UTC (rev 2939)
@@ -1,5 +1,8 @@
isis-fish (3.3.0.0) stable; urgency=low
+ * Enable to add factors from tables (target factor equation, selectivity equation)
+ * Restore simulation control auto save features (usefull for remote simulation monitoring)
+ * Make all data storage isolated on simulation directory during a simulation
* Check if result is enabled by getNecessaryResult on SensitivityExport
* Use mexico export format for matrix
* Restore simulation tests at integration-test phase
1
0
r2938 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/actions main/java/fr/ifremer/isisfish/datastore main/java/fr/ifremer/isisfish/simulator main/java/fr/ifremer/isisfish/simulator/launcher main/java/fr/ifremer/isisfish/ui/simulator test/java/fr/ifremer/isisfish/simulator
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:42:09 +0000 (Fri, 22 Jan 2010)
New Revision: 2938
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java
Log:
Make all data storage isolated on simulation directory during a simulation
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2002-2009 Ifremer, Code Lutin, Benjamin Poussin
+ * Copyright (C) 2002-2010 Ifremer, Code Lutin, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -81,8 +81,7 @@
}
SimulationParameter params = new SimulationParameter();
- params.fromProperties(SimulationStorage.getSimulationDirectory(),
- props);
+ params.fromProperties(props);
// try to import region if needed
String regionName = params.getRegionName();
@@ -142,6 +141,8 @@
}
SimulationControl control = new SimulationControl(name);
+ control.setAutoSaveState(true); // needed for remote simulation
+
SimulationItem item = new SimulationItem(control, null);
item.setSimulationZip(simulationZip);
item.setSimulationPrescriptContent(simulationPrescriptContent);
@@ -220,6 +221,8 @@
}
SimulationControl control = new SimulationControl(name);
+ control.setAutoSaveState(true); // needed for remote simulation
+
SimulationItem item = new SimulationItem(control, null);
item.setSimulationZip(simulationZip);
item.setSimulationPrescriptContent(simulationPrescriptContent);
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -67,9 +67,8 @@
static private Map<String, AnalysePlanStorage> plansCache =
(Map<String, AnalysePlanStorage>) new ReferenceMap();
-
/**
- * Construit un nouveau AnalysePlan storage
+ * Construit un nouveau AnalysePlan storage.
*
* @param rootSrc repertoire root de stockage des plans
* @param directory le repertoire ou devrait se trouver le plan
@@ -80,12 +79,11 @@
}
static public File getAnalysePlanDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, ANALYSE_PLAN_PATH);
+ File result = new File(getContextDatabaseDirectory(), ANALYSE_PLAN_PATH);
result.mkdirs();
return result;
}
-
+
/**
* Retourne le nom de toutes les plans existantes
*
@@ -97,22 +95,22 @@
}
/**
- * Retourne le storage pour le plan demandé
+ * Retourne le storage pour le plan demandé.
*
* @param name le nom du plan souhaité
* @return Le storage pour le plan
*/
static public AnalysePlanStorage getAnalysePlan(String name) {
- AnalysePlanStorage result = plansCache.get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ AnalysePlanStorage result = plansCache.get(cacheName);
if (result == null) {
- result = new AnalysePlanStorage(IsisFish.config.getDatabaseDirectory(),
+ result = new AnalysePlanStorage(getContextDatabaseDirectory(),
getAnalysePlanDirectory(), name);
- plansCache.put(name, result);
+ plansCache.put(cacheName, result);
}
return result;
}
-
/**
* Retourne une nouvelle instance du plan. Compile le fichier si besoin
*
@@ -274,7 +272,6 @@
public static List<String> getRemoteAnalysePlanNames() {
File dir = getAnalysePlanDirectory();
return getRemoteStorageNames(dir);
-
}
/**
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -77,8 +77,7 @@
}
public static File getExportDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, EXPORT_PATH);
+ File result = new File(getContextDatabaseDirectory(), EXPORT_PATH);
result.mkdirs();
return result;
}
@@ -101,11 +100,12 @@
* @return Le storage pour la regle
*/
public static ExportStorage getExport(String name) {
- ExportStorage result = scriptsCache.get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ ExportStorage result = scriptsCache.get(cacheName);
if (result == null) {
- result = new ExportStorage(IsisFish.config.getDatabaseDirectory(),
+ result = new ExportStorage(IsisFish.config.getContextDatabaseDirectory(),
getExportDirectory(), name);
- scriptsCache.put(name, result);
+ scriptsCache.put(cacheName, result);
}
return result;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/*
- * *##% Copyright (C) 2005 - 2009
+ * *##% Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
@@ -73,18 +73,14 @@
*
* @param directory region directory
* @param name region name
- *
- * FIXME constructor is public for hack in
- * {@link fr.ifremer.isisfish.simulator.SimulationParameter#fromProperties(File, java.util.Properties)}
- * set protected when fix hack
*/
- public RegionStorage(File directory, String name) {
+ protected RegionStorage(File directory, String name) {
super(directory, name);
commentForNextCommitFile = new File(getDirectory(), "commentForNextCommit.txt");
}
public static File getRegionDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
+ File result = getContextDatabaseDirectory();
result = new File(result, REGION_PATH);
result.mkdirs();
return result;
@@ -160,14 +156,17 @@
@Override
public void rename(String toName) throws StorageException {
try {
- regions.remove(getName());
+ String cacheName = getContextDatabaseCacheKey(getName());
+ regions.remove(cacheName);
super.rename(toName);
TopiaContext tx = getStorage().beginTransaction();
FisheryRegion region = getFisheryRegion(tx);
region.setName(toName);
tx.commitTransaction();
tx.closeContext();
- regions.put(toName, this);
+
+ cacheName = getContextDatabaseCacheKey(toName);
+ regions.put(cacheName, this);
// add storage modification event
fireDataChanged(new StorageChangeEvent(this));
@@ -211,41 +210,48 @@
/**
* Recupere le TopiaContext d'une region.
*
+ * Call {@code getRegion(String, false)} outside simulation context.
+ *
* @param name le nom de la region a recuperer
* @return Le TopiaContext contenant la region, si la region n'existait null
* est retourné
*/
static public RegionStorage getRegion(String name) {
- RegionStorage result = regions.get(name);
- if (result == null) {
- // recherche du repertoire de la region en fonction de la config
- File directory = getRegionDirectory(name);
- log.info("Try to open region " + name + "(" + directory + ")");
- if (directory.exists()) {
- result = new RegionStorage(directory, name);
- regions.put(name, result);
- }
- }
- return result;
+ RegionStorage regionStorage = getRegion(name, false);
+ return regionStorage;
}
/**
* Recupere le TopiaContext d'une region.
*
- * @param directory root form where to load database (hack should be removed)
* @param name le nom de la region a recuperer
+ * @param inSimulation this is a hack to known if simulation is requested
+ * from a simulation or not
* @return Le TopiaContext contenant la region, si la region n'existait null
* est retourné
*/
- static public RegionStorage getRegion(File directory, String name) {
- RegionStorage result = regions.get(name);
+ static public RegionStorage getRegion(String name, boolean inSimulation) {
+ String cacheName = getContextDatabaseCacheKey(name);
+ RegionStorage result = regions.get(cacheName);
if (result == null) {
// recherche du repertoire de la region en fonction de la config
- //File directory = getRegionDirectory(name);
- log.info("Try to open region " + name + " in specific directory (" + directory + ")");
+ File directory = null;
+
+ // in simulation context, region is not located in "regions" directory
+ if (inSimulation) {
+ directory = getContextDatabaseDirectory();
+ }
+ else {
+ directory = getRegionDirectory(name);
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Try to open region " + name + "(" + directory + ")");
+ }
+
if (directory.exists()) {
result = new RegionStorage(directory, name);
- regions.put(name, result);
+ regions.put(cacheName, result);
}
}
return result;
@@ -293,7 +299,8 @@
throw new StorageException("Can't create new Region", eee);
}
- regions.put(name, result);
+ String cacheName = getContextDatabaseCacheKey(name);
+ regions.put(cacheName, result);
// add storage modification event
fireDataChanged(new StorageChangeEvent(result));
@@ -311,7 +318,8 @@
// add storage modification event
fireDataChanged(new StorageChangeEvent(this));
- regions.remove(getName());
+ String cacheName = getContextDatabaseCacheKey(getName());
+ regions.remove(cacheName);
}
/**
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
@@ -83,8 +83,7 @@
}
static public File getRuleDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, RULE_PATH);
+ File result = new File(getContextDatabaseDirectory(), RULE_PATH);
result.mkdirs();
return result;
}
@@ -106,11 +105,12 @@
* @return Le storage pour la regle
*/
static public RuleStorage getRule(String name) {
- RuleStorage result = rulesCache.get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ RuleStorage result = rulesCache.get(cacheName);
if (result == null) {
- result = new RuleStorage(IsisFish.config.getDatabaseDirectory(),
+ result = new RuleStorage(getContextDatabaseDirectory(),
getRuleDirectory(), name);
- rulesCache.put(name, result);
+ rulesCache.put(cacheName, result);
}
return result;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -75,8 +75,7 @@
}
static public File getScriptDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, SCRIPT_PATH);
+ File result = new File(getContextDatabaseDirectory(), SCRIPT_PATH);
result.mkdirs();
return result;
}
@@ -98,11 +97,12 @@
* @return Le storage pour la regle
*/
static public ScriptStorage getScript(String name) {
- ScriptStorage result = scriptsCache .get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ ScriptStorage result = scriptsCache.get(cacheName);
if (result == null) {
- result = new ScriptStorage(IsisFish.config.getDatabaseDirectory(),
+ result = new ScriptStorage(getContextDatabaseDirectory(),
getScriptDirectory(), name);
- scriptsCache.put(name, result);
+ scriptsCache.put(cacheName, result);
}
return result;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2009 Ifremer, Code Lutin
+ * Copyright (C) 2009-2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -69,8 +69,7 @@
}
public static File getSensitivityExportDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, SENSITIVITY_EXPORT_PATH);
+ File result = new File(getContextDatabaseDirectory(), SENSITIVITY_EXPORT_PATH);
result.mkdirs();
return result;
}
@@ -93,11 +92,12 @@
* @return Le storage pour la regle
*/
public static SensitivityExportStorage getSensitivityExport(String name) {
- SensitivityExportStorage result = sensitivityExportsCache.get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ SensitivityExportStorage result = sensitivityExportsCache.get(cacheName);
if (result == null) {
- result = new SensitivityExportStorage(IsisFish.config.getDatabaseDirectory(),
+ result = new SensitivityExportStorage(getContextDatabaseDirectory(),
getSensitivityExportDirectory(), name);
- sensitivityExportsCache.put(name, result);
+ sensitivityExportsCache.put(cacheName, result);
}
return result;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,4 +1,4 @@
-/* *##% Copyright (C) 2009 Ifremer, Code Lutin
+/* *##% Copyright (C) 2009-2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -89,8 +89,7 @@
* @return sensitivity storage directory
*/
public static File getSensitivityDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, SENSITIVITY_PATH);
+ File result = new File(getContextDatabaseDirectory(), SENSITIVITY_PATH);
result.mkdirs();
return result;
}
@@ -112,11 +111,11 @@
* @return Le {@link SensitivityStorage} pour le calculateur
*/
public static SensitivityStorage getSensitivity(String name) {
- SensitivityStorage result = sensitivityCache.get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ SensitivityStorage result = sensitivityCache.get(cacheName);
if (result == null) {
- result = new SensitivityStorage(IsisFish.config
- .getDatabaseDirectory(), getSensitivityDirectory(), name);
- sensitivityCache.put(name, result);
+ result = new SensitivityStorage(getContextDatabaseDirectory(), getSensitivityDirectory(), name);
+ sensitivityCache.put(cacheName, result);
}
return result;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -107,6 +107,7 @@
* @return simulation directory
*/
public static File getSimulationDirectory() {
+ // warning, here, do not use getContextDatabaseDirectory()
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, SIMULATION_PATH);
if (!result.exists()) {
@@ -137,6 +138,7 @@
* @return sensitivity result directory
*/
public static File getSensitivityResultsDirectory() {
+ // warning, here, do not use getContextDatabaseDirectory()
File result = IsisFish.config.getDatabaseDirectory();
result = new File(result, SENSITIVITY_RESULTS);
if (!result.exists()) {
@@ -309,7 +311,8 @@
}
/**
- * Modifie les parametres de la simulation
+ * Modifie les parametres de la simulation.
+ *
* @param parameter les nouveaux parametres
*/
public void setParameter(SimulationParameter parameter) {
@@ -331,25 +334,10 @@
/**
* Get parameter property.
- *
- * This method open database.
- *
- * @return Parameter property.
- */
- public SimulationParameter getParameter() {
- return getParameter(null);
- }
-
- /**
- * Get parameter property.
- *
- * This method open database.
*
- * @param directory if not null, region will be forced to this directory
- *
* @return Parameter property.
*/
- public SimulationParameter getParameter(File directory) {
+ public SimulationParameter getParameter() {
if (parameter == null) {
Properties prop = new Properties();
File file = getSimulationParametersFile();
@@ -365,7 +353,7 @@
prop.load(in);
in.close();
parameter = new SimulationParameter();
- parameter.fromProperties(directory, prop);
+ parameter.fromProperties(prop);
} catch (IOException eee) {
throw new IsisFishRuntimeException(_(
"isisfish.error.read.simulation.parameters", file), eee);
@@ -375,31 +363,6 @@
}
/**
- * Get parameter property.
- *
- * @return Parameter property.
- *
- * @deprecated restore getParameter() mecanism
- */
- public Properties getPropertiesParameter() {
-
- Properties prop = new Properties();
- File file = getSimulationParametersFile();
-
- try {
- FileInputStream in = new FileInputStream(file);
- prop.load(in);
- in.close();
-
- } catch (IOException eee) {
- throw new IsisFishRuntimeException(_(
- "isisfish.error.read.simulation.parameters", file), eee);
- }
-
- return prop;
- }
-
- /**
* Permet de force la relecture des parametres et donc que les scripts
* soit charge dans le bon classloader
*
@@ -420,7 +383,7 @@
prop.load(in);
in.close();
parameter = new SimulationParameter();
- parameter.fromProperties(getDirectory(), prop);
+ parameter.fromProperties(prop);
} catch (IOException eee) {
throw new IsisFishRuntimeException(_(
"isisfish.error.read.simulation.parameters", file), eee);
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -53,7 +53,7 @@
/**
* Constructeur.
- *
+ *
* @param rootSrc
*/
protected SimulatorStorage(File rootSrc, File directory, String name) {
@@ -61,17 +61,16 @@
}
public static File getSimulatorDirectory() {
- File result = IsisFish.config.getDatabaseDirectory();
- result = new File(result, SIMULATOR_PATH);
+ File result = new File(getContextDatabaseDirectory(), SIMULATOR_PATH);
result.mkdirs();
return result;
}
/**
- * Retourne une nouvelle instance de la regle. Compile le fichier si besoin
+ * Retourne une nouvelle instance du simulateur. Compile le fichier si besoin.
*
- * @return new rule instance
+ * @return new simulator instance
* @throws IsisFishException
*/
public Simulator getNewSimulatorInstance() throws IsisFishException {
@@ -80,17 +79,20 @@
}
/**
- * Retourne le storage pour la regle demandée
+ * Retourne le storage pour le simulateur demandée.
*
+ * {@link SimulatorStorage} is cached by name.
+ *
* @param name le nom de la regle souhaitée
* @return Le storage pour la regle
*/
static public SimulatorStorage getSimulator(String name) {
- SimulatorStorage result = simulatorsCache .get(name);
+ String cacheName = getContextDatabaseCacheKey(name);
+ SimulatorStorage result = simulatorsCache.get(cacheName);
if (result == null) {
- result = new SimulatorStorage(IsisFish.config.getDatabaseDirectory(),
+ result = new SimulatorStorage(getContextDatabaseDirectory(),
getSimulatorDirectory(), name);
- simulatorsCache.put(name, result);
+ simulatorsCache.put(cacheName, result);
}
return result;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -71,6 +71,33 @@
}
/**
+ * Return context root directory to use for all data files depending on
+ * context (simulation/no simulation).
+ *
+ * In simulation context, must look for files in simulation directory
+ * instead of isis database.
+ *
+ * TODO better place in other storage, but needed for region anad java scrits
+ */
+ protected static File getContextDatabaseDirectory() {
+ return IsisFish.config.getContextDatabaseDirectory();
+ }
+
+ /**
+ * Get cache storage key to use depending on context storage used.
+ *
+ * Two simulation must have their own cache.
+ *
+ * @return context cache key
+ *
+ * TODO better place in other storage, but needed for region anad java scrits
+ */
+ protected static String getContextDatabaseCacheKey(String key) {
+ String result = getContextDatabaseDirectory().getAbsolutePath() + key;
+ return result;
+ }
+
+ /**
* Get {@link VCS}.
*
* @return VCS
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -302,6 +302,10 @@
}
/**
+ * Script directory to use.
+ *
+ * Used to chnage isis-database-3 directory in running simulation context.
+ *
* @param scriptDirectory
*/
public void setScriptDirectory(File scriptDirectory) {
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
+ * Copyright (C) 2006 - 2010 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
@@ -192,8 +192,6 @@
/** La region corespondant au parametre {@link #regionName}. */
protected transient RegionStorage region;
- /** [HACK] Directory form where region have to be loaded. */
- protected transient File directory;
/**
* Permet de verifier que tous les parametres sont bon. Si ce n'est pas le
@@ -270,21 +268,15 @@
/**
* Load region conresponding to {@link #regionName}.
*
- * Contains a hack to load region from a specific directory
- * instead of regions direcory ({@link #directory}).
- *
* @return the region
*/
public RegionStorage getRegion() {
if (region == null || !region.getName().equals(getRegionName())) {
- // hack
- if (directory != null) {
- // ATTENTION: directory pointe sur le repertoire de la simulation et non de la region
- this.region = new RegionStorage(directory, regionName);
- } else {
- region = RegionStorage.getRegion(getRegionName());
- }
+ // bien faire attention ici que la bonne region est ouverte
+ // - isis-database-3 dans le cas d'une region normale
+ // - simulation dans le cas d'une simulation
+ region = RegionStorage.getRegion(getRegionName(), true);
} else {
if (log.isDebugEnabled()) {
log.debug(_("Region %s already inited", getRegionName()));
@@ -1530,9 +1522,6 @@
public SimulationParameter copy() {
SimulationParameter result = new SimulationParameter();
- // just need to copy directory and properties now
- result.directory = directory;
-
if (propertiesParameters != null) {
result.propertiesParameters = new SortedProperties();
// I think that iteration work better than parameters in contructor
@@ -1598,12 +1587,12 @@
public SimulationParameter deepCopy() {
Properties props = toProperties();
SimulationParameter newInstance = new SimulationParameter();
- newInstance.fromProperties(null, props);
+ newInstance.fromProperties(props);
return newInstance;
}
/**
- * The toString() methode call getters.
+ * The toString() method call getters.
*
* So make instances of rules/export/plans...
*/
@@ -1895,16 +1884,14 @@
/**
* Load properties from file.
- *
- * @param directory if not null, region will be forced to this directory
+ *
* @param props property to read
*/
- public void fromProperties(File directory, Properties props) {
+ public void fromProperties(Properties props) {
// save properties (use full to read again parameter)
// for exports, or rules....
this.propertiesParameters = props;
- this.directory = directory;
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2002 - 2009 Ifremer, Code Lutin, Benjamin Poussin
+ * Copyright (C) 2002 - 2010 Ifremer, Code Lutin, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -119,10 +119,9 @@
log.debug("Timing : after import zip : " + new java.util.Date());
}
+ // WARNING: make sure to not open Region before being in simulation context
// add missing control informations
- // TODO again region database directory hack
- // force region reading in simulation directory
- SimulationParameter param = simulation.getParameter(simulation.getFile());
+ SimulationParameter param = simulation.getParameter();
control.setDate(new Date());
control.setProgress(0);
control.setStarted(true);
@@ -330,8 +329,10 @@
// - SimulationContext.get();
// - context.setSimulationControl()
classLoader = changeClassLoader(Thread.currentThread(), rootDirectory);
-
context.setClassLoader(classLoader);
+
+ // this directory is used to change isis-database root directory
+ // is simulation context
context.setScriptDirectory(rootDirectory);
context.setSimulationStorage(simulation);
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -168,7 +168,7 @@
fos = new FileInputStream(f);
Properties proper = new Properties();
proper.load(fos);
- param.fromProperties(null, proper);
+ param.fromProperties(proper);
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("Can't import simulation", e);
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java 2010-01-22 15:39:11 UTC (rev 2937)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationParameterTest.java 2010-01-22 15:42:09 UTC (rev 2938)
@@ -99,7 +99,7 @@
// make transform
Properties props = params.toProperties();
SimulationParameter params2 = new SimulationParameter();
- params2.fromProperties(null, props);
+ params2.fromProperties(props);
Assert.assertEquals("3.2.0.4", params2.getIsisFishVersion());
Assert.assertEquals("desc", params2.getDescription());
@@ -123,7 +123,7 @@
Properties props = new SortedProperties();
props.load(basicFileStream);
SimulationParameter param = new SimulationParameter();
- param.fromProperties(null, props);
+ param.fromProperties(props);
Assert.assertEquals("3.2.0.6", param.getIsisFishVersion());
@@ -155,11 +155,11 @@
Properties props = new SortedProperties();
props.load(basicFileStream);
SimulationParameter param = new SimulationParameter();
- param.fromProperties(null, props);
+ param.fromProperties(props);
Properties props2 = param.toProperties();
SimulationParameter param2 = new SimulationParameter();
- param2.fromProperties(null, props2);
+ param2.fromProperties(props2);
// test rules
Assert.assertNull(param.rules);
@@ -188,11 +188,11 @@
Properties props = new SortedProperties();
props.load(basicFileStream);
SimulationParameter param = new SimulationParameter();
- param.fromProperties(null, props);
+ param.fromProperties(props);
Properties props2 = param.toProperties();
SimulationParameter param2 = new SimulationParameter();
- param2.fromProperties(null, props2);
+ param2.fromProperties(props2);
// test analyse plans
Assert.assertNull(param.analysePlans);
@@ -213,7 +213,7 @@
Properties props = new SortedProperties();
props.load(basicFileStream);
SimulationParameter param = new SimulationParameter();
- param.fromProperties(null, props);
+ param.fromProperties(props);
// force some properties instantiation
param.getAnalysePlans();
@@ -243,7 +243,7 @@
props.load(basicFileStream);
SimulationParameter param = new SimulationParameter();
- param.fromProperties(null, props);
+ param.fromProperties(props);
String toString = param.toString();
if (log.isInfoEnabled()) {
1
0
r2937 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui: input input/gear input/metier sensitivity
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:39:11 +0000 (Fri, 22 Jan 2010)
New Revision: 2937
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTableModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearPopulationSelectivityModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoTargetSpeciesTableModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
Log:
Enable to add factors from tables (target factor equation, selectivity equation)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2010-01-22 15:39:11 UTC (rev 2937)
@@ -47,6 +47,8 @@
}
}}' />
+ <fr.ifremer.isisfish.ui.sensitivity.TableBlockingLayerUI id="tableLayerUI" constructorParams='this' />
+
<script><![CDATA[
import javax.swing.JComponent;
import fr.ifremer.isisfish.entities.FisheryRegion;
@@ -134,16 +136,25 @@
String sensitivityFactorName = className + "." + method;
isSensitivityFactorEnabled = SensitivityUtils.isSensitivityFactorEnabled(sensitivityFactorName);
}
-
+
// install correct layer depending if factor enable
if (isSensitivityFactorEnabled) {
jaxx.runtime.swing.BlockingLayerUI2 ui = layerUI2.clone();
SwingUtil.getLayer(boxed).setUI(ui);
} else {
- jaxx.runtime.swing.BlockingLayerUI ui = layerUI.clone();
- ui.setBlock(true);
- ui.setUseIcon(isActif());
- SwingUtil.getLayer(boxed).setUI(ui);
+ if (boxed instanceof JTable) {
+ //fr.ifremer.isisfish.ui.sensitivity.TableBlockingLayerUI layerui =
+ // new fr.ifremer.isisfish.ui.sensitivity.TableBlockingLayerUI();
+ //layerui.parent = this;
+ //layerui.verifier = getVerifier();
+ SwingUtil.getLayer(boxed).setUI(tableLayerUI);
+ }
+ else {
+ jaxx.runtime.swing.BlockingLayerUI ui = layerUI.clone();
+ ui.setBlock(true);
+ ui.setUseIcon(isActif());
+ SwingUtil.getLayer(boxed).setUI(ui);
+ }
}
}
}
@@ -160,9 +171,9 @@
}
JComponent source = (JComponent) e.getSource();
- Class classBean = (Class)source.getClientProperty("bean");
+ Class<? extends TopiaEntity> classBean = (Class<? extends TopiaEntity>)source.getClientProperty("bean");
String beanID = (String)source.getClientProperty("beanID");
- TopiaEntity bean = null;
+ /*TopiaEntity bean = null;
if (beanID == null) {
bean = getVerifier().getEntity(classBean);
}
@@ -174,7 +185,59 @@
wizard.initNew(source, bean, EditorHelper.canBeContinue(source, bean));
wizard.pack();
wizard.setVisible(true);
+ }*/
+
+ String property = (String)source.getClientProperty("method");
+ displayFactorWizard(source, classBean, beanID, property);
+}
+
+/**
+ * Display factor wizard for bean/property in registred in verifier.
+ */
+public void displayFactorWizard(JComponent source, Class<? extends TopiaEntity> classBean, String beanID, String property) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Event intercepted " + source);
+ log.debug(" client property (bean) : " + classBean);
+ log.debug(" client property (beanID) : " + beanID);
+ log.debug(" client property (method) : " + property);
}
+
+ TopiaEntity bean = null;
+ if (beanID == null) {
+ bean = getVerifier().getEntity(classBean);
+ }
+ else {
+ bean = getVerifier().getEntity(classBean, beanID);
+ }
+
+ if (bean != null) {
+
+ JComponent editor = source;
+
+ // This is a special case for table source component
+ // If current entity is displayed by a JTable component
+ // we need to find a better component than
+ // can display 'property' on 'bean'
+ if (editor instanceof JTable) {
+ editor = EditorHelper.getEditorForValue(bean, property);
+ }
+
+ if (editor != null) {
+ FactorWizardUI wizard = new FactorWizardUI(this);
+ wizard.initNew(editor, bean, EditorHelper.canBeContinue(editor, bean));
+ wizard.pack();
+ wizard.setVisible(true);
+ }
+ else if (log.isWarnEnabled()) {
+ log.warn("Can't find editor for " + classBean.getSimpleName() + "#" + property);
+ }
+ }
+ else {
+ if (log.isErrorEnabled()) {
+ log.error("Can't find bean in current verifier (classBean = " + classBean + ", beanID = " + beanID + ")");
+ }
+ }
}
/**
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearPopulationSelectivityModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearPopulationSelectivityModel.java 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearPopulationSelectivityModel.java 2010-01-22 15:39:11 UTC (rev 2937)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2009 Code Lutin
+ * Copyright (C) 2009-2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -35,6 +35,7 @@
import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Selectivity;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityTableModel;
/**
* Table model for {@link Gear}#{@link Selectivity}.
@@ -49,7 +50,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class GearPopulationSelectivityModel extends AbstractTableModel implements TableCellRenderer {
+public class GearPopulationSelectivityModel extends AbstractTableModel implements TableCellRenderer, SensitivityTableModel {
/** Log. */
private static Log log = LogFactory.getLog(GearPopulationSelectivityModel.class);
@@ -228,4 +229,25 @@
return c;
}
+ /*
+ * @see fr.ifremer.isisfish.ui.sensitivity.SensitivityTableModel#getPropertyAtColumn(int)
+ */
+ @Override
+ public String getPropertyAtColumn(int column) {
+ String result = null;
+ if (column == 1) {
+ result = "equation";
+ }
+ return result;
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.ui.sensitivity.SensitivityTableModel#getBeanAtRow(int)
+ */
+ @Override
+ public Object getBeanAtRow(int rowIndex) {
+ Object result = null;
+ result = selectivities.get(rowIndex);
+ return result;
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoTargetSpeciesTableModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoTargetSpeciesTableModel.java 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoTargetSpeciesTableModel.java 2010-01-22 15:39:11 UTC (rev 2937)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2009 Ifremer, Code Lutin
+ * Copyright (C) 2009-2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -36,6 +36,7 @@
import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.entities.MetierSeasonInfo;
import fr.ifremer.isisfish.entities.TargetSpecies;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityTableModel;
/**
* Table model for {@link MetierSeasonInfo}#{@link TargetSpecies}.
@@ -51,7 +52,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class MetierSeasonInfoTargetSpeciesTableModel extends AbstractTableModel implements TableCellRenderer {
+public class MetierSeasonInfoTargetSpeciesTableModel extends AbstractTableModel implements TableCellRenderer, SensitivityTableModel {
/** Log. */
private static Log log = LogFactory.getLog(MetierSeasonInfoTargetSpeciesTableModel.class);
@@ -236,4 +237,25 @@
return c;
}
+ /*
+ * @see fr.ifremer.isisfish.ui.sensitivity.SensitivityTableModel#getPropertyAtColumn(int)
+ */
+ @Override
+ public String getPropertyAtColumn(int column) {
+ String property = null;
+ if (column == 1) {
+ property = "targetFactorEquation";
+ }
+ return property;
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.ui.sensitivity.SensitivityTableModel#getBeanAtRow(int)
+ */
+ @Override
+ public Object getBeanAtRow(int rowIndex) {
+ Object value = null;
+ value = targetSpeciesList.get(rowIndex);
+ return value;
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2010-01-22 15:39:11 UTC (rev 2937)
@@ -161,11 +161,12 @@
InputOneEquationUI ui = new InputOneEquationUI(
new JAXXInitialContext().add(new InputAction()));
ui.setSelectedEquation(origine.getSelectedEquation());
- ui.setLblText(origine.getLblText());
- ui.setNameEquation(origine.getNameEquation());
+ ui.setText(origine.getText());
+ ui.setFormuleCategory(origine.getFormuleCategory());
ui.setClazz(origine.getClazz());
- ui.setMethodGet(origine.getMethodGet());
- ui.setMethodSet(origine.getMethodSet());
+ //ui.setMethodGet(origine.getMethodGet());
+ //ui.setMethodSet(origine.getMethodSet());
+ ui.setBeanProperty(origine.getBeanProperty());
ui.setBean(entity);
ui.setActif(true);
ui.refresh();
@@ -264,11 +265,12 @@
EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
new JAXXInitialContext().add(new InputAction()));
ui.setSelectedEquation(origine.getSelectedEquation());
- ui.setLblText(origine.getLblText());
- ui.setNameEquation(origine.getNameEquation());
+ ui.setText(origine.getText());
+ ui.setFormuleCategory(origine.getFormuleCategory());
ui.setClazz(origine.getClazz());
- ui.setMethodGet(origine.getMethodGet());
- ui.setMethodSet(origine.getMethodSet());
+ //ui.setMethodGet(origine.getMethodGet());
+ //ui.setMethodSet(origine.getMethodSet());
+ ui.setBeanProperty(origine.getBeanProperty());
ui.setBean(entity);
result = ui;
} else if (component instanceof MatrixEditor) {
@@ -321,12 +323,13 @@
InputOneEquationUI origine = (InputOneEquationUI) component;
EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
new JAXXInitialContext().add(new InputAction()));
- ui.setLblText(origine.getLblText());
- ui.setNameEquation(origine.getNameEquation());
+ ui.setText(origine.getText());
+ ui.setFormuleCategory(origine.getFormuleCategory());
ui.getEditor().getEditor().setText((String) factor.getValue());
ui.setClazz(origine.getClazz());
- ui.setMethodGet(origine.getMethodGet());
- ui.setMethodSet(origine.getMethodSet());
+ //ui.setMethodGet(origine.getMethodGet());
+ //ui.setMethodSet(origine.getMethodSet());
+ ui.setBeanProperty(origine.getBeanProperty());
ui.setBean(origine.getBean());
EquationContinuousDomain equationDomain = (EquationContinuousDomain) domain;
@@ -437,9 +440,11 @@
InputOneEquationUI origine = (InputOneEquationUI) component;
InputOneEquationUI ui = new InputOneEquationUI(new JAXXInitialContext().add(new InputAction()));
ui.getEditor().setText((String) value);
- ui.setLblText(origine.getLblText());
- ui.setNameEquation(origine.getNameEquation());
+ ui.setText(origine.getText());
+ ui.setFormuleCategory(origine.getFormuleCategory());
ui.setClazz(origine.getClazz());
+ /// ??? was not set before
+ ui.setBeanProperty(origine.getBeanProperty());
ui.setFormule((Formule) value);
ui.setActif(true);
ui.refresh();
@@ -702,14 +707,14 @@
* @param fieldName
* @return method return value
*/
- protected static Object getMethodValue(TopiaEntity entity, String fieldName) {
+ protected static Object getMethodValue(Object entity, String fieldName) {
Object result = null;
try {
// fieldName maybe be sometime lower case
String getMethod = "get" + StringUtils.capitalize(fieldName);
Method m = entity.getClass().getMethod(getMethod);
- result = m.invoke(entity, (Object[]) null);
+ result = m.invoke(entity);
} catch (Exception ex) {
if (log.isErrorEnabled()) {
log.error("Can't get entity value", ex);
@@ -805,7 +810,8 @@
log.debug("Factor " + factor.getName() + " denoted entity " + entity);
}
- Method method = entity.getClass().getMethod("get" + property);
+ String getter = "get" + StringUtils.capitalize(property);
+ Method method = entity.getClass().getMethod(getter);
typeClazz = method.getReturnType();
if (log.isDebugEnabled()) {
@@ -856,4 +862,30 @@
return result;
}
+
+ /**
+ * Get editor for editing value.
+ *
+ * @param bean bean
+ * @param beanProperty bean property
+ * @return component
+ */
+ public static JComponent getEditorForValue(Object bean, String beanProperty) {
+ Object basicType = getMethodValue(bean, beanProperty);
+
+ JComponent component = null;
+
+ if (basicType instanceof Equation) {
+ Equation basicEquation = (Equation)basicType;
+ InputOneEquationUI equationComponent = new InputOneEquationUI(
+ new JAXXInitialContext().add(new InputAction()));
+ equationComponent.setFormuleCategory(basicEquation.getCategory());
+ equationComponent.setBean((TopiaEntity)bean);
+ equationComponent.setBeanProperty(beanProperty);
+ equationComponent.putClientProperty("method", beanProperty);
+ component = equationComponent;
+ }
+
+ return component;
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2010-01-22 15:39:11 UTC (rev 2937)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -19,17 +19,17 @@
-->
<ContinuousPanelContainerUI>
- <!-- bean property -->
- <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
- <String id='lblText' javaBean='null'/>
+ <String id='text' javaBean='null'/>
<org.nuiton.topia.persistence.TopiaEntity id='bean' javaBean='null'/>
+ <String id='beanProperty' javaBean='null'/>
+ <!-- For editor doc purpose -->
<Class id='clazz' javaBean='null'/>
- <String id='methodGet' javaBean='null'/>
- <String id='methodSet' javaBean='null'/>
- <String id='nameEquation' javaBean='null'/>
+ <String id='formuleCategory' javaBean='null'/>
<fr.ifremer.isisfish.entities.Equation id='selectedEquation' javaBean='null'/>
+ <!-- bean property -->
+ <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
- <script><![CDATA[
+ <script><![CDATA[
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
@@ -65,7 +65,7 @@
datas.add(domain);
}
-protected AbstractTableModel getTableModel(){
+protected AbstractTableModel getTableModel() {
AbstractTableModel model = new AbstractTableModel() {
@Override
public int getRowCount() {
@@ -168,7 +168,7 @@
Pattern p = Pattern.compile("(^.*\\s+" + variableName + "\\s*\\=\\s*)([\\d\\.]+).*\\;$");
Matcher matcher = p.matcher(line);
if (matcher.find()) {
- String fullVariableName = bean.toString() + "." + StringUtils.uncapitalize(methodGet) + "." + variableName;
+ String fullVariableName = bean.toString() + "." + StringUtils.uncapitalize(beanProperty) + "." + variableName;
line = matcher.group(1) + "context.getValueAndCompute(\"" + fullVariableName + "\", " + matcher.group(2) + ");";
}
result += line + "\n";
@@ -237,8 +237,7 @@
setTable();
}
}
- ]]>
- </script>
+ ]]></script>
<Table id='content' constraints='BorderLayout.CENTER'>
<row>
<cell fill='both' columns='2' weightx='1' weighty='0.5'>
@@ -258,9 +257,9 @@
</row>
<row>
<cell fill='both' columns='2' weightx='1' weighty='0.5'>
- <fr.ifremer.isisfish.ui.input.InputOneEquationUI id='editor' formule='{getFormule()}' lblText='{getLblText()}'
- constructorParams='this' bean='{getBean()}' clazz='{getClazz()}' methodGet='{getMethodGet()}' actif='{isContinueSelected()}'
- methodSet='{getMethodSet()}' nameEquation='{getNameEquation()}' selectedEquation='{getSelectedEquation()}'
+ <fr.ifremer.isisfish.ui.input.InputOneEquationUI id='editor' formule='{getFormule()}' text='{getText()}'
+ constructorParams='this' bean='{getBean()}' clazz='{getClazz()}' beanProperty='{getBeanProperty()}' actif='{isContinueSelected()}'
+ formuleCategory='{getFormuleCategory()}' selectedEquation='{getSelectedEquation()}'
visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
</cell>
</row>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java 2010-01-22 15:39:11 UTC (rev 2937)
@@ -28,6 +28,8 @@
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixND;
@@ -65,9 +67,10 @@
EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
TopiaEntity bean = equationPanel.getBean();
- String methodSet = equationPanel.getMethodSet();
- Method m = bean.getClass().getMethod("set" + methodSet,
- String.class);
+ //String methodSet = equationPanel.getMethodSet();
+ String property = equationPanel.getBeanProperty();
+ property = StringUtils.capitalize(property) + "Content";
+ Method m = bean.getClass().getMethod("set" + property, String.class);
m.invoke(bean, equationPanel.getEditor().getEditor().getText());
// Save equation
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTableModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTableModel.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTableModel.java 2010-01-22 15:39:11 UTC (rev 2937)
@@ -0,0 +1,52 @@
+/* *##%
+ * Copyright (C) 2010 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.sensitivity;
+
+import javax.swing.table.TableModel;
+
+/**
+ * Sensitivity interface for {@link TableModel}.
+ *
+ * Used by {@link TableBlockingLayerUI} to known if event at mouse position
+ * is sensitivity enabled.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public interface SensitivityTableModel {
+
+ /**
+ * Get value at row.
+ *
+ * @param rowIndex row index
+ * @return value at row/column
+ */
+ Object getBeanAtRow(int rowIndex);
+
+ /**
+ * Get property name at column.
+ *
+ * @param column column
+ * @return property name at column (can be {@code null})
+ */
+ String getPropertyAtColumn(int column);
+}
\ No newline at end of file
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTableModel.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2010-01-22 15:39:11 UTC (rev 2937)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java 2010-01-22 15:39:11 UTC (rev 2937)
@@ -0,0 +1,149 @@
+/* *##%
+ * Copyright (C) 2010 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.sensitivity;
+
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JComponent;
+import javax.swing.JScrollBar;
+import javax.swing.JTable;
+import javax.swing.table.TableModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.jxlayer.JXLayer;
+import org.jdesktop.jxlayer.plaf.AbstractLayerUI;
+import org.jdesktop.jxlayer.plaf.LayerUI;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import fr.ifremer.isisfish.ui.input.InputContentUI;
+
+/**
+ * A layer for factorizable entities properties in {@link JTable} component.
+ *
+ * This is a {@link LayerUI} that check if :
+ * <ul>
+ * <li>component is {@link JScrollBar} : clic allowed</li>
+ * <li>component is {@link JTable} and table model is {@link SensitivityTableModel} : do sensitivity stuff</li>
+ * </ul>
+ *
+ * Tree {@link MouseEvent}s are managed:
+ * <ul>
+ * <li>{@link MouseEvent#MOUSE_CLICKED} : display factor interface depending on sensitivity enabled table column</li>
+ * <li>{@link MouseEvent#MOUSE_MOVED} : change cursor depending on sensitivity enabled table column</li>
+ * <li>{@link MouseEvent#MOUSE_EXITED} : back to default cursor</li>
+ * </ul>
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class TableBlockingLayerUI extends AbstractLayerUI<JComponent> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 1877010363682882308L;
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(TableBlockingLayerUI.class);
+
+ /** Parent UI. */
+ protected InputContentUI parent;
+
+ /**
+ * Init layer with parent.
+ *
+ * @param parent parent
+ */
+ public TableBlockingLayerUI(InputContentUI parent) {
+ this.parent = parent;
+ }
+
+ /*
+ * @see org.jdesktop.jxlayer.plaf.AbstractLayerUI#processMouseEvent(java.awt.event.MouseEvent, org.jdesktop.jxlayer.JXLayer)
+ */
+ @Override
+ protected void processMouseEvent(MouseEvent event, JXLayer</*? extends */JComponent> layer) {
+
+ // scrollbar can be moved
+ if (!(event.getSource() instanceof JScrollBar)) {
+ event.consume();
+ }
+
+ if (event.getSource() instanceof JTable) {
+
+ JTable tableSource = (JTable) event.getSource();
+ TableModel model = tableSource.getModel();
+
+ if (model instanceof SensitivityTableModel) {
+ SensitivityTableModel sensitivityTableModel = (SensitivityTableModel) model;
+
+ // mouse exit table
+ if (event.getID() == MouseEvent.MOUSE_EXITED) {
+ Cursor cursor = new Cursor(Cursor.DEFAULT_CURSOR);
+ tableSource.setCursor(cursor);
+ } else {
+ int rowIndex = tableSource.rowAtPoint(event.getPoint());
+ int columnIndex = tableSource.columnAtPoint(event.getPoint());
+
+ if (rowIndex >= 0 && columnIndex >= 0) {
+
+ // test if sensitivity property is enabled
+ SensitivityTableModel sensitivityModel = (SensitivityTableModel) model;
+ TopiaEntity value = (TopiaEntity) sensitivityTableModel.getBeanAtRow(rowIndex);
+ Class<? extends TopiaEntity> beanClass = value.getClass();
+ String property = sensitivityModel.getPropertyAtColumn(columnIndex);
+ String sensitivityName = beanClass.getSimpleName().replaceFirst("Impl", "") + "." + property;
+
+ if (SensitivityUtils.isSensitivityFactorEnabled(sensitivityName)) {
+
+ // clic sur la table
+ if (event.getID() == MouseEvent.MOUSE_CLICKED) {
+ if (log.isDebugEnabled()) {
+ log.debug("Clic done on an enabled factor : " + sensitivityName);
+ }
+
+ parent.displayFactorWizard(tableSource, beanClass, value.getTopiaId(), property);
+ }
+
+ // mouse moved over table
+ else if (event.getID() == MouseEvent.MOUSE_MOVED) {
+ Cursor cursor = new Cursor(Cursor.CROSSHAIR_CURSOR);
+ tableSource.setCursor(cursor);
+ }
+ } else {
+ Cursor cursor = new Cursor(Cursor.DEFAULT_CURSOR);
+ tableSource.setCursor(cursor);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * @see org.jdesktop.jxlayer.plaf.AbstractLayerUI#processMouseMotionEvent(java.awt.event.MouseEvent, org.jdesktop.jxlayer.JXLayer)
+ */
+ @Override
+ protected void processMouseMotionEvent(MouseEvent e, JXLayer<JComponent> l) {
+ processMouseEvent(e, l);
+ }
+}
\ No newline at end of file
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/TableBlockingLayerUI.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
1
0
r2936 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:38:16 +0000 (Fri, 22 Jan 2010)
New Revision: 2936
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesEditorUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationEquationUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigrationUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityEditorUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyTabUI.jaxx
Log:
Simplify input one equation ui. Use less parameters based on conventions.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009
+ * Copyright (C) 2005 - 2010
* Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -18,34 +18,38 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*##%*/
-->
-
<fr.ifremer.isisfish.ui.input.InputContentUI>
- <!-- bean property -->
- <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
- <String id='lblText' javaBean='null'/>
+ <!-- Equation name (just for display purpose, not mandatory) -->
+ <String id='text' javaBean='null'/>
+ <!-- Bean containing equation -->
<org.nuiton.topia.persistence.TopiaEntity id='bean' javaBean='null'/>
+ <!-- Bean property used to access equation -->
+ <String id='beanProperty' javaBean='null'/>
+ <!-- Used to get documentation in opened editor (not mandatory) -->
<Class id='clazz' javaBean='null'/>
- <String id='methodGet' javaBean='null'/>
- <String id='methodSet' javaBean='null'/>
- <String id='nameEquation' javaBean='null'/>
+
+ <!-- Bean property -->
+ <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
+ <!-- Equation name used to auto select formule in combo box -->
+ <String id='formuleCategory' javaBean='null'/>
+ <!-- Selected equation -->
<fr.ifremer.isisfish.entities.Equation id='selectedEquation' javaBean='null'/>
<script><![CDATA[
+import java.lang.reflect.Method;
+import java.io.File;
import fr.ifremer.isisfish.entities.Formule;
import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.ui.input.formule.FormuleComboModel;
-import java.lang.reflect.Method;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
-import jaxx.runtime.swing.Item;
protected DocumentListener listener = null;
addPropertyChangeListener("bean", new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getOldValue() != null || evt.getNewValue() == null) {
- // remove previous binding on getBean()
- //jaxx.runtime.SwingUtil.removeDataBinding(get$Table0(), "fieldCellName.text", "fieldCellLongitude.text", "fieldCellLatitude.text", "fieldCellLand.selected", "fieldCellComment.text");
formuleComboBox.setModel(new DefaultComboBoxModel());
try {
editor.open(org.nuiton.util.FileUtil.getTempFile("", ".java"));
@@ -56,10 +60,6 @@
}
}
if (evt.getNewValue() != null) {
- // add binding on getBean()
- //jaxx.runtime.SwingUtil.applyDataBinding(get$Table0(), "fieldCellName.text", "fieldCellLongitude.text", "fieldCellLatitude.text", "fieldCellLand.selected", "fieldCellComment.text");
- //setComboModel();
-
// chatellier 20090526 : force refresh in bean change ?
refresh();
}
@@ -88,12 +88,19 @@
setComboModel();
editor.getCurrentEditor().addDocumentListener(listener);
}
+
+/**
+ * Get equation on entity.
+ */
protected Equation getEquation() {
Equation result = null;
try {
- if (bean != null && methodGet != null){
- Method m = bean.getClass().getMethod("get" + methodGet, null);
- result = (Equation) m.invoke(bean, (Object[])null);
+ // can be null in some uis
+ // content is managed by caller, can do anythings here
+ if (bean != null && beanProperty != null) {
+ String localBeanProperty = StringUtils.capitalize(beanProperty);
+ Method m = bean.getClass().getMethod("get" + localBeanProperty, null);
+ result = (Equation)m.invoke(bean);
}
} catch (Exception e) {
if (log.isErrorEnabled()) {
@@ -102,30 +109,53 @@
}
return result;
}
-protected void setEquation(){
+
+/**
+ * Call setXXXContent on topia entity (convention).
+ */
+protected void setEquation() {
try {
- if (bean != null && methodSet != null) {
- Method m = bean.getClass().getMethod("set" + methodSet, String.class);
+ // can be null in some uis
+ // content is managed by caller, can do anythings here
+ if (bean != null && beanProperty != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Saving equation content (" + bean.getClass().getSimpleName() +
+ "#" + beanProperty + ")");
+ }
+ String localBeanProperty = StringUtils.capitalize(beanProperty);
+ Method m = bean.getClass().getMethod("set" + localBeanProperty + "Content", String.class);
m.invoke(bean, editor.getText());
}
+ else {
+ if (log.isDebugEnabled()) {
+ log.debug("No bean property defined, skipping content saving");
+ }
+ }
} catch (Exception e) {
if (log.isErrorEnabled()) {
- log.error("Can't set equation", e);
+ log.error("Can't set equation content", e);
}
}
}
@Override
-public void refresh(){
+public void refresh() {
+
+ // TODO binding don't work
+ if (getText() == null) {
+ setText(_("isisfish.common.equation"));
+ }
+
editor.getCurrentEditor().removeDocumentListener(listener);
try {
- editor.open(org.nuiton.util.FileUtil.getTempFile("", ".java"));
+ File equationContentFile = org.nuiton.util.FileUtil.getTempFile("", ".java");
+ editor.open(equationContentFile);
} catch (IOException ex) {
if (log.isErrorEnabled()) {
log.error("Can't refresh editor", ex);
}
}
- if (nameEquation != null){
+ if (formuleCategory != null) {
// chatellier 20090526 (change to get combo selected on this equation)
selectedEquation = getEquation();
setComboModel();
@@ -134,7 +164,7 @@
}
editor.getCurrentEditor().addDocumentListener(listener);
}
-
+
@Override
public void setActionButtons() {
@@ -144,8 +174,8 @@
if (getBean() != null){
TopiaContext isisContext = getBean().getTopiaContext();
java.util.List<Formule> formules = null;
- if (nameEquation != null) {
- formules = getAction().getFormules(isisContext, nameEquation);
+ if (formuleCategory != null) {
+ formules = getAction().getFormules(isisContext, formuleCategory);
FormuleComboModel formulesModel = new FormuleComboModel(formules);
formuleComboBox.setModel(formulesModel);
// fix default selection
@@ -154,17 +184,21 @@
}
}
protected void saveModel() {
- getContextValue(InputAction.class).saveAsModel(nameEquation, "Java", editor.getText());
+ getContextValue(InputAction.class).saveAsModel(formuleCategory, "Java", editor.getText());
setComboModel();
setInfoText(_("isisfish.message.saveModel.finished"));
}
+
+/**
+ * Open external editor, with equation documentation.
+ */
protected void openEditor() {
Formule e = (Formule)formuleComboBox.getSelectedItem();
if (e != null) {
- getContextValue(InputAction.class).openEditor(e.getCategory(), e.getName(), clazz, e.getContent(), editor);
+ getContextValue(InputAction.class).openEditor(e.getCategory(), e.getName(), clazz, e.getContent(), editor);
}
else {
- getContextValue(InputAction.class).openEditor(nameEquation, "new", clazz, editor.getText(), editor);
+ getContextValue(InputAction.class).openEditor(formuleCategory, "new", clazz, editor.getText(), editor);
}
}
protected void setEditorText() {
@@ -182,6 +216,9 @@
}
}
+/**
+ * New formule selected, replace content.
+ */
protected void formuleChanged() {
Formule selectedFormule = (Formule)formuleComboBox.getSelectedItem();
setFormule(selectedFormule);
@@ -192,7 +229,7 @@
<Table>
<row>
<cell fill='horizontal' anchor='east'>
- <JLabel id='lbl' text='{getLblText()}' enabled='{isActif()}'/>
+ <JLabel text='{getText()}' enabled='{isActif()}'/>
</cell>
<cell fill='horizontal' weightx='1.0'>
<JComboBox id="formuleComboBox" onActionPerformed='formuleChanged()' enabled='{isActif()}'
@@ -204,12 +241,12 @@
<Table>
<row>
<cell fill='horizontal'>
- <JButton text="isisfish.common.saveModel" onActionPerformed='saveModel()' enabled='{isActif()}'/>
+ <JButton text="isisfish.common.saveModel" onActionPerformed='saveModel()' enabled='{isActif() && formuleCategory != null}'/>
</cell>
</row>
<row>
<cell fill='horizontal'>
- <JButton text="isisfish.common.openEditor" onActionPerformed='openEditor()' enabled='{isActif()}'/>
+ <JButton text="isisfish.common.openEditor" onActionPerformed='openEditor()' enabled='{isActif() && clazz != null && formuleCategory != null}'/>
</cell>
</row>
<row>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesEditorUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesEditorUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesEditorUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -139,18 +139,20 @@
<Table>
<row>
<cell fill='horizontal' anchor='east'>
- <JLabel text="isisfish.metierSeasonInfoSpecies.selectSpecies" enabled='{isMetierSeasonSelected()}'/>
+ <JLabel text="isisfish.metierSeasonInfoSpecies.selectSpecies"
+ enabled='{isMetierSeasonSelected()}' decorator='boxed'/>
</cell>
<cell fill='horizontal' weightx='1.0'>
- <JComboBox id="fieldTargetSpecies" onActionPerformed='targetSpeciesChanged()' enabled='{isMetierSeasonSelected()}'/>
+ <JComboBox id="fieldTargetSpecies" onActionPerformed='targetSpeciesChanged()'
+ enabled='{isMetierSeasonSelected()}' decorator='boxed'/>
</cell>
</row>
<row>
<cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
<InputOneEquationUI id='targetFactor' constructorParams='this'
actif='{isTargetSpeciesSelected()}'
- lblText='{_("isisfish.metierSeasonInfoSpecies.targetFactor")}'
- bean='{getBean()}' nameEquation='TargetFactor'
+ text='isisfish.metierSeasonInfoSpecies.targetFactor'
+ bean='{getBean()}' formuleCategory='TargetFactor'
clazz='{fr.ifremer.isisfish.equation.TargetSpeciesTargetFactorEquation.class}'
decorator='boxed' _bean='{MetierImpl.class}' _method='""'/>
</cell>
@@ -160,7 +162,8 @@
<JPanel/>
</cell>
<cell fill='horizontal' weightx='1.0'>
- <JCheckBox id="fieldPrimaryCatch" text="isisfish.metierSeasonInfoSpecies.mainSpecies" enabled='{isTargetSpeciesSelected()}'/>
+ <JCheckBox id="fieldPrimaryCatch" text="isisfish.metierSeasonInfoSpecies.mainSpecies"
+ enabled='{isTargetSpeciesSelected()}' decorator='boxed'/>
</cell>
</row>
</Table>
@@ -171,19 +174,21 @@
<Table>
<row>
<cell columns='2' fill='horizontal' weightx='1.0'>
- <JButton id="add" text="isisfish.common.add" onActionPerformed='add()' enabled='{isMetierSeasonSelected()}'/>
+ <JButton id="add" text="isisfish.common.add" onActionPerformed='add()'
+ enabled='{isMetierSeasonSelected()}' decorator='boxed'/>
</cell>
</row>
<row>
<cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
<JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'>
- <JTable id="tableTargetSpecies" rowHeight='24' enabled='{isMetierSeasonSelected()}'/>
+ <JTable id="tableTargetSpecies" rowHeight='24' enabled='{isMetierSeasonSelected()}' decorator='boxed'/>
</JScrollPane>
</cell>
</row>
<row>
<cell columns='2' fill='horizontal' weightx='1.0'>
- <JButton id="remove" text="isisfish.common.remove" onActionPerformed='remove()' enabled='false'/>
+ <JButton id="remove" text="isisfish.common.remove"
+ onActionPerformed='remove()' enabled='false' decorator='boxed'/>
</cell>
</row>
</Table>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierSeasonInfoSpeciesUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -81,9 +81,9 @@
metierSeasonInfoSpeciesEditor.refresh();
}
]]></script>
- <Table id='body'>
+ <Table>
<row>
- <cell fill='both' weightx='1.0' weighty='0.5'>
+ <cell columns="2" fill='both' weightx='1.0' weighty='0.5'>
<Table>
<row>
<cell fill='horizontal' anchor='east'>
@@ -98,7 +98,7 @@
<cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
<MetierSeasonInfoSpeciesEditorUI id='metierSeasonInfoSpeciesEditor' constructorParams='this'
bean='{getBean()}' metierSeasonInfo='{getMetierSeasonInfo()}' metierSeasonSelected='{isMetierSeasonInfoSelected()}'
- actif='{isActif()}' decorator='boxed'
+ actif='{isActif()}'
_bean='{MetierSeasonInfoImpl.class}' _method='"SpeciesTargetSpecies"'/>
</cell>
</row>
@@ -106,18 +106,12 @@
</cell>
</row>
<row>
- <cell fill='horizontal' weightx='1.0'>
- <Table>
- <row>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='save'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='cancel'/>
- </cell>
- </row>
- </Table>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='save' decorator='boxed'/>
</cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='cancel' decorator='boxed'/>
+ </cell>
</row>
</Table>
</fr.ifremer.isisfish.ui.input.InputContentUI>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -193,8 +193,8 @@
<row>
<cell columns='3' fill='both' weightx='1.0' weighty='1.0'>
<InputOneEquationUI id='growthEquation' constructorParams='this'
- lblText='{_("isisfish.populationBasics.growth")}' actif='{isActif()}'
- bean='{getBean()}' nameEquation='Growth' methodGet='Growth' methodSet='EquationGrowth'
+ text='isisfish.populationBasics.growth' actif='{isActif()}'
+ bean='{getBean()}' beanProperty='growth' formuleCategory='Growth'
clazz='{fr.ifremer.isisfish.equation.PopulationGrowth.class}'
decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/>
</cell>
@@ -202,8 +202,8 @@
<row>
<cell columns='3' fill='both' weightx='1.0' weighty='1.0'>
<InputOneEquationUI id='growthReverseEquation' constructorParams='this'
- lblText='{_("isisfish.populationBasics.growthReverse")}' actif='{isActif()}'
- bean='{getBean()}' nameEquation='GrowthReverse' methodGet='GrowthReverse' methodSet='EquationGrowthReverse'
+ text='isisfish.populationBasics.growthReverse' actif='{isActif()}'
+ bean='{getBean()}' formuleCategory='GrowthReverse' beanProperty='GrowthReverse'
clazz='{fr.ifremer.isisfish.equation.PopulationGrowthReverse.class}'
decorator='boxed' _bean='{PopulationImpl.class}' _method='"GrowthReverse"'/>
</cell>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationEquationUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationEquationUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationEquationUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -49,38 +49,38 @@
</script>
<Table id='body'>
<row>
- <cell columns='2' fill='both' weightx='0.5' weighty='0.3'>
+ <cell columns='2' fill='both' weightx='0.5' weighty='0.3'>
<InputOneEquationUI id='naturalDeathRate' constructorParams='this'
- lblText='{_("isisfish.populationEquation.naturalDeathRate")}'
- bean='{getBean()}' nameEquation='NaturalDeathRate' methodGet='NaturalDeathRate' methodSet='EquationNaturalDeathRate'
+ text='isisfish.populationEquation.naturalDeathRate'
+ bean='{getBean()}' formuleCategory='NaturalDeathRate' beanProperty='NaturalDeathRate'
clazz='{fr.ifremer.isisfish.equation.PopulationNaturalDeathRate.class}'
decorator='boxed' _bean='{PopulationImpl.class}' _method='"NaturalDeathRate"'/>
</cell>
</row>
<row>
- <cell columns='2' fill='both' weightx='1.0' weighty='0.3'>
+ <cell columns='2' fill='both' weightx='1.0' weighty='0.3'>
<InputOneEquationUI id='meanWeight' constructorParams='this'
- lblText='{_("isisfish.populationEquation.meanWeight")}'
- bean='{getBean()}' nameEquation='MeanWeight' methodGet='MeanWeight' methodSet='EquationMeanWeight'
+ text='isisfish.populationEquation.meanWeight'
+ bean='{getBean()}' formuleCategory='MeanWeight' beanProperty='MeanWeight'
clazz='{fr.ifremer.isisfish.equation.PopulationMeanWeight.class}'
decorator='boxed' _bean='{PopulationImpl.class}' _method='"MeanWeight"'/>
</cell>
</row>
<row>
- <cell columns='2' fill='both' weightx='1.0' weighty='0.3'>
+ <cell columns='2' fill='both' weightx='1.0' weighty='0.3'>
<InputOneEquationUI id='price' constructorParams='this'
- lblText='{_("isisfish.populationEquation.price")}'
- bean='{getBean()}' nameEquation='Price' methodGet='Price' methodSet='EquationPrice'
+ text='isisfish.populationEquation.price'
+ bean='{getBean()}' formuleCategory='Price' beanProperty='Price'
clazz='{fr.ifremer.isisfish.equation.PopulationPrice.class}'
decorator='boxed' _bean='{PopulationImpl.class}' _method='"Price"'/>
</cell>
</row>
<row>
<cell fill='horizontal' weightx='0.5'>
- <JButton id='save'/>
+ <JButton id='save' decorator='boxed'/>
</cell>
<cell fill='horizontal' weightx='0.5'>
- <JButton id='cancel'/>
+ <JButton id='cancel' decorator='boxed'/>
</cell>
</row>
</Table>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigrationUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigrationUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEmigrationUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -188,7 +188,7 @@
</row>
<row columns='4'>
<cell fill='both' weightx='1.0' weighty='1.0'>
- <org.nuiton.math.matrix.gui.MatrixPanelEditor id ='populationMigrationEmigrationTable'
+ <org.nuiton.math.matrix.gui.MatrixPanelEditor id='populationMigrationEmigrationTable'
linearModel="true" enabled='{isActif()}'
onMatrixChanged="populationMigrationEmigrationMatrixChanged(event)" />
</cell>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -50,8 +50,8 @@
<row>
<cell fill='both' weightx='1.0' weighty='1.0'>
<InputOneEquationUI id='migrationEquation' constructorParams='this'
- lblText='{_("isisfish.common.migration")}' actif='{isActif()}'
- bean='{getPopInfo()}' nameEquation='Migration' methodGet='MigrationEquation' methodSet='MigrationEquationAsString'
+ text='isisfish.common.migration' actif='{isActif()}'
+ bean='{getPopInfo()}' formuleCategory='Migration' beanProperty='MigrationEquation'
clazz='{fr.ifremer.isisfish.equation.MigrationEquation.class}'
decorator='boxed' _bean='{PopulationSeasonInfoImpl.class}' _method='"MigrationEquation"'/>
</cell>
@@ -59,8 +59,8 @@
<row>
<cell fill='both' weightx='1.0' weighty='1.0'>
<InputOneEquationUI id='emigrationEquation' constructorParams='this'
- lblText='{_("isisfish.common.emigration")}' actif='{isActif()}'
- bean='{getPopInfo()}' nameEquation='Emigration' methodGet='EmigrationEquation' methodSet='EmigrationEquationAsString'
+ text='isisfish.common.emigration' actif='{isActif()}'
+ bean='{getPopInfo()}' formuleCategory='Emigration' beanProperty='EmigrationEquation'
clazz='{fr.ifremer.isisfish.equation.EmigrationEquation.class}'
decorator='boxed' _bean='{PopulationSeasonInfoImpl.class}' _method='"EmigrationEquation"'/>
</cell>
@@ -68,8 +68,8 @@
<row>
<cell fill='both' weightx='1.0' weighty='1.0'>
<InputOneEquationUI id='immigrationEquation' constructorParams='this'
- lblText='{_("isisfish.common.immigration")}' actif='{isActif()}'
- bean='{getPopInfo()}' nameEquation='Immigration' methodGet='ImmigrationEquation' methodSet='ImmigrationEquationAsString'
+ text='isisfish.common.immigration' actif='{isActif()}'
+ bean='{getPopInfo()}' formuleCategory='Immigration' beanProperty='ImmigrationEquation'
clazz='{fr.ifremer.isisfish.equation.ImmigrationEquation.class}'
decorator='boxed' _bean='{PopulationSeasonInfoImpl.class}' _method='"ImmigrationEquation"'/>
</cell>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -86,8 +86,8 @@
<row>
<cell columns='2' fill='both' weightx='1.0' weighty='0.5'>
<InputOneEquationUI id='reproductionEquation' constructorParams='this'
- lblText='{_("isisfish.populationRecruitment.reproductionEquation")}'
- bean='{getBean()}' nameEquation='Reproduction' methodGet='ReproductionEquation' methodSet='EquationReproductionEquation'
+ text='isisfish.populationRecruitment.reproductionEquation'
+ bean='{getBean()}' formuleCategory='Reproduction' beanProperty='ReproductionEquation'
clazz='{fr.ifremer.isisfish.equation.PopulationReproductionEquation.class}'
decorator='boxed' _bean='{PopulationImpl.class}' _method='"ReproductionEquation"'/>
</cell>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -47,25 +47,21 @@
}
]]>
</script>
- <Table id='body'>
+ <Table>
<row>
- <cell fill='both' weightx='1.0' weighty='1'>
- <PopulationZonesEditorUI id='popZones' constructorParams='this' bean='{getBean()}' actif='{isActif()}' decorator='boxed' _bean='{PopulationImpl.class}' _method='"MappingZoneReproZoneRecru"'/>
+ <cell columns="2" fill='both' weightx='1.0' weighty='1'>
+ <PopulationZonesEditorUI id='popZones' constructorParams='this'
+ bean='{getBean()}' actif='{isActif()}' decorator='boxed'
+ _bean='{PopulationImpl.class}' _method='"MappingZoneReproZoneRecru"'/>
</cell>
</row>
<row>
- <cell fill='horizontal' weightx='1.0'>
- <Table>
- <row>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='save'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='cancel'/>
- </cell>
- </row>
- </Table>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='save' decorator='boxed'/>
</cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='cancel' decorator='boxed'/>
+ </cell>
</row>
</Table>
</fr.ifremer.isisfish.ui.input.InputContentUI>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityEditorUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityEditorUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityEditorUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -133,55 +133,43 @@
addSelectivityButton.setEnabled(isSelectivityPopulationSelected());
}
]]></script>
- <Table id='body'>
+ <Table>
<row>
- <cell fill='both' weightx='1.0' weighty='1.0'>
- <Table>
- <row>
- <cell fill='horizontal' anchor='east'>
- <JLabel text="isisfish.selectivity.selectPopulation" enabled='{isActif()}' decorator='boxed' />
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <JComboBox id="fieldSelectivityPopulation" onActionPerformed='selectivityChanged()' enabled='{isActif()}'
- decorator='boxed' />
- </cell>
- </row>
- <row>
- <cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
- <InputOneEquationUI id='selectivityEquation' constructorParams='this'
- lblText='{_("isisfish.selectivity.equation")}'
- bean='{getBean()}' nameEquation='Selectivity' actif='{isSelectivityPopulationSelected()}'
- clazz='{fr.ifremer.isisfish.equation.SelectivityEquation.class}'
- decorator='boxed' />
- </cell>
- </row>
- </Table>
+ <cell fill='horizontal' anchor='east'>
+ <JLabel text="isisfish.selectivity.selectPopulation" enabled='{isActif()}' decorator='boxed' />
</cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JComboBox id="fieldSelectivityPopulation" onActionPerformed='selectivityChanged()' enabled='{isActif()}'
+ decorator='boxed' />
+ </cell>
</row>
<row>
- <cell fill='both' weightx='1.0' weighty='1.0'>
- <Table>
- <row>
- <cell columns='2' fill='horizontal' weightx='1.0'>
- <JButton id="addSelectivityButton" text="isisfish.common.add" onActionPerformed='addSelectivity()'
- enabled='{isSelectivityPopulationSelected()}' decorator='boxed' />
- </cell>
- </row>
- <row>
- <cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
- <JScrollPane>
- <JTable id="selectivityTable" rowHeight='24' enabled='{isActif()}' decorator='boxed' />
- </JScrollPane>
- </cell>
- </row>
- <row>
- <cell columns='2' fill='horizontal' weightx='1.0'>
- <JButton id="removeSelectivityButton" text="isisfish.common.remove" onActionPerformed='removeSelectivity()'
- enabled='false' decorator='boxed' />
- </cell>
- </row>
- </Table>
+ <cell columns='2' fill='both' weightx='1.0' weighty='1.0' insets="0">
+ <InputOneEquationUI id='selectivityEquation' constructorParams='this'
+ text='isisfish.selectivity.equation'
+ bean='{getBean()}' formuleCategory='Selectivity' actif='{isSelectivityPopulationSelected()}'
+ clazz='{fr.ifremer.isisfish.equation.SelectivityEquation.class}'
+ decorator='boxed' />
</cell>
</row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JButton id="addSelectivityButton" text="isisfish.common.add" onActionPerformed='addSelectivity()'
+ enabled='{isSelectivityPopulationSelected()}' decorator='boxed' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
+ <JScrollPane>
+ <JTable id="selectivityTable" rowHeight='24' enabled='{isActif()}' decorator='boxed' />
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JButton id="removeSelectivityButton" text="isisfish.common.remove" onActionPerformed='removeSelectivity()'
+ enabled='false' decorator='boxed' />
+ </cell>
+ </row>
</Table>
</fr.ifremer.isisfish.ui.input.InputContentUI>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SelectivityUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -42,34 +42,21 @@
getVerifier().setSaveButton(save);
getVerifier().setCancelButton(cancel);
}
-
]]></script>
- <Table id='body'>
+ <Table>
<row>
- <cell fill='both' weightx='1.0' weighty='1.0'>
- <Table>
- <row>
- <cell columns='2' fill='both' weightx='1.0' weighty='1.0'>
- <SelectivityEditorUI id='editor' constructorParams='this' bean='{getBean()}'
- _bean='{GearImpl.class}' _method='"PopulationSelectivity"'/>
- </cell>
- </row>
- </Table>
+ <cell columns="2" fill='both' weightx='1.0' weighty='1.0'>
+ <SelectivityEditorUI id='editor' constructorParams='this' bean='{getBean()}'
+ _bean='{GearImpl.class}' _method='"PopulationSelectivity"'/>
</cell>
</row>
<row>
<cell fill='horizontal' weightx='1.0'>
- <Table>
- <row>
- <cell fill='horizontal' weightx='1.0'>
- <JButton id='save'/>
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <JButton id='cancel'/>
- </cell>
- </row>
- </Table>
+ <JButton id='save' decorator='boxed'/>
</cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JButton id='cancel' decorator='boxed'/>
+ </cell>
</row>
</Table>
</fr.ifremer.isisfish.ui.input.InputContentUI>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsBasicsUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -137,8 +137,8 @@
<row>
<cell columns='2' fill='both' weightx='1.0' weighty='0.3'>
<InputOneEquationUI id='technicalEfficiency' constructorParams='this'
- lblText='{_("isisfish.setOfVessels.technicalEfficiency")}'
- bean='{getBean()}' nameEquation='TechnicalEfficiency' methodGet='TechnicalEfficiencyEquation' methodSet='EquationTechnicalEfficiency'
+ text='isisfish.setOfVessels.technicalEfficiency'
+ bean='{getBean()}' formuleCategory='TechnicalEfficiency' beanProperty='TechnicalEfficiencyEquation'
clazz='{fr.ifremer.isisfish.equation.SoVTechnicalEfficiencyEquation.class}'
decorator='boxed' _bean='{SetOfVesselsImpl.class}' _method='"TechnicalEfficiencyEquation"'/>
</cell>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyTabUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyTabUI.jaxx 2010-01-22 15:37:21 UTC (rev 2935)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyTabUI.jaxx 2010-01-22 15:38:16 UTC (rev 2936)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -134,8 +134,8 @@
<row>
<cell columns="2" fill='both' weightx='1.0' weighty='0.5'>
<InputOneEquationUI id="strategyInactivity" constructorParams='this'
- lblText='{_("isisfish.strategy.inactivity")}'
- bean='{getBean()}' nameEquation='Inactivity' methodGet='InactivityEquation' methodSet='EquationInactivity'
+ text='isisfish.strategy.inactivity'
+ bean='{getBean()}' formuleCategory='Inactivity' beanProperty='InactivityEquation'
clazz='{fr.ifremer.isisfish.equation.StrategyInactivityEquation.class}'
decorator='boxed' _bean='{StrategyImpl.class}' _method='"Inactivity"'/> <!-- bindings not work well actif='{getBean().getInactivityEquationUsed()}' -->
</cell>
1
0
r2935 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/datastore/update main/java/fr/ifremer/isisfish/entities test/java/fr/ifremer/isisfish/entity
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:37:21 +0000 (Fri, 22 Jan 2010)
New Revision: 2935
Added:
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceConventionTest.java
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
Log:
Change all equation content setter on entity to a common convention. add a test on it.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/update/ImportFromV2.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -502,13 +502,13 @@
pop3.setName(getStringValue(pop, "nom"));
pop3.setGeographicId(getStringValue(pop, "idGeographique"));
pop3.setPlusGroup(getBoolValue(pop, "classePlus"));
- pop3.setEquationGrowth(getEquationStringValue(pop, "croissance"));
+ pop3.setGrowthContent(getEquationStringValue(pop, "croissance"));
convertEquation(pop3.getGrowth(), getStringValue(pop, "croissance"));
- pop3.setEquationGrowthReverse(getEquationStringValue(pop, "inverseCroissance"));
+ pop3.setGrowthReverseContent(getEquationStringValue(pop, "inverseCroissance"));
convertEquation(pop3.getGrowthReverse(), getStringValue(pop, "inverseCroissance"));
- pop3.setEquationNaturalDeathRate(getEquationStringValue(pop, "mortaliteNaturelleEquation"));
+ pop3.setNaturalDeathRateContent(getEquationStringValue(pop, "mortaliteNaturelleEquation"));
convertEquation(pop3.getNaturalDeathRate(), getStringValue(pop, "mortaliteNaturelleEquation"));
- pop3.setEquationReproductionEquation(getEquationStringValue(pop, "equationReproduction"));
+ pop3.setReproductionEquationContent(getEquationStringValue(pop, "equationReproduction"));
convertEquation(pop3.getReproductionEquation(), getStringValue(pop, "equationReproduction"));
pop3.setMonthGapBetweenReproRecrutement(getIntValue(pop, "nbMoisEntreReproRecrutement"));
pop3.setRecruitmentDistribution(getMatrixValue(pop, "etalementRecrutement")); //TODO la semantique devrait etre: sem.add(_("isisfish.common.month", i));
@@ -580,12 +580,12 @@
eqMeanWeight +=
" default: return 0;\n" +
" }\n";
- pop3.setEquationMeanWeight(eqMeanWeight);
+ pop3.setMeanWeightContent(eqMeanWeight);
eqPrice +=
" default: return 0;\n" +
" }\n";
- pop3.setEquationPrice(eqPrice);
+ pop3.setPriceContent(eqPrice);
String seasonComment = "";
List<Node> infoSaisons = getListValue(pop, "infoSaison");
@@ -620,11 +620,11 @@
season.setReproductionDistribution(mat);
if (season.getUseEquationMigration()) {
- season.setMigrationEquationAsString(getEquationStringValue(infoSaison, "migrationEquation"));
+ season.setMigrationEquationContent(getEquationStringValue(infoSaison, "migrationEquation"));
convertEquation(season.getMigrationEquation(), getStringValue(infoSaison, "migrationEquation"));
- season.setEmigrationEquationAsString(getEquationStringValue(infoSaison, "emigrationEquation"));
+ season.setEmigrationEquationContent(getEquationStringValue(infoSaison, "emigrationEquation"));
convertEquation(season.getEmigrationEquation(), getStringValue(infoSaison, "emigrationEquation"));
- season.setImmigrationEquationAsString(getEquationStringValue(infoSaison, "immigrationEquation"));
+ season.setImmigrationEquationContent(getEquationStringValue(infoSaison, "immigrationEquation"));
convertEquation(season.getImmigrationEquation(), getStringValue(infoSaison, "immigrationEquation"));
} else {
mat = season.getMigrationMatrix().copy();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -87,7 +87,8 @@
}
/**
- * override to change name of equation
+ * Override to change name of equation.
+ *
* @see fr.ifremer.isisfish.entities.PopulationAbstract#setName(java.lang.String)
*/
@Override
@@ -124,7 +125,7 @@
}
}
- public void setEquationReproductionEquation(String content) {
+ public void setReproductionEquationContent(String content) {
try {
Equation eq = getReproductionEquation();
@@ -156,7 +157,7 @@
}
}
- public void setEquationGrowth(String content) {
+ public void setGrowthContent(String content) {
try {
Equation eq = getGrowth();
@@ -188,7 +189,7 @@
}
}
- public void setEquationGrowthReverse(String content) {
+ public void setGrowthReverseContent(String content) {
try {
Equation eq = getGrowthReverse();
@@ -220,7 +221,7 @@
}
}
- public void setEquationNaturalDeathRate(String content) {
+ public void setNaturalDeathRateContent(String content) {
try {
Equation eq = getNaturalDeathRate();
@@ -252,7 +253,7 @@
}
}
- public void setEquationMeanWeight(String content) {
+ public void setMeanWeightContent(String content) {
try {
Equation eq = getMeanWeight();
@@ -284,7 +285,7 @@
}
}
- public void setEquationPrice(String content) {
+ public void setPriceContent(String content) {
try {
Equation eq = getPrice();
@@ -480,14 +481,14 @@
List[] newsems = new List[]{getPopulationGroup(),
getPopulationSeasonInfo(),};
- MatrixND newmat = MatrixFactory.getInstance().create(
- n_("isisfish.population.capturability"),
- newsems,
- new String[] { n_("isisfish.population.group"),
+ MatrixND newmat = MatrixFactory.getInstance().create(
+ n_("isisfish.population.capturability"),
+ newsems,
+ new String[] { n_("isisfish.population.group"),
n_("isisfish.population.season") });
newmat.paste(value);
value = newmat;
- }
+ }
super.setCapturability(value);
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationSeasonInfoImpl.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -681,7 +681,7 @@
return mat;
}
- public void setMigrationEquationAsString(String content) {
+ public void setMigrationEquationContent(String content) {
try {
Equation eq = getMigrationEquation();
@@ -715,7 +715,7 @@
}
}
- public void setEmigrationEquationAsString(String content) {
+ public void setEmigrationEquationContent(String content) {
try {
Equation eq = getEmigrationEquation();
@@ -749,7 +749,7 @@
}
}
- public void setImmigrationEquationAsString(String content) {
+ public void setImmigrationEquationContent(String content) {
try {
Equation eq = getImmigrationEquation();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SelectivityImpl.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -19,6 +19,8 @@
package fr.ifremer.isisfish.entities;
+import static org.nuiton.i18n.I18n._;
+
import org.nuiton.topia.TopiaException;
import fr.ifremer.isisfish.IsisFishDAOHelper;
@@ -42,7 +44,7 @@
/** serialVersionUID. */
private static final long serialVersionUID = 1L;
- /* (non-Javadoc)
+ /*
* @see fr.ifremer.isisfish.entities.Selectivity#getCoefficient(double, double, fr.ifremer.isisfish.entities.Metier)
*/
public double getCoefficient(Population pop, PopulationGroup group,
@@ -57,7 +59,7 @@
return result;
}
- /* (non-Javadoc)
+ /*
* @see fr.ifremer.isisfish.entities.SelectivityAbstract#getEquation()
*/
@Override
@@ -80,6 +82,32 @@
return super.getEquation();
}
+ /**
+ * Equation content setter for Equation.
+ *
+ * @param content content to set
+ */
+ public void setEquationContent(String content) {
+ try {
+ Equation eq = getEquation();
+
+ // can't be null
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
/* (non-Javadoc)
* @see fr.ifremer.isisfish.entities.SelectivityAbstract#setGear(fr.ifremer.isisfish.entities.Gear)
*/
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -104,7 +104,7 @@
return result;
}
- public void setEquationTechnicalEfficiency(String content) {
+ public void setTechnicalEfficiencyEquationContent(String content) {
try {
Equation eq = getTechnicalEfficiencyEquation();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/StrategyImpl.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -165,7 +165,7 @@
return result;
}
- public void setEquationInactivity(String content) {
+ public void setInactivityEquationContent(String content) {
try {
Equation eq = getInactivityEquation();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2010-01-22 15:24:53 UTC (rev 2934)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/TargetSpeciesImpl.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2006 - 2009
+ * Copyright (C) 2006 - 2010
* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
@@ -74,6 +74,32 @@
return super.getTargetFactorEquation();
}
+ /**
+ * Equation content setter for TargetFactorEquation.
+ *
+ * @param content content to set
+ */
+ public void setTargetFactorEquationContent(String content) {
+ try {
+ Equation eq = getTargetFactorEquation();
+
+ // can't be null
+
+ // Fire
+ String _oldValue = eq.getContent();
+ fireOnPreWrite("content", _oldValue, content);
+
+ eq.setContent(content);
+ eq.update();
+
+ fireOnPostWrite("content", _oldValue, content);
+
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException(
+ _("isisfish.error.change.equation"), eee);
+ }
+ }
+
/* (non-Javadoc)
* @see fr.ifremer.isisfish.entities.TargetSpeciesAbstract#setMetierSeasonInfo(fr.ifremer.isisfish.entities.MetierSeasonInfo)
*/
Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceConventionTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceConventionTest.java (rev 0)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceConventionTest.java 2010-01-22 15:37:21 UTC (rev 2935)
@@ -0,0 +1,93 @@
+/* *##%
+ * Copyright (C) 2010 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.entity;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.IsisFishDAOHelper.IsisFishEntityEnum;
+import fr.ifremer.isisfish.entities.Equation;
+
+/**
+ * Test for convention defined on entities.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class PersistenceConventionTest {
+
+ /** Logger for this class. */
+ private static final Log log = LogFactory.getLog(PersistenceConventionTest.class);
+
+ /**
+ * A convention has been defined on all entities for equation getter/setter.
+ *
+ * If getter is :
+ * <pre>Equation getXXX()</pre>
+ * setter has to be
+ * <pre>void setXXXContent(String)</pre>
+ *
+ * @throws TopiaException
+ * @throws NoSuchMethodException
+ * @throws SecurityException
+ */
+ @Test
+ public void testEquationSetterName() throws TopiaException, SecurityException, NoSuchMethodException {
+
+ for (IsisFishEntityEnum entityEnum : IsisFishDAOHelper.IsisFishEntityEnum.values()) {
+ Class<? extends TopiaEntity> entity = entityEnum.getImplementation();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Testing convention on : " + entity);
+ }
+
+ for (Method method : entity.getMethods()) {
+ Class<?> returnType = method.getReturnType();
+
+ // method return an equation, search for getter
+ if (returnType.isAssignableFrom(Equation.class)) {
+ String methodName = method.getName();
+ methodName = methodName.replaceFirst("g", "s") + "Content";
+
+ try {
+ Method methodSet = entity.getMethod(methodName, String.class);
+
+ Assert.assertTrue("Method " + entity.getName() + "#" +
+ methodName + "(" + String.class.getName() + ") is not accessible", Modifier.isPublic(methodSet.getModifiers()));
+ }
+ catch (NoSuchMethodException ex) {
+ Assert.fail("Method " + entity.getName() + "#" +
+ methodName + "(" + String.class.getName() + ") not found");
+ }
+ }
+ }
+ }
+ }
+}
Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/entity/PersistenceConventionTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
1
0
r2934 - isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:24:53 +0000 (Fri, 22 Jan 2010)
New Revision: 2934
Modified:
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java
Log:
Add a compilation test on SimulationStorage
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java 2010-01-22 15:23:05 UTC (rev 2933)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/datastore/SimulatorStorageTest.java 2010-01-22 15:24:53 UTC (rev 2934)
@@ -19,18 +19,23 @@
package fr.ifremer.isisfish.datastore;
+import java.io.File;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import fr.ifremer.isisfish.AbstractIsisFishTest;
import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.simulator.Simulator;
import freemarker.template.Configuration;
import freemarker.template.Template;
@@ -47,6 +52,8 @@
*/
public class SimulatorStorageTest extends AbstractIsisFishTest {
+ private static final Log log = LogFactory.getLog(SimulatorStorageTest.class);
+
protected Configuration freemarkerConfiguration;
@Before
@@ -86,4 +93,33 @@
Assert.assertEquals(0, compileResult);
}
+ /**
+ * Test compilation on {@link JavaSourceStorage} and instanciation.
+ *
+ * There was a bug who not compiled if file was never of a non existent file.
+ * @throws IsisFishException
+ */
+ @Test
+ public void testSimulatorStorage() throws IsisFishException {
+
+ // Make sur that class file does'nt exists !!!
+ File f = new File(IsisFish.config.getCompileDirectory(),
+ "simulators" + File.separator + "DefaultSimulator.class");
+ if (f.exists()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Delete file : " + f);
+ }
+ f.delete();
+ }
+ else {
+ if (log.isDebugEnabled()) {
+ log.debug("File : " + f + " doesn't exists !");
+ }
+ }
+
+ SimulatorStorage simulatorStorage = SimulatorStorage.getSimulator("DefaultSimulator");
+ Simulator simulator = simulatorStorage.getNewSimulatorInstance();
+ Assert.assertNotNull(simulator);
+ Assert.assertTrue(f.exists());
+ }
}
1
0
r2933 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:23:05 +0000 (Fri, 22 Jan 2010)
New Revision: 2933
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
Log:
Fix strange automatic import
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2010-01-22 15:20:26 UTC (rev 2932)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2010-01-22 15:23:05 UTC (rev 2933)
@@ -43,7 +43,7 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.xwork.StringUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
1
0
r2932 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:20:26 +0000 (Fri, 22 Jan 2010)
New Revision: 2932
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
Log:
Improve monitoring for ended simulation : now take care of downloaded failed simulations
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2010-01-22 15:15:12 UTC (rev 2931)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2010-01-22 15:20:26 UTC (rev 2932)
@@ -43,10 +43,12 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.xwork.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.datastore.SimulationInformation;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.simulator.SimulationControl;
import fr.ifremer.isisfish.simulator.SimulationParameter;
@@ -196,8 +198,7 @@
restartSimulation(service, file, simulationId, simulationProperties);
} catch (IOException e) {
if (log.isErrorEnabled()) {
- log.error("Can't get launcher for this simulation",
- e);
+ log.error("Can't get launcher for this simulation", e);
}
} finally {
IOUtils.closeQuietly(propertiesFileIS);
@@ -524,11 +525,26 @@
// WARNING this condition is VERY important
// and set by end of
// fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher#localSimulateSameThread(SimulationControl, SimulationStorage)
-
- // FIXME check SimulationStorage.exists(control.getId()) condition
- if (control.getProgress() > 0
- && control.getProgress() >= control.getProgressMax() && SimulationStorage.exists(control.getId())) {
- simulationEnded = true;
+
+ File simulationRoot = SimulationStorage.getSimulationDirectory(control.getId());
+
+ // si la simulation n'est pas localement presente, c'est pas fini
+ if (simulationRoot.isDirectory()) {
+ // cas d'une simulation terminée
+ if (control.getProgress() > 0 &&
+ control.getProgress() >= control.getProgressMax()) {
+ simulationEnded = true;
+ }
+ else {
+
+ // cas d'une simulation arretee par exception
+
+ File informationFile = SimulationStorage.getSimulationInformationFile(simulationRoot);
+ SimulationInformation information = new SimulationInformation(informationFile);
+ if (StringUtils.isNotEmpty(information.getException())) {
+ simulationEnded = true;
+ }
+ }
}
}
} catch (RemoteException e) {
1
0
r2931 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 15:15:12 +0000 (Fri, 22 Jan 2010)
New Revision: 2931
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
Log:
Add new configuration to use different isis-database root during simulation.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2010-01-22 13:58:33 UTC (rev 2930)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2010-01-22 15:15:12 UTC (rev 2931)
@@ -201,6 +201,28 @@
}
/**
+ * Get database directory to use for script.
+ *
+ * Defaut to {@link #getDatabaseDirectory()} value, but to
+ * {@link SimulationContext#getScriptDirectory()} during a simulation.
+ *
+ * @return script database directory
+ */
+ public File getContextDatabaseDirectory() {
+
+ // add a subdirectory for simulation context
+ SimulationContext simContext = SimulationContext.get();
+ File scriptDirectory = simContext.getScriptDirectory();
+
+ if (scriptDirectory == null) {
+ // if null, not in simulation
+ scriptDirectory = getDatabaseDirectory();
+ }
+
+ return scriptDirectory;
+ }
+
+ /**
* Retourne le lock a utiliser pour la base h2.
*
* Par defaut la base utilise 'file'.
1
0
r2930 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
by chatellier@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: chatellier
Date: 2010-01-22 13:58:33 +0000 (Fri, 22 Jan 2010)
New Revision: 2930
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesEditorUI.jaxx
Log:
Fix NPE when creating a new population
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesEditorUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesEditorUI.jaxx 2010-01-22 12:49:25 UTC (rev 2929)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationZonesEditorUI.jaxx 2010-01-22 13:58:33 UTC (rev 2930)
@@ -1,6 +1,6 @@
<!--
/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ * Copyright (C) 2005 - 2010 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -88,9 +88,13 @@
protected void setModel(java.util.List<Zone> availableZones, java.util.List<Zone> selectedZones, JList associatedList){
ZoneListModel zoneModel = new ZoneListModel(availableZones);
associatedList.setModel(zoneModel);
- for (Zone selectedZone : selectedZones) {
- int index = availableZones.indexOf(selectedZone);
- associatedList.addSelectionInterval(index, index);
+
+ // can be null at population init
+ if (selectedZones != null) {
+ for (Zone selectedZone : selectedZones) {
+ int index = availableZones.indexOf(selectedZone);
+ associatedList.addSelectionInterval(index, index);
+ }
}
}
protected void presenceChanged(){
1
0