Author: smahevas Date: 2012-10-19 17:05:42 +0200 (Fri, 19 Oct 2012) New Revision: 17 Url: http://forge.codelutin.com/repositories/revision/isis-fish-community/17 Log: nouveauscript Added: trunk/exports/MortalitePecheGroupe.java Added: trunk/exports/MortalitePecheGroupe.java =================================================================== --- trunk/exports/MortalitePecheGroupe.java (rev 0) +++ trunk/exports/MortalitePecheGroupe.java 2012-10-19 15:05:42 UTC (rev 17) @@ -0,0 +1,104 @@ +/* + * #%L + * IsisFish data + * %% + * Copyright (C) 2006 - 2011 Ifremer, CodeLutin + * %% + * 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 2 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-2.0.html>. + * #L% + */ +package exports; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.Writer; + +import static org.nuiton.i18n.I18n._; +import org.nuiton.math.matrix.*; + +import scripts.ResultName; + +import fr.ifremer.isisfish.entities.*; +import fr.ifremer.isisfish.export.Export; +import fr.ifremer.isisfish.types.TimeStep; +import fr.ifremer.isisfish.datastore.SimulationStorage; + +/** + * FishingMortality.java + * + * Created: 19 Avril 2012 + * + * @author anonymous <anonymous@labs.libre-entreprise.org> + * @version $Revision: 0.1 $ + * + * Last update: $Date: 0000-00-00 00:00:00 $ by : $Author: $ + */ +public class MortalitePecheGroupe implements Export { + + /** to use log facility, just put in your code: log.info("..."); */ + static private Log log = LogFactory.getLog(MortalitePecheGroupe.class); + + protected String[] necessaryResult = { ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP }; + + @Override + public String[] getNecessaryResult() { + return this.necessaryResult; + } + + @Override + public String getExportFilename() { + return "MortalitePecheGroupe"; + } + + @Override + public String getExtensionFilename() { + return ".csv"; + } + + @Override + public String getDescription() { + return _("Exporte la mortalite par peche par groupe et par population de la simulation (Fgroup par an calcule en decembre)"); + } + + @Override + public void export(SimulationStorage simulation, Writer out) + throws Exception { + TimeStep lastStep = simulation.getResultStorage().getLastStep(); + + for (Population pop : simulation.getParameter().getPopulations()) { +// for (PopulationGroup group : pop.getPopulationGroup()) { // Rajouter une boucle sur les groupes ?? + for (TimeStep step = new TimeStep(0); !step.after(lastStep); step = step.next()) { + + MatrixND mat = simulation.getResultStorage().getMatrix(step, + pop, ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP); // group + + if (mat != null) { // can be null if simulation is stopped before last year simulation + for (MatrixIterator i = mat.iterator(); i.hasNext();) { + i.next(); + Object[] sems = i.getSemanticsCoordinates(); + PopulationGroup group = (PopulationGroup)sems[1]; + double val = i.getValue(); + + out.write(pop.getName() + ";" + step.getStep() + ";" + group.getAge() + ";" + val + "\n"); // + ";" + group.getAge() + } + } + } + //} + } + } + } + +