Author: jcouteau Date: 2009-03-19 14:22:27 +0000 (Thu, 19 Mar 2009) New Revision: 81 Added: trunk/exports/SensitivityCapturesPoids.java Modified: trunk/exports/SensitivityBiomass.java Log: Parameterized exports Modified: trunk/exports/SensitivityBiomass.java =================================================================== --- trunk/exports/SensitivityBiomass.java 2009-03-18 13:53:43 UTC (rev 80) +++ trunk/exports/SensitivityBiomass.java 2009-03-19 14:22:27 UTC (rev 81) @@ -10,50 +10,37 @@ import org.codelutin.math.matrix.MatrixND; import scripts.ResultName; - import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.entities.Population; -import fr.ifremer.isisfish.entities.PopulationGroup; -import fr.ifremer.isisfish.entities.Zone; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.types.Date; public class SensitivityBiomass implements SensitivityExport { /** to use log facility, just put in your code: log.info("..."); */ - static private Log log = LogFactory.getLog(SensitivityBiomass.class); + static private Log log = LogFactory.getLog(SensitivityBiomassPopage.class); protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS }; + + public Population param_pop; @Override public void export(SimulationStorage simulation, Writer out) throws Exception { + Date lastDate = simulation.getResultStorage().getLastDate(); double biomass = 0.0; - int lastDate = 0; for (Population pop : simulation.getParameter().getPopulations()) { - MatrixND mat = simulation.getResultStorage().getMatrix(pop, - ResultName.MATRIX_BIOMASS); - for (MatrixIterator i = mat.iterator(); i.hasNext();) { - i.next(); - Object[] sems = i.getSemanticsCoordinates(); - Date date = (Date) sems[0]; - if (date.getDate()>lastDate){ - lastDate=date.getDate(); - } + if (pop.getName().equals(param_pop.getName())) { + MatrixND mat = simulation.getResultStorage().getMatrix(pop, + ResultName.MATRIX_BIOMASS); + for (MatrixIterator i = mat.iterator(); i.hasNext();) { + i.next(); + Object[] sems = i.getSemanticsCoordinates(); + Date date = (Date) sems[0]; - } - } - for (Population pop : simulation.getParameter().getPopulations()) { - MatrixND mat = simulation.getResultStorage().getMatrix(pop, ResultName.MATRIX_BIOMASS); - for (MatrixIterator i=mat.iterator(); i.hasNext();) { - i.next(); - Object [] sems = i.getSemanticsCoordinates(); - Date date = (Date)sems[0]; - PopulationGroup group = (PopulationGroup)sems[1]; - Zone zone = (Zone)sems[2]; - - if(date.getDate()==lastDate){ - biomass=biomass+i.getValue(); + if (date.afterOrEquals(lastDate)) { + biomass = biomass + i.getValue(); + } } } } @@ -68,7 +55,7 @@ @Override public String getExportFilename() { - return "SensitivityBiomass"; + return "SensitivityBiomassNephrops"; } @Override Added: trunk/exports/SensitivityCapturesPoids.java =================================================================== --- trunk/exports/SensitivityCapturesPoids.java (rev 0) +++ trunk/exports/SensitivityCapturesPoids.java 2009-03-19 14:22:27 UTC (rev 81) @@ -0,0 +1,75 @@ +package exports; + +import static org.codelutin.i18n.I18n._; + +import java.io.Writer; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.math.matrix.MatrixIterator; +import org.codelutin.math.matrix.MatrixND; + +import scripts.ResultName; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.export.SensitivityExport; +import fr.ifremer.isisfish.types.Date; + +public class SensitivityCapturesPoids implements SensitivityExport { + + /** to use log facility, just put in your code: log.info("..."); */ + static private Log log = LogFactory.getLog(SensitivityCapturesPoidsPopage.class); + + protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP }; + + public Population param_pop; + + @Override + public void export(SimulationStorage simulation, Writer out) + throws Exception { + Date lastDate = simulation.getResultStorage().getLastDate(); + Double capturesWeight = 0.0; + + for (Population pop : simulation.getParameter().getPopulations()) { + if (pop.getName().equals(param_pop.getName())) { + for (Date date = new Date(0); !date.after(lastDate); date = date + .next()) { + MatrixND mat = simulation + .getResultStorage() + .getMatrix( + date, + pop, + ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP); + if (mat != null) { // can be null if simulation is stopped before last year simulation + mat = mat.sumOverDim(0); //sum on strategy + for (MatrixIterator i = mat.iterator(); i.hasNext();) { + i.next(); + capturesWeight=capturesWeight+i.getValue(); + } + } + } + } + } + } + + @Override + public String getDescription() { + return _("Captures in weight for the last year for the popage population. Captures is the sum of zones, groups, metiers and strategies"); + } + + @Override + public String getExportFilename() { + return "SensitivityCapturesPoidsNephrops"; + } + + @Override + public String getExtensionFilename() { + return ".csv"; + } + + @Override + public String[] getNecessaryResult() { + return this.necessaryResult; + } + +}