r3714 - in trunk/src: main/java/fr/ifremer/isisfish/simulator main/java/fr/ifremer/isisfish/util test/java/fr/ifremer/isisfish/util
Author: echatellier Date: 2012-08-08 18:29:42 +0200 (Wed, 08 Aug 2012) New Revision: 3714 Url: http://forge.codelutin.com/repositories/revision/isis-fish/3714 Log: Ajout d'un test unitaire sur l'import de matrice n dimensions Added: trunk/src/test/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapperTest.java Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2012-08-08 15:17:34 UTC (rev 3713) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationContext.java 2012-08-08 16:29:42 UTC (rev 3714) @@ -26,28 +26,19 @@ package fr.ifremer.isisfish.simulator; import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; -import org.apache.commons.beanutils.BeanUtils; -import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; -import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.entities.Variable; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils; -import fr.ifremer.isisfish.types.TimeStep; /** * Keep all information on one simulation. @@ -322,7 +313,7 @@ /** * Script directory to use. * - * Used to chnage isis-database-3 directory in running simulation context. + * Used to change isis-database-3 directory in running simulation context. * * @param scriptDirectory */ Modified: trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java 2012-08-08 15:17:34 UTC (rev 3713) +++ trunk/src/main/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapper.java 2012-08-08 16:29:42 UTC (rev 3714) @@ -28,6 +28,7 @@ import org.nuiton.math.matrix.SemanticMapper; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaEntity; import fr.ifremer.isisfish.IsisFishDAOHelper; import fr.ifremer.isisfish.simulator.SimulationContext; @@ -64,8 +65,13 @@ try { clazz = Class.forName("fr.ifremer.isisfish.entities." + typeName); } catch (Exception ex) { - log.warn("Can't find class for " + typeName, ex); - clazz = String.class; + try { + clazz = Class.forName("fr.ifremer.isisfish.types." + typeName); + } catch (Exception ex2) { + log.warn("Can't find class for name " + typeName, ex2); + clazz = String.class; + } + } return clazz; } @@ -84,9 +90,13 @@ // In simulation context : Object value = null; try { - TopiaContext context = SimulationContext.get().getDB(); - TopiaDAO dao = IsisFishDAOHelper.getDAO(context, type); - value = dao.findByProperty("name", valueId); + if (TopiaEntity.class.isAssignableFrom(type)) { + TopiaContext context = SimulationContext.get().getDB(); + TopiaDAO dao = IsisFishDAOHelper.getDAO(context, type); + value = dao.findByProperty("name", valueId); + } else { + value = ConverterUtil.getConverter(null).convert(valueId, type); + } } catch (Exception ex) { log.warn("Can't get value for " + valueId, ex); value = valueId; Added: trunk/src/test/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapperTest.java =================================================================== --- trunk/src/test/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapperTest.java (rev 0) +++ trunk/src/test/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapperTest.java 2012-08-08 16:29:42 UTC (rev 3714) @@ -0,0 +1,149 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2010 Ifremer, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 2 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 Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-2.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.util; + +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.net.URL; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.math.matrix.MatrixFactory; +import org.nuiton.math.matrix.MatrixND; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; + +import fr.ifremer.isisfish.AbstractIsisFishTest; +import fr.ifremer.isisfish.IsisFishDAOHelper; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.entities.Gear; +import fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.entities.Zone; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.types.TimeStep; + +/** + * Test que le semantic mapper est bien pris en compte lors de l'import + * de matrix nd et qu'il converti bien tous les types requis. + * + * @author echatellier + * @since 4.1.0.3 + */ +public class IsisMatrixSemanticMapperTest extends AbstractIsisFishTest { + + @Before + public void setUp() throws IOException, TopiaException { + MatrixFactory.setSemanticMapper(new IsisMatrixSemanticMapper()); + URL zipURL = this.getClass().getResource("/simulations/test-nonregression-20090203.zip"); + SimulationStorage simRef = SimulationStorage.importAndRenameZip(new File(zipURL.getFile()), "test-nonregression"); + SimulationContext.get().setSimulationStorage(simRef); + } + + /** + * Test la conversion des entités. + * @throws IOException + * @throws TopiaException + */ + @Test + public void testImportEntityImportString() throws IOException, TopiaException { + String data = "[1, 1, 1]\n" + + "String:testpopulation\n" + + "String:Testengin\n" + + "String:Zone test1\n" + + "0;0;0;42.0"; + + TopiaContext tx = SimulationContext.get().getDB(); + + List[] sems = new List[] { + Collections.singletonList(IsisFishDAOHelper.getPopulationDAO(tx).findByName("test population")), + Collections.singletonList(IsisFishDAOHelper.getGearDAO(tx).findByName("Testengin")), + Collections.singletonList(IsisFishDAOHelper.getZoneDAO(tx).findByName("Zone test1")), + }; + MatrixND m = MatrixFactory.getInstance().create(sems); + m.importCSV(new StringReader(data), null); + + Assert.assertEquals(42.0, m.getValue(0, 0, 0), 0.001); + } + + /** + * Test la conversion des entités. + * @throws IOException + * @throws TopiaException + */ + @Test + public void testImportEntity() throws IOException, TopiaException { + String data = "[1, 1, 1]\n" + + "Population:test population\n" + + "Gear:Testengin\n" + + "Zone:Zone test1\n" + + "0;0;0;42.0"; + + TopiaContext tx = SimulationContext.get().getDB(); + + List[] sems = new List[] { + Collections.singletonList(IsisFishDAOHelper.getPopulationDAO(tx).findByName("test population")), + Collections.singletonList(IsisFishDAOHelper.getGearDAO(tx).findByName("Testengin")), + Collections.singletonList(IsisFishDAOHelper.getZoneDAO(tx).findByName("Zone test1")), + }; + MatrixND m = MatrixFactory.getInstance().create(sems); + m.importCSV(new StringReader(data), null); + + Assert.assertEquals(42.0, m.getValue(0, 0, 0), 0.001); + } + + /** + * Test la conversion des entités et TimeStep + * @throws IOException + * @throws TopiaException + */ + @Test + public void testImportEntityTimeStep() throws IOException, TopiaException { + String data = "[1, 1, 2]\n" + + "Population:test population\n" + + "Gear:Testengin\n" + + "TimeStep:0,1\n" + + "0;0;0;1.0\n" + + "0;0;1;2.0"; + + TopiaContext tx = SimulationContext.get().getDB(); + + List[] sems = new List[] { + Collections.singletonList(IsisFishDAOHelper.getPopulationDAO(tx).findByName("test population")), + Collections.singletonList(IsisFishDAOHelper.getGearDAO(tx).findByName("Testengin")), + Arrays.asList(new TimeStep(0), new TimeStep(1)), + }; + MatrixND m = MatrixFactory.getInstance().create(sems); + m.importCSV(new StringReader(data), null); + + Assert.assertEquals(1.0, m.getValue(0, 0, 0), 0.001); + Assert.assertEquals(2.0, m.getValue(0, 0, 1), 0.001); + } +} Property changes on: trunk/src/test/java/fr/ifremer/isisfish/util/IsisMatrixSemanticMapperTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL
participants (1)
-
echatellier@users.forge.codelutin.com