Author: chatellier Date: 2009-04-21 12:55:06 +0000 (Tue, 21 Apr 2009) New Revision: 2133 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java Log: Rechargement des exports et calculateur des simulations 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-04-21 12:54:14 UTC (rev 2132) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-04-21 12:55:06 UTC (rev 2133) @@ -293,7 +293,12 @@ if (getSensitivityCalculator() != null) { String calculatorName = SensitivityStorage.getName(getSensitivityCalculator()); result.setProperty("sensitivitycalculator", calculatorName); + + // calculator parameter + Properties calculatorParams = sensitivityCalculatorParametertoProperties(0, getSensitivityCalculator()); + result.putAll(calculatorParams); } + // number of sensitivity simulation String sensitivityExportList = ""; // WARN only SENSITIVITY are parametrable for now @@ -459,6 +464,8 @@ if (!StringUtils.isEmpty(sensitivityCalculator)) { try { SensitivityCalculator calculator = SensitivityStorage.getSensitivity(sensitivityCalculator).getNewSensitivityInstance(); + // 0 = only single sensitivity + populateSensitivityCalculator(0, calculator, props); setSensitivityCalculator(calculator); } catch (IsisFishException eee) { if (log.isWarnEnabled()) { @@ -590,8 +597,7 @@ * @param exportIndex l'index de l'export * @param export L'export dont on souhaite mettre les parametres dans l'objet * Properties retourne - * @return L'objet Properties contenant les valeurs des parametres de la - * regle + * @return L'objet Properties contenant les valeurs des parametres de l'export */ protected Properties exportParametertoProperties(int exportIndex, Export export) { Properties result = new Properties(); @@ -615,7 +621,39 @@ return result; } + + /** + * Permet de mettre les parametres du calculateur sous une forme String pour + * pouvoir les relire ensuite. + * + * @param sensitivityIndex l'index du calculateur de sensitivity + * @param calculator Le calculateurdont on souhaite mettre les parametres dans l'objet + * Properties retourne + * @return L'objet Properties contenant les valeurs des parametres du calculateur de sensibilité + */ + protected Properties sensitivityCalculatorParametertoProperties(int sensitivityIndex, SensitivityCalculator calculator) { + Properties result = new Properties(); + ConvertUtilsBean beanUtils = ConverterUtil.getConverter(getRegion().getStorage()); + for (String paramName : SensitivityStorage.getParameterNames(calculator).keySet()) { + String paramValueString; + try { + Object value = SensitivityStorage.getParameterValue(calculator, paramName); + paramValueString = beanUtils.convert(value); + if (paramValueString != null) { + result.setProperty("sensitivity." + sensitivityIndex + ".parameter." + + paramName, paramValueString); + } + } catch (IsisFishException eee) { + if (log.isWarnEnabled()) { + log.warn("Can't convert parameter value to String: " + + paramName, eee); + } + } + } + return result; + } + /** * Permet de mettre les parametres du plan sous une forme String pour * pouvoir les relire ensuite. @@ -649,8 +687,8 @@ } /** - * Recupere dans prop les valeurs des champs specifique a le plan et met a - * jour les champs du plan + * Recupere dans prop les valeurs des champs specifique au plan et met a + * jour les champs du plan. * * @param planIndex l'index du plan * @param plan le plan dont les parametres doivent etre lu depuis les @@ -679,7 +717,39 @@ } } } + + /** + * Recupere dans prop les valeurs des champs specifique au calculateur de sensibilité et met a + * jour les champs du calculateur. + * + * @param calculatorIndex l'index du calculateur + * @param calculator le calculateur dont les parametres doivent etre lu depuis les + * proprietes + * @param props les proprietes contenant les parametre du calculateur + */ + protected void populateSensitivityCalculator(int calculatorIndex, SensitivityCalculator calculator, Properties props) { + ConvertUtilsBean beanUtils = ConverterUtil.getConverter(getRegion().getStorage()); + String calculatorName = SensitivityStorage.getName(calculator); + String paramTag = "sensitivity." + calculatorIndex + ".parameter."; + for (Map.Entry<String, Class<?>> entry : SensitivityStorage.getParameterNames(calculator).entrySet()) { + String propName = entry.getKey(); + Class<?> type = entry.getValue(); + if (TopiaEntity.class.isAssignableFrom(type)) { + type = TopiaEntity.class; + } + String valueString = props.getProperty(paramTag + propName); + Object value = beanUtils.convert(valueString, type); + try { + SensitivityStorage.setParameterValue(calculator, propName, value); + } catch (IsisFishException eee) { + if (log.isWarnEnabled()) { + log.warn("Can't reload field " + propName + " for sensitivity calculator " + calculatorName , eee); + } + } + } + } + /** * @return Returns the extraRules. */ 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-21 12:54:14 UTC (rev 2132) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-04-21 12:55:06 UTC (rev 2133) @@ -15,18 +15,7 @@ * 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. - *##%*/ - -/* * - * SensitivityChooserUI. - * - * @author letellier - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ - --> + *##%*/ --> <Table> <script><![CDATA[ import javax.swing.table.DefaultTableModel; @@ -63,6 +52,20 @@ return fieldSensitivityCalculatorSelect.getModel(); } + /** + * Auto select calculator in JComboBox + * with calculator selected in SimulAction. + */ + public void refreshSelectedSensitivityCalculator() { + SensitivityCalculator calculator = getSimulAction().getSensitivityCalculator(); + if (calculator != null) { + // TODO it's not getSimpleName() here ! + String name = calculator.getClass().getSimpleName(); + fieldSensitivityCalculatorSelect.setSelectedItem( + new Item(name, name, name, false)); + } + } + protected void sensCalculatorChanged() { if (fieldSensitivityCalculatorSelect.getSelectedIndex() != -1) { String sensitivityName = (String)fieldSensitivityCalculatorSelect.getSelectedItem(); 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-21 12:54:14 UTC (rev 2132) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-04-21 12:55:06 UTC (rev 2133) @@ -135,8 +135,9 @@ getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setExportListModel(); } } -protected void setSensibilities() { +protected void setSensitivityCalculator() { if (isSensitivity()){ + getParentContainer(SensitivityUI.class).getSensitivityChooserUI().refreshSelectedSensitivityCalculator(); } } public void setSimulationParameter(SimulAction simulAction){ @@ -154,12 +155,11 @@ refresh(); setFactorRegion(); setExportSens(); - setSensibilities(); + setSensitivityCalculator(); setFactor(); getParentContainer(WelcomePanelUI.class).setInfoText(_("isisfish.message.old.simulation.loaded")); } }); - } } protected void addRules(){ @@ -201,7 +201,7 @@ if (fieldSimulOnlyExport.isSelected()){ getContextValue(SimulAction.class).getSimulationParameter().setOnlyExport(true); } - else{ + else { getContextValue(SimulAction.class).getSimulationParameter().setOnlyExport(false); } } 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-21 12:54:14 UTC (rev 2132) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-04-21 12:55:06 UTC (rev 2133) @@ -307,7 +307,7 @@ // Chargement des facteurs File f = simulStorage.getMexicoDesignPlan(SimulationStorage.getSimulationDirectory(simulName)); - if (f != null){ + if (f != null && f.canRead()) { if (log.isDebugEnabled()) { log.debug("Import design plan from : " + f.getPath()); } @@ -320,6 +320,11 @@ factors.put(factor.getPath() + factor.getName(), factor); } } + else { + if (log.isInfoEnabled()) { + log.info("No xml design plan file found"); + } + } } catch (Exception eee) { if (log.isErrorEnabled()) { log.error("Can't load old Simulation: " + simulName, eee); @@ -853,8 +858,12 @@ } } - public SensitivityStorage getSensitivity(String name) { - return SensitivityStorage.getSensitivity(name); + /** + * Get current sensitivity calculator instance. + * @return sensitivity calculator + */ + public SensitivityCalculator getSensitivityCalculator() { + return sensitivityCalculator; } public void setSensitivity(String name) { Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-04-21 12:54:14 UTC (rev 2132) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-04-21 12:55:06 UTC (rev 2133) @@ -46,7 +46,6 @@ /** * Test for {@link SimulationService}. * - * * @author chatellier * @version $Revision: 1.0 $ *