Author: echatellier Date: 2011-10-28 14:18:03 +0200 (Fri, 28 Oct 2011) New Revision: 3499 Url: http://forge.codelutin.com/repositories/revision/isis-fish/3499 Log: Compute capturability with equation (when used) Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationCapturabilityEquation.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationCapturabilityUI.jaxx Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2011-10-28 12:17:39 UTC (rev 3498) +++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2011-10-28 12:18:03 UTC (rev 3499) @@ -505,45 +505,6 @@ return result; } - // /* (non-Javadoc) - // * @see fr.ifremer.isisfish.entities.PopulationAbstract#addPopulationSeasonInfo(fr.ifremer.isisfish.entities.PopulationSeasonInfo) - // */ - // @Override - // public void addPopulationSeasonInfo(PopulationSeasonInfo populationSeasonInfo) { - // super.addPopulationSeasonInfo(populationSeasonInfo); - // changeCapturability(); - // } - // - // /* (non-Javadoc) - // * @see fr.ifremer.isisfish.entities.PopulationAbstract#addPopulationGroup(fr.ifremer.isisfish.entities.PopulationGroup) - // */ - // @Override - // public void addPopulationGroup(PopulationGroup populationGroup) { - // super.addPopulationGroup(populationGroup); - // changeCapturability(); - // } - - // protected void changeCapturability() { - // MatrixND mat = null; - // if (sizePopulationGroup() == 0 || sizePopulationSeasonInfo() == 0) { - // log.warn("Population doesn't have population group or population season info"); - // } else { - // List [] sems = new List[]{ - // getPopulationGroup(), - // getPopulationSeasonInfo(), - // }; - // mat = MatrixFactory.getInstance().create(_("isisfish.population.capturability"), sems, - // new String[]{_("isisfish.population.group"), _("isisfish.population.season")}); - // - // - // MatrixND oldMat = getCapturability(); - // if (oldMat != null) { - // mat.pasteSemantics(oldMat); - // } - // } - // setCapturability(mat); - // } - @Override public void setCapturability(MatrixND value) { List[] sems = value.getSemantics(); @@ -584,8 +545,9 @@ log.warn("Population doesn't have population group or population season info"); return null; } - List[] sems = new List[] { getPopulationGroup(), - getPopulationSeasonInfo(), }; + List<PopulationGroup> groups = getPopulationGroup(); + List<PopulationSeasonInfo> seasons = getPopulationSeasonInfo(); + List[] sems = new List[] {groups, seasons}; if (mat == null) { log.debug("Capturability is null, create new matrix"); mat = MatrixFactory.getInstance().create( @@ -623,6 +585,23 @@ // perhaps call setCapturability, but if possible wait the user // call setCapturability explicitly with this new matrix } + + // compute equation + if (isCapturabilityEquationUsed()) { + for (int g = 0; g < groups.size(); g++) { + PopulationGroup group = groups.get(g); + for (int s = 0; s < seasons.size(); s++) { + PopulationSeasonInfo season = seasons.get(s); + + Equation eq = getCapturabilityEquation(); + double capturability = eq.evaluate("pop", this, + "group", group, "season", season); + + mat.setValue(g, s, capturability); + } + } + } + return mat; } Modified: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationCapturabilityEquation.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationCapturabilityEquation.java 2011-10-28 12:17:39 UTC (rev 3498) +++ trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationCapturabilityEquation.java 2011-10-28 12:18:03 UTC (rev 3499) @@ -25,8 +25,6 @@ package fr.ifremer.isisfish.equation; -import java.util.List; - import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.PopulationGroup; import fr.ifremer.isisfish.entities.PopulationSeasonInfo; @@ -52,20 +50,20 @@ * * @param context simulation context * @param pop population pour lequel on souhaite la matrice de reproduction - * @param groups la liste des groups de la population - * @param seasons la liste des saison de la population + * @param group le group de la population + * @param season la saison de la population * * @return la valeur retournée n'est pas utilisée, par exemple 'return 0;' * convient. * @throws Exception */ - @Args({"context", "pop", "groups", "seasons"}) + @Args({"context", "pop", "group", "season"}) @ArgTypes({ "fr.ifremer.isisfish.simulator.SimulationContext", "fr.ifremer.isisfish.entities.Population", - "java.util.List<PopulationGroup>", - "java.util.List<PopulationSeasonInfo>"}) + "fr.ifremer.isisfish.entities.PopulationGroup", + "fr.ifremer.isisfish.entities.PopulationSeasonInfo"}) public double compute(SimulationContext context, Population pop, - List<PopulationGroup> groups, List<PopulationSeasonInfo> seasons) throws Exception; + PopulationGroup group, PopulationSeasonInfo season) throws Exception; } Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationCapturabilityUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationCapturabilityUI.jaxx 2011-10-28 12:17:39 UTC (rev 3498) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationCapturabilityUI.jaxx 2011-10-28 12:18:03 UTC (rev 3499) @@ -75,16 +75,19 @@ if (getBean() != null){ if (getBean().getCapturability() != null) { - //fieldPopulationCapturability.removeMatrixPanelListener(listener); fieldPopulationCapturability.setMatrix(getBean().getCapturability().copy()); } } - - // TODO add only once, not at all refresh - //fieldPopulationCapturability.addMatrixListener(listener); }*/ protected void useEquationChanged() { getBean().setCapturabilityEquationUsed(fieldUseCapturabilityEquation.isSelected()); + + // compute matrix again to not diplay values computed by equation + if (!fieldUseCapturabilityEquation.isSelected()) { + if (getBean().getCapturability() != null) { + fieldPopulationCapturability.setMatrix(getBean().getCapturability().copy()); + } + } refreshHidablePanel(); } protected void refreshHidablePanel() {
participants (1)
-
echatellier@users.forge.codelutin.com