This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 008a8b14aa660cc152b3b6e8639e87b87ecf979d Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:40:46 2015 +0100 add sample category export + fix species export (do not use id but referenceTaxonId) --- .../service/genericformat/GlobalExportContext.java | 21 ++++++-- .../genericformat/csv/SampleCategoryModel.java | 61 ++++++++++++++++++++++ .../genericformat/csv/SampleCategoryRow.java | 53 +++++++++++++++++++ .../producer/CsvProducerForSampleCategory.java | 40 ++++++++++++++ .../producer/CsvProducerForSpecies.java | 47 +++++++++-------- 5 files changed, 197 insertions(+), 25 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java index 15c228d..68adad7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -1,12 +1,12 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.Maps; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.catches.WeightComputingService; @@ -26,6 +26,7 @@ import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualO import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; @@ -92,6 +93,8 @@ public class GlobalExportContext implements Closeable { private final CsvProducerForTemporaryVessel producerForTemporaryVessel; + private final CsvProducerForSampleCategory producerForSampleCategory; + protected String checkError; GlobalExportContext(File basedir, @@ -112,23 +115,25 @@ public class GlobalExportContext implements Closeable { this.genderCaracteristic = persistenceService.getSexCaracteristic(); List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); - Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); + Map<String, Species> speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); this.producerForSurvey = new CsvProducerForSurvey(basedir, SurveyModel.forExport(csvSeparator)); this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(basedir, GearCaracteristicModel.forExport(csvSeparator, decoratorService)); this.producerForOperation = new CsvProducerForOperation(basedir, OperationModel.forExport(csvSeparator)); this.producerForIndividualObservation = new CsvProducerForIndividualObservation(basedir, IndividualObservationModel.forExport(csvSeparator)); - this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesById); + this.producerForSpecies = new CsvProducerForSpecies(basedir, SpeciesExportModel.forExport(csvSeparator), speciesByReferenceTaxonId); this.producerForCatch = new CsvProducerForCatch(basedir, CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(basedir, AccidentalCatchModel.forExport(csvSeparator)); this.producerForParameter = new CsvProducerForParameter(basedir, ParameterModel.forExport(csvSeparator, decoratorService)); this.producerForMarineLitter = new CsvProducerForMarineLitter(basedir, MarineLitterModel.forExport(csvSeparator)); + this.producerForSampleCategory = new CsvProducerForSampleCategory(basedir, fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel.forExport(csvSeparator)); this.producerForTemporaryGear = new CsvProducerForTemporaryGear(new File(basedir, "temporaryGears.csv"), csvSeparator); this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(new File(basedir, "temporaryPersons.csv"), csvSeparator); this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(new File(basedir, "temporarySpecies.csv"), csvSeparator); this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(new File(basedir, "temporaryVessels.csv"), csvSeparator); + this.protocolFile = new File(basedir, "protocol.tuttiProtocol"); } @@ -158,6 +163,7 @@ public class GlobalExportContext implements Closeable { @Override public void close() throws IOException { + IOUtils.closeQuietly(producerForSurvey); IOUtils.closeQuietly(producerForSpecies); IOUtils.closeQuietly(producerForGearCaracteristics); @@ -171,6 +177,8 @@ public class GlobalExportContext implements Closeable { IOUtils.closeQuietly(producerForTemporaryPerson); IOUtils.closeQuietly(producerForTemporarySpecies); IOUtils.closeQuietly(producerForTemporaryVessel); + IOUtils.closeQuietly(producerForSampleCategory); + } public String getCheckError() { @@ -233,8 +241,15 @@ public class GlobalExportContext implements Closeable { return producerForTemporaryVessel; } + public CsvProducerForSampleCategory getProducerForSampleCategory() { + return producerForSampleCategory; + } + public File getProtocolFile() { return protocolFile; } + public SampleCategoryModel getSampleCategoryModel() { + return sampleCategoryModel; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java new file mode 100644 index 0000000..bb63285 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java @@ -0,0 +1,61 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCategoryRow> { + + public static SampleCategoryModel forExport(char separator) { + + SampleCategoryModel exportModel = new SampleCategoryModel(separator); + exportModel.forExport(); + return exportModel; + + } + + public static SampleCategoryModel forImport(char separator, GlobalImportContext globalImportContext) { + + SampleCategoryModel importModel = new SampleCategoryModel(separator); + importModel.forImport(globalImportContext); + return importModel; + + } + + @Override + public SampleCategoryRow newEmptyInstance() { + + SampleCategoryRow row = new SampleCategoryRow(); + row.setSampleCategoryModelEntry(new SampleCategoryModelEntry()); + return row; + + } + + protected SampleCategoryModel(char separator) { + super(separator); + } + + protected void forExport() { + + newColumnForExport(SampleCategoryRow.PROPERTY_CODE); + newColumnForExport(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); + newColumnForExport(SampleCategoryRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); + + } + + protected void forImport(GlobalImportContext globalImportContext) { + + newMandatoryColumn(SampleCategoryRow.PROPERTY_CODE); + newMandatoryColumn(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); + newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java new file mode 100644 index 0000000..e09bb42 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java @@ -0,0 +1,53 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; + +import java.io.Serializable; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class SampleCategoryRow implements Serializable { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_CODE = "code"; + + public static final String PROPERTY_ORDER = "order"; + + public static final String PROPERTY_CARACTERISTIC = "caracteristic"; + + private SampleCategoryModelEntry sampleCategoryModelEntry; + + public void setSampleCategoryModelEntry(SampleCategoryModelEntry sampleCategoryModelEntry) { + this.sampleCategoryModelEntry = sampleCategoryModelEntry; + } + + public String getCode() { + return sampleCategoryModelEntry.getCode(); + } + + public Caracteristic getCaracteristic() { + return sampleCategoryModelEntry.getCaracteristic(); + } + + public int getOrder() { + return sampleCategoryModelEntry.getOrder(); + } + + public void setOrder(int order) { + sampleCategoryModelEntry.setOrder(order); + } + + public void setCaracteristic(Caracteristic caracteristic) { + sampleCategoryModelEntry.setCaracteristic(caracteristic); + } + + public void setCode(String code) { + sampleCategoryModelEntry.setCode(code); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java new file mode 100644 index 0000000..d26f735 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSampleCategory.java @@ -0,0 +1,40 @@ +package fr.ifremer.tutti.service.genericformat.producer; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.service.csv.CsvProducer; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/8/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class CsvProducerForSampleCategory extends CsvProducer<SampleCategoryRow, SampleCategoryModel> { + + public CsvProducerForSampleCategory(File basedir, SampleCategoryModel model) { + super(new File(basedir, "sampleCategory.csv"), model); + } + + public List<SampleCategoryRow> getDataToExport(fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel) { + + List<SampleCategoryRow> rows = new ArrayList<>(); + + for (SampleCategoryModelEntry entry : sampleCategoryModel.getCategory()) { + + SampleCategoryRow row = new SampleCategoryRow(); + row.setSampleCategoryModelEntry(entry); + rows.add(row); + + } + + return rows; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java index 18362a8..ec99aa0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForSpecies.java @@ -7,7 +7,6 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.GlobalExportContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel; @@ -27,16 +26,16 @@ import java.util.Map; */ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, SpeciesExportModel> { - final Map<String, Species> speciesById; + final Map<String, Species> speciesByReferenceTaxonId; final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesById) { + public CsvProducerForSpecies(File basedir, SpeciesExportModel model, Map<String, Species> speciesByReferenceTaxonId) { super(new File(basedir, "species.csv"), model); - this.speciesById = speciesById; + this.speciesByReferenceTaxonId = speciesByReferenceTaxonId; } - public void prepareSpeciesBatchRows(GlobalExportContext exportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch) { + public void prepareSpeciesBatchRows(BatchContainer<SpeciesBatch> rootSpeciesBatch) { for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { addSpecies(speciesBatch.getSpecies()); @@ -44,7 +43,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void prepareBenthosBatchRows(GlobalExportContext exportContext, BatchContainer<BenthosBatch> rootBenthosBatch) { + public void prepareBenthosBatchRows(BatchContainer<BenthosBatch> rootBenthosBatch) { for (BenthosBatch benthosBatch : rootBenthosBatch.getChildren()) { addSpecies(benthosBatch.getSpecies()); @@ -52,7 +51,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void prepareIndividualRows(GlobalExportContext exportContext, List<IndividualObservationRow> rows) { + public void prepareIndividualRows(List<IndividualObservationRow> rows) { for (IndividualObservationRow row : rows) { addSpecies(row.getSpecies()); @@ -60,7 +59,7 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void prepareAccidentalRows(GlobalExportContext exportContext, List<AccidentalCatchRow> rows) { + public void prepareAccidentalRows(List<AccidentalCatchRow> rows) { for (AccidentalCatchRow row : rows) { addSpecies(row.getSpecies()); @@ -68,21 +67,8 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } - public void addSpecies(Species species) { - String speciesId = species.getId(); - if (!speciesToExport.containsKey(speciesId)) { - - // not treated species, add a new row - Species fullSpecies = speciesById.get(speciesId); - SpeciesExportRow row = new SpeciesExportRow(); - row.setSpecies(fullSpecies); - speciesToExport.put(speciesId, row); - // add the survey code (see http://forge.codelutin.com/issues/4799) - species.setSurveyCode(fullSpecies.getSurveyCode()); - } - } + public List<SpeciesExportRow> getDataToExport() { - public List<SpeciesExportRow> getSpeciesToExport() { List<SpeciesExportRow> result = Lists.newArrayList(speciesToExport.values()); Collections.sort(result, new Comparator<SpeciesExportRow>() { @@ -92,6 +78,23 @@ public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, Species } }); return result; + + } + + protected void addSpecies(Species species) { + + String speciesId = String.valueOf(species.getReferenceTaxonId()); + + if (!speciesToExport.containsKey(speciesId)) { + + // not treated species, add a new row + Species fullSpecies = speciesByReferenceTaxonId.get(speciesId); + SpeciesExportRow row = new SpeciesExportRow(); + row.setSpecies(fullSpecies); + speciesToExport.put(speciesId, row); + // add the survey code (see http://forge.codelutin.com/issues/4799) + species.setSurveyCode(fullSpecies.getSurveyCode()); + } } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.