Author: chatellier Date: 2009-08-27 10:45:41 +0000 (Thu, 27 Aug 2009) New Revision: 2546 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java Log: Fix matrix convertion Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java 2009-08-27 10:44:20 UTC (rev 2545) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/ConverterUtil.java 2009-08-27 10:45:41 UTC (rev 2546) @@ -22,6 +22,7 @@ import org.apache.commons.beanutils.BeanUtilsBean; import org.apache.commons.beanutils.ConvertUtilsBean; import org.codelutin.math.matrix.MatrixND; +import org.codelutin.math.matrix.MatrixNDImpl; import org.codelutin.topia.TopiaContext; import org.codelutin.topia.persistence.TopiaEntity; @@ -54,6 +55,7 @@ cub.register(new TimeUnitConverter(), TimeUnit.class); cub.register(new RangeOfValuesConverter(), RangeOfValues.class); cub.register(new MatrixConverter(), MatrixND.class); + cub.register(new MatrixConverter(), MatrixNDImpl.class); // ... et inversement cub.register(new StringConverter(), String.class); Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java 2009-08-27 10:44:20 UTC (rev 2545) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java 2009-08-27 10:45:41 UTC (rev 2546) @@ -21,17 +21,22 @@ import java.io.IOException; import java.io.StringWriter; import java.io.Writer; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.Assert; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.ConvertUtilsBean; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.math.matrix.MatrixFactory; import org.codelutin.math.matrix.MatrixND; +import org.codelutin.math.matrix.MatrixNDImpl; import org.codelutin.topia.TopiaContext; import org.codelutin.topia.TopiaException; import org.junit.After; @@ -42,6 +47,8 @@ import fr.ifremer.isisfish.IsisFishDAOHelper; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.StorageException; +import fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.entities.PopulationImpl; import fr.ifremer.isisfish.entities.PopulationSeasonInfo; import fr.ifremer.isisfish.entities.PopulationSeasonInfoDAO; import fr.ifremer.isisfish.entities.VesselType; @@ -323,4 +330,25 @@ Assert.assertTrue(scriptContent.indexOf("\"test equation.PopulationEquation.K1\", 0.68, \"-\"") != -1); } + + /** + * Test que les chaine represantant des matrices sont correctement + * transformée en MatrixND. + * + * @throws IllegalAccessException + * @throws InvocationTargetException + */ + @Test + public void testMatrixFactorBeanUtils() throws IllegalAccessException, InvocationTargetException { + String factorAsString = "[isisfish.population.capturability,[10, 3],[\"isisfish.population.group\", \"isisfish.population.season\"],[[org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369174#0.28237914052272917), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369077#0.6322222161721446), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369117#0.9144815378932778), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369145#0.40303037362612626), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369157#0.7385235788350787), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369129#0.7322508787399089), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369123#0.9794507456491978), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369109#0.6142040515900707), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369163#0.4236915489033358), org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369151#0.9128085136422524)], [org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationSeasonInfo#1223471369187#0.14365248282751242), java.lang.String(org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationSeasonInfo#1223471369341#0.8526969683760768)), java.lang.String(org.codelutin.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationSeasonInfo#1223471369569#0.18989201268161482))]],[[0.0, 0.0, 0.0], [2.2001803893501406E-4, 1.7501434915285209E-4, 1.0300844550139294E-4], [6.600541168050422E-4, 0.0023401918686724223, 0.0011700959343362112], [4.040331260442985E-4, 0.002400196788381971, 0.0014301172530775913], [2.2401836691565065E-4, 0.002060168910027859, 7.160587085339548E-4], [9.530781413866745E-5, 0.0017101402117221545, 4.380359138797098E-4], [6.710550187517929E-5, 0.0011800967542878026, 2.830232046300408E-4], [3.530289442911816E-5, 7.840642842047773E-4, 1.6901385718189713E-4], [2.030166450173084E-5, 6.250512469744717E-4, 1.1600951143846195E-4], [1.0200836350623379E-5, 4.0103288005882107E-4, 8.360685479530534E-5]]]"; + Population p = new PopulationImpl(); + p.setCapturability(MatrixFactory.getInstance().create("ee" , new List[]{ Collections.singletonList("eee")})); + + ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null); + Object value = beanUtils.convert(factorAsString, MatrixNDImpl.class); + BeanUtils.setProperty(p, "capturability", value); + + Assert.assertNotNull(value); + Assert.assertTrue(value instanceof MatrixND); + } }