Author: chatellier Date: 2009-03-05 16:53:02 +0000 (Thu, 05 Mar 2009) New Revision: 1914 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/OtherAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/AbstractRule.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.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/SimulationExecutor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.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/SimulationQueue.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java Log: Add prescript mamangement for build only one zip in sensitivity simulation. Works for inprocess simulation for now. 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-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ExportAction.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -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 @@ -43,15 +43,15 @@ /** * * @author poussin - * @version $Revision$ + * @version $Revision: 1862 $ * - * Last update: $Date$ - * by : $Author$ + * Last update: $Date: 2009-02-23 16:42:34 +0100 (lun. 23 févr. 2009) $ + * by : $Author: chatellier $ */ public class ExportAction { /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(ExportAction.class); + private static Log log = LogFactory.getLog(ExportAction.class); protected IsisConfig config = null; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/ImportAction.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -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 @@ -21,6 +21,10 @@ import static org.codelutin.i18n.I18n._; +import java.io.File; + +import org.codelutin.util.FileUtil; + import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.datastore.AnalysePlanStorage; import fr.ifremer.isisfish.datastore.ExportStorage; @@ -30,24 +34,17 @@ import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.SimulatorStorage; -import java.io.File; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.codelutin.util.FileUtil; /** * * @author poussin - * @version $Revision$ + * @version $Revision: 1862 $ * - * Last update: $Date$ - * by : $Author$ + * Last update: $Date: 2009-02-23 16:42:34 +0100 (lun. 23 févr. 2009) $ + * by : $Author: chatellier $ */ public class ImportAction { - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(ImportAction.class); - protected IsisConfig config = null; public ImportAction(IsisConfig config) { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/OtherAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/OtherAction.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/OtherAction.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -21,26 +21,27 @@ import static org.codelutin.i18n.I18n._; -import fr.ifremer.isisfish.IsisConfig; -import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.vcs.VCS; import java.io.File; -import java.util.Arrays; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import fr.ifremer.isisfish.IsisConfig; +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.vcs.VCS; + /** * * @author poussin - * @version $Revision$ + * @version $Revision: 1862 $ * - * Last update: $Date$ - * by : $Author$ + * Last update: $Date: 2009-02-23 16:42:34 +0100 (lun. 23 févr. 2009) $ + * by : $Author: chatellier $ */ public class OtherAction { /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(OtherAction.class); + private static Log log = LogFactory.getLog(OtherAction.class); protected IsisConfig config = null; 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-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -39,18 +39,18 @@ import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher; /** - * Action des simulations. + * Actions des simulations. * * @author poussin - * @version $Revision$ + * @version $Revision: 1862 $ * - * Last update: $Date$ - * by : $Author$ + * Last update: $Date: 2009-02-23 16:42:34 +0100 (lun. 23 févr. 2009) $ + * by : $Author: chatellier $ */ public class SimulationAction { - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(SimulationAction.class); + /** to use log facility, just put in your code: log.info("..."); */ + private static Log log = LogFactory.getLog(SimulationAction.class); protected IsisConfig config = null; @@ -82,9 +82,11 @@ if (!RegionStorage.exists(regionName)) { RegionStorage.importAndRenameZip(region, regionName); } else { - log.warn(_( + if (log.isWarnEnabled()) { + log.warn(_( "Region %s allready exist in repository. Can't import", regionName)); + } } } @@ -92,16 +94,35 @@ } /** + * Launch a simulation with specified simulationId and simulation zip. * - * @param simulId id de simulation + * @param simulationId id de simulation * @param simulationZip Zip de la simulation * @throws Exception */ - public static void simulateWithSimulation(String simulId, File simulationZip) + public static void simulateWithSimulation(String simulationId, File simulationZip) throws Exception { - log.info("id:" + simulId + ", zip:" + simulationZip); + // just call with null pre script + simulateWithSimulation(simulationId, simulationZip, null); + } + + /** + * Launch a simulation with specified simulationId, simulationZip + * and simulationPrescript. + * + * @param simulationId id de simulation + * @param simulationZip Zip de la simulation + * @param simulationPrescript simulation prescript + * @throws Exception + */ + public static void simulateWithSimulation(String simulationId, File simulationZip, String simulationPrescript) + throws Exception { + + if (log.isInfoEnabled()) { + log.info("Command line action : simulateWithSimulation (" + simulationId + ", " + simulationZip.getAbsolutePath() + ", " + simulationPrescript + ")"); + } - String name = simulId; // ne pas mettre la date, car le sub process la met deja + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date()); + 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); @@ -114,7 +135,8 @@ //SimulationStorage simulation = launcher.simulate(null, control, simulationZip); //simulation.getStorage().closeContext(); - launcher.simulate(null, control, simulationZip); + // FIXME simulation prescript to get from parameters !!! + launcher.simulate(null, control, simulationZip, null); SimulationStorage simulation = launcher.getSimulationStorage(SimulationService.getService(), control); simulation.getStorage().closeContext(); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -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 @@ -19,7 +19,6 @@ package fr.ifremer.isisfish.actions; - import com.sshtools.j2ssh.transport.publickey.OpenSSHPublicKeyFormat; import com.sshtools.j2ssh.transport.publickey.SshKeyGenerator; import fr.ifremer.isisfish.IsisConfig; @@ -32,10 +31,10 @@ /** * * @author poussin - * @version $Revision$ + * @version $Revision: 1862 $ * - * Last update: $Date$ - * by : $Author$ + * Last update: $Date: 2009-02-23 16:42:34 +0100 (lun. 23 févr. 2009) $ + * by : $Author: chatellier $ */ public class VCSAction { 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-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -27,6 +27,8 @@ * @author chatellier * @version $Revision: 1.0 $ * + * @since 3.2.0.4 + * * Last update : $Date: 5 mars 2009 $ * By : $Author: chatellier $ */ Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/AbstractRule.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/AbstractRule.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/AbstractRule.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -1,5 +1,5 @@ /* *##% - * Copyright (C) 2006 + * Copyright (C) 2006 - 2009 * Code Lutin, Cédric Pineau, Benjamin Poussin * * This program is free software; you can redistribute it and/or @@ -17,54 +17,39 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *##%*/ -/* * - * AbstractRule.java - * - * Created: 12 janv. 2006 17:12:51 - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ - package fr.ifremer.isisfish.rule; import java.util.HashMap; import java.util.Map; -import java.util.Properties; -import org.apache.commons.beanutils.ConvertUtilsBean; -import org.codelutin.topia.persistence.TopiaEntity; - -import fr.ifremer.isisfish.IsisFishException; -import fr.ifremer.isisfish.datastore.RegionStorage; -import fr.ifremer.isisfish.datastore.RuleStorage; -import fr.ifremer.isisfish.util.ConverterUtil; - - /** * Les parametres d'une regle sont tous les attributs prefixé de param, mais * ce prefix n'apparait que dans le code source. * + * Created: 12 janv. 2006 17:12:51 + * * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ */ - public abstract class AbstractRule implements Rule { - transient protected Map<String, Object> values = new HashMap<String, Object>(); + protected transient Map<String, Object> values = new HashMap<String, Object>(); - /* (non-Javadoc) + /* * @see fr.ifremer.isisfish.rule.Rule#getValue(java.lang.String) */ + @Override public Object getValue(String name) { return values.get(name); } - /* (non-Javadoc) + /* * @see fr.ifremer.isisfish.rule.Rule#setValue(java.lang.String, java.lang.Object) */ + @Override public void setValue(String name, Object value) { values.put(name, value); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/Rule.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -1,5 +1,5 @@ /* *##% - * Copyright (C) 2006 + * Copyright (C) 2006 - 2009 * Code Lutin, Cédric Pineau, Benjamin Poussin * * This program is free software; you can redistribute it and/or @@ -17,18 +17,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *##%*/ -/* * - * Rule.java - * - * Created: 12 janv. 2006 17:02:43 - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ - package fr.ifremer.isisfish.rule; import fr.ifremer.isisfish.entities.Metier; @@ -54,7 +42,13 @@ * <p> Pour supporter d'autre type il faut créer des converters commons-beans * //@link fr.ifremer.isisfish.simulator.SimulationParameter#ruleParametertoProperties(Rule) * + * Created: 12 janv. 2006 17:02:43 + * * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ */ public interface Rule { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulatorServer.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -50,13 +50,16 @@ * de simulation. Il est ensuite possible de lui demander ou en est rendu * une simulation. * + * FIXME chatellier : since ... a long time this implementation is unmaintained. + * * Created: Thu Aug 22 2002 * * @author <poussin at codelutin.com> Copyright Code Lutin * * @version $Revision$ * - * Mise a jour: $Date$ par : $Author$ + * Mise a jour: $Date$ + * par : $Author$ */ public class SimulatorServer implements XmlRpcHandler, XmlRpcHandlerMapping { // SimulatorServer @@ -173,7 +176,7 @@ simulationControls.put(id, control); try { SimulatorLauncher launcher = new InProcessSimulatorLauncher(); - launcher.simulate(null, control, zip); + launcher.simulate(null, control, zip, null); // FIXME null simulation = launcher.getSimulationStorage(null, control); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -64,13 +64,13 @@ import fr.ifremer.isisfish.types.Month; /** - * Fait une simulation dans la meme jvm + * Fait une simulation dans la meme jvm. * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class InProcessSimulatorLauncher implements SimulatorLauncher { @@ -80,12 +80,12 @@ protected SimulationStorage simulation; - /* - * @see fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher#simulate(fr.ifremer.isisfish.simulator.launcher.SimulationService, fr.ifremer.isisfish.simulator.SimulationControl, java.io.File) + /** + * {@inheritDoc} */ public void simulate(SimulationService simulationService, - SimulationControl control, File simulationZip) - throws RemoteException { + SimulationControl control, File simulationZip, + String simulationPrescript) throws RemoteException { String id = control.getId(); log.info(_("simulate %s with file %s", id, simulationZip)); @@ -99,6 +99,13 @@ control.setDate(new Date()); control.setProgress(0); control.setStarted(true); + + // replace prescript if specified on method + if (simulationPrescript != null && !simulationPrescript.trim().isEmpty()) { + param.setUsePreScript(true); + param.setPreScript(simulationPrescript); + } + int lastYear = param.getNumberOfYear(); int lastDate = lastYear * Month.NUMBER_OF_MONTH; control.setProgressMax(lastDate); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/IsisFishServerSimulationLauncher.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -39,12 +39,15 @@ import fr.ifremer.isisfish.simulator.SimulationControl; /** - * + * Launch simulation on remote IsisFish server throw XML-RPC. + * + * FIXME chatellier : since ... a long time this implementation is unmaintained. + * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class IsisFishServerSimulationLauncher implements SimulatorLauncher { @@ -53,8 +56,8 @@ .getLog(IsisFishServerSimulationLauncher.class); public void simulate(SimulationService simulationService, - SimulationControl control, File simulationZip) - throws RemoteException { + SimulationControl control, File simulationZip, + String simulationPreScript) throws RemoteException { String simulationId = control.getId(); SimulationStorage simulation = null; try { @@ -149,7 +152,7 @@ } /** - * This thread is responsable to synchronized SimulationControl used localy with + * This thread is responsible to synchronized SimulationControl used localy with * remote simulation control for remote simulation. * * This thread dead when {@link SimulationControl#isRunning()} is false @@ -205,8 +208,7 @@ xmlrpcconfig.setBasicPassword(IsisFish.config .getSimulatorPassword()); XmlRpcClient client = new XmlRpcClient(); - client - .setTransportFactory(new XmlRpcCommonsTransportFactory( + client.setTransportFactory(new XmlRpcCommonsTransportFactory( client)); client.setConfig(xmlrpcconfig); 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-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -177,7 +177,7 @@ */ @Override public void simulate(SimulationService simulationService, - SimulationControl control, File simulationZip) + SimulationControl control, File simulationZip, String simulationPrescript) throws RemoteException { // start ssh session Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -41,10 +41,10 @@ * Il est aussi possible d'ecoute l'etat de l'attribut pause * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SimulationExecutor extends ThreadPoolExecutor { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationItem.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -19,44 +19,64 @@ package fr.ifremer.isisfish.simulator.launcher; +import java.io.File; + import fr.ifremer.isisfish.simulator.SimulationControl; import fr.ifremer.isisfish.simulator.SimulationParameter; -import java.io.File; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; /** - * Objet representant un simulation qui doit etre faite + * Objet representant un simulation qui doit etre faite. * + * Elle est composée : + * - d'un fichier zip (la simulation a simuler) + * - les parametres de la simulation + * - d'un pre-script + * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SimulationItem { - /** to use log facility, just put in your code: log.info(\"...\"); */ - private static Log log = LogFactory.getLog(SimulationItem.class); - - /** le control pour la simulation */ + /** Le control pour la simulation. */ protected SimulationControl control; + + /** Les parametres de simulation. */ protected SimulationParameter parameter; - /** le zip contenant la simulation prete a etre executee */ + + /** Le zip contenant la simulation prete a etre executee. */ protected File simulationZip; - public SimulationItem(SimulationControl control, SimulationParameter param, - File simulationZip) { + /** + * Constructor. + * + * @param control Le control pour la simulation. + * @param param Les parametres de simulation. + */ + public SimulationItem(SimulationControl control, SimulationParameter param) { this.control = control; this.parameter = param; - this.simulationZip = simulationZip; } - + + /** + * Retourne le control pour la simulation. + * @return le control pour la simulation. + */ public SimulationControl getControl() { return control; } /** + * Retorune les parametres de simulation. + * @return les parametres de simulation. + */ + public SimulationParameter getParameter() { + return parameter; + } + + /** * Permet de mettre le zip apres construction de l'objet. Cela est util * car la construction du zip prend du temps, et on souhaite pouvoir le * monitorer et donc il faut que l'item exist pour etre vu dans la console @@ -71,12 +91,12 @@ this.simulationZip = simulationZip; } - public SimulationParameter getParameter() { - return parameter; - } - + /** + * Retourne le zip contenant la simulation prete a etre executee. + * + * @return le zip contenant la simulation prete a etre executee. + */ public File getSimulationZip() { return simulationZip; } - } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -43,10 +43,10 @@ * {@link SimulationService#reportError}. * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SimulationJob implements Runnable, Comparable<SimulationJob> { @@ -221,7 +221,14 @@ //SimulationStorage simulation = null; if (!onlyCheckControl) { File zip = item.getSimulationZip(); - launcher.simulate(simulationService, control, zip); + + // get prescript content, only if UsePreScript is set to true + String simulationPrescript = null; + if(param.getUsePreScript()) { + simulationPrescript = param.getPreScript(); + } + + launcher.simulate(simulationService, control, zip, simulationPrescript); } // simulation ended @@ -292,19 +299,22 @@ } /** - * Interface permettant d'implanter des actions a faire apres la simulation, - * Ces action ne se declenche pas pour les job de plan d'analyse pere + * Interface permettant d'implanter des actions a faire apres la simulation. + * Ces actions ne se declenchent pas pour les job de plan d'analyse pere. */ public static interface PostAction { + /** - * appeler lorsque la simulation s'arrete normalement + * Appelé lorsque la simulation s'arrete normalement. + * * @param job le job qui a fait la simulation * @param sim la simulation qui vient d'etre faite */ public void finished(SimulationJob job, SimulationStorage sim); /** - * appeler lorsque la simulation a echouee + * Appeler lorsque la simulation a echoué. + * * @param job le job qui a fait la simulation * @param eee l'exception qui a ete levee */ 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-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -58,6 +58,7 @@ * seulement celle dit simple, c'est-à-dire "master plan" du plan * d'analyse. * + * @since 3.2.0.4 * @author chatellier * @version $Revision: 1.0 $ * Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationQueue.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -23,25 +23,21 @@ import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; /** * Multi tail PriorityBlockingQueue. * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SimulationQueue extends JDKPriorityBlockingQueue<SimulationJob> { /** serialVersionUID. */ private static final long serialVersionUID = -6130030747211387382L; - /** to use log facility, just put in your code: log.info(\"...\"); */ - private static Log log = LogFactory.getLog(SimulationQueue.class); protected SimulationQueue parent = null; protected List<SimulationQueue> childs = new LinkedList<SimulationQueue>(); 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-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -99,10 +99,10 @@ * Il est alors suspendu pour ne plus etre utilise pour les simulations. * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SimulationService { @@ -361,7 +361,7 @@ SimulatorLauncher launcher, int priority) { // on l'ajoute tout de suite a la liste des simulations demandee SimulationControl control = new SimulationControl(id); - SimulationItem item = new SimulationItem(control, param, null); + SimulationItem item = new SimulationItem(control, param); SimulationJob job = new SimulationJob(this, item, priority); job.setLauncher(launcher); fireStartEvent(job); @@ -401,6 +401,15 @@ SensitivityScenarios sensitivityScenarios = sensitivitycalculator .compute(designPlan); + // on l'ajoute tout de suite a la liste des simulations demandee + // init with default "id" must been changed for designPlan + // simulation + SimulationControl controlJustForZip = new SimulationControl(id); + + // on construit le zip de la simulation + // in zip, there will be param "without" prescript + File zip = prepareSimulationZipFile(controlJustForZip, param, true); + // for each simulation, we neeed to launch a specific simulation // new simulation ids will be id + "_" + x // where x is a int starting at 0 @@ -408,6 +417,8 @@ for (Scenario scenario : sensitivityScenarios.getScenarios()) { // modify modification parameter + // subParam only convenient for add pre script + // for launcher SimulationParameter subParam = param.copy(); String preScriptContent = generatePreScript(scenario); subParam.setUsePreScript(true); @@ -415,20 +426,16 @@ // build new simulation id String subsimulationId = id + "_" + simulationIndex; - - // on l'ajoute tout de suite a la liste des simulations demandee - SimulationControl control = new SimulationControl( - subsimulationId); - SimulationItem item = new SimulationItem(control, subParam, - null); + SimulationControl realSimulationControl = new SimulationControl(subsimulationId); + + // new item, with zip + SimulationItem item = new SimulationItem(realSimulationControl, subParam); + item.setSimulationZip(zip); + SimulationJob job = new SimulationJob(this, item, priority); job.setLauncher(launcher); fireStartEvent(job); - // on construit le zip de la simulation - File zip = prepareSimulationZipFile(control, subParam, true); - item.setSimulationZip(zip); - if (subParam.getUseAnalysePlan() && subParam.isIndependentPlan()) { // c un plan d'analyse independant, on construit toute les sous simu @@ -466,7 +473,7 @@ configuration.setTemplateLoader(templateLoader); configuration.setObjectWrapper(new BeansWrapper()); - + return configuration; } @@ -474,7 +481,7 @@ * Generate prescript to set factor values before simulation start. * * @param scenario - * @return + * @return simulation pre script with correct values * @throws IOException if pre script can't be made * @throws TemplateException if pre script can't be made */ @@ -492,7 +499,7 @@ Map<String, Object> root = new HashMap<String, Object>(); root.put("scenario", scenario); root.put("beanUtils", ConverterUtil.getConverter(null)); - + template.process(root, out); out.flush(); String scriptContent = out.toString(); @@ -517,7 +524,7 @@ SimulatorLauncher launcher, int priority) { // on l'ajoute tout de suite a la liste des simulations demandee SimulationControl control = new SimulationControl(id); - SimulationItem item = new SimulationItem(control, param, null); + SimulationItem item = new SimulationItem(control, param); SimulationJob job = new SimulationJob(this, item, priority); job.setLauncher(launcher); fireStartEvent(job); @@ -722,7 +729,8 @@ simId); SimulationParameter childParam = param.copy(); SimulationItem item = new SimulationItem( - childControl, childParam, zip); + childControl, childParam); + item.setSimulationZip(zip); nextJob = new SimulationJob(simulationService, job, item, job.getPriority()); nextJob.setLauncher(job.getLauncher()); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceListener.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -20,31 +20,36 @@ package fr.ifremer.isisfish.simulator.launcher; /** - * + * Ecouteur sur les evenenements de changement + * d'états des simulations. + * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public interface SimulationServiceListener { /** - * Notifie start of simulation + * Notify start of simulation. + * * @param simService le simulation service qui a lance la simulation * @param job job that responsable to simulation */ public void simulationStart(SimulationService simService, SimulationJob job); /** - * Notifie end of simulation + * Notify end of simulation. + * * @param simService le simulation service qui a arrete la simulation * @param job job that responsable to simulation */ public void simulationStop(SimulationService simService, SimulationJob job); /** - * Previent que le simulation service a vide ca liste de simulation faites + * Previent que le simulation service a vide ca liste de simulation faites. + * * @param simService le simulation service dont la liste des jobs finis * a ete vide */ Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -43,10 +43,10 @@ * simulations * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SimulationServiceTableModel extends AbstractTableModel { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulatorLauncher.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -29,10 +29,10 @@ * comme plugin de simulation (CapArmor, SubProcess, ...) * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public interface SimulatorLauncher { @@ -52,7 +52,7 @@ * exception est levee. */ public void simulate(SimulationService simulationService, - SimulationControl control, File simulationZip) + SimulationControl control, File simulationZip, String simulationPrescript) throws RemoteException; /** Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-03-05 15:34:44 UTC (rev 1913) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-03-05 16:53:02 UTC (rev 1914) @@ -44,10 +44,10 @@ * @see Process * * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ */ public class SubProcessSimulationLauncher implements SimulatorLauncher { @@ -64,8 +64,8 @@ @Override public void simulate(SimulationService simulationService, - SimulationControl control, File simulationZip) - throws RemoteException { + SimulationControl control, File simulationZip, + String simulationPrescript) throws RemoteException { String simulationId = control.getId(); SimulationStorage simulation = null; try { @@ -205,7 +205,8 @@ public SimulationCheckpointExternalProcessThread( SimulationControl control, String simulationId, Process process) { if (log.isInfoEnabled()) { - log.info("Lancement du thread de surveillance des simulations externes"); + log + .info("Lancement du thread de surveillance des simulations externes"); } this.control = control; this.simulationId = simulationId; @@ -251,7 +252,7 @@ } } catch (IOException e) { if (log.isErrorEnabled()) { - log.error(_("isisfish.simulator.subprocess.readoutput.error"), + log.error( _("isisfish.simulator.subprocess.readoutput.error"), e); } }