Author: echatellier Date: 2012-09-04 10:18:20 +0200 (Tue, 04 Sep 2012) New Revision: 3756 Url: http://forge.codelutin.com/repositories/revision/isis-fish/3756 Log: Comment current development to prepare release. Modified: trunk/pom.xml trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-09-02 23:09:00 UTC (rev 3755) +++ trunk/pom.xml 2012-09-04 08:18:20 UTC (rev 3756) @@ -62,7 +62,7 @@ <dependency> <groupId>org.nuiton.matrix</groupId> <artifactId>nuiton-matrix</artifactId> - <version>2.3.2-SNAPSHOT</version> + <version>2.3.1</version> <scope>compile</scope> </dependency> Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2012-09-02 23:09:00 UTC (rev 3755) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2012-09-04 08:18:20 UTC (rev 3756) @@ -25,22 +25,8 @@ package fr.ifremer.isisfish.datastore; -import fr.ifremer.isisfish.IsisFishDAOHelper; -import fr.ifremer.isisfish.IsisFishException; -import fr.ifremer.isisfish.IsisFishRuntimeException; -import fr.ifremer.isisfish.entities.ActiveRule; -import fr.ifremer.isisfish.entities.ActiveRuleDAO; -import fr.ifremer.isisfish.entities.Population; -import fr.ifremer.isisfish.export.Export; -import fr.ifremer.isisfish.export.SensitivityExport; -import fr.ifremer.isisfish.rule.Rule; -import fr.ifremer.isisfish.simulator.SimulationContext; -import fr.ifremer.isisfish.simulator.SimulationException; -import fr.ifremer.isisfish.simulator.SimulationPlan; -import fr.ifremer.isisfish.simulator.SimulationResultGetter; -import fr.ifremer.isisfish.simulator.SimulationResultListener; -import fr.ifremer.isisfish.types.Month; -import fr.ifremer.isisfish.types.TimeStep; +import static org.nuiton.i18n.I18n._; + import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; @@ -48,31 +34,41 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; + import org.apache.commons.collections.BidiMap; import org.apache.commons.collections.bidimap.DualHashBidiMap; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.math.matrix.DoubleBigMappedVector; -import org.nuiton.math.matrix.MatrixFactory; -import org.nuiton.math.matrix.MatrixHelper; import org.nuiton.math.matrix.MatrixIterator; import org.nuiton.math.matrix.MatrixND; -import org.nuiton.math.matrix.MatrixSemanticsDecorator; -import org.nuiton.math.matrix.SemanticsDecorator; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.ArrayUtil; import org.nuiton.util.HashList; -import static org.nuiton.i18n.I18n._; +import fr.ifremer.isisfish.IsisFishDAOHelper; +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.IsisFishRuntimeException; +import fr.ifremer.isisfish.entities.ActiveRule; +import fr.ifremer.isisfish.entities.ActiveRuleDAO; +import fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.export.Export; +import fr.ifremer.isisfish.export.SensitivityExport; +import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.simulator.SimulationException; +import fr.ifremer.isisfish.simulator.SimulationPlan; +import fr.ifremer.isisfish.simulator.SimulationResultGetter; +import fr.ifremer.isisfish.simulator.SimulationResultListener; +import fr.ifremer.isisfish.types.Month; +import fr.ifremer.isisfish.types.TimeStep; /** * Cette classe permet de conserver des résultats de simulation. Elle permet @@ -92,7 +88,7 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(ResultMappedStorage.class); - static protected MatrixFactory matrixFactory = MatrixFactory.getInstance(DoubleBigMappedVector.class); + //static protected MatrixFactory matrixFactory = MatrixFactory.getInstance(DoubleBigMappedVector.class); protected SimulationStorage simulation = null; protected RandomAccessFile raf; @@ -109,7 +105,7 @@ * Convertie une entite, month, timestep en string et inversement. * Entity = "TopiaId:Entity.toString" */ - static protected class EntitySemanticsDecorator implements SemanticsDecorator { + static protected class EntitySemanticsDecorator /*implements SemanticsDecorator*/ { static final private String SEP = ":"; protected TopiaContext tx; @@ -227,8 +223,8 @@ long dataOffset = offset + size; int dataSize = raf.readInt(); // en mettant un int on est limite a 2Go x 8 (double) = 16Go par matrice - DoubleBigMappedVector data = new DoubleBigMappedVector(raf, dataOffset, dataSize); - this.matrix = matrixFactory.create(name, sems, dimNames, data); + //DoubleBigMappedVector data = new DoubleBigMappedVector(raf, dataOffset, dataSize); + //this.matrix = matrixFactory.create(name, sems, dimNames, data); size += dataSize * 8; /* un double est sur 8 bytes*/ this.size = size; @@ -245,7 +241,7 @@ String[] dimNames = matrix.getDimensionNames(); int[] dims = matrix.getDim(); List[] sems = matrix.getSemantics(); - int dataSize = MatrixHelper.getVectorSize(dims); // en mettant un int on est limite a 2Go x 8 (double) = 16Go par matrice + int dataSize = 0; //MatrixHelper.getVectorSize(dims); // en mettant un int on est limite a 2Go x 8 (double) = 16Go par matrice raf.write(step.getStep()); // ecriture du pas de temps raf.writeUTF(name); // ecriture du nom du resultat @@ -259,13 +255,13 @@ } // conversion et enregistrement des semantiques - SemanticsDecorator deco = new EntitySemanticsDecorator(); + //SemanticsDecorator deco = new EntitySemanticsDecorator(); for (int i=0; i<sems.length; i ++) { List l = sems[i]; List undecorate = new ArrayList(l.size()); sems[i] = undecorate; for (Object o : l) { - o = deco.undecorate(o); + //o = deco.undecorate(o); undecorate.add(o); raf.writeUTF(o.toString()); // ecriture de chaque dimension } @@ -278,8 +274,8 @@ long dataOffset = offset + size; // on cree la nouvelle matrice comme il faut (semantique non decore) - DoubleBigMappedVector data = new DoubleBigMappedVector(raf, dataOffset, dataSize); - this.matrix = MatrixFactory.getInstance().create(name, sems, dimNames, data); + //DoubleBigMappedVector data = new DoubleBigMappedVector(raf, dataOffset, dataSize); + //this.matrix = MatrixFactory.getInstance().create(name, sems, dimNames, data); // et on met les valeurs de l'ancienne dans la nouvelle this.matrix.paste(matrix); @@ -309,10 +305,9 @@ public MatrixND getMatrix(TopiaContext tx) { // on met la matrice dans un decorateur pour convertir automatiquement les semantiques - MatrixND result = new MatrixSemanticsDecorator(matrix, new EntitySemanticsDecorator(tx)); - return result; + //MatrixND result = new MatrixSemanticsDecorator(matrix, new EntitySemanticsDecorator(tx)); + return null; } - } /** @@ -325,7 +320,15 @@ public ResultMappedStorage(SimulationStorage simulation) throws IOException { this.simulation = simulation; File file = SimulationStorage.getResultFile(simulation.getDirectory()); - raf = new RandomAccessFile(file, "rw"); + + // le fichier semble se corrompre à la relecture (ouverture + // en lecture seule s'il existe déjà) + if (file.isFile()) { + raf = new RandomAccessFile(file, "r"); + } else { + raf = new RandomAccessFile(file, "rw"); + } + // on lit les donnees deja presente offset = 0; while (offset < raf.length()) { @@ -708,7 +711,7 @@ } // creation de la matrice resultat - resultMat = matrixFactory.create(name, sem, dimNames); + //resultMat = matrixFactory.create(name, sem, dimNames); // recuperation du resultat pour chaque date de la simulation, de Date(0) à lastDate for (ResultMapped result : results.values()) { @@ -732,7 +735,7 @@ // on decore la matrice resultat au dernier moment, tous les calcules // ce font avec les strings tx = getTx(tx); - resultMat = new MatrixSemanticsDecorator(resultMat, new EntitySemanticsDecorator(tx)); + //resultMat = new MatrixSemanticsDecorator(resultMat, new EntitySemanticsDecorator(tx)); } return resultMat; } Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2012-09-02 23:09:00 UTC (rev 3755) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2012-09-04 08:18:20 UTC (rev 3756) @@ -43,6 +43,7 @@ import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.util.FileUtil; +import org.nuiton.util.Version; import org.nuiton.util.ZipUtil; import fr.ifremer.isisfish.IsisFish; @@ -451,13 +452,25 @@ */ public ResultStorage getResultStorage() throws StorageException { if (resultStorage == null) { + + // depuis la version 4.1.1.1 le stockage a changé de base + // de données à fichier mappe pour les resultat + // mais il faut pouvoir relire les anciennes simulations + /*SimulationParameter param = getParameter(); + String isisFishVersion = param.getIsisFishVersion(); + Version simuVersion = new Version(isisFishVersion); + Version version4111 = new Version(4,1,1,1); + // instancier un ResultStorage ou un ResultMappedStorage - //resultStorage = new ResultDatabaseStorage(this); - try { - resultStorage = new ResultMappedStorage(this); - } catch (IOException ex) { - throw new StorageException("Can't get storage", ex); - } + if (simuVersion.before(version4111)) {*/ + resultStorage = new ResultDatabaseStorage(this); + /*} else { + try { + resultStorage = new ResultMappedStorage(this); + } catch (IOException ex) { + throw new StorageException("Can't get storage", ex); + } + }*/ } return resultStorage; }
participants (1)
-
echatellier@users.forge.codelutin.com