Author: echatellier Date: 2015-10-22 13:43:34 +0200 (Thu, 22 Oct 2015) New Revision: 4307 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4307 Log: fixes #7666: Ajouter l'?\195?\169quation de mortalit?\195?\169 par p?\195?\170che Other Added: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationFishingMortalityOtherFleets.java Modified: 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/PopulationGroupImpl.java trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationStockUI.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 Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV33V40.java 2015-10-22 11:43:34 UTC (rev 4307) @@ -111,7 +111,8 @@ tx.executeSQL("alter table POPULATION add column IF NOT EXISTS RecruitmentEQUATION VARCHAR(255);"); tx.executeSQL("alter table POPULATION add column IF NOT EXISTS abundanceReferenceMonth integer default null;"); tx.executeSQL("alter table POPULATION add column IF NOT EXISTS computeFOnLandings BIT default false;"); - + tx.executeSQL("alter table POPULATION add column IF NOT EXISTS FishingMortalityOtherFleets VARCHAR(255);"); + // build new equation for maturity group for (Object[] maturityRow : maturityGroupResult) { String population = (String)maturityRow[0]; Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV43V44.java 2015-10-22 11:43:34 UTC (rev 4307) @@ -77,6 +77,8 @@ tx.executeSQL("alter table POPULATION alter column groupMax RENAME TO fbarGroupMax;"); // add representativeAbundanceMonth field tx.executeSQL("alter table POPULATION add column IF NOT EXISTS computeFOnLandings BIT default false;"); + // add recruitment equation + tx.executeSQL("alter table POPULATION add column IF NOT EXISTS FishingMortalityOtherFleets VARCHAR(255);"); // build new equation for maturity group and reproduction rate Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationGroupImpl.java 2015-10-22 11:43:34 UTC (rev 4307) @@ -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 @@ -90,9 +90,6 @@ return result; } - /* - * @see fr.ifremer.isisfish.entities.PopulationGroup#getMeanWeight() - */ @Override public double getMeanWeight() { double result = 0; @@ -110,9 +107,6 @@ return result; } - /* - * @see fr.ifremer.isisfish.entities.PopulationGroup#getNaturalDeathRate() - */ @Override public double getNaturalDeathRate(Zone zone) { double result = 0; @@ -133,6 +127,26 @@ return result; } + @Override + public double getFishingMortalityOtherFleets(Zone zone) { + double result = 0; + try { + Equation eq = getPopulation().getFishingMortalityOtherFleets(); + if (eq != null) { + result = eq.evaluate("pop", this.getPopulation(), "group", + this, "zone", zone); + } + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Error in fishing mortality other fleets equation"); + } + if (log.isDebugEnabled()) { + log.debug("StackTrace", eee); + } + } + return result; + } + /* * @see fr.ifremer.isisfish.entities.PopulationGroup#getPrice() */ Modified: trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/java/fr/ifremer/isisfish/entities/PopulationImpl.java 2015-10-22 11:43:34 UTC (rev 4307) @@ -44,6 +44,7 @@ import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.equation.Language; import fr.ifremer.isisfish.equation.PopulationCapturabilityEquation; +import fr.ifremer.isisfish.equation.PopulationFishingMortalityOtherFleets; import fr.ifremer.isisfish.equation.PopulationGrowth; import fr.ifremer.isisfish.equation.PopulationGrowthReverse; import fr.ifremer.isisfish.equation.PopulationMaturityOgiveEquation; @@ -308,7 +309,39 @@ t("isisfish.error.change.equation"), eee); } } + + public void setFishingMortalityOtherFleetsContent(String content) { + try { + Equation eq = getFishingMortalityOtherFleets(); + if (eq == null) { + EquationDAO dao = IsisFishDAOHelper + .getEquationDAO(getTopiaContext()); + // create equation + eq = dao.create(); + eq.setCategory("FishingMortalityOtherFleets"); + eq.setJavaInterface(PopulationFishingMortalityOtherFleets.class); + eq.setLanguage(Language.JAVA); + setNaturalDeathRate(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 setMeanWeightContent(String content) { try { Equation eq = getMeanWeight(); @@ -483,7 +516,34 @@ return result; } + + /** + * Return Matrix [groups x zones] of Fishing mortality other fleets. + * + * @return a matrix + */ + @Override + public MatrixND getFishingMortalityOtherFleetsMatrix() { + List<PopulationGroup> groups = getPopulationGroup(); + List<Zone> zones = getPopulationZone(); + MatrixND result = MatrixFactory.getInstance().create( + "Fishing mortality other fleets", new List[] { groups, zones }, + new String[] { "Groups", "Zones" }); + + for (MatrixIterator i = result.iterator(); i.hasNext();) { + i.next(); + PopulationGroup group = (PopulationGroup) i + .getSemanticsCoordinates()[0]; + Zone zone = (Zone) i.getSemanticsCoordinates()[1]; + + double value = group.getFishingMortalityOtherFleets(zone); + i.setValue(value); + } + + return result; + } + @Override public PopulationSeasonInfo getPopulationSeasonInfo(Month month) { Collection<PopulationSeasonInfo> all = getPopulationSeasonInfo(); Added: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationFishingMortalityOtherFleets.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationFishingMortalityOtherFleets.java (rev 0) +++ trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationFishingMortalityOtherFleets.java 2015-10-22 11:43:34 UTC (rev 4307) @@ -0,0 +1,62 @@ +/* + * #%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 fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.entities.PopulationGroup; +import fr.ifremer.isisfish.entities.Zone; +import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.util.Args; + +/** + * Equation de mortalité par pêche Other. + * + * @author echatellier + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public interface PopulationFishingMortalityOtherFleets { + + /** + * Compute fishing mortality other fleets. + * + * @param context simulation context + * @param pop la population pour lequel il faut calculer la mortalité + * @param group le groupe pour lequel il faut calculer la mortalité + * null, si on souhaite la mortalité naturelle du group des naissances + * @param zone la zone du groupe pour lequel on souhaite la mortalité + * seulement utilisé pour la mortalité naturelle du group des naissances, + * sinon null + * @return equation result + * @throws Exception + */ + @Args({"context", "pop", "group", "zone"}) + public double compute(SimulationContext context, + Population pop, PopulationGroup group, Zone zone) throws Exception; + +} Property changes on: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationFishingMortalityOtherFleets.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision HeadURL \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/java/fr/ifremer/isisfish/equation/PopulationNaturalDeathRate.java 2015-10-22 11:43:34 UTC (rev 4307) @@ -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 @@ -54,7 +54,7 @@ * @param zone la zone du groupe pour lequel on souhaite la mortalité natrurelle * seulement utilisé pour la mortalité naturelle du group des naissances, * sinon null - * @return eqaution result + * @return equation result * @throws Exception */ @Args({"context", "pop", "group", "zone"}) Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationStockUI.jaxx =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationStockUI.jaxx 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationStockUI.jaxx 2015-10-22 11:43:34 UTC (rev 4307) @@ -92,6 +92,15 @@ </cell> </row> <row> + <cell columns="2" fill='both' weighty='1.0'> + <fr.ifremer.isisfish.ui.input.equation.InputOneEquationUI id='fishingMortalityOtherFleets' constructorParams='this' + text='isisfish.populationEquation.fishingMortalityOtherFleets' active="{isActive()}" + bean='{getBean()}' formuleCategory='FishingMortalityOtherFleets' beanProperty='FishingMortalityOtherFleets' + clazz='{fr.ifremer.isisfish.equation.PopulationFishingMortalityOtherFleets.class}' + decorator='boxed' _sensitivityBean='{Population.class}' _sensitivityMethod='"FishingMortalityOtherFleets"'/> + </cell> + </row> + <row> <cell columns="2" fill='horizontal' anchor="south" weightx='1.0' weighty='1.0'> <Table> <row> Modified: trunk/src/main/resources/i18n/isis-fish_en_GB.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/resources/i18n/isis-fish_en_GB.properties 2015-10-22 11:43:34 UTC (rev 4307) @@ -683,6 +683,7 @@ isisfish.populationCapturability.title=Catchability isisfish.populationCapturability.useCapturabilityEquation=Use catchability equation isisfish.populationEquation.MaturityOgive=Maturity ogive +isisfish.populationEquation.fishingMortalityOtherFleets=Fishing mortality other fleets isisfish.populationEquation.meanWeight=Mean weight isisfish.populationEquation.naturalDeathRate=Natural death rate isisfish.populationEquation.price=Price Modified: trunk/src/main/resources/i18n/isis-fish_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/resources/i18n/isis-fish_fr_FR.properties 2015-10-22 11:43:34 UTC (rev 4307) @@ -683,6 +683,7 @@ isisfish.populationCapturability.title=Capturabilité isisfish.populationCapturability.useCapturabilityEquation=Utiliser une équation de capturabilité isisfish.populationEquation.MaturityOgive=Ogive de maturité +isisfish.populationEquation.fishingMortalityOtherFleets=Mortalité par pêche Other isisfish.populationEquation.meanWeight=Poids moyen isisfish.populationEquation.naturalDeathRate=Taux de mortalité naturelle isisfish.populationEquation.price=Prix Modified: trunk/src/main/resources/sensitivity.properties =================================================================== --- trunk/src/main/resources/sensitivity.properties 2015-10-21 13:52:40 UTC (rev 4306) +++ trunk/src/main/resources/sensitivity.properties 2015-10-22 11:43:34 UTC (rev 4307) @@ -47,6 +47,7 @@ Population.meanWeight Population.monthGapBetweenReproRecrutement Population.naturalDeathRate +Population.fishingMortalityOtherFleets Population.price Population.recruitmentDistribution Population.recruitmentEquation Modified: trunk/src/main/xmi/isis-fish.zargo =================================================================== (Binary files differ)