This is an automated email from the git hooks/post-receive script. New commit to branch feature/8130 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 9b54236eeb0f3f371167c716b0718f9929e00639 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 16 05:37:38 2016 +0100 Réusinage du modèle des échantillons --- .../AccidentalBatchPersistenceServiceImpl.java | 56 ++------ ...dualObservationBatchPersistenceServiceImpl.java | 148 +++++++++------------ .../service/util/SamplePersistenceHelper.java | 51 ++++++- .../src/main/xmi/tutti-persistence.zargo | Bin 64820 -> 65155 bytes 4 files changed, 115 insertions(+), 140 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java index 109f68a..d99d1da 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java @@ -36,7 +36,6 @@ import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl; import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix; import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixId; import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl; -import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId; import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -56,7 +55,6 @@ import org.hibernate.type.IntegerType; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -273,39 +271,17 @@ public class AccidentalBatchPersistenceServiceImpl extends AbstractPersistenceSe // Prepare sample measurements - CaracteristicMap caracteristics = - CaracteristicMap.copy(source.getCaracteristics()); + CaracteristicMap caracteristics = samplePersistenceHelper.extractCaracteristics(source); if (source.getDeadOrAlive() != null) { - - Caracteristic caracteristic = caracteristicService.getDeadOrAliveCaracteristic(); - caracteristics.put(caracteristic, source.getDeadOrAlive()); + caracteristics.put(caracteristicService.getDeadOrAliveCaracteristic(), source.getDeadOrAlive()); } if (source.getGender() != null) { - - Caracteristic caracteristic = caracteristicService.getSexCaracteristic(); - caracteristics.put(caracteristic, source.getGender()); + caracteristics.put(caracteristicService.getSexCaracteristic(), source.getGender()); } - if (source.getWeight() != null) { - - Caracteristic caracteristic = caracteristicService.getWeightMeasuredCaracteristic(); - caracteristics.put(caracteristic, source.getWeight()); - } - - if (source.getLengthStepCaracteristic() != null) { - - Caracteristic caracteristic = caracteristicService.getCaracteristic(PmfmId.ID_PMFM.getValue()); - caracteristics.put(caracteristic, - source.getLengthStepCaracteristic().getId()); - - caracteristics.put(source.getLengthStepCaracteristic(), - source.getSize()); - } - - samplePersistenceHelper.setSampleMeasurements(target, - caracteristics); + samplePersistenceHelper.setSampleMeasurements(target, caracteristics); } @@ -315,36 +291,20 @@ public class AccidentalBatchPersistenceServiceImpl extends AbstractPersistenceSe Caracteristic genderCaracteristic = caracteristicService.getSexCaracteristic(); - CaracteristicMap result = batch.getCaracteristics(); + samplePersistenceHelper.loadSampleMeasurements(batch); - samplePersistenceHelper.fillSampleMeasurements( - result, batch.getIdAsInt()); + CaracteristicMap caracteristics = batch.getCaracteristics(); - CaracteristicQualitativeValue deadOrAliveValue = - (CaracteristicQualitativeValue) result.remove(deadOrAliveCaracteristic); + CaracteristicQualitativeValue deadOrAliveValue = caracteristics.removeQualitativeValue(deadOrAliveCaracteristic); if (deadOrAliveValue != null) { batch.setDeadOrAlive(deadOrAliveValue); } - CaracteristicQualitativeValue genderValue = - (CaracteristicQualitativeValue) result.remove(genderCaracteristic); + CaracteristicQualitativeValue genderValue = caracteristics.removeQualitativeValue(genderCaracteristic); if (genderValue != null) { batch.setGender(genderValue); } - Float weight = (Float) result.remove(caracteristicService.getCaracteristic(PmfmId.WEIGHT_MEASURED.getValue())); - if (weight != null) { - batch.setWeight(weight); - } - - String lengthClassId = (String) result.remove(caracteristicService.getCaracteristic(PmfmId.ID_PMFM.getValue())); - if (lengthClassId != null) { - Caracteristic lengthStepCaracteristic = caracteristicService.getCaracteristic(Integer.valueOf(lengthClassId)); - batch.setLengthStepCaracteristic(lengthStepCaracteristic); - - Serializable length = result.remove(lengthStepCaracteristic); - batch.setSize((Float) length); - } } } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java index 7a34ffd..a6bbe48 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java @@ -43,10 +43,12 @@ import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl; import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatchs; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.service.referential.CaracteristicPersistenceService; import fr.ifremer.tutti.persistence.service.referential.SpeciesPersistenceService; @@ -60,7 +62,6 @@ import org.hibernate.type.IntegerType; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -68,6 +69,7 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -107,26 +109,15 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe public List<IndividualObservationBatch> getAllIndividualObservationBatchsForCruise(Integer cruiseId) { Preconditions.checkNotNull(cruiseId); - Caracteristic weightMeasuredCaracteristic = caracteristicService.getWeightMeasuredCaracteristic(); - Caracteristic pmfmIdCaracteristic = caracteristicService.getPmfmIdCaracteristic(); - List<IndividualObservationBatch> result = new ArrayList<>(); List<Integer> allFishingOperationIds = fishingOperationPersistenceService.getAllFishingOperationIds(cruiseId); allFishingOperationIds.forEach(fishingOperationId -> { Iterator<Object[]> list = queryList("allFishingOperationSamplesWithBatch", - "fishingOperationId", IntegerType.INSTANCE, fishingOperationId - ); - - FishingOperation fishingOperation = fishingOperationPersistenceService.getFishingOperation(fishingOperationId); - - while (list.hasNext()) { + "fishingOperationId", IntegerType.INSTANCE, fishingOperationId); - IndividualObservationBatch individualObservationBatch = toBean(weightMeasuredCaracteristic, pmfmIdCaracteristic, list.next()); - individualObservationBatch.setFishingOperation(fishingOperation); - result.add(individualObservationBatch); - - } + List<IndividualObservationBatch> resultForFishingOperation = toBeanListWithFishingOperation(list, fishingOperationId); + result.addAll(resultForFishingOperation); }); return Collections.unmodifiableList(result); @@ -137,23 +128,11 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe public List<IndividualObservationBatch> getAllIndividualObservationBatchsForFishingOperation(Integer fishingOperationId) { Preconditions.checkNotNull(fishingOperationId); - Caracteristic weightMeasuredCaracteristic = caracteristicService.getWeightMeasuredCaracteristic(); - Caracteristic pmfmIdCaracteristic = caracteristicService.getPmfmIdCaracteristic(); - - List<IndividualObservationBatch> result = new ArrayList<>(); Iterator<Object[]> list = queryList("allFishingOperationSamplesWithBatch", - "fishingOperationId", IntegerType.INSTANCE, fishingOperationId - ); + "fishingOperationId", IntegerType.INSTANCE, fishingOperationId); - FishingOperation fishingOperation = fishingOperationPersistenceService.getFishingOperation(fishingOperationId); + List<IndividualObservationBatch> result = toBeanListWithFishingOperation(list, fishingOperationId); - while (list.hasNext()) { - - IndividualObservationBatch individualObservationBatch = toBean(weightMeasuredCaracteristic, pmfmIdCaracteristic, list.next()); - individualObservationBatch.setFishingOperation(fishingOperation); - result.add(individualObservationBatch); - - } return Collections.unmodifiableList(result); } @@ -162,21 +141,10 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe public List<IndividualObservationBatch> getAllIndividualObservationBatchsForBatch(Integer batchId) { Preconditions.checkNotNull(batchId); - Caracteristic weightMeasuredCaracteristic = caracteristicService.getWeightMeasuredCaracteristic(); - Caracteristic pmfmIdCaracteristic = caracteristicService.getPmfmIdCaracteristic(); - Iterator<Object[]> list = queryList("allFishingOperationSamplesForBatch", - "batchId", IntegerType.INSTANCE, batchId - ); - - List<IndividualObservationBatch> result = Lists.newArrayList(); + "batchId", IntegerType.INSTANCE, batchId); - while (list.hasNext()) { - - IndividualObservationBatch individualObservationBatch = toBean(weightMeasuredCaracteristic, pmfmIdCaracteristic, list.next()); - result.add(individualObservationBatch); - - } + List<IndividualObservationBatch> result = toBeanList(list); return Collections.unmodifiableList(result); } @@ -326,27 +294,17 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe // Prepare sample measurements - CaracteristicMap caracteristics = - CaracteristicMap.copy(source.getCaracteristics()); - - if (source.getWeight() != null) { - - Caracteristic caracteristic = caracteristicService.getWeightMeasuredCaracteristic(); - caracteristics.put(caracteristic, source.getWeight()); - } - - if (source.getLengthStepCaracteristic() != null) { + CaracteristicMap caracteristics = samplePersistenceHelper.extractCaracteristics(source); - Caracteristic caracteristic = caracteristicService.getPmfmIdCaracteristic(); - caracteristics.put(caracteristic, source.getLengthStepCaracteristic().getId()); - - caracteristics.put(source.getLengthStepCaracteristic(), source.getSize()); - } + CopyIndividualObservationMode copyIndividualObservationMode = source.getCopyIndividualObservationMode(); + Objects.requireNonNull(copyIndividualObservationMode, "Any individual observation requires a copy mode"); + caracteristics.put(caracteristicService.getCopyIndividualObservationModeCaracteristic(), copyIndividualObservationMode); samplePersistenceHelper.setSampleMeasurements(target, caracteristics); + } - protected IndividualObservationBatch toBean(Caracteristic weightMeasuredCaracteristic, Caracteristic pmfmIdCaracteristic, Object[] source) { + protected IndividualObservationBatch toBean(Object[] source) { IndividualObservationBatch batch = IndividualObservationBatchs.newIndividualObservationBatch(); @@ -373,56 +331,66 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe batch.setCaracteristics(new CaracteristicMap()); // fill all measurements - fillSampleMeasurements(weightMeasuredCaracteristic, pmfmIdCaracteristic, batch); + fillSampleMeasurements(batch); return batch; } + protected List<IndividualObservationBatch> toBeanList(Iterator<Object[]> list) { + + List<IndividualObservationBatch> result = Lists.newArrayList(); + + while (list.hasNext()) { + + IndividualObservationBatch individualObservationBatch = toBean(list.next()); + result.add(individualObservationBatch); + + } + + return result; + + } + + protected List<IndividualObservationBatch> toBeanListWithFishingOperation(Iterator<Object[]> list, Integer fishingOperationId) { + + List<IndividualObservationBatch> result = toBeanList(list); + FishingOperation fishingOperation = fishingOperationPersistenceService.getFishingOperation(fishingOperationId); + result.forEach(individualObservationBatch -> individualObservationBatch.setFishingOperation(fishingOperation)); + return result; + } + protected Batch getBatch(Integer operationId) { Preconditions.checkNotNull(operationId); return batchHelper.getRootCatchBatchByFishingOperationId(operationId, false); } - protected void fillSampleMeasurements(Caracteristic weightMeasuredCaracteristic, Caracteristic pmfmIdCaracteristic, IndividualObservationBatch batch) { + protected void fillSampleMeasurements(IndividualObservationBatch batch) { - CaracteristicMap result = batch.getCaracteristics(); + samplePersistenceHelper.loadSampleMeasurements(batch); - samplePersistenceHelper.fillSampleMeasurements(result, batch.getIdAsInt()); + CaracteristicMap caracteristics = batch.getCaracteristics(); - Float weight = (Float) result.remove(weightMeasuredCaracteristic); - if (weight != null) { - batch.setWeight(weight); - } + Caracteristic copyIndividualObservationModeCaracteristic = caracteristicService.getCopyIndividualObservationModeCaracteristic(); - String lengthClassId = (String) result.remove(pmfmIdCaracteristic); - if (lengthClassId != null) { - Caracteristic lengthStepCaracteristic = caracteristicService.getCaracteristic(Integer.valueOf(lengthClassId)); - batch.setLengthStepCaracteristic(lengthStepCaracteristic); + CaracteristicQualitativeValue copyIndividualObservationMode = caracteristics.removeQualitativeValue(copyIndividualObservationModeCaracteristic); + if (copyIndividualObservationMode != null) { + batch.setCopyIndividualObservationMode(CopyIndividualObservationMode.valueOf(copyIndividualObservationMode.getIdAsInt())); + } else { + batch.setCopyIndividualObservationMode(CopyIndividualObservationMode.NOTHING); - Serializable length = result.remove(lengthStepCaracteristic); - batch.setSize((Float) length); } + } protected Set<Integer> getAllIndividualObservationBatchIdsForBatch(Integer batchId) { Preconditions.checkNotNull(batchId); - Iterator<Integer> list = queryListTyped("allFishingOperationSampleIdsForBatch", - "batchId", IntegerType.INSTANCE, batchId - ); + "batchId", IntegerType.INSTANCE, batchId); - Set<Integer> result = new LinkedHashSet<>(); - - while (list.hasNext()) { - - Integer id = list.next(); - result.add(id); - - } - return result; + return toIds(list); } @@ -431,16 +399,19 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe Preconditions.checkNotNull(fishingOperationId); Iterator<Integer> list = queryListTyped("allFishingOperationSampleIds", - "fishingOperationId", IntegerType.INSTANCE, fishingOperationId - ); + "fishingOperationId", IntegerType.INSTANCE, fishingOperationId); + + return toIds(list); + + } + + protected Set<Integer> toIds(Iterator<Integer> list) { Set<Integer> result = new LinkedHashSet<>(); while (list.hasNext()) { - Integer id = list.next(); result.add(id); - } return result; @@ -520,6 +491,7 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe } samplePersistenceHelper.deleteSample(observationId); } + } } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SamplePersistenceHelper.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SamplePersistenceHelper.java index 89152cf..2893a31 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SamplePersistenceHelper.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SamplePersistenceHelper.java @@ -29,8 +29,10 @@ import fr.ifremer.adagio.core.dao.data.sample.SampleDao; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.adagio.core.dao.referential.QualityFlagCode; import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl; +import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId; import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.SampleEntity; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; import fr.ifremer.tutti.persistence.service.AbstractPersistenceService; @@ -130,9 +132,13 @@ public class SamplePersistenceHelper extends AbstractPersistenceService { } } - public void fillSampleMeasurements(CaracteristicMap result, Integer sampleId) { - Iterator<Object[]> list = queryList("sampleMeasurements", - "sampleId", IntegerType.INSTANCE, sampleId); + public <S extends SampleEntity> void loadSampleMeasurements(S sample) { + + Integer sampleId = sample.getIdAsInt(); + Iterator<Object[]> list = queryList("sampleMeasurements", "sampleId", IntegerType.INSTANCE, sampleId); + + CaracteristicMap caracteristicMap = sample.getCaracteristics(); + while (list.hasNext()) { int colIndex = 0; Object[] source = list.next(); @@ -155,8 +161,45 @@ public class SamplePersistenceHelper extends AbstractPersistenceService { value = alphanumericalValue; break; } - result.put(caracteristic, value); + caracteristicMap.put(caracteristic, value); } + + Float weight = caracteristicMap.removeFloatValue(caracteristicService.getCaracteristic(PmfmId.WEIGHT_MEASURED.getValue())); + if (weight != null) { + sample.setWeight(weight); + } + + String lengthClassId = caracteristicMap.removeStringValue(caracteristicService.getCaracteristic(PmfmId.ID_PMFM.getValue())); + if (lengthClassId != null) { + Caracteristic lengthStepCaracteristic = caracteristicService.getCaracteristic(Integer.valueOf(lengthClassId)); + sample.setLengthStepCaracteristic(lengthStepCaracteristic); + + Float length = caracteristicMap.removeFloatValue(lengthStepCaracteristic); + sample.setSize(length); + } + + } + + public <S extends SampleEntity> CaracteristicMap extractCaracteristics(S sample) { + + CaracteristicMap caracteristics = CaracteristicMap.copy(sample.getCaracteristics()); + + if (sample.getWeight() != null) { + + Caracteristic caracteristic = caracteristicService.getWeightMeasuredCaracteristic(); + caracteristics.put(caracteristic, sample.getWeight()); + } + + if (sample.getLengthStepCaracteristic() != null) { + + Caracteristic caracteristic = caracteristicService.getCaracteristic(PmfmId.ID_PMFM.getValue()); + caracteristics.put(caracteristic, sample.getLengthStepCaracteristic().getId()); + + caracteristics.put(sample.getLengthStepCaracteristic(), sample.getSize()); + } + + return caracteristics; + } protected SampleMeasurement setSampleMeasurement(Sample sample, Caracteristic caracteristic, Serializable value) { diff --git a/tutti-persistence/src/main/xmi/tutti-persistence.zargo b/tutti-persistence/src/main/xmi/tutti-persistence.zargo index 8f3ae96..dd234c0 100644 Binary files a/tutti-persistence/src/main/xmi/tutti-persistence.zargo and b/tutti-persistence/src/main/xmi/tutti-persistence.zargo differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.