Author: echatellier Date: 2012-01-11 16:48:04 +0100 (Wed, 11 Jan 2012) New Revision: 3586 Url: http://forge.codelutin.com/repositories/revision/isis-fish/3586 Log: #716 : Can't found factor name in simulation context Added: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2012-01-10 13:52:45 UTC (rev 3585) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2012-01-11 15:48:04 UTC (rev 3586) @@ -37,6 +37,7 @@ import org.nuiton.topia.TopiaException; import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils; /** * Keep all information on one simulation. @@ -347,12 +348,17 @@ double result = defaultValue; - if (contextEquationValue.containsKey(key)) { + // for equation, name is set not R escaped in database by swing ui + // but is set escaped in prescripts because of r escape + // need to be escaped here + String localKey = SensitivityUtils.espaceFactorName(key); - Double value = contextEquationValue.get(key); + if (contextEquationValue.containsKey(localKey)) { + + Double value = contextEquationValue.get(localKey); if (log.isTraceEnabled()) { - log.trace("Found key '" + key + "' current value = " + value); + log.trace("Found key '" + localKey + "' current value = " + value); } // since 3.4.0.0, operator is always * @@ -360,7 +366,7 @@ } else { if (log.isTraceEnabled()) { - log.trace("No key defined for key '" + key + "' in context"); + log.trace("No key defined for key '" + localKey + "' in context"); } } Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2012-01-10 13:52:45 UTC (rev 3585) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2012-01-11 15:48:04 UTC (rev 3586) @@ -97,6 +97,7 @@ import fr.ifremer.isisfish.simulator.sensitivity.Scenario; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils; import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain; @@ -559,9 +560,7 @@ } // also fix factor name for sensitivity calculator - String name = factor.getName(); - name = StringUtil.unaccent(name); - name = name.replaceAll("\\W", "_"); + String name = SensitivityUtils.espaceFactorName(factor.getName()); factor.setName(name); } } Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2012-01-10 13:52:45 UTC (rev 3585) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2012-01-11 15:48:04 UTC (rev 3586) @@ -91,7 +91,6 @@ for (Factor factor:factors){ if (factor instanceof FactorGroup && ((FactorGroup) factor).isDiscrete()) { - System.out.println("Discrete group"); List<Factor> subfactors = ((FactorGroup) factor).getFactors(); int cardinality = subfactors.get(0).getCardinality(); for (Factor subfactor:subfactors) { Added: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2012-01-11 15:48:04 UTC (rev 3586) @@ -0,0 +1,54 @@ +/* + * #%L + * + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 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 Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.simulator.sensitivity; + +import org.apache.commons.lang3.StringUtils; + +/** + * Utility methods for sensitivity analysis. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class SensitivityUtils { + + /** + * Escape factor name. + * + * R don't like factor name with special characters such as "." and accents. + * @param factorName factor name to escape + * @return escaped factor name + * @since 4.0.0.2 + */ + public static String espaceFactorName(String factorName) { + String name = StringUtils.stripAccents(factorName); + name = name.replaceAll("\\W", "_"); + return name; + } +} Property changes on: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java (rev 0) +++ trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java 2012-01-11 15:48:04 UTC (rev 3586) @@ -0,0 +1,50 @@ +/* + * #%L + * + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 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 Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.simulator.sensitivity; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Test for SensitivityUtils class. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class SensitivityUtilsTest { + + /** + * Test le résultat attendu de l'echappement des noms de facteurs. + */ + @Test + public void testEspaceFactorName() { + Assert.assertEquals("test_factor_pour_R", SensitivityUtils.espaceFactorName("test factor pour R")); + Assert.assertEquals("factor2_selectivite", SensitivityUtils.espaceFactorName("factor2.sélectivité")); + } +} Property changes on: trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtilsTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL