r4165 - in trunk/src/main/java/fr/ifremer/isisfish: datastore simulator
Author: bpoussin Date: 2014-12-18 12:17:02 +0000 (Thu, 18 Dec 2014) New Revision: 4165 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4165 Log: fixes #1728: Matrix returned by ResultManager must be not modifiable fixes #1729: Add new method on ResultManager to get matrix for multiple step Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorage.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.java Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -62,7 +62,6 @@ import fr.ifremer.isisfish.simulator.SimulationException; import fr.ifremer.isisfish.simulator.SimulationPlan; import fr.ifremer.isisfish.simulator.SimulationResultGetter; -import fr.ifremer.isisfish.types.Month; import fr.ifremer.isisfish.types.TimeStep; /** @@ -76,7 +75,11 @@ * * Mise a jour: $Date$ * par : $Author$ + * + * @deprecated {@link ResultStorageCSV} replace this implementation. This class + * will be remove in 5.0.0.0 */ +@Deprecated public class ResultDatabaseStorage implements SimulationResultGetter, ResultStorage { // ResultDatabaseStorage /** to use log facility, just put in your code: log.info(\"...\"); */ @@ -867,4 +870,47 @@ // return rules; // } + @Override + public MatrixND getMatrix(SimulationContext context, List<TimeStep> steps, String name) { + MatrixND result = null; + try { + result = getMatrix(steps, name, context.getDbResult()); + } catch (TopiaException eee) { + if (log.isWarnEnabled()) { + log.warn(t("Can't get result: %1$s", name), eee); + } + } + return result; + } + + @Override + public MatrixND getMatrix(TimeStep step, Population pop, String name, TopiaContext tx) { + String newName = name + " " + pop; + return getMatrix(step, newName, tx); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name) { + String newName = name + " " + pop; + return getMatrix(steps, newName, null); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name, TopiaContext tx) { + String newName = name + " " + pop; + return getMatrix(steps, newName, tx); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, String name) { + return getMatrix(steps, name, null); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, String name, TopiaContext tx) { + MatrixND result = getMatrix(name, tx); + result = result.getSubMatrix(0, steps.toArray()); + return result; + } + } // ResultDatabaseStorage Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -61,7 +61,11 @@ * * Mise a jour: $Date$ * par : $Author$ + * + * @deprecated {@link ResultStorageCSV} replace this implementation. This class + * will be remove in 5.0.0.0 */ +@Deprecated public class ResultMappedStorage extends ResultStorageAbstract { // ResultStorage /** to use log facility, just put in your code: log.info(\"...\"); */ Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorage.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorage.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -108,6 +108,8 @@ */ public MatrixND getMatrix(TimeStep step, Population pop, String name); + public MatrixND getMatrix(TimeStep step, Population pop, String name, TopiaContext tx); + public MatrixND getMatrix(TimeStep step, String name); /** @@ -122,6 +124,32 @@ public MatrixND getMatrix(TimeStep step, String name, TopiaContext tx); /** + * Retourne la matrice stocke pour des pas de temps + * @param steps les pas de temps que l'on souhaite + * @param pop la population pour lequelle on souhaite le resultat + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name); + + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name, TopiaContext tx); + + public MatrixND getMatrix(List<TimeStep> steps, String name); + + /** + * Retourne la matrice stocke pour des pas de temps. + * + * @param steps les pas de temps que l'on souhaite + * @param name le nom des resultats dont on veut la matrice + * @param tx TopiaContext a utiliser pour recuperer les resultats et donc les semantiques + * @return La matrice demandée ou {@code null} si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(List<TimeStep> steps, String name, TopiaContext tx); + + + /** * Retourne une matrice contenant tous les pas de temps. * @param pop la population pour lequel on souhaite la matrice * @param name le nom des resultats dont on veut une matrice globale. @@ -150,6 +178,7 @@ */ public MatrixND getMatrix(String name, TopiaContext tx); + /** * Get last simulation date. * Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -235,6 +235,7 @@ * result storage type * @return */ + @Override public String getInfo() { return getClass().getSimpleName() + " No more information"; } @@ -477,6 +478,7 @@ * @return La matrice demandée ou null si aucune matrice ne correspond a * la demande. */ + @Override public MatrixND getMatrix(TimeStep step, Population pop, String name, TopiaContext tx) { String newName = name + " " + pop; return getMatrix(step, newName, tx); @@ -491,10 +493,15 @@ * Retourne une matrice contenant tous les pas de temps. * * @param name le nom des resultats dont on veut une matrice globale. + * @return copy of result matrix */ @Override public MatrixND getMatrix(TimeStep step, String name, TopiaContext tx) { MatrixND mat = readResult(step, name); + if (mat != null) { + mat = mat.copy(); + } + mat = decorate(mat, tx); return mat; } @@ -532,6 +539,7 @@ /** * Retourne une matrice contenant tous les pas de temps. * @param name le nom des resultats dont on veut une matrice globale. + * @return new Matrix */ @Override public MatrixND getMatrix(String name, TopiaContext tx) { @@ -547,6 +555,30 @@ steps.add(step); } + MatrixND result = getMatrix(steps, name, tx); + return result; + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name) { + String newName = name + " " + pop; + return getMatrix(steps, newName, null); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name, TopiaContext tx) { + String newName = name + " " + pop; + return getMatrix(steps, newName, tx); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, String name) { + return getMatrix(steps, name, null); + } + + @Override + public MatrixND getMatrix(List<TimeStep> steps, String name, TopiaContext tx) { + log.debug("Get result: " + name); // collect de toutes les matrices existantes Map<TimeStep, MatrixND> results = new LinkedHashMap<TimeStep, MatrixND>(); @@ -650,6 +682,18 @@ } + public MatrixND getMatrix(SimulationContext context, List<TimeStep> steps, String name) { + MatrixND result = null; + try { + result = getMatrix(steps, name, context.getDB()); + } catch (TopiaException eee) { + if (log.isWarnEnabled()) { + log.warn(String.format("Can't get result: %1$s", name), eee); + } + } + return result; + } + /* * @see fr.ifremer.isisfish.simulator.SimulationResultGetter#getMatrix(fr.ifremer.isisfish.simulator.SimulationContext, java.lang.String) */ Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -28,7 +28,6 @@ import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.simulator.SimulationControl; import fr.ifremer.isisfish.types.TimeStep; -import fr.ifremer.isisfish.util.ConverterUtil; import fr.ifremer.isisfish.util.SimpleParser; import java.io.BufferedWriter; import java.io.File; @@ -37,7 +36,6 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; -import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.nio.charset.Charset; Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -53,8 +53,9 @@ * Mise a jour: $Date$ * par : $Author$ * - * @deprecated ResultStorageCSV now support no storage and in memory usage, will be removed in version 4.4 + * @deprecated ResultStorageCSV now support no storage and in memory usage, will be removed in version 5.0.0.0 */ +@Deprecated public class ResultStorageInMemory extends ResultStorageAbstract { /** to use log facility, just put in your code: log.info(\"...\"); */ Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -242,6 +242,13 @@ return getMatrix(step, name); } + /** + * Retourne la matrice stocke pour un pas de temps + * @param step le pas de temps que l'on souhaite + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ public MatrixND getMatrix(TimeStep step, String name){ MatrixND result = null; if (getter != null) { @@ -249,7 +256,36 @@ } return result; } - + + /** + * Retourne la matrice stocke pour des pas de temps + * @param steps les pas de temps que l'on souhaite + * @param pop la population pour lequelle on souhaite le resultat + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name){ + name += " " + pop; + return getMatrix(steps, name); + } + + /** + * Retourne la matrice stocke pour des pas de temps + * @param steps les pas de temps que l'on souhaite + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(List<TimeStep> steps, String name){ + MatrixND result = null; + if (getter != null) { + result = getter.getMatrix(context, steps, name); + } + return result; + } + + /** * Retourne une matrice contenant tous les pas de temps. * @param pop la population pour lequel on souhaite la matrice Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.java 2014-12-18 11:19:15 UTC (rev 4164) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationResultGetter.java 2014-12-18 12:17:02 UTC (rev 4165) @@ -28,6 +28,7 @@ import org.nuiton.math.matrix.MatrixND; import fr.ifremer.isisfish.types.TimeStep; +import java.util.List; /** * Some SimulationResultListener can implement this interface to show that can @@ -39,14 +40,24 @@ /** * Retourne la matrice stocke pour un pas de temps. - * + * * @param step le pas de temps que l'on souhaite * @param name le nom des resultats dont on veut la matrice * @return La matrice demandée ou null si aucune matrice ne correspond a * la demande. */ public MatrixND getMatrix(SimulationContext context, TimeStep step, String name); - + + /** + * Retourne la matrice stocke pour un ensemble de pas de temps. + * + * @param steps les pas de temps que l'on souhaite + * @param name le nom des resultats dont on veut la matrice + * @return La matrice demandée ou null si aucune matrice ne correspond a + * la demande. + */ + public MatrixND getMatrix(SimulationContext context, List<TimeStep> steps, String name); + /** * Retourne une matrice contenant tous les pas de temps. *
participants (1)
-
bpoussin@users.forge.codelutin.com