Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
April 2009
- 7 participants
- 108 discussions
r2152 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator
by chatellier@users.labs.libre-entreprise.org 29 Apr '09
by chatellier@users.labs.libre-entreprise.org 29 Apr '09
29 Apr '09
Author: chatellier
Date: 2009-04-29 13:27:09 +0000 (Wed, 29 Apr 2009)
New Revision: 2152
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
Log:
Desactive l'actualisation des listes (trop de resources)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-04-29 13:06:25 UTC (rev 2151)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-04-29 13:27:09 UTC (rev 2152)
@@ -48,10 +48,11 @@
import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener;
// instances variables déclaration
-SimulationServiceListener simulationListener;
+// FIXME les liste ne sont plus actualisé, ca prend trop de resources
+//SimulationServiceListener simulationListener;
// end constructor code
-simulationListener = new SimulationServiceListener() {
+/*simulationListener = new SimulationServiceListener() {
@Override
public void simulationStart(SimulationService simService, SimulationJob job) {
}
@@ -64,15 +65,15 @@
@Override
public void clearJobDone(SimulationService simService) {
}
-}
+}*/
public ParamsUI(SimulAction action) {
setContextValue(action);
}
public void refresh() {
- SimulationService.getService().removeSimulationServiceListener(simulationListener);
- SimulationService.getService().addSimulationServiceListener(simulationListener);
+ //SimulationService.getService().removeSimulationServiceListener(simulationListener);
+ //SimulationService.getService().addSimulationServiceListener(simulationListener);
if (getContextValue(SimulAction.class).getSimulationStorage() != null) {
fieldSimulParamsName.setText(getContextValue(SimulAction.class).getSimulationStorage().getName());
}
1
0
r2151 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish src/main/java/fr/ifremer/isisfish/actions src/main/java/fr/ifremer/isisfish/datastore src/main/java/fr/ifremer/isisfish/simulator/launcher src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh src/main/resources/templates/ssh src/test/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 29 Apr '09
by chatellier@users.labs.libre-entreprise.org 29 Apr '09
29 Apr '09
Author: chatellier
Date: 2009-04-29 13:06:25 +0000 (Wed, 29 Apr 2009)
New Revision: 2151
Added:
isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-cron.seq
isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-qsub.seq
Removed:
isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq
isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq
Modified:
isis-fish/trunk/pom.xml
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUtils.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java
Log:
New simulation result donwload implementation.
Make zip on server, and import zip on client.
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/pom.xml 2009-04-29 13:06:25 UTC (rev 2151)
@@ -342,18 +342,17 @@
<topia.version>2.1.4</topia.version>
<topia.service.version>1.0.2</topia.service.version>
<lutinmatrix.version>1.3</lutinmatrix.version>
- <lutinutil.version>1.0.4</lutinutil.version>
+ <lutinutil.version>1.0.5-SNAPSHOT</lutinutil.version>
<i18n.version>0.9</i18n.version>
<lutinwidget.version>0.14</lutinwidget.version>
<generator.version>0.64</generator.version>
- <lutinj2r.version>0.3</lutinj2r.version>
+ <lutinj2r.version>0.4-SNAPSHOT</lutinj2r.version>
<jrst.version>0.8.4</jrst.version>
<license-switcher.version>0.6</license-switcher.version>
<openmap.version>4.6.4</openmap.version>
<aspectwerkz.version>2.0</aspectwerkz.version>
<sshtool.version>0.2.2</sshtool.version>
<xmlrpc.version>3.1</xmlrpc.version>
- <javadoc.version>2.5</javadoc.version>
<!-- for compilation test to run -->
<maven.test.forkMode>once</maven.test.forkMode>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -874,9 +874,8 @@
VCS_COMMIT(_(""), VCSAction.class.getName() + "#vcsCommit", "--vcsCommit"),
SIMULATE_WITH_REGION(_(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"),
- SIMULATE_WITH_SIMULATION(_(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"),
- SIMULATE_WITH_SIMULATION_AND_SCRIPT(_(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"),
- ;
+ SIMULATE_REMOTELLY(_(""), SimulationAction.class.getName() + "#simulateRemotelly", "--simulateRemotelly"),
+ SIMULATE_REMOTELLY_WITH_PRESCRIPT(_(""), SimulationAction.class.getName() + "#simulateRemotellyWithPreScript", "--simulateRemotellyWithPreScript");
public String description;
public String action;
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -1,6 +1,5 @@
/* *##%
- * Copyright (C) 2005
- * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -17,18 +16,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*##%*/
-/* *
- * IsisFish.java
- *
- * Created: 1 aout 2005 18:37:25 CEST
- *
- * @author Benjamin POUSSIN <poussin at codelutin.com>
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-
package fr.ifremer.isisfish;
import static org.codelutin.i18n.I18n._;
@@ -88,9 +75,15 @@
/**
* This is the main class of <code>IsisFish</code> application.
+ *
+ * Created: 1 aout 2005 18:37:25 CEST
*
- * @author poussin
+ * @author Benjamin POUSSIN <poussin at codelutin.com>
* @author chemit
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
*/
public class IsisFish { // IsisFish
@@ -135,6 +128,9 @@
// action after init
config.doAction(IsisConfig.STEP_AFTER_INIT);
+ // initVCS ask for passphrase, ui must be set before
+ initLoookAndFeel();
+
// static vcs init (needed for some actions)
try {
initVCS();
@@ -142,9 +138,6 @@
log.warn(_("Error during vcs initialisation"), eee);
}
- // initVCS ask for passphrase, ui must be set before
- initLoookAndFeel();
-
if (log.isInfoEnabled()) {
log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
}
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 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2002-2008 Code Lutin, Benjamin Poussin
+ * Copyright (C) 2002-2009 Code Lutin, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -28,6 +28,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.FileUtil;
+import org.codelutin.util.ApplicationConfig.Action.Step;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
@@ -95,45 +96,62 @@
}
/**
- * Launch a simulation with specified simulationId and simulation zip.
+ * Launch a simulation specialized for remote launch (caparmor).
*
+ * Done operations :
+ * - simulation zip import
+ * - pre script set
+ * - simulation
+ * - zip creation
+ * - checksum creation (zip creation name + .md5 extension)
+ * - delete simulation
+ *
* @param simulationId id de simulation
- * @param simulationZip Zip de la simulation
+ * @param simulationZip zip de la simulation
+ * @param simulationResultZip simulation result zip
* @throws Exception
*/
- public static void simulateWithSimulation(String simulationId, File simulationZip)
- throws Exception {
- // just call with null pre script
- simulateWithSimulationAndScript(simulationId, simulationZip, null);
+ @Step(IsisConfig.STEP_AFTER_INIT_VCS)
+ public static void simulateRemotelly(String simulationId, File simulationZip, File simulationResultZip) throws Exception {
+ simulateRemotellyWithPreScript(simulationId, simulationZip, simulationResultZip, null);
}
-
+
/**
- * Launch a simulation with specified simulationId, simulationZip
- * and simulationPrescript.
+ * Launch a simulation specialized for remote launch (caparmor).
*
+ * Done operations :
+ * - simulation zip import
+ * - pre script set
+ * - simulation
+ * - zip creation
+ * - checksum creation (zip creation name + .md5 extension)
+ * - delete simulation
+ *
* @param simulationId id de simulation
- * @param simulationZip Zip de la simulation
- * @param simulationPrescript simulation prescript
+ * @param simulationZip zip de la simulation
+ * @param simulationPrescript simulation prescript (can be null, empty)
+ * @param simulationResultZip simulation result zip
* @throws Exception
*/
- public static void simulateWithSimulationAndScript(String simulationId, File simulationZip, File simulationPrescript)
+ @Step(IsisConfig.STEP_AFTER_INIT_VCS)
+ public static void simulateRemotellyWithPreScript(String simulationId, File simulationZip, File simulationResultZip, File simulationPrescript)
throws Exception {
-
+
if (log.isInfoEnabled()) {
- log.info("Command line action : simulateWithSimulation (" + simulationId + ", " + simulationZip.getAbsolutePath() + ", " + simulationPrescript + ")");
+ log.info("Command line action : simulateRemotelly (" + simulationId + ", " + simulationZip.getAbsolutePath() + ", " + simulationPrescript + ")");
}
String name = simulationId; // ne pas mettre la date, car le sub process la met deja + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
-
+
SimulationControl control = new SimulationControl(name);
// pour forcer le fichier de control a être sauver
// pour ensuite être lu par le processus parent
control.setAutoSaveState(true);
-
+
// lancement de la simulation
SimulatorLauncher launcher = new InProcessSimulatorLauncher();
-
+
//SimulationStorage simulation = launcher.simulate(null, control, simulationZip);
//simulation.getStorage().closeContext();
String simulationPrescriptContent = null;
@@ -141,9 +159,17 @@
simulationPrescriptContent = FileUtil.readAsString(simulationPrescript);
}
launcher.simulate(null, control, simulationZip, simulationPrescriptContent);
- SimulationStorage simulation = launcher.getSimulationStorage(SimulationService.getService(), control);
- simulation.getStorage().closeContext();
-
+ SimulationStorage simulationStorage = launcher.getSimulationStorage(SimulationService.getService(), control);
+
+ // zip + md5 creation
+ simulationStorage.createZip(simulationResultZip, true);
+
+ // remove simulation
+ simulationStorage.delete(false);
+
+ // close all resources
+ simulationStorage.getStorage().closeContext();
+
// FIXME integrer ca dans le process normal d'init
IsisFish.quit();
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -234,8 +234,6 @@
}
/*
- * (non-Javadoc)
- *
* @see fr.ifremer.isisfish.datastore.VersionStorage#delete(boolean)
*/
@Override
@@ -252,12 +250,12 @@
}
/**
- * copy le DataStorage courante Attention, all script with package name will
- * not be modified you must change package name in each script to reflect
- * new name
+ * Copy le DataStorage courant.
*
- * @param toName
- * le nouveau nom de la region
+ * Attention, all script with package name will not be modified you must
+ * change package name in each script to reflect new name
+ *
+ * @param toName le nouveau nom de la region
* @throws IOException si problème lors de la copie
* @throws TopiaException ???
*/
@@ -342,10 +340,22 @@
* @throws IOException si problème lors de la création du zip
*/
public File createZip(File file) throws IOException {
+ createZip(file, false);
+ return file;
+ }
+
+ /**
+ * Cree un zip. Le zip contient les memes fichiers lorsqu'on utilise le CVS.
+ *
+ * @param file le fichier dans lequel l'export doit se faire
+ * @return l'argument file
+ * @throws IOException si problème lors de la création du zip
+ */
+ public File createZip(File file, boolean createMD5) throws IOException {
prepare();
List<File> files = getFiles(false);
- ZipUtil.compressFiles(file, getDirectory().getParentFile(), files);
+ ZipUtil.compressFiles(file, getDirectory().getParentFile(), files, createMD5);
log.info("Zip DataStorage in " + file);
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 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -202,14 +202,14 @@
}
/**
- * Permet de supprimer une classe
+ * Permet de supprimer un fichier ou répertoire versionné ou non.
*
- * @param cvsDelete si vrai alors la classe sera aussi supprimé sur le
- * cvs si elle existait. Cela prend effet immediatement (un commit est fait)
- * @throws StorageException si pb pendant l'op
+ * @param vcsDelete si vrai alors le fichier sera aussi supprimé sur le
+ * vcs si elle existait. Cela prend effet immediatement (un commit est fait)
+ * @throws StorageException if delete operation fail
*/
- public void delete(boolean cvsDelete) throws StorageException {
- if (cvsDelete) {
+ public void delete(boolean vcsDelete) throws StorageException {
+ if (vcsDelete) {
List<File> files = getFiles(true);
try {
getVCS().delete(files, _("isisfish.versionStorage.removed"));
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -36,7 +36,10 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.codelutin.topia.TopiaException;
import org.codelutin.util.FileUtil;
+import org.codelutin.util.MD5;
+import org.codelutin.util.MD5InputStream;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
@@ -79,8 +82,8 @@
protected Configuration freemarkerConfiguration;
/** Freemarker qsub template. */
- protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-qsub.seq";
- //protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-cron.seq";
+ protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/isis-launch-with-qsub.seq";
+ //protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/isis-launch-with-cron.seq";
/**
* Opened session. Stored in static context to not reask passphrase at each
@@ -230,13 +233,14 @@
String simulationRemotePath = uploadSimulation(sshSession,
simulationZip);
+ String remoteResultZip = getRemoteResultZipPath(control.getId());
+
// build du contenu du script
- message(control,
- _("isisfish.simulation.remote.message.waitingstart"));
+ message(control,_("isisfish.simulation.remote.message.waitingstart"));
String simulationPreScriptPath = uploadPreScriptIfNecessary(
sshSession, control.getId(), simulationPrescript);
- File simulationScript = getSimulationScriptFile(control.getId(),
- simulationRemotePath, simulationPreScriptPath);
+ File simulationScript = getLaunchSimulationScriptFile(control.getId(),
+ simulationRemotePath, remoteResultZip, simulationPreScriptPath);
String scriptRemotePath = uploadSimulationScript(sshSession,
simulationScript);
@@ -262,21 +266,11 @@
SimulationService simulationService, SimulationControl control)
throws RemoteException {
+ // TODO change, now getSimulationStorage()
+ // is common to all launchers
SimulationStorage simulationStorage = null;
-
- try {
- // recuperation des resultats
- message(control,
- _("isisfish.simulation.remote.message.downloadresults"));
-
- downloadResults(sshSession, control.getId());
-
simulationStorage = SimulationStorage
.getSimulation(control.getId());
- } catch (SSHException e) {
- throw new RemoteException(
- _("isisfish.error.simulation.remote.global"), e);
- }
return simulationStorage;
}
@@ -292,6 +286,8 @@
SimulationControl control) throws RemoteException {
try {
+
+ // CONTROL file
try {
// download control file
File controlFile = downloadSimulationFile(control.getId(),
@@ -313,6 +309,7 @@
// deleteTempFile
controlFile.delete();
} catch (SSHException e) {
+
// file doesn't exist
if (log.isDebugEnabled()) {
// not add ,e plz :)
@@ -321,8 +318,61 @@
}
}
+ // can be because, simulation has not begun
+ // or simulation is ended
+ // try do download md5 control file
+
+ // MD5 + SIMULATION zip file
try {
- // download information file
+ File md5ControlFile = downloadMD5ControlFile(control.getId());
+
+ if (md5ControlFile != null) {
+ control.setText(_("isisfish.simulation.remote.message.downloadresults"));
+
+ String md5sum = FileUtil.readAsString(md5ControlFile);
+
+ if (log.isDebugEnabled()) {
+ log.debug("MD5 Control file have been downloaded : " + md5ControlFile.getAbsolutePath());
+ }
+
+ File resultZipFile = downloadZIPResults(sshSession, control.getId(), md5sum);
+
+ if (resultZipFile != null) {
+ SimulationStorage.importZip(resultZipFile);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Simulation imported : " + resultZipFile.getAbsolutePath());
+ }
+
+ // read control from downloaded simulation
+ synchronized (control) {
+ SimulationStorage.readControl(control.getId(), control, "stop");
+ }
+
+ resultZipFile.delete();
+ }
+ else {
+ if (log.isWarnEnabled()) {
+ log.warn("Simulation zip download failed");
+ }
+ }
+
+ // remove temp file
+ md5ControlFile.delete();
+ }
+ }
+ catch(SSHException e) {
+ if (log.isDebugEnabled()) {
+ log.debug(_("Error while downloading file : %s", e.getMessage()));
+ }
+ } catch (TopiaException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't import result zip file", e);
+ }
+ }
+
+ // INFORMATION file
+ try {
File infoFile = downloadSimulationFile(control.getId(),
SimulationStorage.INFORMATION_FILENAME);
if (log.isDebugEnabled()) {
@@ -572,46 +622,41 @@
}
/**
- * Download simulation results.
+ * Download simulation zip results.
*
- * Simulation result is save in {@link SimulationStorage#SIMULATION_PATH}.
- *
- * @throws SSHException
- * if download fail (can happen if remote file doesn't exist
+ * @throws SSHException if download fail (can happen if remote file doesn't exist
+ * @throws IOException if download fail (can happen if remote file doesn't exist
*/
- protected void downloadResults(Session session, String simulationId)
- throws SSHException {
+ protected File downloadZIPResults(Session session, String simulationId, String md5sum)
+ throws SSHException, IOException {
- // simulation directory
- File localFile = new File(IsisFish.config.getDatabaseDirectory(),
- SimulationStorage.SIMULATION_PATH);
+ File localFile = File.createTempFile("simulation-results", ".zip");
if (log.isDebugEnabled()) {
log.debug("Downloading results in " + localFile.getAbsolutePath());
}
- // Cant happen if result have already been downloded
- // Or try to, but has been interrupted
- // delete and download again
- File simulationBaseDirectory = new File(localFile, simulationId);
- if (simulationBaseDirectory.exists()) {
- if (log.isWarnEnabled()) {
- log.warn("Warning, simulation results "
- + simulationBaseDirectory.getAbsolutePath()
- + " already exists");
- log.warn("Delete it, and download again");
- }
-
- FileUtil.deleteRecursively(simulationBaseDirectory);
- }
-
// build remote file path
// FIXME this path should be given by remote IsisFish app
- String remoteFile = IsisFish.config.getSimulatorSshDataPath();
- remoteFile += "/" + SimulationStorage.SIMULATION_PATH;
- remoteFile += "/" + simulationId;
+ String remoteFile = getRemoteResultZipPath(simulationId);
SSHUtils.scpFrom(session, remoteFile, localFile);
+
+ if (!StringUtils.isEmpty(md5sum)) {
+ MD5InputStream in = new MD5InputStream(new FileInputStream(localFile));
+ while(in.read() != -1) {}
+ in.close();
+ String localMd5 = MD5.asHex(in.hash());
+ if (!localMd5.equals(md5sum)) {
+ if (log.isWarnEnabled()) {
+ log.warn("Warning md5 checksum failed (got " + localMd5 + ", expected : " + md5sum + ")");
+ }
+ localFile.delete();
+ localFile = null;
+ }
+ }
+
+ return localFile;
}
/**
@@ -648,7 +693,36 @@
return localFile;
}
+
+ /**
+ * Download remote simulation md5 control file and store its content into temp
+ * file.
+ *
+ * @param simulationId id de la simulation
+ * @return downloaded temp file (file have to be manually deleted)
+ * @throws IOException
+ * @throws SSHException if remote file doesn't exists
+ */
+ protected File downloadMD5ControlFile(String simulationId)
+ throws IOException, SSHException {
+ File localFile = null;
+
+ // build remote file path
+ String remoteFile = getRemoteResultZipPath(simulationId) + ".md5";
+
+ // local tmp file
+ localFile = File.createTempFile(simulationId, ".md5");
+
+ try {
+ SSHUtils.scpFrom(getSSHSession(), remoteFile, localFile);
+ } catch (JSchException e) {
+ throw new SSHException("Can't download file", e);
+ }
+
+ return localFile;
+ }
+
/**
* Upload script on remote server.
*
@@ -685,11 +759,37 @@
}
/**
+ * Get remote simulation zip path.
+ *
+ * Return path if uploaded or null if no upload needed.
+ *
+ * @param simulationId simulation id
+ *
+ * @throws SSHException if upload fail
+ * @throws IOException if upload fail
+ */
+ protected String getRemoteResultZipPath(String simulationId)
+ throws SSHException, IOException {
+
+ String remotePath = IsisFish.config.getSimulatorSshTmpPath();
+
+ // upload directory in that dir
+ if (!remotePath.endsWith("/")) {
+ remotePath += "/";
+ }
+
+ remotePath += "simulation-" + simulationId + "-result.zip";
+
+ return remotePath;
+ }
+
+ /**
* Upload pre script on remote server.
*
* Return path if uploaded or null if no upload needed.
*
* @param session valid opened ssh session
+ * @param simulationId simulation id
* @param simulationPreScript script content
*
* @throws SSHException if upload fail
@@ -745,14 +845,14 @@
*
* @throws IOException if can't build script
*/
- protected File getSimulationScriptFile(String simuationId,
- String simulationZip, String preScriptPath) throws IOException {
+ protected File getLaunchSimulationScriptFile(String simuationId,
+ String simulationZip, String simulationResultZip, String preScriptPath) throws IOException {
- File tempScript = File.createTempFile("launch-isis", ".seq");
+ File tempScript = File.createTempFile("isis-launch-", ".seq");
tempScript.deleteOnExit(); // auto delete
String fileContent = getSimulationScriptLaunchContent(
- QSUB_SCRIPT_TEMPLATE, simuationId, simulationZip, preScriptPath);
+ QSUB_SCRIPT_TEMPLATE, simuationId, simulationZip, simulationResultZip, preScriptPath);
FileUtil.writeString(tempScript, fileContent);
return tempScript;
@@ -766,12 +866,13 @@
* @param templateName url du template
* @param simuationId id de la simulation
* @param simulationZip zip de la simulation
+ * @param simulationZipResult zip resultat de la simulation
* @param preScriptPath simulation pre script path (can be null)
*
* @throws IOException if can't get script content
*/
protected String getSimulationScriptLaunchContent(String templateName,
- String simuationId, String simulationZip, String preScriptPath)
+ String simuationId, String simulationZip, String simulationZipResult, String preScriptPath)
throws IOException {
String scriptContent = null;
@@ -792,6 +893,7 @@
root.put("isishome", IsisFish.config.getSimulatorSshIsisHome());
root.put("simulationid", simuationId);
root.put("simulationzip", simulationZip);
+ root.put("simulationresultzip", simulationZipResult);
root.put("simulationprescript", localPreScript);
// process template
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -375,9 +375,17 @@
// if not finished, re-add it at end
if (jobIsFinished) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Job " + job.getId() + " finished");
+ }
+
doPostSimulationOperation(job, launcher);
- } else {
-
+ }
+
+ // Si le job est reelement fini
+ // et que les post operation ont réussie
+ else {
// next check date
long nextJobTimeMs = date.getTime()
+ launcher.getCheckProgressionInterval() * 1000;
@@ -425,8 +433,10 @@
// 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()) || control.isStopSimulationRequest()) {
+ && control.getProgress() >= control.getProgressMax() && SimulationStorage.exists(control.getId())) || control.isStopSimulationRequest()) {
simulationEnded = true;
}
} catch (RemoteException e) {
@@ -446,10 +456,14 @@
*
* @param job job
* @param launcher {@link SimulatorLauncher} that manage simulation
+ *
+ * @return true if post operation complete and job has be removed from queue
*/
- protected void doPostSimulationOperation(SimulationJob job,
+ protected boolean doPostSimulationOperation(SimulationJob job,
SimulatorLauncher launcher) {
+ boolean result = false;
+
SimulationService service = SimulationService.getService();
SimulationControl control = job.getItem().getControl();
@@ -475,23 +489,29 @@
boolean simulationAvailble = exportResult(job, simulation);
// sensitivity calculator analyze result call
- // can't do analyze seond pass if simulation
+ // can't do analyze second pass if simulation
// has been deleted
if (simulationAvailble) {
analyzeSensitivityResult(job, simulation);
}
}
+
+ // notify simulation ended
+ // to not check later...
+ // don't do in finally, getSimulationStorage may fail (md5 on ssh)
+ simulationStop(job);
+ service.fireStopEvent(job);
+
+ result = true;
+
} catch (RemoteException e) {
if (log.isErrorEnabled()) {
log.error("Can't get simulation results after simulation end",
e);
}
- } finally {
- // notify simulation ended
- // to not check later...
- simulationStop(job);
- service.fireStopEvent(job);
}
+
+ return result;
}
/**
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUtils.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUtils.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUtils.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -29,8 +29,10 @@
import java.io.InputStreamReader;
import java.io.OutputStream;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.MD5InputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
@@ -121,13 +123,13 @@
}
/**
- * Download a local file from remote server.
+ * Download a local file from remote server and check md5sum.
*
* @param session opened valid jsch session
* @param remoteFileName remote file name to download
* @param localFile local file name to download into
*
- * @throws SSHException
+ * @throws SSHException if transfer fail (include md5 control failed)
*/
public static void scpFrom(Session session, String remoteFileName,
File localFile) throws SSHException {
Copied: isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-cron.seq (from rev 2143, isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq)
===================================================================
--- isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-cron.seq (rev 0)
+++ isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-cron.seq 2009-04-29 13:06:25 UTC (rev 2151)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+cd "${isishome}"
+
+<#if simulationprescript?length > 0>
+java -jar isis-fish*.jar --option launch.ui false --simulateRemotellyWithPreScript "${simulationid}" "${simulationzip}" "${simulationresultzip}" "${simulationprescript}"
+<#else>
+java -jar isis-fish*.jar --option launch.ui false --simulateRemotelly "${simulationid}" "${simulationzip}" "${simulationresultzip}"
+</#if>
\ No newline at end of file
Copied: isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-qsub.seq (from rev 2143, isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq)
===================================================================
--- isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-qsub.seq (rev 0)
+++ isis-fish/trunk/src/main/resources/templates/ssh/isis-launch-with-qsub.seq 2009-04-29 13:06:25 UTC (rev 2151)
@@ -0,0 +1,13 @@
+#!/bin/csh
+
+#PBS -l mem=1000mb
+
+cd "${isishome}"
+source /usr/share/modules/init/csh
+module load java/1.6.0
+
+<#if simulationprescript?length > 0>
+java -jar isis-fish*.jar --option launch.ui false --simulateRemotellyWithPreScript "${simulationid}" "${simulationzip}" "${simulationresultzip}" "${simulationprescript}"
+<#else>
+java -jar isis-fish*.jar --option launch.ui false --simulateRemotelly "${simulationid}" "${simulationzip}" "${simulationresultzip}"
+</#if>
\ No newline at end of file
Deleted: isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq
===================================================================
--- isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq 2009-04-29 13:06:25 UTC (rev 2151)
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-cd "${isishome}"
-
-<#if simulationprescript?length > 0>
-java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulationAndScript "${simulationid}" "${simulationzip}" "${simulationprescript}"
-<#else>
-java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulation "${simulationid}" "${simulationzip}"
-</#if>
\ No newline at end of file
Deleted: isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq
===================================================================
--- isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq 2009-04-29 13:06:25 UTC (rev 2151)
@@ -1,13 +0,0 @@
-#!/bin/csh
-
-#PBS -l mem=1000mb
-
-cd "${isishome}"
-source /usr/share/modules/init/csh
-module load java/1.6.0
-
-<#if simulationprescript?length > 0>
-java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulationAndScript "${simulationid}" "${simulationzip}" "${simulationprescript}"
-<#else>
-java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulation "${simulationid}" "${simulationzip}"
-</#if>
\ No newline at end of file
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java 2009-04-28 15:17:38 UTC (rev 2150)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java 2009-04-29 13:06:25 UTC (rev 2151)
@@ -61,13 +61,14 @@
final String SIMULATIONID = "testid";
final String SIMULATIONZIP = "test.zip";
+ final String SIMULATIONRESULTZIP = "/tmp/test-result.zip";
final String SIMULATIONPRESCRIPT = "prescript-1234567890.txt";
final String ISISHOME = IsisFish.config.getSimulatorSshIsisHome();
SSHSimulatorLauncher launcher = new SSHSimulatorLauncher();
String content = launcher.getSimulationScriptLaunchContent(
SSHSimulatorLauncher.QSUB_SCRIPT_TEMPLATE, SIMULATIONID,
- SIMULATIONZIP, SIMULATIONPRESCRIPT);
+ SIMULATIONZIP, SIMULATIONRESULTZIP, SIMULATIONPRESCRIPT);
// simulation parameters
Assert.assertTrue("String \"" + SIMULATIONID
@@ -76,12 +77,15 @@
Assert.assertTrue("String \"" + SIMULATIONZIP
+ "\" not found in template",
content.indexOf(SIMULATIONZIP) > 0);
+ Assert.assertTrue("String \"" + SIMULATIONRESULTZIP
+ + "\" not found in template",
+ content.indexOf(SIMULATIONRESULTZIP) > 0);
Assert.assertTrue("String \"" + SIMULATIONPRESCRIPT
+ "\" not found in template", content
.indexOf(SIMULATIONPRESCRIPT) > 0);
Assert.assertTrue(
- "Action --simulateWithSimulationAndScript not on script",
- content.indexOf(" --simulateWithSimulationAndScript ") > 0);
+ "Action --simulateRemotellyWithPreScript not on script",
+ content.indexOf(" --simulateRemotellyWithPreScript ") > 0);
// isis location
Assert.assertTrue("String \"" + ISISHOME + "\" not found in template",
@@ -105,13 +109,14 @@
final String SIMULATIONID = "testid";
final String SIMULATIONZIP = "test.zip";
+ final String SIMULATIONRESULTZIP = "/tmp/test-result.zip";
final String SIMULATIONPRESCRIPT = null;
final String ISISHOME = IsisFish.config.getSimulatorSshIsisHome();
SSHSimulatorLauncher launcher = new SSHSimulatorLauncher();
String content = launcher.getSimulationScriptLaunchContent(
SSHSimulatorLauncher.QSUB_SCRIPT_TEMPLATE, SIMULATIONID,
- SIMULATIONZIP, SIMULATIONPRESCRIPT);
+ SIMULATIONZIP, SIMULATIONRESULTZIP, SIMULATIONPRESCRIPT);
// simulation parameters
Assert.assertTrue("String \"" + SIMULATIONID
@@ -120,14 +125,17 @@
Assert.assertTrue("String \"" + SIMULATIONZIP
+ "\" not found in template",
content.indexOf(SIMULATIONZIP) > 0);
- Assert.assertTrue("Action --simulateWithSimulation not on script",
- content.indexOf(" --simulateWithSimulation ") > 0);
+ Assert.assertTrue("String \"" + SIMULATIONRESULTZIP
+ + "\" not found in template",
+ content.indexOf(SIMULATIONRESULTZIP) > 0);
+ Assert.assertTrue("Action --simulateRemotelly not on script",
+ content.indexOf(" --simulateRemotelly ") > 0);
// isis location
Assert.assertTrue("String \"" + ISISHOME + "\" not found in template",
content.indexOf(ISISHOME) > 0);
}
-
+
/**
* Pour tester, un autre script est present, mais
* celui ci ne doit jamais être utilisé hors des tests.
@@ -140,7 +148,7 @@
SSHSimulatorLauncher launcher = new SSHSimulatorLauncher();
String content = launcher.getSimulationScriptLaunchContent(
SSHSimulatorLauncher.QSUB_SCRIPT_TEMPLATE, "",
- "", "");
+ "", "", "");
// simulation parameters
Assert.assertTrue("Invalid qsub script is used", content
1
0
r2150 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: . actions
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
28 Apr '09
Author: chatellier
Date: 2009-04-28 15:17:38 +0000 (Tue, 28 Apr 2009)
New Revision: 2150
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java
Log:
Refactoring des @Step sur les actions.
(ca marche pas avec les enum)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-04-28 10:26:19 UTC (rev 2149)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-04-28 15:17:38 UTC (rev 2150)
@@ -68,6 +68,42 @@
private static Log log = LogFactory.getLog(IsisConfig.class);
/**
+ * Config step after init.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_AFTER_INIT = 0;
+
+ /**
+ * Config step after init vcs.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_AFTER_INIT_VCS = 1;
+
+ /**
+ * Config step after ui.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_AFTER_UI = 2;
+
+ /**
+ * Config step before exit.
+ *
+ * Refactored, can't be in enum
+ *
+ * @see org.codelutin.util.ApplicationConfig.Action.Step
+ */
+ public static final int STEP_BEFORE_EXIT = 3;
+
+ /**
* La version du logiciel constitue de l.d.a.r
* <li>l: le numero de version du logiciel
* <li>d: le numero de version du schema de la base de donnees
@@ -798,10 +834,6 @@
//////////////////////////////////////////////////
// Toutes les actions disponibles
//////////////////////////////////////////////////
-
- static public enum Step {
- AfterInit, AfterInitVCS, AfterUI, BeforeExit
- }
public static enum Action {
HELP(_("Show help"), OtherAction.class.getName() + "#help", "-h", "--help"),
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2009-04-28 10:26:19 UTC (rev 2149)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2009-04-28 15:17:38 UTC (rev 2150)
@@ -128,29 +128,34 @@
// initialisation de l'application
IsisFish.init(args);
- log.debug(_("isisfish.launch.init.done", config.getElapsedTimeAsString()));
-
+ if (log.isDebugEnabled()) {
+ log.debug(_("isisfish.launch.init.done", config.getElapsedTimeAsString()));
+ }
+
// action after init
- config.doAction(IsisConfig.Step.AfterInit.ordinal());
+ config.doAction(IsisConfig.STEP_AFTER_INIT);
- // initVCS ask for passphrase, ui must be set before
- initLoookAndFeel();
-
+ // static vcs init (needed for some actions)
try {
initVCS();
} catch (Exception eee) {
log.warn(_("Error during vcs initialisation"), eee);
}
- log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
+ // initVCS ask for passphrase, ui must be set before
+ initLoookAndFeel();
+ if (log.isInfoEnabled()) {
+ log.info(_("isisfish.launching", config.getElapsedTimeAsString()));
+ }
+
// after init vcs and local data
- config.doAction(IsisConfig.Step.AfterInitVCS.ordinal());
-
+ config.doAction(IsisConfig.STEP_AFTER_INIT_VCS);
+
launchUI();
// action after ui launched
- config.doAction(IsisConfig.Step.AfterUI.ordinal());
+ config.doAction(IsisConfig.STEP_AFTER_UI);
} catch (Exception e) {
e.printStackTrace();
quit();
@@ -176,7 +181,7 @@
@Override
public void run() {
try {
- config.doAction(IsisConfig.Step.BeforeExit.ordinal());
+ config.doAction(IsisConfig.STEP_BEFORE_EXIT);
} catch (Exception eee) {
log.info("Error in quit daemon", eee);
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java 2009-04-28 10:26:19 UTC (rev 2149)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java 2009-04-28 15:17:38 UTC (rev 2150)
@@ -19,6 +19,19 @@
package fr.ifremer.isisfish.actions;
+import static org.codelutin.i18n.I18n._;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.FileUtil;
+import org.codelutin.util.ApplicationConfig.Action.Step;
+
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.AnalysePlanStorage;
import fr.ifremer.isisfish.datastore.DataStorage;
@@ -29,24 +42,15 @@
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Pattern;
-import static org.codelutin.i18n.I18n._;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.util.FileUtil;
-
/**
- *
+ * Export actions.
+ *
* @author poussin
- * @version $Revision: 1862 $
+ * @version $Revision$
*
- * Last update: $Date: 2009-02-23 16:42:34 +0100 (lun. 23 févr. 2009) $
- * by : $Author: chatellier $
+ * Last update: $Date$
+ * by : $Author$
*/
public class ExportAction {
@@ -59,7 +63,7 @@
this.config = config;
}
- public void applyFilter(String filter, List<String> names) {
+ protected void applyFilter(String filter, List<String> names) {
if (filter != null && !"*".equals(filter)) {
Pattern p = Pattern.compile(filter);
// apply filter on names found
@@ -72,7 +76,7 @@
}
}
- public void display(String filter, List<String> names) {
+ protected void display(String filter, List<String> names) {
StringBuilder sb = new StringBuilder();
sb.append(" found ").append(names.size());
sb.append(" with filter ").append(filter);
@@ -156,8 +160,9 @@
}
}
+ @Step(IsisConfig.STEP_AFTER_INIT_VCS)
public void exportSimulation(File file, String name, boolean force) throws Exception {
- log.info("file:" + file + ", name:" + name);
+ log.info("exportSimulation in file " + file + " ( " + name + ", force = " + force + ")");
if (!force && file.exists()) {
throw new IllegalArgumentException(_("destination already exists %s use 'force' argument to force overwrite", file));
}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java
___________________________________________________________________
Name: svn:keywords
+ Date Author Revision
1
0
r2149 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
28 Apr '09
Author: chatellier
Date: 2009-04-28 10:26:19 +0000 (Tue, 28 Apr 2009)
New Revision: 2149
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
Log:
Lit le design plan en uft-8 (meme si c'est par defaut comme ca)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-04-28 10:25:11 UTC (rev 2148)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-04-28 10:26:19 UTC (rev 2149)
@@ -91,6 +91,7 @@
// don't use reader.read(String);
// don't work on windows beacause of : in path
// Document doc = reader.read(xmlFile);
+ reader.setEncoding("utf-8");
Document doc = reader.read(xmlFile);
Element root = doc.getRootElement();
designPlan = DomXMLParser.parseDesignPlan(root);
1
0
r2148 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
28 Apr '09
Author: chatellier
Date: 2009-04-28 10:25:11 +0000 (Tue, 28 Apr 2009)
New Revision: 2148
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
Log:
Sauvegarde le designplan en utf-8
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-04-28 09:18:49 UTC (rev 2147)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-04-28 10:25:11 UTC (rev 2148)
@@ -925,7 +925,7 @@
// Sauvegarde du design plan en XML
if (!StringUtils.isEmpty(xmlDesignPlan)) {
File simulationDesignPlanFile = SimulationStorage.getMexicoDesignPlan(tmpDirectory);
- FileUtil.writeString(simulationDesignPlanFile, xmlDesignPlan);
+ FileUtil.writeString(simulationDesignPlanFile, xmlDesignPlan, "utf-8");
}
FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(),
1
0
r2147 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/mexico main/java/fr/ifremer/isisfish/ui/simulator test/java/fr/ifremer/isisfish/mexico
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
by chatellier@users.labs.libre-entreprise.org 28 Apr '09
28 Apr '09
Author: chatellier
Date: 2009-04-28 09:18:49 +0000 (Tue, 28 Apr 2009)
New Revision: 2147
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
Log:
Utilise un FIle pour le parser xml.
Pour lui un path string qui comporte un :, c'est pas pareil
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-04-24 16:06:42 UTC (rev 2146)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-04-28 09:18:49 UTC (rev 2147)
@@ -18,6 +18,7 @@
package fr.ifremer.isisfish.mexico;
+import java.io.File;
import java.io.IOException;
import org.dom4j.Document;
@@ -82,11 +83,14 @@
* @return DesignPlan
* @throws IOException
*/
- public static DesignPlan getDesignPlanFromXML(String xmlFile)
+ public static DesignPlan getDesignPlanFromXML(File xmlFile)
throws IOException {
DesignPlan designPlan = null;
try {
SAXReader reader = new SAXReader();
+ // don't use reader.read(String);
+ // don't work on windows beacause of : in path
+ // Document doc = reader.read(xmlFile);
Document doc = reader.read(xmlFile);
Element root = doc.getRootElement();
designPlan = DomXMLParser.parseDesignPlan(root);
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 2009-04-24 16:06:42 UTC (rev 2146)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-04-28 09:18:49 UTC (rev 2147)
@@ -308,10 +308,10 @@
// Chargement des facteurs
File f = simulStorage.getMexicoDesignPlan(SimulationStorage.getSimulationDirectory(simulName));
if (f != null && f.canRead()) {
- if (log.isDebugEnabled()) {
- log.debug("Import design plan from : " + f.getPath());
+ if (log.isInfoEnabled()) {
+ log.info("Import design plan from : " + f.getAbsolutePath());
}
- designPlan = MexicoHelper.getDesignPlanFromXML(f.getPath());
+ designPlan = MexicoHelper.getDesignPlanFromXML(f);
factors.clear();
for (Factor factor : designPlan.getFactors()) {
if (log.isDebugEnabled()) {
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2009-04-24 16:06:42 UTC (rev 2146)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2009-04-28 09:18:49 UTC (rev 2147)
@@ -162,10 +162,10 @@
*/
@Test
public void testGetDesignPlanFromXML() throws IOException {
+
+ File testFile = new File("src/test/resources/mexico/mexicohelper_designplan.xml");
+ DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile);
- DesignPlan plan = MexicoHelper
- .getDesignPlanFromXML("src/test/resources/mexico/mexicohelper_designplan.xml");
-
Assert.assertEquals(5, plan.getFactors().size());
String xml = MexicoHelper.getDesignPlanAsXML(plan);
@@ -187,7 +187,8 @@
log.debug("xml 1 = " + xml1);
// export
- DesignPlan plan = MexicoHelper.getDesignPlanFromXML("src/test/resources/mexico/mexicohelper_designplan.xml");
+ File testFile = new File("src/test/resources/mexico/mexicohelper_designplan.xml");
+ DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile);
String xml2 = MexicoHelper.getDesignPlanAsXML(plan);
log.debug("xml 2 = " + xml2);
1
0
r2146 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
24 Apr '09
Author: chatellier
Date: 2009-04-24 16:06:42 +0000 (Fri, 24 Apr 2009)
New Revision: 2146
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
Log:
Fix jaxx compilation
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-04-24 16:06:42 UTC (rev 2146)
@@ -109,7 +109,7 @@
Object o = node.getUserObject();
if (Factor.class.isInstance(o)) {
Factor f = (Factor)o;
- FactorWizard wizard = new FactorWizard(this);
+ FactorWizardUI wizard = new FactorWizardUI(this);
JComponent c = getSimulAction().getFactorComponent(f);
if (c != null) {
wizard.initExisting(c, f);
1
0
r2145 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/ui/input src/main/java/fr/ifremer/isisfish/ui/sensitivity
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
24 Apr '09
Author: chatellier
Date: 2009-04-24 15:57:15 +0000 (Fri, 24 Apr 2009)
New Revision: 2145
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainer.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanel.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanel.jaxx
Modified:
isis-fish/trunk/pom.xml
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx
Log:
Refactoring (pour faire du code propre).
Les UI, ont leur nom suffix?\195?\169es par 'UI'.
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/pom.xml 2009-04-24 15:57:15 UTC (rev 2145)
@@ -451,9 +451,9 @@
<entry>
<basedir>${maven.gen.dir}/java/</basedir>
<specificGoal>parserJava</specificGoal>
- <!-- <includes>
+ <includes>
<param>**\/**UI.java</param>
- </includes> -->
+ </includes>
</entry>
</entries>
</configuration>
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 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -42,7 +42,7 @@
import java.lang.reflect.Method;
import org.apache.commons.beanutils.MethodUtils;
import fr.ifremer.isisfish.ui.util.UtilsUI;
-import fr.ifremer.isisfish.ui.sensitivity.FactorWizard;
+import fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI;
import fr.ifremer.isisfish.ui.sensitivity.EditorHelper;
import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
import jaxx.runtime.JAXXInitialContext;
@@ -112,7 +112,7 @@
bean = getVerifier().getEntity(classBean, beanID);
}
if (bean != null){
- FactorWizard wizard = new FactorWizard(this);
+ FactorWizardUI wizard = new FactorWizardUI(this);
wizard.initNew(source, bean, EditorHelper.canBeContinue(source, bean));
wizard.pack();
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainer.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainer.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainer.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -1,41 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005
- * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * IsisFish.java
- *
- * Created: 1 aout 2005 18:37:25 CEST
- *
- * @author Benjamin POUSSIN <poussin at codelutin.com>
- * @version $Revision: 1312 $
- *
- * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
- * by : $Author: sletellier $
- */
- -->
-<JPanel id='continuousPanelContainer' layout='{new BorderLayout()}'>
-
- <Boolean id='continuePossible' javaBean='true'/>
-
- <Boolean id='continueSelected' javaBean='false'/>
-
- <JPanel id='content' constraints='BorderLayout.CENTER'/>
-
-</JPanel>
\ No newline at end of file
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx (from rev 2134, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainer.jaxx)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/ContinuousPanelContainerUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -0,0 +1,28 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+ -->
+<JPanel id='continuousPanelContainer' layout='{new BorderLayout()}'>
+
+ <Boolean id='continuePossible' javaBean='true'/>
+
+ <Boolean id='continueSelected' javaBean='false'/>
+
+ <JPanel id='content' constraints='BorderLayout.CENTER'/>
+
+</JPanel>
\ No newline at end of file
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanel.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanel.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanel.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -1,94 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005
- * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * IsisFish.java
- *
- * Created: 1 aout 2005 18:37:25 CEST
- *
- * @author Benjamin POUSSIN <poussin at codelutin.com>
- * @version $Revision: 1312 $
- *
- * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
- * by : $Author: sletellier $
- */
- -->
-<ContinuousPanelContainer>
- <script><![CDATA[
-
-protected JTextField continueMax = null;
-protected JTextField continueMin = null;
-
-addPropertyChangeListener("continuePossible", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- continueMax.setVisible((Boolean)evt.getNewValue());
- continueMin.setVisible((Boolean)evt.getNewValue());
- }
-
-});
-
-addPropertyChangeListener("continueSelected", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- continueMax.setEnabled((Boolean)evt.getNewValue());
- continueMin.setEnabled((Boolean)evt.getNewValue());
- }
-
-});
-
-public void init(JTextField cMin, JTextField cMax){
- continueMax = cMax;
- continueMin = cMin;
- continueMax.setEnabled(isContinueSelected());
- continueMin.setEnabled(isContinueSelected());
- continueMax.setVisible(isContinuePossible());
- continueMin.setVisible(isContinuePossible());
-
- continueMaxPanel.add(continueMax, BorderLayout.CENTER);
- continueMinPanel.add(continueMin, BorderLayout.CENTER);
-}
-public String getMin(){
- return continueMin.getText();
-}
-public String getMax(){
- return continueMax.getText();
-}
- ]]>
- </script>
- <Table id='content' constraints='BorderLayout.CENTER'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.factor.firstValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JPanel id='continueMinPanel' layout='{new BorderLayout()}'/>
- </cell>
- <cell fill='horizontal'>
- <JLabel text='isisfish.factor.lastValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JPanel id='continueMaxPanel' layout='{new BorderLayout()}'/>
- </cell>
- </row>
- </Table>
-</ContinuousPanelContainer>
\ No newline at end of file
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx (from rev 2134, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanel.jaxx)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -0,0 +1,81 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+ -->
+<ContinuousPanelContainerUI>
+ <script><![CDATA[
+
+protected JTextField continueMax = null;
+protected JTextField continueMin = null;
+
+addPropertyChangeListener("continuePossible", new PropertyChangeListener(){
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ continueMax.setVisible((Boolean)evt.getNewValue());
+ continueMin.setVisible((Boolean)evt.getNewValue());
+ }
+
+});
+
+addPropertyChangeListener("continueSelected", new PropertyChangeListener(){
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ continueMax.setEnabled((Boolean)evt.getNewValue());
+ continueMin.setEnabled((Boolean)evt.getNewValue());
+ }
+
+});
+
+public void init(JTextField cMin, JTextField cMax){
+ continueMax = cMax;
+ continueMin = cMin;
+ continueMax.setEnabled(isContinueSelected());
+ continueMin.setEnabled(isContinueSelected());
+ continueMax.setVisible(isContinuePossible());
+ continueMin.setVisible(isContinuePossible());
+
+ continueMaxPanel.add(continueMax, BorderLayout.CENTER);
+ continueMinPanel.add(continueMin, BorderLayout.CENTER);
+}
+public String getMin(){
+ return continueMin.getText();
+}
+public String getMax(){
+ return continueMax.getText();
+}
+ ]]>
+ </script>
+ <Table id='content' constraints='BorderLayout.CENTER'>
+ <row>
+ <cell fill='horizontal'>
+ <JLabel text='isisfish.factor.firstValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JPanel id='continueMinPanel' layout='{new BorderLayout()}'/>
+ </cell>
+ <cell fill='horizontal'>
+ <JLabel text='isisfish.factor.lastValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JPanel id='continueMaxPanel' layout='{new BorderLayout()}'/>
+ </cell>
+ </row>
+ </Table>
+</ContinuousPanelContainerUI>
\ No newline at end of file
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 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-04-24 15:57:15 UTC (rev 2145)
@@ -199,14 +199,14 @@
}
return result;
}
- public static ContinuousPanelContainer getContinuousPanel(JComponent c, TopiaEntity e){
- ContinuousPanelContainer result = null;
+ public static ContinuousPanelContainerUI getContinuousPanel(JComponent c, TopiaEntity e){
+ ContinuousPanelContainerUI result = null;
try {
String fieldName = getMethod(c);
- DefaultContinuousPanel continuousPanel = null;
+ DefaultContinuousPanelUI continuousPanel = null;
if (c instanceof InputOneEquationUI){
InputOneEquationUI origine = (InputOneEquationUI) c;
- EquationContinuousPanel ui = new EquationContinuousPanel(new JAXXInitialContext().add(new InputAction()));
+ EquationContinuousPanelUI ui = new EquationContinuousPanelUI(new JAXXInitialContext().add(new InputAction()));
ui.setSelectedEquation(origine.getSelectedEquation());
ui.setLblText(origine.getLblText());
ui.setNameEquation(origine.getNameEquation());
@@ -216,14 +216,14 @@
ui.setBean(e);
result = ui;
} else if (c instanceof MatrixEditor){
- MatrixContinuousPanel matrixPanel = new MatrixContinuousPanel();
+ MatrixContinuousPanelUI matrixPanel = new MatrixContinuousPanelUI();
MatrixND m = (MatrixND)callMethod(e, fieldName);
if (m != null){
matrixPanel.setMatrix(m.clone());
}
result = matrixPanel;
} else {
- continuousPanel = new DefaultContinuousPanel();
+ continuousPanel = new DefaultContinuousPanelUI();
result = continuousPanel;
}
if (continuousPanel != null){
@@ -242,13 +242,13 @@
}
return new JTextField();
}
- public static ContinuousPanelContainer getContinuousPanelWithValue(JComponent c, ContinuousDomain domain, Factor f) {
- ContinuousPanelContainer result = null;
+ public static ContinuousPanelContainerUI getContinuousPanelWithValue(JComponent c, ContinuousDomain domain, Factor f) {
+ ContinuousPanelContainerUI result = null;
try {
- DefaultContinuousPanel continuousPanel = null;
+ DefaultContinuousPanelUI continuousPanel = null;
if (c instanceof InputOneEquationUI){
InputOneEquationUI origine = (InputOneEquationUI) c;
- EquationContinuousPanel ui = new EquationContinuousPanel(new JAXXInitialContext().add(new InputAction()));
+ EquationContinuousPanelUI ui = new EquationContinuousPanelUI(new JAXXInitialContext().add(new InputAction()));
ui.setLblText(origine.getLblText());
ui.setNameEquation(origine.getNameEquation());
ui.getEditor().getEditor().setText((String)f.getValue());
@@ -263,7 +263,7 @@
result = ui;
} else if (c instanceof MatrixEditor){
- MatrixContinuousPanel panel = new MatrixContinuousPanel();
+ MatrixContinuousPanelUI panel = new MatrixContinuousPanelUI();
MatrixContinuousDomain matrixDomain = (MatrixContinuousDomain)domain;
MatrixND m = matrixDomain.getMatrix();
if (m != null){
@@ -273,7 +273,7 @@
panel.getCoef().setText("" + matrixDomain.getCoefficient());
result = panel;
} else {
- continuousPanel = new DefaultContinuousPanel();
+ continuousPanel = new DefaultContinuousPanelUI();
result = continuousPanel;
}
if (continuousPanel != null){
@@ -537,8 +537,8 @@
}
// RangeOfValue
- public static ContinuousPanelContainer getContinuousRangeOfValuePanel(JComponent cOrigine, TopiaEntity bean){
- DefaultContinuousPanel continuousPanel = new DefaultContinuousPanel();
+ public static ContinuousPanelContainerUI getContinuousRangeOfValuePanel(JComponent cOrigine, TopiaEntity bean){
+ DefaultContinuousPanelUI continuousPanel = new DefaultContinuousPanelUI();
RangeOfValuesUI ui = (RangeOfValuesUI)cOrigine;
String value = ui.getFieldGearParamPossibleValue().getText();
String min = "0";
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -1,267 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005
- * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * IsisFish.java
- *
- * Created: 1 aout 2005 18:37:25 CEST
- *
- * @author Benjamin POUSSIN <poussin at codelutin.com>
- * @version $Revision: 1312 $
- *
- * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
- * by : $Author: sletellier $
- */
- -->
-<ContinuousPanelContainer>
-
- <!-- bean property -->
- <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
- <String id='lblText' javaBean='null'/>
- <org.codelutin.topia.persistence.TopiaEntity id='bean' javaBean='null'/>
- <Class id='clazz' javaBean='null'/>
- <String id='methodGet' javaBean='null'/>
- <String id='methodSet' javaBean='null'/>
- <String id='nameEquation' javaBean='null'/>
- <fr.ifremer.isisfish.entities.Equation id='selectedEquation' javaBean='null'/>
-
- <script><![CDATA[
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.DefaultTableModel;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import javax.swing.table.TableCellEditor;
-import javax.swing.table.TableModel;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.apache.commons.lang.StringUtils;
-
-protected String[] columnNames = {"Name", "Value", "Coef (in %)", "Operator", "Action"};
-protected java.util.List<EquationContinuousDomain> datas = new ArrayList<EquationContinuousDomain>();
-protected java.util.List<JComboBox> operateurs = new ArrayList<JComboBox>();
-protected java.util.List<JButton> actions = new ArrayList<JButton>();
-
-public java.util.List<EquationContinuousDomain> getDomains(){
- return datas;
-}
-public void setDomains(java.util.List<EquationContinuousDomain> domains){
- datas.clear();
- for (EquationContinuousDomain d : domains){
- addDomain(d);
- }
-}
-public void addDomain(EquationContinuousDomain domain){
- newButton();
- datas.add(domain);
-}
-protected AbstractTableModel getTableModel(){
- AbstractTableModel model = new AbstractTableModel() {
-
- @Override
- public int getRowCount() {
- return datas.size();
- }
-
- @Override
- public int getColumnCount() {
- return columnNames.length;
- }
-
- @Override
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return true;
- }
- @Override
- public Object getValueAt(int rowIndex, int columnIndex) {
- if (columnIndex == 0){
- return datas.get(rowIndex).getVariableName();
- } else if (columnIndex == 1){
- return datas.get(rowIndex).getReferenceValue();
- } else if (columnIndex == 2){
- return datas.get(rowIndex).getCoefficient() == null ? 100 : datas.get(rowIndex).getCoefficient() * 100;
- } else if (columnIndex == 3){
- return datas.get(rowIndex).getOperator();
- } else if (columnIndex == 4){
- return _("isisfish.factor.validDiscretNumber");
- }
- return null;
- }
-
- @Override
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- if (String.class.isInstance(aValue)){
- if (!((String)aValue).equals("")){
- if (columnIndex == 0){
- datas.get(rowIndex).setVariableName((String)aValue);
- } else if (columnIndex == 1){
- datas.get(rowIndex).setReferenceValue(Double.parseDouble((String)aValue));
- } else if (columnIndex == 2){
- datas.get(rowIndex).setCoefficient(Double.parseDouble((String)aValue) / 100);
- } else if (columnIndex == 3){
- datas.get(rowIndex).setOperator((String)aValue);
- }
- }
- }
- }
-
- @Override
- public String getColumnName(int col) {
- return columnNames[col].toString();
- }
-
- };
- return model;
-}
-protected JComboBox getOperateur(){
- JComboBox result = new JComboBox();
- result.addItem("+");
- result.addItem("-");
- result.addItem("*");
- result.addItem("/");
- operateurs.add(result);
- result.addActionListener(new ActionListener() {
-
- @Override
- public void actionPerformed(ActionEvent e) {
- JComboBox source = (JComboBox)e.getSource();
- int i = operateurs.indexOf(source);
- if (datas.size() <= i){
- datas.get(i).setOperator((String)source.getSelectedItem());
- }
- }
- });
- return result;
-}
-protected void newButton(){
- JButton result = new JButton();
- result.setText(_("isisfish.factor.validDiscretNumber"));
- actions.add(result);
- result.addActionListener(new ActionListener() {
-
- @Override
- public void actionPerformed(ActionEvent e) {
- JButton source = (JButton)e.getSource();
- int i = actions.indexOf(source);
- valid(i);
- }
- });
-}
-protected JButton getActionButton(int i){
- return actions.get(i);
-}
-protected void valid(int i) {
- String variableName = datas.get(i).getVariableName();
- String[] lines = editor.getEditor().getText().split("\n");
- String result = "";
- for (String line : lines) {
- Pattern p = Pattern.compile("(^.*\\s+" + variableName + "\\s*\\=\\s*)([\\d\\.]+).*\\;$");
- Matcher matcher = p.matcher(line);
- if (matcher.find()) {
- String fullVariableName = bean.toString() + "." + StringUtils.uncapitalize(methodGet) + "." + variableName;
- line = matcher.group(1) + "context.getValueAndCompute(\"" + fullVariableName + "\", " + matcher.group(2) + ");";
- }
- result += line + "\n";
- }
- editor.getEditor().setText(result);
-}
-protected void setTable(){
- params.setModel(getTableModel());
- params.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(getOperateur()));
- params.getColumnModel().getColumn(4).setCellEditor(new TableCellEditor() {
-
- @Override
- public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
- return getActionButton(row);
- }
-
- @Override
- public Object getCellEditorValue() {
- return null;
- }
-
- @Override
- public boolean isCellEditable(EventObject anEvent) {
- return true;
- }
-
- @Override
- public boolean shouldSelectCell(EventObject anEvent) {
- return true;
- }
-
- @Override
- public boolean stopCellEditing() {
- return true;
- }
-
- @Override
- public void cancelCellEditing() {
- }
-
- @Override
- public void addCellEditorListener(CellEditorListener l) {
- }
-
- @Override
- public void removeCellEditorListener(CellEditorListener l) {
- }
- });
-}
-protected void add(){
- datas.add(new EquationContinuousDomain());
- newButton();
- setTable();
-}
-protected void remove(){
- int i = params.getSelectedRow();
- if (i != -1){
- datas.remove(i);
- operateurs.remove(i);
- actions.remove(i);
- setTable();
- }
-}
- ]]>
- </script>
- <Table id='content' constraints='BorderLayout.CENTER'>
- <row>
- <cell fill='both' columns='2' weightx='1' weighty='0.5'>
- <JScrollPane>
- <JTable id='params' visible='{isContinuePossible()}' model='{getTableModel()}' enabled='{isContinueSelected()}'/>
- </JScrollPane>
- </cell>
- </row>
- <row>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='add' text='isisfish.common.add' visible='{isContinuePossible()}' enabled='{isContinueSelected()}' onActionPerformed='add()'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JButton id='remove' text='isisfish.common.remove' visible='{isContinuePossible()}' enabled='{isContinueSelected()}' onActionPerformed='remove()'/>
- </cell>
- </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()}'
- visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- </row>
- </Table>
-</ContinuousPanelContainer>
\ No newline at end of file
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx (from rev 2134, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -0,0 +1,254 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+ -->
+<ContinuousPanelContainerUI>
+
+ <!-- bean property -->
+ <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/>
+ <String id='lblText' javaBean='null'/>
+ <org.codelutin.topia.persistence.TopiaEntity id='bean' javaBean='null'/>
+ <Class id='clazz' javaBean='null'/>
+ <String id='methodGet' javaBean='null'/>
+ <String id='methodSet' javaBean='null'/>
+ <String id='nameEquation' javaBean='null'/>
+ <fr.ifremer.isisfish.entities.Equation id='selectedEquation' javaBean='null'/>
+
+ <script><![CDATA[
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.DefaultTableModel;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableModel;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.lang.StringUtils;
+
+protected String[] columnNames = {"Name", "Value", "Coef (in %)", "Operator", "Action"};
+protected java.util.List<EquationContinuousDomain> datas = new ArrayList<EquationContinuousDomain>();
+protected java.util.List<JComboBox> operateurs = new ArrayList<JComboBox>();
+protected java.util.List<JButton> actions = new ArrayList<JButton>();
+
+public java.util.List<EquationContinuousDomain> getDomains(){
+ return datas;
+}
+public void setDomains(java.util.List<EquationContinuousDomain> domains){
+ datas.clear();
+ for (EquationContinuousDomain d : domains){
+ addDomain(d);
+ }
+}
+public void addDomain(EquationContinuousDomain domain){
+ newButton();
+ datas.add(domain);
+}
+protected AbstractTableModel getTableModel(){
+ AbstractTableModel model = new AbstractTableModel() {
+
+ @Override
+ public int getRowCount() {
+ return datas.size();
+ }
+
+ @Override
+ public int getColumnCount() {
+ return columnNames.length;
+ }
+
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return true;
+ }
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ if (columnIndex == 0){
+ return datas.get(rowIndex).getVariableName();
+ } else if (columnIndex == 1){
+ return datas.get(rowIndex).getReferenceValue();
+ } else if (columnIndex == 2){
+ return datas.get(rowIndex).getCoefficient() == null ? 100 : datas.get(rowIndex).getCoefficient() * 100;
+ } else if (columnIndex == 3){
+ return datas.get(rowIndex).getOperator();
+ } else if (columnIndex == 4){
+ return _("isisfish.factor.validDiscretNumber");
+ }
+ return null;
+ }
+
+ @Override
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+ if (String.class.isInstance(aValue)){
+ if (!((String)aValue).equals("")){
+ if (columnIndex == 0){
+ datas.get(rowIndex).setVariableName((String)aValue);
+ } else if (columnIndex == 1){
+ datas.get(rowIndex).setReferenceValue(Double.parseDouble((String)aValue));
+ } else if (columnIndex == 2){
+ datas.get(rowIndex).setCoefficient(Double.parseDouble((String)aValue) / 100);
+ } else if (columnIndex == 3){
+ datas.get(rowIndex).setOperator((String)aValue);
+ }
+ }
+ }
+ }
+
+ @Override
+ public String getColumnName(int col) {
+ return columnNames[col].toString();
+ }
+
+ };
+ return model;
+}
+protected JComboBox getOperateur(){
+ JComboBox result = new JComboBox();
+ result.addItem("+");
+ result.addItem("-");
+ result.addItem("*");
+ result.addItem("/");
+ operateurs.add(result);
+ result.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JComboBox source = (JComboBox)e.getSource();
+ int i = operateurs.indexOf(source);
+ if (datas.size() <= i){
+ datas.get(i).setOperator((String)source.getSelectedItem());
+ }
+ }
+ });
+ return result;
+}
+protected void newButton(){
+ JButton result = new JButton();
+ result.setText(_("isisfish.factor.validDiscretNumber"));
+ actions.add(result);
+ result.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JButton source = (JButton)e.getSource();
+ int i = actions.indexOf(source);
+ valid(i);
+ }
+ });
+}
+protected JButton getActionButton(int i){
+ return actions.get(i);
+}
+protected void valid(int i) {
+ String variableName = datas.get(i).getVariableName();
+ String[] lines = editor.getEditor().getText().split("\n");
+ String result = "";
+ for (String line : lines) {
+ Pattern p = Pattern.compile("(^.*\\s+" + variableName + "\\s*\\=\\s*)([\\d\\.]+).*\\;$");
+ Matcher matcher = p.matcher(line);
+ if (matcher.find()) {
+ String fullVariableName = bean.toString() + "." + StringUtils.uncapitalize(methodGet) + "." + variableName;
+ line = matcher.group(1) + "context.getValueAndCompute(\"" + fullVariableName + "\", " + matcher.group(2) + ");";
+ }
+ result += line + "\n";
+ }
+ editor.getEditor().setText(result);
+}
+protected void setTable(){
+ params.setModel(getTableModel());
+ params.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(getOperateur()));
+ params.getColumnModel().getColumn(4).setCellEditor(new TableCellEditor() {
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+ return getActionButton(row);
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return null;
+ }
+
+ @Override
+ public boolean isCellEditable(EventObject anEvent) {
+ return true;
+ }
+
+ @Override
+ public boolean shouldSelectCell(EventObject anEvent) {
+ return true;
+ }
+
+ @Override
+ public boolean stopCellEditing() {
+ return true;
+ }
+
+ @Override
+ public void cancelCellEditing() {
+ }
+
+ @Override
+ public void addCellEditorListener(CellEditorListener l) {
+ }
+
+ @Override
+ public void removeCellEditorListener(CellEditorListener l) {
+ }
+ });
+}
+protected void add(){
+ datas.add(new EquationContinuousDomain());
+ newButton();
+ setTable();
+}
+protected void remove(){
+ int i = params.getSelectedRow();
+ if (i != -1){
+ datas.remove(i);
+ operateurs.remove(i);
+ actions.remove(i);
+ setTable();
+ }
+}
+ ]]>
+ </script>
+ <Table id='content' constraints='BorderLayout.CENTER'>
+ <row>
+ <cell fill='both' columns='2' weightx='1' weighty='0.5'>
+ <JScrollPane>
+ <JTable id='params' visible='{isContinuePossible()}' model='{getTableModel()}' enabled='{isContinueSelected()}'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='add' text='isisfish.common.add' visible='{isContinuePossible()}' enabled='{isContinueSelected()}' onActionPerformed='add()'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='remove' text='isisfish.common.remove' visible='{isContinuePossible()}' enabled='{isContinueSelected()}' onActionPerformed='remove()'/>
+ </cell>
+ </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()}'
+ visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ </row>
+ </Table>
+</ContinuousPanelContainerUI>
\ No newline at end of file
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java 2009-04-24 15:57:15 UTC (rev 2145)
@@ -44,18 +44,18 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(SimulAction.class);
- public static void saveContinue(JComponent cOrigine, String name, String comment, String path, ContinuousPanelContainer panel, SimulAction action, boolean exist){
- DefaultContinuousPanel defaultPanel = null;
- if (MatrixContinuousPanel.class.isInstance(panel)){
- MatrixContinuousPanel matrixPanel = (MatrixContinuousPanel)panel;
+ public static void saveContinue(JComponent cOrigine, String name, String comment, String path, ContinuousPanelContainerUI panel, SimulAction action, boolean exist){
+ DefaultContinuousPanelUI defaultPanel = null;
+ if (MatrixContinuousPanelUI.class.isInstance(panel)){
+ MatrixContinuousPanelUI matrixPanel = (MatrixContinuousPanelUI)panel;
Double coef = Double.valueOf(matrixPanel.getCoef().getText());
MatrixND matrix = matrixPanel.getMatrix();
String operateur = (String)matrixPanel.getOperator().getSelectedItem();
action.addContinuousMatrixFactor(name, comment, path, coef, matrix, operateur, cOrigine, exist);
- } else if (EquationContinuousPanel.class.isInstance(panel)){
+ } else if (EquationContinuousPanelUI.class.isInstance(panel)){
try {
- EquationContinuousPanel equationPanel = (EquationContinuousPanel) panel;
+ EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
TopiaEntity bean = equationPanel.getBean();
String methodSet = equationPanel.getMethodSet();
@@ -80,15 +80,15 @@
log.error("Can't call method : ", ex);
}
}
- } else if (DefaultContinuousPanel.class.isInstance(panel)){
- defaultPanel = (DefaultContinuousPanel)panel;
+ } else if (DefaultContinuousPanelUI.class.isInstance(panel)){
+ defaultPanel = (DefaultContinuousPanelUI)panel;
action.addContinuousFactor(name, comment, path, getMin(defaultPanel), getMax(defaultPanel), cOrigine, exist);
}
}
- protected static Double getMin(DefaultContinuousPanel defaultPanel){
+ protected static Double getMin(DefaultContinuousPanelUI defaultPanel){
return Double.parseDouble(defaultPanel.getMin());
}
- protected static Double getMax(DefaultContinuousPanel defaultPanel){
+ protected static Double getMax(DefaultContinuousPanelUI defaultPanel){
return Double.parseDouble(defaultPanel.getMax());
}
public static void saveDiscret(JComponent cOrigine, String name, String comment, String path, List<JComponent> components, SimulAction action, boolean exist){
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-04-24 15:57:15 UTC (rev 2145)
@@ -37,6 +37,8 @@
*
* Last update : $Date: 9 mars 2009 $
* By : $Author: chatellier $
+ *
+ * TODO extends AbstractTreeCellRenderer and remove DefaultMutableTreeNode reference
*/
public class FactorTreeCellRenderer extends DefaultTreeCellRenderer {
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -1,267 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/ -->
-<JDialog id="FactorTypeChooser" title='isisfish.factor.title' modal='{true}' layout='{new BorderLayout()}'>
-
- <Boolean id='continuePossible' javaBean='true'/>
-
- <Boolean id='continueSelected' javaBean='false'/>
-
- <Boolean id='saveEnabled' javaBean='false'/>
-
- <Boolean id='existingValue' javaBean='false'/>
-
- <script><![CDATA[
-import org.apache.commons.lang.StringUtils;
-import org.codelutin.topia.persistence.TopiaEntity;
-import fr.ifremer.isisfish.ui.simulator.SimulAction;
-import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-
-protected JComponent cOrigine = null;
-protected TopiaEntity bean = null;
-protected java.util.List<JComponent> discretComponents = new ArrayList<JComponent>();
-protected String path = null;
-protected ContinuousPanelContainer continuousPanel = null;
-protected Factor factor = null;
-
-addPropertyChangeListener("continuePossible", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (continuousPanel != null){
- continuousPanel.setContinuePossible((Boolean)evt.getNewValue());
- }
- }
-
-});
-
-addPropertyChangeListener("continueSelected", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (continuousPanel != null){
- continuousPanel.setContinueSelected((Boolean)evt.getNewValue());
- }
- }
-
-});
-
-public void initNew(JComponent c, TopiaEntity be, Boolean b){
- this.bean = be;
- this.cOrigine = c;
-
- // path is topiaId#property
- // ex : fwn#fsd#0.3425345#name
- // for JAXX : cOrigine start with upper case
- // for commons beanutils : must be lower case
- String methodName = StringUtils.uncapitalize(EditorHelper.getMethod(cOrigine));
- this.path = bean.getTopiaId() + "#" + methodName;
-
- factorName.setText(bean.toString() + "." + methodName);
- setContinuePossible(b);
- boolean selected = EditorHelper.isContinue(cOrigine);
- setContinueSelected(selected);
- continueRadion.setSelected(selected);
- if (isContinuePossible()){
- if (EditorHelper.isRangeOfValue(cOrigine)){
- continuousPanel = EditorHelper.getContinuousRangeOfValuePanel(cOrigine, bean);
- }
- else {
- continuousPanel = EditorHelper.getContinuousPanel(cOrigine, bean);
- }
- init();
- }
- if (!isContinueSelected() && EditorHelper.isRangeOfValue(cOrigine)){
- int i = 0;
- for (String s : EditorHelper.getDiscretRangeOfValueValues(cOrigine, bean)){
- JTextField text = new JTextField(s);
- discretComponents.add(text);
- tabPane.add(text, "Factor " + (i+1));
- i++;
- }
- }
- if (continuousPanel != null){
- continuousPanel.setContinueSelected(selected);
- }
- setContinueSelected(EditorHelper.isContinue(cOrigine));
- setSaveEnabled(!factorName.getText().equals(""));
-}
-
-public void initExisting(JComponent cOrigine, Factor f){
- setExistingValue(true);
- this.cOrigine = cOrigine;
- this.path = f.getPath();
- factorName.setText(f.getName());
- comment.setText(f.getComment());
- Domain domain = f.getDomain();
- this.factor = f;
-
- if (ContinuousDomain.class.isInstance(domain)){
- ContinuousDomain cDomain = (ContinuousDomain) domain;
-
- continuousPanel = EditorHelper.getContinuousPanelWithValue(cOrigine, cDomain, f);
- init();
-
- continueRadion.setSelected(true);
- setContinueSelected(true);
- setContinuePossible(true);
- }else{
- DiscreteDomain dDomain = (DiscreteDomain)domain;
-
- int nb = dDomain.getValues().size();
- discretNumber.setText(nb + "");
-
- discretComponents.clear();
- tabPane.removeAll();
-
- SortedMap values = dDomain.getValues();
- int i = 0;
- Object cache = null;
- for (Object o : values.values()) {
- i++;
- cache = o;
- JComponent c = null;
- if (o != null){
- c = EditorHelper.getEditorWithValue(cOrigine, o);
- }
- else {
- c = EditorHelper.getEditorWithValue(cOrigine);
- }
- discretComponents.add(c);
- JScrollPane js = new JScrollPane(c);
- tabPane.addTab("Factor " + i, js);
- }
- setContinuePossible(EditorHelper.canBeContinue(cOrigine, cache));
-
- this.pack();
- }
- setSaveEnabled(!factorName.getText().equals(""));
-}
-protected void init(){
- continuousPanelContainer.add(continuousPanel, BorderLayout.CENTER);
- this.pack();
-}
-protected JComponent getNewComponent(){
- return EditorHelper.getEditor(cOrigine, bean);
-}
-protected void addTabs(String sNbTab){
- int nbTab = Integer.parseInt(sNbTab);
- discretComponents.clear();
- tabPane.removeAll();
- for (int i=0;i<nbTab;i++){
- JComponent c = getNewComponent();
- discretComponents.add(c);
- JScrollPane js = new JScrollPane(c);
- tabPane.addTab("Factor " + (i+1), js);
- }
- this.pack();
-}
-protected FactorAction getFactorAction(){
- return getContextValue(FactorAction.class);
-}
-protected SimulAction getSimulAction(){
- return getContextValue(SimulAction.class);
-}
-protected void save(){
- if (continueRadion.isSelected()){
- getFactorAction().saveContinue(cOrigine, factorName.getText(), comment.getText(), path, continuousPanel, getSimulAction(), isExistingValue());
- } else {
- getFactorAction().saveDiscret(cOrigine, factorName.getText(), comment.getText(), path, discretComponents, getSimulAction(), isExistingValue());
- }
- getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel();
- exit();
-}
-protected void remove(){
- getSimulAction().removeFactor(factor);
- getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel();
- exit();
-}
-protected void exit(){
- this.dispose();
-}
- ]]>
- </script>
- <Table constraints='BorderLayout.CENTER'>
- <row>
- <cell columns='1' fill='horizontal'>
- <JLabel text='isisfish.factor.name'/>
- </cell>
- <cell columns='3' fill='horizontal' weightx='1'>
- <JTextField id='factorName' onKeyReleased='setSaveEnabled(!factorName.getText().equals(""))'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='horizontal' weightx='1'>
- <JRadioButton id='continueRadion' text='isisfish.factor.continue' buttonGroup='factorType' visible='{isContinuePossible()}' selected='{false}' onActionPerformed='setContinueSelected(continueRadion.isSelected())'/>
- </cell>
- </row>
- <row>
- <cell fill='both' columns='4' weightx='1' weighty='0.5'>
- <JPanel id='continuousPanelContainer' layout='{new BorderLayout()}'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='horizontal' weightx='1'>
- <JRadioButton id='discret' text='isisfish.factor.discret' selected='{true}' buttonGroup='factorType' onActionPerformed='setContinueSelected(continueRadion.isSelected())'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.factor.selectDiscretNumber' enabled='{!isContinueSelected()}'/>
- </cell>
- <cell fill='horizontal' weightx='0.5'>
- <JTextField id='discretNumber' enabled='{!isContinueSelected()}'/>
- </cell>
- <cell columns='2' fill='horizontal' weightx='0.5'>
- <JButton text='isisfish.factor.validDiscretNumber' enabled='{!isContinueSelected()}' onActionPerformed='addTabs(discretNumber.getText())'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='both' weightx='1' weighty='0.3'>
- <JTabbedPane id='tabPane' visible='{!isContinueSelected()}' enabled='{!isContinueSelected()}'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='horizontal'>
- <JLabel text='isisfish.factor.comment'/>
- </cell>
- </row>
- <row>
- <cell columns='4' fill='both' weightx='1' weighty='0.3'>
- <JScrollPane>
- <JTextArea id='comment'/>
- </JScrollPane>
- </cell>
- </row>
- <row>
- <cell fill='horizontal' weightx='0.25'>
- <JButton id='cancel' text='isisfish.common.cancel' onActionPerformed='exit()'/>
- </cell>
- <cell fill='horizontal' weightx='0.25'>
- <JButton id='remove' text='isisfish.common.remove' visible='{isExistingValue()}' onActionPerformed='remove()'/>
- </cell>
- <cell columns='2' fill='horizontal' weightx='0.5'>
- <JButton id='save' text='isisfish.common.save' enabled='{isSaveEnabled()}' onActionPerformed='save()'/>
- </cell>
- </row>
- </Table>
-</JDialog>
\ No newline at end of file
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx (from rev 2134, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -0,0 +1,267 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/ -->
+<JDialog id="FactorTypeChooser" title='isisfish.factor.title' modal='{true}' layout='{new BorderLayout()}'>
+
+ <Boolean id='continuePossible' javaBean='true'/>
+
+ <Boolean id='continueSelected' javaBean='false'/>
+
+ <Boolean id='saveEnabled' javaBean='false'/>
+
+ <Boolean id='existingValue' javaBean='false'/>
+
+ <script><![CDATA[
+import org.apache.commons.lang.StringUtils;
+import org.codelutin.topia.persistence.TopiaEntity;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
+import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.Domain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+
+protected JComponent cOrigine = null;
+protected TopiaEntity bean = null;
+protected java.util.List<JComponent> discretComponents = new ArrayList<JComponent>();
+protected String path = null;
+protected ContinuousPanelContainerUI continuousPanel = null;
+protected Factor factor = null;
+
+addPropertyChangeListener("continuePossible", new PropertyChangeListener(){
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (continuousPanel != null){
+ continuousPanel.setContinuePossible((Boolean)evt.getNewValue());
+ }
+ }
+
+});
+
+addPropertyChangeListener("continueSelected", new PropertyChangeListener(){
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (continuousPanel != null){
+ continuousPanel.setContinueSelected((Boolean)evt.getNewValue());
+ }
+ }
+
+});
+
+public void initNew(JComponent c, TopiaEntity be, Boolean b){
+ this.bean = be;
+ this.cOrigine = c;
+
+ // path is topiaId#property
+ // ex : fwn#fsd#0.3425345#name
+ // for JAXX : cOrigine start with upper case
+ // for commons beanutils : must be lower case
+ String methodName = StringUtils.uncapitalize(EditorHelper.getMethod(cOrigine));
+ this.path = bean.getTopiaId() + "#" + methodName;
+
+ factorName.setText(bean.toString() + "." + methodName);
+ setContinuePossible(b);
+ boolean selected = EditorHelper.isContinue(cOrigine);
+ setContinueSelected(selected);
+ continueRadion.setSelected(selected);
+ if (isContinuePossible()){
+ if (EditorHelper.isRangeOfValue(cOrigine)){
+ continuousPanel = EditorHelper.getContinuousRangeOfValuePanel(cOrigine, bean);
+ }
+ else {
+ continuousPanel = EditorHelper.getContinuousPanel(cOrigine, bean);
+ }
+ init();
+ }
+ if (!isContinueSelected() && EditorHelper.isRangeOfValue(cOrigine)){
+ int i = 0;
+ for (String s : EditorHelper.getDiscretRangeOfValueValues(cOrigine, bean)){
+ JTextField text = new JTextField(s);
+ discretComponents.add(text);
+ tabPane.add(text, "Factor " + (i+1));
+ i++;
+ }
+ }
+ if (continuousPanel != null){
+ continuousPanel.setContinueSelected(selected);
+ }
+ setContinueSelected(EditorHelper.isContinue(cOrigine));
+ setSaveEnabled(!factorName.getText().equals(""));
+}
+
+public void initExisting(JComponent cOrigine, Factor f){
+ setExistingValue(true);
+ this.cOrigine = cOrigine;
+ this.path = f.getPath();
+ factorName.setText(f.getName());
+ comment.setText(f.getComment());
+ Domain domain = f.getDomain();
+ this.factor = f;
+
+ if (ContinuousDomain.class.isInstance(domain)){
+ ContinuousDomain cDomain = (ContinuousDomain) domain;
+
+ continuousPanel = EditorHelper.getContinuousPanelWithValue(cOrigine, cDomain, f);
+ init();
+
+ continueRadion.setSelected(true);
+ setContinueSelected(true);
+ setContinuePossible(true);
+ }else{
+ DiscreteDomain dDomain = (DiscreteDomain)domain;
+
+ int nb = dDomain.getValues().size();
+ discretNumber.setText(nb + "");
+
+ discretComponents.clear();
+ tabPane.removeAll();
+
+ SortedMap values = dDomain.getValues();
+ int i = 0;
+ Object cache = null;
+ for (Object o : values.values()) {
+ i++;
+ cache = o;
+ JComponent c = null;
+ if (o != null){
+ c = EditorHelper.getEditorWithValue(cOrigine, o);
+ }
+ else {
+ c = EditorHelper.getEditorWithValue(cOrigine);
+ }
+ discretComponents.add(c);
+ JScrollPane js = new JScrollPane(c);
+ tabPane.addTab("Factor " + i, js);
+ }
+ setContinuePossible(EditorHelper.canBeContinue(cOrigine, cache));
+
+ this.pack();
+ }
+ setSaveEnabled(!factorName.getText().equals(""));
+}
+protected void init(){
+ continuousPanelContainer.add(continuousPanel, BorderLayout.CENTER);
+ this.pack();
+}
+protected JComponent getNewComponent(){
+ return EditorHelper.getEditor(cOrigine, bean);
+}
+protected void addTabs(String sNbTab){
+ int nbTab = Integer.parseInt(sNbTab);
+ discretComponents.clear();
+ tabPane.removeAll();
+ for (int i=0;i<nbTab;i++){
+ JComponent c = getNewComponent();
+ discretComponents.add(c);
+ JScrollPane js = new JScrollPane(c);
+ tabPane.addTab("Factor " + (i+1), js);
+ }
+ this.pack();
+}
+protected FactorAction getFactorAction(){
+ return getContextValue(FactorAction.class);
+}
+protected SimulAction getSimulAction(){
+ return getContextValue(SimulAction.class);
+}
+protected void save(){
+ if (continueRadion.isSelected()){
+ getFactorAction().saveContinue(cOrigine, factorName.getText(), comment.getText(), path, continuousPanel, getSimulAction(), isExistingValue());
+ } else {
+ getFactorAction().saveDiscret(cOrigine, factorName.getText(), comment.getText(), path, discretComponents, getSimulAction(), isExistingValue());
+ }
+ getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel();
+ exit();
+}
+protected void remove(){
+ getSimulAction().removeFactor(factor);
+ getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel();
+ exit();
+}
+protected void exit(){
+ this.dispose();
+}
+ ]]>
+ </script>
+ <Table constraints='BorderLayout.CENTER'>
+ <row>
+ <cell columns='1' fill='horizontal'>
+ <JLabel text='isisfish.factor.name'/>
+ </cell>
+ <cell columns='3' fill='horizontal' weightx='1'>
+ <JTextField id='factorName' onKeyReleased='setSaveEnabled(!factorName.getText().equals(""))'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='4' fill='horizontal' weightx='1'>
+ <JRadioButton id='continueRadion' text='isisfish.factor.continue' buttonGroup='factorType' visible='{isContinuePossible()}' selected='{false}' onActionPerformed='setContinueSelected(continueRadion.isSelected())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='both' columns='4' weightx='1' weighty='0.5'>
+ <JPanel id='continuousPanelContainer' layout='{new BorderLayout()}'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='4' fill='horizontal' weightx='1'>
+ <JRadioButton id='discret' text='isisfish.factor.discret' selected='{true}' buttonGroup='factorType' onActionPerformed='setContinueSelected(continueRadion.isSelected())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal'>
+ <JLabel text='isisfish.factor.selectDiscretNumber' enabled='{!isContinueSelected()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JTextField id='discretNumber' enabled='{!isContinueSelected()}'/>
+ </cell>
+ <cell columns='2' fill='horizontal' weightx='0.5'>
+ <JButton text='isisfish.factor.validDiscretNumber' enabled='{!isContinueSelected()}' onActionPerformed='addTabs(discretNumber.getText())'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='4' fill='both' weightx='1' weighty='0.3'>
+ <JTabbedPane id='tabPane' visible='{!isContinueSelected()}' enabled='{!isContinueSelected()}'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='4' fill='horizontal'>
+ <JLabel text='isisfish.factor.comment'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='4' fill='both' weightx='1' weighty='0.3'>
+ <JScrollPane>
+ <JTextArea id='comment'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='0.25'>
+ <JButton id='cancel' text='isisfish.common.cancel' onActionPerformed='exit()'/>
+ </cell>
+ <cell fill='horizontal' weightx='0.25'>
+ <JButton id='remove' text='isisfish.common.remove' visible='{isExistingValue()}' onActionPerformed='remove()'/>
+ </cell>
+ <cell columns='2' fill='horizontal' weightx='0.5'>
+ <JButton id='save' text='isisfish.common.save' enabled='{isSaveEnabled()}' onActionPerformed='save()'/>
+ </cell>
+ </row>
+ </Table>
+</JDialog>
\ No newline at end of file
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanel.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanel.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanel.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -1,75 +0,0 @@
-<!--
-/* *##%
- * Copyright (C) 2005
- * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-/* *
- * IsisFish.java
- *
- * Created: 1 aout 2005 18:37:25 CEST
- *
- * @author Benjamin POUSSIN <poussin at codelutin.com>
- * @version $Revision: 1312 $
- *
- * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $
- * by : $Author: sletellier $
- */
- -->
-<ContinuousPanelContainer>
-
- <org.codelutin.math.matrix.MatrixND id='matrix' javaBean='null'/>
-
- <script><![CDATA[
-import org.codelutin.math.matrix.MatrixND;
-import org.codelutin.math.matrix.gui.JAXXMatrixEditor;
- ]]>
- </script>
- <Table id='content' constraints='BorderLayout.CENTER'>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.factor.value' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- <cell fill='both' weightx='1' weighty='1'>
- <!--JScrollPane-->
- <JAXXMatrixEditor id='componentPanel' dimensionEdit='{false}' matrix='{getMatrix() == null ? null : getMatrix().clone()}' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- <!--/JScrollPane-->
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.factor.coefficient' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- <cell fill='both' columns='2' weightx='1' weighty='1'>
- <JTextField id='coef' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- </row>
- <row>
- <cell fill='horizontal'>
- <JLabel text='isisfish.factor.operateur' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
- </cell>
- <cell fill='horizontal' weightx='1' columns='3'>
- <JComboBox id='operator' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'>
- <item id='plus' value="+"/>
- <item id='moins' value="-"/>
- <item id='mult' value="*"/>
- <item id='div' value="/"/>
- </JComboBox>
- </cell>
- </row>
- </Table>
-</ContinuousPanelContainer>
\ No newline at end of file
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx (from rev 2134, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanel.jaxx)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -0,0 +1,62 @@
+<!--
+/* *##%
+ * Copyright (C) 2005 - 2009 Ifremer, Code Lutin
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+ -->
+<ContinuousPanelContainerUI>
+
+ <org.codelutin.math.matrix.MatrixND id='matrix' javaBean='null'/>
+
+ <script><![CDATA[
+import org.codelutin.math.matrix.MatrixND;
+import org.codelutin.math.matrix.gui.JAXXMatrixEditor;
+ ]]>
+ </script>
+ <Table id='content' constraints='BorderLayout.CENTER'>
+ <row>
+ <cell fill='horizontal'>
+ <JLabel text='isisfish.factor.value' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ <cell fill='both' weightx='1' weighty='1'>
+ <!--JScrollPane-->
+ <JAXXMatrixEditor id='componentPanel' dimensionEdit='{false}' matrix='{getMatrix() == null ? null : getMatrix().clone()}' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ <!--/JScrollPane-->
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal'>
+ <JLabel text='isisfish.factor.coefficient' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ <cell fill='both' columns='2' weightx='1' weighty='1'>
+ <JTextField id='coef' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal'>
+ <JLabel text='isisfish.factor.operateur' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ </cell>
+ <cell fill='horizontal' weightx='1' columns='3'>
+ <JComboBox id='operator' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'>
+ <item id='plus' value="+"/>
+ <item id='moins' value="-"/>
+ <item id='mult' value="*"/>
+ <item id='div' value="/"/>
+ </JComboBox>
+ </cell>
+ </row>
+ </Table>
+</ContinuousPanelContainerUI>
\ No newline at end of file
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -15,7 +15,8 @@
* 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.
- *##%*/ -->
+ *##%*/
+-->
<Table>
<script><![CDATA[
import javax.swing.table.DefaultTableModel;
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx 2009-04-24 15:56:19 UTC (rev 2144)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx 2009-04-24 15:57:15 UTC (rev 2145)
@@ -16,16 +16,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*##%*/
-
-/* *
- * SensitivitySecondPassUI.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-->
<Table>
<script><![CDATA[
1
0
r2144 - in isis-fish/trunk/src/main: java/fr/ifremer/isisfish/simulator/launcher java/fr/ifremer/isisfish/simulator/launcher/ssh resources/i18n
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
24 Apr '09
Author: chatellier
Date: 2009-04-24 15:56:19 +0000 (Fri, 24 Apr 2009)
New Revision: 2144
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUserInfo.java
isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
Log:
Add log info message if ssh key is found, or not found
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-04-24 10:27:19 UTC (rev 2143)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-04-24 15:56:19 UTC (rev 2144)
@@ -423,6 +423,11 @@
jsch.addIdentity(sshKey.getAbsolutePath());
sshKeyUsed = true;
}
+ else {
+ if (log.isInfoEnabled()) {
+ log.info(_("Can't read ssh key : %s", sshKey));
+ }
+ }
Session session = jsch.getSession(username, host, port);
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUserInfo.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUserInfo.java 2009-04-24 10:27:19 UTC (rev 2143)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/ssh/SSHUserInfo.java 2009-04-24 15:56:19 UTC (rev 2144)
@@ -20,7 +20,6 @@
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
-import javax.swing.JTextField;
import com.jcraft.jsch.UserInfo;
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-04-24 10:27:19 UTC (rev 2143)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-04-24 15:56:19 UTC (rev 2144)
@@ -16,6 +16,7 @@
Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
Can't\ instantiate\ %s=
Can't\ open\ log\ for\ %s=
+Can't\ read\ ssh\ key\ \:\ %s=
Can't\ simulate\ %s=
Check\ state\ of\ local\ repository\:\ %s=
Check\ syntax\ of\ the\ current\ script=
@@ -166,6 +167,7 @@
isisfish.config.main.regionMap.description=
isisfish.config.main.remoteCaparmor.description=
isisfish.config.main.resultExport.description=
+isisfish.config.main.simulation.max.simultaneous.simulation.description=
isisfish.config.main.simulation.ssh.addscripttoqueuecommand.description=
isisfish.config.main.simulation.ssh.control.check.interval.description=
isisfish.config.main.simulation.ssh.datapath.description=
@@ -251,7 +253,6 @@
isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
isisfish.error.evalute.plan.script=Can't evaluate plan script
-isisfish.error.factor.coefValueIsOne=Coefficient can't be equal to 1
isisfish.error.factor.invalid=Factor is not valid
isisfish.error.file.already.exists=The file %1$s already exist
isisfish.error.get.fisheryRegion=Can't get FisheryRegion
@@ -292,7 +293,6 @@
isisfish.error.no.sector=No sector defined
isisfish.error.no.select.simulation=could not select simulation
isisfish.error.no.target.species=no target species in %1$s for %2$s
-isisfish.error.not.found.class=this class does not
isisfish.error.not.found.code=could not found codeclass for %1$s
isisfish.error.not.found.description=could not found description for %1$s
isisfish.error.not.found.field=could not found field %1$s doc for %2$s
@@ -359,8 +359,6 @@
isisfish.error.wait.simThread=Can't wait SimThread
isisfish.error.warning.title=Warning
isisfish.error.write.simulation=Can't write information %1$s
-isisfish.exit.text=Something has change, please enter a comment
-isisfish.exit.title=Exit
isisfish.export.directory=Export directory
isisfish.export.saved=Export saved
isisfish.export.title=Results export
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-04-24 10:27:19 UTC (rev 2143)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-04-24 15:56:19 UTC (rev 2144)
@@ -16,6 +16,7 @@
Can't\ instanciate\ wanted\ VCS\ (%s),\ use\ default=
Can't\ instantiate\ %s=
Can't\ open\ log\ for\ %s=
+Can't\ read\ ssh\ key\ \:\ %s=
Can't\ simulate\ %s=
Check\ state\ of\ local\ repository\:\ %s=
Check\ syntax\ of\ the\ current\ script=
@@ -166,6 +167,7 @@
isisfish.config.main.regionMap.description=le nom du r\u00E9pertoire contenant les maps d'une r\u00E9gion
isisfish.config.main.remoteCaparmor.description=lance les simulations sur un serveur distant
isisfish.config.main.resultExport.description=TODO
+isisfish.config.main.simulation.max.simultaneous.simulation.description=
isisfish.config.main.simulation.ssh.addscripttoqueuecommand.description=
isisfish.config.main.simulation.ssh.control.check.interval.description=
isisfish.config.main.simulation.ssh.datapath.description=
@@ -251,7 +253,6 @@
isisfish.error.equation.return.number=EquationImpl must retun a number\: %1$s
isisfish.error.evaluate.equation=Can't evaluate equation\: %1$s
isisfish.error.evalute.plan.script=Can't evaluate plan script
-isisfish.error.factor.coefValueIsOne=Un co\u00E9fficient ne peux pas \u00EAtre \u00E9gual \u00E0 1
isisfish.error.factor.invalid=Le facteur n'est pas valide
isisfish.error.file.already.exists=The file %1$s already exist
isisfish.error.get.fisheryRegion=Can't get FisheryRegion
@@ -292,7 +293,6 @@
isisfish.error.no.sector=il n'y a pas de secteur de d\u00E9finit
isisfish.error.no.select.simulation=could not select simulation
isisfish.error.no.target.species=no target species in %1$s for %2$s
-isisfish.error.not.found.class=this class does not
isisfish.error.not.found.code=could not found codeclass for %1$s
isisfish.error.not.found.description=could not found description for %1$s
isisfish.error.not.found.field=could not found field %1$s doc for %2$s
@@ -359,8 +359,6 @@
isisfish.error.wait.simThread=Can't wait SimThread
isisfish.error.warning.title=Attention
isisfish.error.write.simulation=Can't write information %1$s
-isisfish.exit.text=Quelque chose a chang\u00E9, merci de saisir un commentaire
-isisfish.exit.title=Exit
isisfish.export.directory=Dossier d'export
isisfish.export.saved=Exports des r\u00E9sultats sauvegard\u00E9s
isisfish.export.title=Export des r\u00E9sultats
1
0
r2143 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
by chatellier@users.labs.libre-entreprise.org 24 Apr '09
24 Apr '09
Author: chatellier
Date: 2009-04-24 10:27:19 +0000 (Fri, 24 Apr 2009)
New Revision: 2143
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
Log:
Recupere l'export xml avant le compute (car ce dernier le modifie).
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-04-23 16:08:14 UTC (rev 2142)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-04-24 10:27:19 UTC (rev 2143)
@@ -406,15 +406,17 @@
masterExportDirectory.mkdirs();
}
+ // export designplan as XML
+ // get as XML (before compute)
+ // compute do bad modification on design plan
+ String xmlDesignPlan = MexicoHelper.getDesignPlanAsXML(designPlan);
+
SensitivityScenarios sensitivityScenarios = sensitivitycalculator
.compute(designPlan, masterExportDirectory);
// ajout des parametres de simulation
param.setSensitivityCalculator(sensitivitycalculator);
param.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size());
-
- // export designplan as XML
- String xmlDesignPlan = MexicoHelper.getDesignPlanAsXML(designPlan);
// on l'ajoute tout de suite a la liste des simulations demandee
// init with default "id" must been changed for designPlan
1
0