This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See http://git.codelutin.com/echobase.git commit e191a8d3a12031708243cebebf6c3f25a98f2ec1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Dec 16 17:58:04 2014 +0100 fixes #6319: Revoir les espèces utilisées pour les exports d'indicateurs --- .../echobase/entities/references/Species2.java | 33 +++++++++++ .../service/exportCoser/ExportCoserService.java | 65 ++++++++++++++-------- 2 files changed, 76 insertions(+), 22 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/Species2.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/Species2.java new file mode 100644 index 0000000..dcbf283 --- /dev/null +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/Species2.java @@ -0,0 +1,33 @@ +package fr.ifremer.echobase.entities.references; + +import com.google.common.base.Predicate; + +/** + * Created on 12/16/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.7.2 + */ +public class Species2 { + + public static Predicate<Species> newCommunityIndicatorSpeciesPredicate() { + return new Predicate<Species>() { + @Override + public boolean apply(Species input) { + return "0".equals(input.getTaxonSystematicLevel()); + } + }; + } + + public static Predicate<Species> newPopulationIndicatorSpeciesPredicate() { + return new Predicate<Species>() { + @Override + public boolean apply(Species input) { + return !"0".equals(input.getTaxonSystematicLevel()) && !"COMPLEM".equals(input.getCodeMemo()); + } + }; + } + private Species2() { + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java index 2522cd7..602062e 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/ExportCoserService.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.exportCoser; import com.google.common.base.Charsets; import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.coser.CoserTechnicalException; @@ -34,6 +35,7 @@ import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.entities.references.SampleDataType; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Species2; import fr.ifremer.echobase.io.CommandLineUtils; import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.persistence.JdbcConfiguration; @@ -235,9 +237,11 @@ public class ExportCoserService extends EchoBaseServiceSupport { List<IndicatorExportRow> rows = Lists.newArrayList(); + Predicate<Species> speciesPredicate = Species2.newPopulationIndicatorSpeciesPredicate(); + Set<String> indicators = model.getPopulationIndicator(); for (String indicator : indicators) { - loadIndicatorValues(mission, indicator, rows); + loadIndicatorValues(mission, indicator, speciesPredicate, rows); model.incrementsProgress(); } Export<IndicatorExportRow> export = Export.newExport(exportModel, rows); @@ -262,9 +266,11 @@ public class ExportCoserService extends EchoBaseServiceSupport { List<IndicatorExportRow> rows = Lists.newArrayList(); + Predicate<Species> speciesPredicate = Species2.newCommunityIndicatorSpeciesPredicate(); + Set<String> indicators = model.getCommunityIndicator(); for (String indicator : indicators) { - loadIndicatorValues(mission, indicator, rows); + loadIndicatorValues(mission, indicator, speciesPredicate, rows); model.incrementsProgress(); } Export<IndicatorExportRow> export = Export.newExport(exportModel, rows); @@ -279,6 +285,7 @@ public class ExportCoserService extends EchoBaseServiceSupport { protected void loadIndicatorValues(Mission mission, String indicator, + Predicate<Species> speciesPredicate, List<IndicatorExportRow> rows) { DataMetadata dataMetadata = persistenceService.getDataMetadata(indicator); @@ -294,20 +301,27 @@ public class ExportCoserService extends EchoBaseServiceSupport { List<Result> results = persistenceService.getResultsForMissionAndDatametadata(mission, dataMetadata); for (Result result : results) { + Species species = result.getCategory().getSpeciesCategory().getSpecies(); - IndicatorExportRow row = rowsBySpecies.get(species); - if (row == null) { - row = new IndicatorExportRow(); - rowsBySpecies.put(species, row); - row.setMission(mission); - row.setIndicator(dataMetadata); - row.setSpecies(species); - row.setStratum("Total"); - row.setDate(result.getCell().getVoyage().getEndDate()); - row.setStandardDeviation(0); + + if (speciesPredicate.apply(species)) { + + IndicatorExportRow row = rowsBySpecies.get(species); + if (row == null) { + row = new IndicatorExportRow(); + rowsBySpecies.put(species, row); + row.setMission(mission); + row.setIndicator(dataMetadata); + row.setSpecies(species); + row.setStratum("Total"); + row.setDate(result.getCell().getVoyage().getEndDate()); + row.setStandardDeviation(0); + } + Float resultValue = Float.valueOf(result.getResultValue()); + row.setEstimation(row.getEstimation() + resultValue); + } - Float resultValue = Float.valueOf(result.getResultValue()); - row.setEstimation(row.getEstimation() + resultValue); + } if (standardDeviationDataMetadata != null) { @@ -318,16 +332,23 @@ public class ExportCoserService extends EchoBaseServiceSupport { mission, standardDeviationDataMetadata); for (Result result : deviationResults) { + Species species = result.getCategory().getSpeciesCategory().getSpecies(); - IndicatorExportRow row = rowsBySpecies.get(species); - if (row == null) { - log.warn(String.format("Could not find result for meta %s / species %s", - dataMetadata.getName(), - species.getBaracoudaCode())); - continue; + + if (speciesPredicate.apply(species)) { + + IndicatorExportRow row = rowsBySpecies.get(species); + if (row == null) { + log.warn(String.format("Could not find result for meta %s / species %s", + dataMetadata.getName(), + species.getBaracoudaCode())); + continue; + } + Float resultValue = Float.valueOf(result.getResultValue()); + row.setStandardDeviation(row.getStandardDeviation() + resultValue); + } - Float resultValue = Float.valueOf(result.getResultValue()); - row.setStandardDeviation(row.getStandardDeviation() + resultValue); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.