package exports; import java.io.Writer; import org.nuiton.math.matrix.*; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.entities.*; import resultinfos.MatrixCatchWeightPerStrategyMetPerZonePop; /** * Export des captures en poids par STR_FLT_GEAR_QUARTER * * Auteure: LEHUTA Sigrid, 202? * Derni��re modif: SM 2023 :pour macco , PHAN Tuan Anh, 2022: formatter le code */ public class CatchWeightStrFltMetierQuarter implements Export { protected String[] necessaryResult = { MatrixCatchWeightPerStrategyMetPerZonePop.NAME }; @Override public String[] getNecessaryResult() { return this.necessaryResult; } @Override public String getExportFilename() { return this.getClass().getSimpleName(); } @Override public String getExtensionFilename() { return ".csv"; } @Override public String getDescription() { return "Export les valeurs d��barqu��es de la simulation. tableau pop;id;str;fleet;metier;quarter;poids"; } @Override public void export(SimulationStorage simulation, Writer out) throws Exception { out.write("population;group;strategy;fleet;metier;yearQuarter;valSim\n"); for (Population pop : simulation.getParameter().getPopulations()) { MatrixND mat = simulation .getResultStorage() .getMatrix(pop, MatrixCatchWeightPerStrategyMetPerZonePop.NAME); // step, str, met, pop if (mat != null) { // can be null if simulation is stopped before last year simulation mat = mat .sumOverDim(0,3) // sum per quarter // .sumOverDim(2) // sum on metier //.sumOverDim(3) // sum on group .sumOverDim(4) // sum on zones .reduceDims���(4); for (MatrixIterator i = mat.iterator(); i.hasNext();) { i.next(); Object[] sems = i.getSemanticsCoordinates(); int yearQuarter = (int) sems[0]; Strategy strategy = (Strategy) sems[1]; Metier met = (Metier) sems[2]; PopulationGroup group = (PopulationGroup) sems[3]; //Zone zone = (Zone) sems[4]; double val = i.getValue(); out.write(String.format("%s;%s;%s;%s;%s;%s;%s\n", pop.getName(), group.getId(), strategy.getName(), strategy.getSetOfVessels().getName(), met.getName(), //zone.getName(), yearQuarter, val )); } } } } }