Author: chatellier Date: 2009-03-10 14:14:41 +0000 (Tue, 10 Mar 2009) New Revision: 1931 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java Log: Add : sensitivityCalculator numberOfSensitivitySimulation on parameters Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-03-10 13:51:10 UTC (rev 1930) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-03-10 14:14:41 UTC (rev 1931) @@ -31,6 +31,7 @@ import java.util.Properties; import org.apache.commons.beanutils.ConvertUtilsBean; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.math.matrix.MatrixFactory; @@ -47,16 +48,18 @@ import fr.ifremer.isisfish.datastore.AnalysePlanStorage; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.datastore.SensitivityStorage; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.PopulationDAO; import fr.ifremer.isisfish.entities.Strategy; import fr.ifremer.isisfish.entities.StrategyDAO; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.rule.RuleHelper; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; import fr.ifremer.isisfish.util.ConverterUtil; /** - * Contains all parameter for one simulation + * Contains all parameter for one simulation. * * Created: 10 janv. 2006 17:03:37 * @@ -64,7 +67,8 @@ * * @version $Revision$ * - * Last update: $Date$ by : $Author$ + * Last update: $Date$ + * By : $Author$ */ public class SimulationParameter { @@ -118,9 +122,6 @@ protected String exportDirectory = "/tmp"; - /** Export utilisés pour les analyses de sensibilités. */ - protected List<String> sensitivityExportNames = new ArrayList<String>(); - /** utilisation du script de pre simulation */ protected boolean usePreScript = false; @@ -138,6 +139,22 @@ * plan la valeur est -1 */ protected int analysePlanNumber = -1; + /** Export utilisés pour les analyses de sensibilités. */ + protected List<String> sensitivityExportNames = new ArrayList<String>(); + + /** + * Nombre de simulation constituant l'analyse de sensibilité. + * + * FIXME ce parametre ne devrait pas ce trouver à cet endroit. + * Ce n'est pas un parametres, mais une infos de simulation. + * Cela permet de savoir combien de simulation il y a au total + * pour savoir quand elle sont terminées. + */ + protected int numberOfSensitivitySimulation = -1; + + /** Export utilisés pour les analyses de sensibilités. */ + protected SensitivityCalculator sensitivityCalculator = null; + /** la liste des resultats qui nous interesse */ protected Collection<String> resultEnabled = new HashSet<String>(); @@ -263,12 +280,23 @@ } result.setProperty("exports", exportList); + // number of sensitivity simulation + result.setProperty("numberOfSensitivitySimulation", String.valueOf(numberOfSensitivitySimulation)); + + // calculator name + if (getSensitivityCalculator() != null) { + String calculatorName = SensitivityStorage.getName(getSensitivityCalculator()); + result.setProperty("sensitivitycalculator", calculatorName); + } + // number of sensitivity simulation String sensitivityExportList = ""; for (String export : getExportNames()) { sensitivityExportList += export + ","; } result.setProperty("sensitivityexports", sensitivityExportList); + + result.setProperty("usePreScript", String.valueOf(usePreScript)); result.setProperty("preScript", preScript); result.setProperty("useAnalysePlan", String.valueOf(useAnalysePlan)); @@ -414,9 +442,24 @@ } } + // number of sensitivity simulation + numberOfSensitivitySimulation = Integer.parseInt(props.getProperty("numberOfSensitivitySimulation", "-1")); + // calculator name + String sensitivityCalculator = props.getProperty("sensitivitycalculator", null); + if (!StringUtils.isEmpty(sensitivityCalculator)) { + try { + SensitivityCalculator calculator = SensitivityStorage.getSensitivity(sensitivityCalculator).getNewSensitivityInstance(); + setSensitivityCalculator(calculator); + } catch (IsisFishException eee) { + if (log.isWarnEnabled()) { + log.warn("Can't find sensitivity: " + sensitivityCalculator, eee); + } + } + } + // sensitivity export String[] sensitivityExportList = props.getProperty("sensitivityexports", "").split(","); for (String name : sensitivityExportList) { - if (name != null && !"".equals(name)) { + if (!StringUtils.isEmpty(name)) { getSensitivityExportNames().add(name); } } @@ -586,7 +629,6 @@ } } - /** * @return Returns the extraRules. */ @@ -741,7 +783,36 @@ this.exportNames = exportNames; } + /** + * @return the numberOfSensitivitySimulation + */ + public int getNumberOfSensitivitySimulation() { + return numberOfSensitivitySimulation; + } + + /** + * @param numberOfSensitivitySimulation the numberOfSensitivitySimulation to set + */ + public void setNumberOfSensitivitySimulation(int numberOfSensitivitySimulation) { + this.numberOfSensitivitySimulation = numberOfSensitivitySimulation; + } + + /** + * @return the sensitivityCalculator + */ + public SensitivityCalculator getSensitivityCalculator() { + return sensitivityCalculator; + } + + /** + * @param sensitivityCalculator the sensitivityCalculator to set + */ + public void setSensitivityCalculator(SensitivityCalculator sensitivityCalculator) { + this.sensitivityCalculator = sensitivityCalculator; + } + + /** * @return the sensitivityExportNames */ public List<String> getSensitivityExportNames() {