r4198 - in trunk: . src/main/java/fr/ifremer/isisfish src/main/java/fr/ifremer/isisfish/datastore/migration src/main/java/fr/ifremer/isisfish/entities src/main/java/fr/ifremer/isisfish/equation src/main/java/fr/ifremer/isisfish/export src/main/java/fr/ifremer/isisfish/simulator src/main/java/fr/ifremer/isisfish/types src/main/java/fr/ifremer/isisfish/ui/input src/main/resources src/main/resources/i18n src/main/xmi src/test/resources/test-database/simulators
Author: echatellier Date: 2015-04-21 09:20:51 +0000 (Tue, 21 Apr 2015) New Revision: 4198 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4198 Log: fixes #6194: changement reproduction/recrutement Added: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationRecruitmentEquation.java trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionData.java trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionDataMap.java Modified: trunk/pom.xml trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx trunk/src/main/resources/i18n/isis-fish_en_GB.properties trunk/src/main/resources/i18n/isis-fish_fr_FR.properties trunk/src/main/resources/sensitivity.properties trunk/src/main/xmi/isis-fish.zargo trunk/src/test/resources/test-database/simulators/DefaultSimulator.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/pom.xml 2015-04-21 09:20:51 UTC (rev 4198) @@ -11,7 +11,7 @@ <groupId>fr.ifremer</groupId> <artifactId>isis-fish</artifactId> - <version>4.4.0.0-SNAPSHOT</version> + <version>4.4.0.0-rc-1-SNAPSHOT</version> <!-- POM Relationships : Inheritance : Dependencies --> <dependencies> Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -1112,7 +1112,7 @@ public static enum Option implements ConfigOptionDef { CONFIG_FILE(CONFIG_FILE_NAME, n("isisfish.config.main.configFileName.description"), "isis-config-" + ISIS_FISH_MAJOR_VERSION), - ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + ISIS_FISH_MAJOR_VERSION), + ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + ISIS_FISH_MAJOR_VERSION + "-rc"), COMPILATION_DIRECTORY("compilation.directory", n("isisfish.config.main.compileDirectory.description"), "${isis.home.directory}" + File.separator + "isis-build"), MONITORING_DIRECTORY("monitoring.directory", n("isisfish.config.main.monitoringDirectory.description"), "${isis.home.directory}" + File.separator + "isis-monitoring"), JAVADOC_DIRECTORY("javadoc.directory", n("isisfish.config.main.javadocDirectory.description"), "${isis.home.directory}" + File.separator + "isis-docs"), Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -3,7 +3,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2011 - 2014 Ifremer, Codelutin, Chatellier Eric + * Copyright (C) 2011 - 2015 Ifremer, Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -108,7 +108,7 @@ tx.executeSQL("alter table POPULATION add column groupmax integer default 0"); // migration v 4.4 (mais necessaire de la faire avant sinon le from va planter) - tx.executeSQL("alter table POPULATION add column IF NOT EXISTS reproductionEquationIsRecruitment boolean default false"); + tx.executeSQL("alter table POPULATION add column IF NOT EXISTS RecruitmentEQUATION VARCHAR(255);"); // build new equation for maturity group for (Object[] maturityRow : maturityGroupResult) { Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -3,7 +3,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2012 - 2014 Ifremer, Codelutin, Chatellier Eric + * Copyright (C) 2012 - 2015 Ifremer, Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -59,7 +59,8 @@ protected void prepareMigrationScript(TopiaContextImplementor tx, List<String> queries, boolean showSql, boolean showProgression) throws TopiaException { - - queries.add("alter table POPULATION add column IF NOT EXISTS reproductionEquationIsRecruitment boolean default false"); + + queries.add("alter table POPULATION add column IF NOT EXISTS RecruitmentEQUATION VARCHAR(255);"); + } } Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2006 - 2011 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric + * Copyright (C) 2006 - 2015 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -25,8 +25,8 @@ package fr.ifremer.isisfish.entities; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; -import static org.nuiton.i18n.I18n.n; import java.util.Arrays; import java.util.Collection; @@ -50,9 +50,13 @@ import fr.ifremer.isisfish.equation.PopulationMeanWeight; import fr.ifremer.isisfish.equation.PopulationNaturalDeathRate; import fr.ifremer.isisfish.equation.PopulationPrice; +import fr.ifremer.isisfish.equation.PopulationRecruitmentEquation; import fr.ifremer.isisfish.equation.PopulationReproductionEquation; import fr.ifremer.isisfish.equation.PopulationReproductionRateEquation; +import fr.ifremer.isisfish.types.ReproductionData; +import fr.ifremer.isisfish.types.ReproductionDataMap; import fr.ifremer.isisfish.types.Month; +import fr.ifremer.isisfish.types.TimeStep; /** * PopulationImpl. @@ -132,6 +136,10 @@ if (eq != null) { eq.setName(getName()); } + eq = getRecruitmentEquation(); + if (eq != null) { + eq.setName(getName()); + } eq = getMaturityOgiveEquation(); if (eq != null) { eq.setName(getName()); @@ -173,7 +181,39 @@ t("isisfish.error.change.equation"), eee); } } + + public void setRecruitmentEquationContent(String content) { + try { + Equation eq = getRecruitmentEquation(); + if (eq == null) { + EquationDAO dao = IsisFishDAOHelper + .getEquationDAO(getTopiaContext()); + // create equation + eq = dao.create(); + eq.setCategory("Recruitment"); + eq.setJavaInterface(PopulationRecruitmentEquation.class); + eq.setLanguage(Language.JAVA); + setRecruitmentEquation(eq); + } + + eq.setName(getName()); + + // Fire + String _oldValue = eq.getContent(); + fireOnPreWrite("content", _oldValue, content); + + eq.setContent(content); + eq.update(); + + fireOnPostWrite("content", _oldValue, content); + + } catch (TopiaException eee) { + throw new IsisFishRuntimeException( + t("isisfish.error.change.equation"), eee); + } + } + public void setGrowthContent(String content) { try { Equation eq = getGrowth(); @@ -724,4 +764,22 @@ return result; } + @Override + public MatrixND getRecruitmentMatrix(TimeStep step, Population pop, ReproductionDataMap abundanceAndRepros, + MatrixND result) { + + try { + //recuperation de l'equation de reproduction + Equation e = pop.getRecruitmentEquation(); + + // l'equation doit mettre les resultats dans la matrice result + e.evaluate("step", step, "pop", pop, "aboundanceAndRepros", abundanceAndRepros, + "result", result); + + } catch (Exception eee) { + log.fatal("Error in matrix recruitment creation", eee); + } + return result; + } + } Added: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationRecruitmentEquation.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationRecruitmentEquation.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationRecruitmentEquation.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -0,0 +1,67 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2015 Ifremer, Code Lutin, Chatellier Eric + * %% + * 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 3 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-3.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.equation; + +import org.nuiton.math.matrix.MatrixND; + +import fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.types.ReproductionDataMap; +import fr.ifremer.isisfish.types.TimeStep; +import fr.ifremer.isisfish.util.ArgTypes; +import fr.ifremer.isisfish.util.Args; + +/** + * Population recruitment equation. + * + * @author echatellier + * @since 4.4.0.0 + */ +public interface PopulationRecruitmentEquation { + + /** + * Compute recruitment equation. + * + * @param context simulation context + * @param step current time step + * @param pop population pour lequel on souhaite la matrice de recrutement + * @param reproductions les abundances, biomasses et reproduction correspondant au recrutement courant + * @param result la matrice resultat que l'equation doit remplir, il s'agit + * d'une matrice groupes/zones + * @return la valeur retournée n'est pas utilisée, par exemple 'return 0;' convient. + * @throws Exception + */ + @Args({"context", "step", "pop", "reproductions", "result"}) + @ArgTypes({ + "fr.ifremer.isisfish.simulator.SimulationContext", + "fr.ifremer.isisfish.types.TimeStep", + "fr.ifremer.isisfish.entities.Population", + "fr.ifremer.isisfish.types.AbundanceAndReproMap", + "org.nuiton.math.matrix.MatrixND"}) + public double compute(SimulationContext context, TimeStep step, + Population pop, ReproductionDataMap reproductions, MatrixND result) throws Exception; + +} Property changes on: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationRecruitmentEquation.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -161,12 +161,10 @@ /** * Do single export. * - * @param simulation la simulation pour lequel il faut faire les exports - * @param destdir le repertoire dans lequel il faut ecrire les exports - * @param export le nom des exports a faire + * @param simulationStorage la simulation pour lequel il faut faire les exports + * @param file le fichier de destination + * @param exportName le nom de l'exports a faire * - * @return number of byte written on disk - * * @throws Exception si une erreur survient */ public static void exportToFile(SimulationStorage simulationStorage, String exportName, File file) throws Exception { Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -50,7 +50,7 @@ * Exporte les resultats, cette methode est appellee a la fin de chaque pas * de temps. Elle peut ecrire dans le fichier via le parametre out, * ou collecter les informations et les ecrires a la fin de la simulation - * lorsque la methode {@link #export(fr.ifremer.isisfish.datastore.SimulationStorage, java.io.Writer) + * lorsque la methode {@link #exportEnd(fr.ifremer.isisfish.datastore.SimulationStorage, java.io.Writer)} * est appelee. * * @param simulation la simulation dont on souhaite exporter les resultats Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/PopulationMonitor.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2006 - 2011 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric + * Copyright (C) 2006 - 2015 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -26,6 +26,7 @@ package fr.ifremer.isisfish.simulator; import fr.ifremer.isisfish.IsisFishRuntimeException; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -42,8 +43,11 @@ import fr.ifremer.isisfish.entities.PopulationSeasonInfo; import fr.ifremer.isisfish.entities.Species; import fr.ifremer.isisfish.entities.Zone; +import fr.ifremer.isisfish.types.ReproductionData; +import fr.ifremer.isisfish.types.ReproductionDataMap; import fr.ifremer.isisfish.types.TimeStep; import fr.ifremer.isisfish.types.Month; + import java.util.AbstractMap; import java.util.Collections; @@ -71,15 +75,15 @@ /** La liste des pops monitorer par cette instance */ protected List<Population> pops = null; /** current number of fish by Pop */ - protected Map<Population, MatrixND> Ns = new HashMap<Population, MatrixND>(); + protected Map<Population, MatrixND> Ns = new HashMap<>(); /** reproduction key: <date, pop> value:<MatrixND> */ - protected Map<Population, Map<TimeStep, MatrixND>> reproductions = new HashMap<Population, Map<TimeStep, MatrixND>>(); + protected Map<Population, Map<TimeStep, ReproductionData>> reproductions = new HashMap<>(); /** discard key: <date, pop> value:<MatrixND> */ - protected Map<Population, Map.Entry<TimeStep, MatrixND>> discards = new HashMap<Population, Map.Entry<TimeStep, MatrixND>>(); + protected Map<Population, Map.Entry<TimeStep, MatrixND>> discards = new HashMap<>(); /** catch per population, only last catch is remaining */ - protected Map<Population, MatrixND> catchs = new HashMap<Population, MatrixND>(); + protected Map<Population, MatrixND> catchs = new HashMap<>(); /** catch per population, only last catch is remaining */ - protected Map<Population, MatrixND> holdCatchs = new HashMap<Population, MatrixND>(); + protected Map<Population, MatrixND> holdCatchs = new HashMap<>(); protected double totalHoldCatch = 0; @@ -98,7 +102,7 @@ this.pops = Collections .unmodifiableList(new ArrayList<Population>(pops)); for (Population pop : this.pops) { - reproductions.put(pop, new HashMap<TimeStep, MatrixND>()); + reproductions.put(pop, new HashMap<TimeStep, ReproductionData>()); } } @@ -179,7 +183,7 @@ * @return the reproduction */ public MatrixND getReproduction(TimeStep step, Population pop) { - return this.reproductions.get(pop).get(step); + return this.reproductions.get(pop).get(step).getRepro(); } /** @@ -187,10 +191,12 @@ * * @param step step * @param pop population + * @param aN aboundance + * @param aBiomass biomass * @param repro reproduction to set */ - public void setReproduction(TimeStep step, Population pop, MatrixND repro) { - reproductions.get(pop).put(step, repro); + public void setReproduction(TimeStep step, Population pop, MatrixND aN, MatrixND aBiomass, MatrixND repro) { + reproductions.get(pop).put(step, new ReproductionData(aN, aBiomass, repro)); } /** @@ -199,26 +205,25 @@ * @param pop */ public void applyReproductionMortality(Population pop) { - if (!pop.isReproductionEquationIsRecruitment()){ - for (MatrixND reproduction : reproductions.get(pop).values()) { - if (log.isTraceEnabled()) { - log.trace("Matrix repro before mortality: " + reproduction); - } + for (ReproductionData nAndRepro : reproductions.get(pop).values()) { + MatrixND reproduction = nAndRepro.getRepro(); + if (log.isTraceEnabled()) { + log.trace("Matrix repro before mortality: " + reproduction); + } - for (MatrixIterator mi = reproduction.iteratorNotZero(); mi.next();) { - Object[] sems = mi.getSemanticsCoordinates(); - Zone z = (Zone) sems[0]; - double coeff = pop.getNaturalDeathBirth(z); - if (log.isTraceEnabled()) { - log.trace("NaturalDeath zone " + z + "=" + coeff); - } - mi.setValue(mi.getValue() - * Math.exp(-coeff / Month.NUMBER_OF_MONTH)); - } + for (MatrixIterator mi = reproduction.iteratorNotZero(); mi.next();) { + Object[] sems = mi.getSemanticsCoordinates(); + Zone z = (Zone) sems[0]; + double coeff = pop.getNaturalDeathBirth(z); if (log.isTraceEnabled()) { - log.trace("Matrix repro after mortality: " + reproduction); + log.trace("NaturalDeath zone " + z + "=" + coeff); } + mi.setValue(mi.getValue() + * Math.exp(-coeff / Month.NUMBER_OF_MONTH)); } + if (log.isTraceEnabled()) { + log.trace("Matrix repro after mortality: " + reproduction); + } } } @@ -242,14 +247,20 @@ new List[] { pop.getPopulationGroup(), pop.getPopulationZone() }); + ReproductionDataMap mapAAndRs = new ReproductionDataMap(); + // pour chaque for (int e = 0; e < etalement; e++) { // recuperation de la reproduction stucture en zone repro TimeStep t = new TimeStep(step.getStep() - e - pop.getMonthGapBetweenReproRecrutement()); - MatrixND repro = (MatrixND) reproductions.get(pop).get(t); + + ReproductionData aAndR = reproductions.get(pop).get(t); - if (repro != null) { // si une repro existe pour le mois + if (aAndR != null) { // si une repro existe pour le mois + + mapAAndRs.put(t, aAndR); + MatrixND repro = aAndR.getRepro(); // on fait la correspondance entre les zones repro et // recrutement @@ -288,7 +299,7 @@ } } - if (pop.getSpecies().isAgeGroupType() && !pop.isReproductionEquationIsRecruitment()) { + if (pop.getSpecies().isAgeGroupType()) { // conversion et retour de la matrice en vecteur MatrixND N = pop.N2DToN1D(result); // on applique les migrations et le changement d'age sur le resultat @@ -322,6 +333,10 @@ } result = pop.split2D(N); } + + // calcul recrutement par l'equation + result = pop.getRecruitmentMatrix(step, pop, mapAAndRs, result); + return result; } Added: trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionData.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionData.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionData.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -0,0 +1,62 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2015 Ifremer, Code Lutin, Benjamin Poussin, Chatellier Eric + * %% + * 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 3 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-3.0.html>. + * #L% + */ +package fr.ifremer.isisfish.types; + +import org.nuiton.math.matrix.MatrixND; + +/** + * Aboundance, biomass and reproduction used during population migration. + * + * @since 4.4.0.0 + */ +public class ReproductionData { + + /** Aboundance. */ + protected MatrixND aboundance; + + /** Biomass. */ + protected MatrixND biomass; + + /** Reproduction. */ + protected MatrixND repro; + + public ReproductionData(MatrixND aboundance, MatrixND biomass, MatrixND repro) { + this.aboundance = aboundance; + this.biomass = biomass; + this.repro = repro; + } + + public MatrixND getAboundance() { + return aboundance; + } + + public MatrixND getBiomass() { + return biomass; + } + + public MatrixND getRepro() { + return repro; + } +} Property changes on: trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionData.java ___________________________________________________________________ Added: svn:eol-style + native Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionDataMap.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionDataMap.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionDataMap.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -0,0 +1,39 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2015 Ifremer, Code Lutin, Benjamin Poussin, Chatellier Eric + * %% + * 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 3 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-3.0.html>. + * #L% + */ +package fr.ifremer.isisfish.types; + +import java.util.HashMap; + +/** + * Map instance to use a sinplier object in model. + * + * @since 4.4.0.0 + */ +public class ReproductionDataMap extends HashMap<TimeStep, ReproductionData> { + + /** serialVersionUID. */ + private static final long serialVersionUID = 2765995771062359295L; + +} Property changes on: trunk/src/main/java/fr/ifremer/isisfish/types/ReproductionDataMap.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationRecruitmentUI.jaxx 2015-04-21 09:20:51 UTC (rev 4198) @@ -5,7 +5,7 @@ $Id$ $HeadURL$ %% - Copyright (C) 2009 - 2014 Ifremer, Code Lutin, Chatellier Eric + Copyright (C) 2009 - 2015 Ifremer, Code Lutin, Chatellier Eric %% This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -89,32 +89,9 @@ <cell fill='both' weightx='1.0' weighty='1.0'> <Table> <row> - <cell> - <JPanel/> - </cell> - <cell fill='horizontal' weightx='0.5'> - <JRadioButton id="radioPopulationRecruitmentEquationIsReproduction" - buttonGroup="radioPopulationRecruitmentEquationType" - selected='{!getBean().isReproductionEquationIsRecruitment()}' - enabled='{isActive()}' - text="isisfish.populationRecruitment.reproductionEquationIsReproduction" - onActionPerformed='getBean().setReproductionEquationIsRecruitment(radioPopulationRecruitmentEquationIsRecruitment.isSelected())' - decorator='boxed' /> - </cell> - <cell fill='horizontal' weightx='0.5'> - <JRadioButton id="radioPopulationRecruitmentEquationIsRecruitment" - buttonGroup="radioPopulationRecruitmentEquationType" - selected='{getBean().isReproductionEquationIsRecruitment()}' - enabled='{isActive()}' - text="isisfish.populationRecruitment.reproductionEquationIsRecruitment" - onActionPerformed='getBean().setReproductionEquationIsRecruitment(radioPopulationRecruitmentEquationIsRecruitment.isSelected())' - decorator='boxed' /> - </cell> - </row> - <row> - <cell columns='3' fill='both' weightx='1.0' weighty='0.5'> + <cell columns='3' fill='both' weightx='1.0' weighty='1'> <InputOneEquationUI id='reproductionEquation' constructorParams='this' - active="{isActive()}" + active="{isActive()}" text='isisfish.populationEquation.reproductionEquation' bean='{getBean()}' formuleCategory='Reproduction' beanProperty='ReproductionEquation' clazz='{fr.ifremer.isisfish.equation.PopulationReproductionEquation.class}' decorator='boxed' _sensitivityBean='{Population.class}' _sensitivityMethod='"ReproductionEquation"'/> @@ -138,20 +115,26 @@ <cell anchor='east'> <JLabel text="isisfish.populationRecruitment.recruitmentDistribution" enabled='{isActive()}'/> </cell> - <cell columns='2' fill='both' weightx='1.0' weighty='0.5'> + <cell fill='both' weightx='1.0' weighty='0.3'> <org.nuiton.math.matrix.gui.MatrixPanelEditor id ='fieldPopulationRecruitmentDistribution' matrix='{getBean() == null ? null : bean.getRecruitmentDistribution().copy()}' enabled='{isActive()}' decorator='boxed' _sensitivityBean='{Population.class}' _sensitivityMethod='"RecruitmentDistribution"' onMatrixChanged="populationRecruitmentDistributionMatrixChanged(event)" /> </cell> + <cell> + <JButton icon="table.png" toolTipText="isisfish.common.newMatrix" + onActionPerformed="getAction().createRecruitmentDistribution(getBean())" + enabled='{isActive()}' decorator='boxed' /> + </cell> </row> <row> - <cell> - <JPanel/> + <cell columns='3' fill='both' weightx='1.0' weighty='1'> + <InputOneEquationUI id='recruitmentEquation' constructorParams='this' + active="{isActive()}" text='isisfish.populationEquation.recruitmentEquation' + bean='{getBean()}' formuleCategory='Recruitment' beanProperty='RecruitmentEquation' + clazz='{fr.ifremer.isisfish.equation.PopulationRecruitmentEquation.class}' + decorator='boxed' _sensitivityBean='{Population.class}' _sensitivityMethod='"RecruitmentEquation"'/> </cell> - <cell columns='2' fill='horizontal' weightx='1.0'> - <JButton id="create" text="isisfish.common.newMatrix" onActionPerformed='getAction().createRecruitmentDistribution(getBean())' enabled='{isActive()}' decorator='boxed'/> - </cell> </row> <row> <cell anchor='east'> Modified: trunk/src/main/resources/i18n/isis-fish_en_GB.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2015-04-21 09:20:51 UTC (rev 4198) @@ -751,6 +751,8 @@ isisfish.populationEquation.meanWeight=Mean weight isisfish.populationEquation.naturalDeathRate=Natural death rate isisfish.populationEquation.price=Price +isisfish.populationEquation.recruitmentEquation=Recruitment equation +isisfish.populationEquation.reproductionEquation=Reproduction equation isisfish.populationEquation.reproductionRate=Reproduction rate isisfish.populationEquation.title=Equations isisfish.populationGroup.age=Age Modified: trunk/src/main/resources/i18n/isis-fish_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2015-04-21 09:20:51 UTC (rev 4198) @@ -749,6 +749,8 @@ isisfish.populationEquation.meanWeight=Poids moyen isisfish.populationEquation.naturalDeathRate=Taux de mortalité naturelle isisfish.populationEquation.price=Prix +isisfish.populationEquation.recruitmentEquation=Équation de recrutement +isisfish.populationEquation.reproductionEquation=Équation de reproduction isisfish.populationEquation.reproductionRate=Taux de reproduction isisfish.populationEquation.title=Traits de vie isisfish.populationGroup.age=Age Modified: trunk/src/main/resources/sensitivity.properties =================================================================== --- trunk/src/main/resources/sensitivity.properties 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/main/resources/sensitivity.properties 2015-04-21 09:20:51 UTC (rev 4198) @@ -49,6 +49,7 @@ Population.naturalDeathRate Population.price Population.recruitmentDistribution +Population.recruitmentEquation Population.reproductionEquation Population.reproductionRateEquation PopulationSeasonInfo.lengthChangeMatrix Modified: trunk/src/main/xmi/isis-fish.zargo =================================================================== (Binary files differ) Modified: trunk/src/test/resources/test-database/simulators/DefaultSimulator.java =================================================================== --- trunk/src/test/resources/test-database/simulators/DefaultSimulator.java 2015-04-20 09:04:45 UTC (rev 4197) +++ trunk/src/test/resources/test-database/simulators/DefaultSimulator.java 2015-04-21 09:20:51 UTC (rev 4198) @@ -364,8 +364,8 @@ // N is reassigned during computation resManager.addResult(step, pop, N); + MatrixND biomass = siMatrix.matrixBiomass(N, pop, step); if (resManager.isEnabled(ResultName.MATRIX_BIOMASS)) { - MatrixND biomass = siMatrix.matrixBiomass(N, pop, step); resManager.addResult(step, pop, biomass); } @@ -415,7 +415,7 @@ // ajout de la matrice R dans le suivi de la pop comme etant // la reproduction pour le mois courant. - popMon.setReproduction(step, pop, R); + popMon.setReproduction(step, pop, N, biomass, R); // recrutement MatrixND recruitment = popMon.getRecruitment(step, pop);
participants (1)
-
echatellier@users.forge.codelutin.com