r3797 - in trunk/src/main/java/fr/ifremer/isisfish: . datastore ui
Author: echatellier Date: 2012-10-30 10:59:54 +0100 (Tue, 30 Oct 2012) New Revision: 3797 Url: http://forge.codelutin.com/repositories/revision/isis-fish/3797 Log: fixes #1626: Add option to change mapped result's matrix vector implementation class Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2012-10-26 13:12:28 UTC (rev 3796) +++ trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2012-10-30 09:59:54 UTC (rev 3797) @@ -42,6 +42,7 @@ import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.lang3.time.DurationFormatUtils; +import org.nuiton.math.matrix.DoubleBigVector; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.StringUtil; import org.nuiton.util.Version; @@ -924,6 +925,18 @@ return result; } + /** + * L'implementation de la class gérant les implémentations de vecteur de + * matrice pour les fichiers mappés. + * + * @return + * @since 4.2.1.1 + */ + public Class getMappedResultMatrixVectorClass() { + Class result = getOptionAsClass(Option.MAPPED_RESULT_MATRIX_VECTOR_CLASS.key); + return result; + } + ////////////////////////////////////////////////// // Toutes les options disponibles ////////////////////////////////////////////////// @@ -1029,7 +1042,8 @@ // misc options USER_NAME("user.name", n_("isisfish.config.main.userName.description"), System.getProperty("user.name")), SMTP_SERVER("smtpServer", n_("isisfish.config.main.smtpServer.description"), "smtp"), - USER_MAIL("userMail", n_("isisfish.config.main.userMail.description"), USER_NAME.key + "@" + VCS_HOST_NAME.key); + USER_MAIL("userMail", n_("isisfish.config.main.userMail.description"), USER_NAME.key + "@" + VCS_HOST_NAME.key), + MAPPED_RESULT_MATRIX_VECTOR_CLASS("mapped.result.matrix.vector.class", n_("isisfish.config.mapped.result.matrix.vector.class.description"), DoubleBigVector.class.getName()); public String key; public String description; Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2012-10-26 13:12:28 UTC (rev 3796) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2012-10-30 09:59:54 UTC (rev 3797) @@ -25,23 +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 fr.ifremer.isisfish.util.BitUtil; +import static org.nuiton.i18n.I18n._; + import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; @@ -54,6 +39,7 @@ 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.io.IOUtils; @@ -61,6 +47,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.math.matrix.DoubleBigMappedVector; +import org.nuiton.math.matrix.DoubleBigVector; import org.nuiton.math.matrix.MatrixFactory; import org.nuiton.math.matrix.MatrixHelper; import org.nuiton.math.matrix.MatrixIterator; @@ -73,7 +60,24 @@ import org.nuiton.util.ArrayUtil; import org.nuiton.util.HashList; -import static org.nuiton.i18n.I18n._; +import fr.ifremer.isisfish.IsisFish; +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 fr.ifremer.isisfish.util.BitUtil; /** * Cette classe permet de conserver des résultats de simulation. Elle permet @@ -93,7 +97,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); + protected MatrixFactory matrixFactory = MatrixFactory.getInstance(DoubleBigVector.class); protected SimulationStorage simulation = null; protected RandomAccessFile raf; @@ -313,7 +317,7 @@ /** read data from file */ - public ResultMapped(RandomAccessFile raf, long offset) throws IOException { + public ResultMapped(MatrixFactory matrixFactory, RandomAccessFile raf, long offset) throws IOException { this.raf = raf; this.offset = offset; ResultHeaderMatrix header = ResultHeaderMatrix.read(raf, offset); @@ -413,6 +417,12 @@ */ public ResultMappedStorage(SimulationStorage simulation) throws IOException { this.simulation = simulation; + + // instanciation de la factory avec l'implementation + // choisie dans la config + Class vectorClass = IsisFish.config.getMappedResultMatrixVectorClass(); + matrixFactory = MatrixFactory.getInstance(vectorClass); + File file = SimulationStorage.getResultFile(simulation.getDirectory()); // il faut toujours ouvrir en 'rw' car sinon les matrices n'arrive pas @@ -422,7 +432,7 @@ // on lit les donnees deja presente offset = 0; while (offset < raf.length()) { - ResultMapped r = new ResultMapped(raf, offset); + ResultMapped r = new ResultMapped(matrixFactory, raf, offset); storeResult(r); offset += r.size(); } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2012-10-26 13:12:28 UTC (rev 3796) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2012-10-30 09:59:54 UTC (rev 3797) @@ -227,6 +227,7 @@ modelBuilder.addOption(IsisConfig.Option.SIMULATOR_IN_MAXTHREADS); modelBuilder.addOption(IsisConfig.Option.SIMULATOR_SUB_MAXPROCESS); modelBuilder.addOption(IsisConfig.Option.SIMULATOR_SUB_MAXMEMORY); + modelBuilder.addOption(IsisConfig.Option.MAPPED_RESULT_MATRIX_VECTOR_CLASS); // category database vcs modelBuilder.addCategory(_("isisfish.config.category.officialvcs"), _("isisfish.config.category.officialvcs.description"));
participants (1)
-
echatellier@users.forge.codelutin.com