This is an automated email from the git hooks/post-receive script. New commit to branch feature/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 09d93ed44f054728df4f1d47caffbe198489a7e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 2 12:57:41 2016 +0200 Biometry sample import ok \o/ (See #8170) --- .../VoyageCatchesBiometrySampleImportAction.java | 47 +++++++++++++++++++++- .../importdata/csv/BiometrySampleImportRow.java | 38 ++++++++++++++--- ...geCatchesImportServiceOnlyBiometrySampleIT.java | 3 +- 3 files changed, 80 insertions(+), 8 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java index b77f059..1a88c77 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java @@ -1,5 +1,6 @@ package fr.ifremer.echobase.services.service.importdata.actions; +import com.google.common.base.Preconditions; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.Sample; @@ -18,6 +19,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; import java.util.Collection; +import java.util.LinkedHashSet; import java.util.Map; import java.util.TreeMap; @@ -46,6 +48,10 @@ public class VoyageCatchesBiometrySampleImportAction extends VoyageCatchesImport return BiometrySampleImportExportModel.forExport(importDataContext); } + private final Map<String, String> sampleIdToOperationId = new TreeMap<>(); + private final Map<String, String> sampleDataIdToSampleId = new TreeMap<>(); + private final Map<String, Integer> sampleIdToNumFish = new TreeMap<>(); + @Override protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { @@ -94,11 +100,19 @@ public class VoyageCatchesBiometrySampleImportAction extends VoyageCatchesImport samples.put(sampleKey, sample); } + addProcessedRow(result, row); + + // add to sample ids cache (need to compute imported export later) + sampleIdToOperationId.put(sample.getTopiaId(), operation.getTopiaId()); + sampleIdToNumFish.put(sample.getTopiaId(), numFish); + SampleData sampleData = row.getSampleData(); SampleData sampleDataCreated = persistenceService.createSampleData(sampleData); sample.addSampleData(sampleDataCreated); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); + result.addId(EchoBaseUserEntityEnum.SampleData, sampleDataCreated); + + sampleDataIdToSampleId.put(sampleData.getTopiaId(), sample.getTopiaId()); } @@ -109,8 +123,37 @@ public class VoyageCatchesBiometrySampleImportAction extends VoyageCatchesImport @Override protected void computeImportedExport(VoyageCatchesImportDataContext importDataContext, ImportDataFileResult result) { - // TODO + LinkedHashSet<String> sampleDataIds = filterIds(SampleData.class, result.getIds()); + + for (String sampleDataId : sampleDataIds) { + + String sampleId = sampleDataIdToSampleId.get(sampleDataId); + Preconditions.checkNotNull(sampleId); + + String operationId = sampleIdToOperationId.get(sampleId); + Preconditions.checkNotNull(operationId); + + Integer numFish = sampleIdToNumFish.get(sampleId); + Preconditions.checkNotNull(numFish); + Operation operation = persistenceService.getOperation(operationId); + Preconditions.checkNotNull(operation); + + Sample sample = persistenceService.getSample(sampleId); + Preconditions.checkNotNull(sample); + + SampleData sampleData = sample.getSampleDataByTopiaId(sampleDataId); + Preconditions.checkNotNull(sampleData); + + if (log.isInfoEnabled()) { + log.info("Adding sampleData: " + sampleId + " to imported export."); + } + + BiometrySampleImportRow importedRow = BiometrySampleImportRow.of(operation, sample, sampleData, numFish); + + addImportedRow(result, importedRow); + + } } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java index f05ef41..a089138 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java @@ -21,6 +21,7 @@ package fr.ifremer.echobase.services.service.importdata.csv; import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.entities.data.SampleDataImpl; import fr.ifremer.echobase.entities.references.SampleDataType; @@ -48,8 +49,22 @@ public class BiometrySampleImportRow { protected int numFish; + public static BiometrySampleImportRow of(Operation operation, Sample sample, SampleData sampleData, int numFish) { + + BiometrySampleImportRow row = new BiometrySampleImportRow(sampleData); + row.setOperation(operation); + row.setSpecies(sample.getSpeciesCategory().getSpecies()); + row.setNumFish(numFish); + + return row; + } + + public BiometrySampleImportRow(SampleData sampleData) { + this.sampleData = sampleData; + } + public BiometrySampleImportRow() { - sampleData = new SampleDataImpl(); + this(new SampleDataImpl()); } public Operation getOperation() { @@ -76,19 +91,32 @@ public class BiometrySampleImportRow { this.numFish = numfish; } + public String getDataLabel() { + return sampleData.getDataLabel(); + } + + public void setDataLabel(String dataLabel) { + sampleData.setDataLabel(dataLabel); + } + + public Float getDataValue() { + return sampleData.getDataValue(); + } + public void setDataValue(Float dataValue) { sampleData.setDataValue(dataValue); } - public void setSampleDataType(SampleDataType sampleDataType) { - sampleData.setSampleDataType(sampleDataType); + public SampleDataType getSampleDataType() { + return sampleData.getSampleDataType(); } - public void setDataLabel(String dataLabel) { - sampleData.setDataLabel(dataLabel); + public void setSampleDataType(SampleDataType sampleDataType) { + sampleData.setSampleDataType(sampleDataType); } public SampleData getSampleData() { return sampleData; } + } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageCatchesImportServiceOnlyBiometrySampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageCatchesImportServiceOnlyBiometrySampleIT.java index c7b206f..e7b8ca9 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageCatchesImportServiceOnlyBiometrySampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageCatchesImportServiceOnlyBiometrySampleIT.java @@ -54,7 +54,8 @@ public class VoyageCatchesImportServiceOnlyBiometrySampleIT extends VoyageCatche protected void assertBeforeImport() { assertImportCommonData(); assertImportOperations(); - assertNoEntities(Sample.class, SampleData.class); + assertNbEntities(Sample.class, fixtures.NB_SAMPLE_TOTAL()); + assertNbEntities(SampleData.class, fixtures.NB_SAMPLE_DATA_TOTAL()); } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.