branch feature/6688 updated (8f74ae4 -> 984e593)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git from 8f74ae4 import of fishing operation parameters is done new 4dee86b add some methods to create a collections of entities new 3c9f2a8 only parse referent species new 0b4d72a introduce some row support (for cruise context and operation context) + adapts csv rows for import new 2a79044 impact row changes to producers new b106048 introduce operation import context new 18186d9 open api new d560f0c add another caracteristic parser (with protected one) new 2f27401 add usefull validation method for consumers + continue import for marine litter, accidental catches and individual observations new a4c4ba4 add more data for test new 984e593 use immutable list and not set + remove todo The 10 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 984e593beaf0ad5a262fea35b0c4b6162d6d2257 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:41:43 2015 +0100 use immutable list and not set + remove todo commit a4c4ba401798aceaa0c90619cf5c7419bd419ce3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:27:56 2015 +0100 add more data for test commit 2f27401a4203e2afbc205900b838569de7ecb0bb Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:27:44 2015 +0100 add usefull validation method for consumers + continue import for marine litter, accidental catches and individual observations commit d560f0c208e60abd3d86bffe2648cca649c660a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:25:27 2015 +0100 add another caracteristic parser (with protected one) commit 18186d9005a0ef1e6bf879c8e306e7effc046bc9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:24:41 2015 +0100 open api commit b106048f5c9a4c8de5a18aa0946218c06a7e814d Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:24:29 2015 +0100 introduce operation import context commit 2a79044e149074acfd793a485717e6932dff378c Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:24:04 2015 +0100 impact row changes to producers commit 0b4d72a99eeda096612130c3578b647a1fb0dde3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:23:11 2015 +0100 introduce some row support (for cruise context and operation context) + adapts csv rows for import commit 3c9f2a8e86715fa8460b4bd7566804ad29a89848 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:21:55 2015 +0100 only parse referent species commit 4dee86b695581f179794996247efe126b401c4a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:21:31 2015 +0100 add some methods to create a collections of entities Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 25 ++++ .../persistence/TuttiPersistenceNoDbImpl.java | 61 ++++++++ .../service/AccidentalBatchPersistenceService.java | 4 + .../AccidentalBatchPersistenceServiceImpl.java | 41 ++++-- .../service/BenthosBatchPersistenceService.java | 4 + .../BenthosBatchPersistenceServiceImpl.java | 43 +++++- ...dividualObservationBatchPersistenceService.java | 4 + ...dualObservationBatchPersistenceServiceImpl.java | 63 ++++++-- .../MarineLitterBatchPersistenceService.java | 5 + .../MarineLitterBatchPersistenceServiceImpl.java | 41 +++++- .../service/SpeciesBatchPersistenceService.java | 4 + .../SpeciesBatchPersistenceServiceImpl.java | 48 +++++- .../ifremer/tutti/service/PersistenceService.java | 31 +++- .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 2 +- .../tutti/service/csv/SpeciesParserFormatter.java | 2 +- .../genericformat/GenericFormatImportContext.java | 56 ++++++- .../GenericFormatImportEntityParserFactory.java | 10 ++ .../GenericFormatImportOperationContext.java | 163 +++++++++++++++++++++ .../genericformat/GenericFormatImportService.java | 30 +++- .../GenericFormatImportValidationHelper.java | 52 +++++++ .../GenericformatImportPersitenceHelper.java | 141 +++++++++++++++++- .../consumer/CsvConsumerForAccidentalCatch.java | 61 +++++++- .../consumer/CsvConsumerForCatch.java | 12 +- .../consumer/CsvConsumerForGearCaracteristic.java | 16 +- .../CsvConsumerForIndividualObservation.java | 62 +++++++- .../consumer/CsvConsumerForMarineLitter.java | 16 +- .../consumer/CsvConsumerForOperation.java | 34 +++-- .../consumer/CsvConsumerForParameter.java | 92 ++++-------- .../consumer/CsvConsumerForSampleCategory.java | 2 +- .../FishingOperationAlreadyImportedException.java | 2 +- .../genericformat/csv/AccidentalCatchModel.java | 8 +- .../genericformat/csv/AccidentalCatchRow.java | 81 +++------- .../service/genericformat/csv/CatchModel.java | 5 +- .../tutti/service/genericformat/csv/CatchRow.java | 72 ++------- .../genericformat/csv/GearCaracteristicModel.java | 5 +- .../genericformat/csv/GearCaracteristicRow.java | 44 +----- .../csv/IndividualObservationModel.java | 9 +- .../csv/IndividualObservationRow.java | 78 +++------- .../genericformat/csv/MarineLitterModel.java | 4 +- .../service/genericformat/csv/MarineLitterRow.java | 83 ++++------- .../service/genericformat/csv/OperationModel.java | 10 +- .../service/genericformat/csv/OperationRow.java | 152 +++++-------------- .../service/genericformat/csv/ParameterModel.java | 6 +- .../service/genericformat/csv/ParameterRow.java | 83 +---------- .../csv/RowWithCruiseContextSupport.java | 58 ++++++++ .../csv/RowWithOperationContextSupport.java | 73 +++++++++ .../service/genericformat/csv/SurveyModel.java | 5 +- .../tutti/service/genericformat/csv/SurveyRow.java | 85 ++++------- .../producer/CsvProducerForAccidentalCatch.java | 6 +- .../producer/CsvProducerForCatch.java | 8 +- .../CsvProducerForIndividualObservation.java | 8 +- .../producer/CsvProducerForMarineLitter.java | 2 +- .../genericFormat/empty/accidentalCatch.csv | 14 ++ .../genericFormat/empty/individualObservation.csv | 25 ++++ .../resources/genericFormat/empty/marineLitter.csv | 5 +- 55 files changed, 1339 insertions(+), 717 deletions(-) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithCruiseContextSupport.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithOperationContextSupport.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 4dee86b695581f179794996247efe126b401c4a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:21:31 2015 +0100 add some methods to create a collections of entities --- .../tutti/persistence/TuttiPersistenceImpl.java | 25 +++++++++ .../persistence/TuttiPersistenceNoDbImpl.java | 61 +++++++++++++++++++++ .../service/AccidentalBatchPersistenceService.java | 4 ++ .../AccidentalBatchPersistenceServiceImpl.java | 41 +++++++++----- .../service/BenthosBatchPersistenceService.java | 4 ++ .../BenthosBatchPersistenceServiceImpl.java | 43 +++++++++++++-- ...dividualObservationBatchPersistenceService.java | 4 ++ ...dualObservationBatchPersistenceServiceImpl.java | 63 +++++++++++++++++----- .../MarineLitterBatchPersistenceService.java | 5 ++ .../MarineLitterBatchPersistenceServiceImpl.java | 41 +++++++++++--- .../service/SpeciesBatchPersistenceService.java | 4 ++ .../SpeciesBatchPersistenceServiceImpl.java | 48 +++++++++++++++-- .../ifremer/tutti/service/PersistenceService.java | 31 +++++++++-- 13 files changed, 333 insertions(+), 41 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index c8664f9..d440f2f 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -989,6 +989,11 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override + public Collection<SpeciesBatch> createSpeciesBatches(String fishingOperationId, Collection<SpeciesBatch> beans) { + return getSpeciesBatchService().createSpeciesBatches(fishingOperationId, beans); + } + + @Override public SpeciesBatch saveSpeciesBatch(SpeciesBatch bean) { return getSpeciesBatchService().saveSpeciesBatch(bean); } @@ -1043,6 +1048,11 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override + public Collection<BenthosBatch> createBenthosBatches(String fishingOperationId, Collection<BenthosBatch> beans) { + return getBenthosBatchService().createBenthosBatches(fishingOperationId, beans); + } + + @Override public BenthosBatch saveBenthosBatch(BenthosBatch bean) { return getBenthosBatchService().saveBenthosBatch(bean); } @@ -1098,6 +1108,11 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override + public Collection<MarineLitterBatch> createMarineLitterBatches(String fishingOperationId, Collection<MarineLitterBatch> beans) { + return getMarineLitterBatchService().createMarineLitterBatches(fishingOperationId, beans); + } + + @Override public MarineLitterBatch saveMarineLitterBatch(MarineLitterBatch bean) { return getMarineLitterBatchService().saveMarineLitterBatch(bean); } @@ -1122,6 +1137,11 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override + public Collection<AccidentalBatch> createAccidentalBatches(String fishingOperationId, Collection<AccidentalBatch> beans) { + return getAccidentalBatchService().createAccidentalBatches(fishingOperationId, beans); + } + + @Override public AccidentalBatch saveAccidentalBatch(AccidentalBatch bean) { return getAccidentalBatchService().saveAccidentalBatch(bean); } @@ -1151,6 +1171,11 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override + public Collection<IndividualObservationBatch> createIndividualObservationBatches(String fishingOperationId, Collection<IndividualObservationBatch> beans) { + return getIndividualObservationBatchService().createIndividualObservationBatches(fishingOperationId, beans); + } + + @Override public IndividualObservationBatch saveIndividualObservationBatch(IndividualObservationBatch bean) { return getIndividualObservationBatchService().saveIndividualObservationBatch(bean); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index ba9f0b4..7ab5eeb 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -386,6 +386,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Program methods --// + //------------------------------------------------------------------------// + @Override public List<Program> getAllProgram() { throw notImplemented(); @@ -406,6 +410,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Cruise methods --// + //------------------------------------------------------------------------// + @Override public List<Cruise> getAllCruise(String programId) { throw notImplemented(); @@ -448,6 +456,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Protocol methods --// + //------------------------------------------------------------------------// + @Override public TuttiProtocol getProtocol() { throw notImplemented(); @@ -498,6 +510,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Fishing operation methods --// + //------------------------------------------------------------------------// + @Override public int getFishingOperationCount(String cruiseId) { throw notImplemented(); @@ -543,6 +559,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Catch batch methods --// + //------------------------------------------------------------------------// + @Override public CatchBatch getCatchBatchFromFishingOperation(String id) { throw notImplemented(); @@ -563,6 +583,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Species batch methods --// + //------------------------------------------------------------------------// + @Override public BatchContainer<SpeciesBatch> getRootSpeciesBatch(String fishingOperationId, boolean validateTree) throws InvalidBatchModelException { throw notImplemented(); @@ -574,6 +598,11 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override + public Collection<SpeciesBatch> createSpeciesBatches(String fishingOperationId, Collection<SpeciesBatch> beans) { + throw notImplemented(); + } + + @Override public SpeciesBatch saveSpeciesBatch(SpeciesBatch bean) { throw notImplemented(); } @@ -613,6 +642,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Benthos batch methods --// + //------------------------------------------------------------------------// + @Override public BatchContainer<BenthosBatch> getRootBenthosBatch(String fishingOperationId, boolean validateTree) throws InvalidBatchModelException { throw notImplemented(); @@ -624,6 +657,11 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override + public Collection<BenthosBatch> createBenthosBatches(String fishingOperationId, Collection<BenthosBatch> beans) { + throw notImplemented(); + } + + @Override public BenthosBatch saveBenthosBatch(BenthosBatch bean) { throw notImplemented(); } @@ -663,6 +701,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Marine litter batch methods --// + //------------------------------------------------------------------------// + @Override public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch(String fishingOperationId) { throw notImplemented(); @@ -674,6 +716,11 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override + public Collection<MarineLitterBatch> createMarineLitterBatches(String fishingOperationId, Collection<MarineLitterBatch> beans) { + throw notImplemented(); + } + + @Override public MarineLitterBatch saveMarineLitterBatch(MarineLitterBatch bean) { throw notImplemented(); } @@ -683,6 +730,10 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { throw notImplemented(); } + //------------------------------------------------------------------------// + //-- Accidental Batch methods --// + //------------------------------------------------------------------------// + @Override public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) { throw notImplemented(); @@ -694,6 +745,11 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override + public Collection<AccidentalBatch> createAccidentalBatches(String fishingOperationId, Collection<AccidentalBatch> beans) { + throw notImplemented(); + } + + @Override public AccidentalBatch saveAccidentalBatch(AccidentalBatch bean) { throw notImplemented(); } @@ -744,6 +800,11 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override + public Collection<IndividualObservationBatch> createIndividualObservationBatches(String fishingOperationId, Collection<IndividualObservationBatch> beans) { + throw notImplemented(); + } + + @Override public IndividualObservationBatch saveIndividualObservationBatch(IndividualObservationBatch bean) { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java index 8ed671f..3961572 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java @@ -26,6 +26,7 @@ import fr.ifremer.tutti.persistence.TuttiPersistenceServiceImplementor; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; /** @@ -43,6 +44,9 @@ public interface AccidentalBatchPersistenceService extends TuttiPersistenceServi AccidentalBatch createAccidentalBatch(AccidentalBatch bean); @Transactional(readOnly = false) + Collection<AccidentalBatch> createAccidentalBatches(String fishingOperationId, Collection<AccidentalBatch> beans); + + @Transactional(readOnly = false) AccidentalBatch saveAccidentalBatch(AccidentalBatch bean); @Transactional(readOnly = false) 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 f1ae0a7..fe5f6d8 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 @@ -57,6 +57,8 @@ 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; import java.util.Iterator; import java.util.List; @@ -128,19 +130,17 @@ public class AccidentalBatchPersistenceServiceImpl extends AbstractPersistenceSe } @Override - public AccidentalBatch createAccidentalBatch(AccidentalBatch bean) { - Preconditions.checkNotNull(bean); - Preconditions.checkState(TuttiEntities.isNew(bean)); - Preconditions.checkNotNull(bean.getSpecies()); - Preconditions.checkNotNull(bean.getFishingOperation()); - Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation())); + public Collection<AccidentalBatch> createAccidentalBatches(String fishingOperationId, Collection<AccidentalBatch> beans) { + + Preconditions.checkNotNull(beans); + Collection<AccidentalBatch> result = new ArrayList<>(); + + for (AccidentalBatch bean : beans) { + AccidentalBatch created = createAccidentalBatch(bean); + result.add(created); + } + return result; - Sample sample = Sample.Factory.newInstance(); - beanToEntity(bean, sample); - samplePersistenceHelper.create(sample); - bean.setId(String.valueOf(sample.getId())); - synchronizationStatusHelper.setDirty(bean); - return bean; } @Override @@ -188,6 +188,23 @@ public class AccidentalBatchPersistenceServiceImpl extends AbstractPersistenceSe // -- Internal methods --// // ------------------------------------------------------------------------// + @Override + public AccidentalBatch createAccidentalBatch(AccidentalBatch bean) { + Preconditions.checkNotNull(bean); + Preconditions.checkState(TuttiEntities.isNew(bean)); + Preconditions.checkNotNull(bean.getSpecies()); + Preconditions.checkNotNull(bean.getFishingOperation()); + Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation())); + + //TODO Optimize this (in the method we load each time the fishing operation...) + Sample sample = Sample.Factory.newInstance(); + beanToEntity(bean, sample); + samplePersistenceHelper.create(sample); + bean.setId(String.valueOf(sample.getId())); + synchronizationStatusHelper.setDirty(bean); + return bean; + } + protected void beanToEntity(AccidentalBatch source, Sample target) { if (TuttiEntities.isNew(source)) { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java index 430a2b5..5ec5858 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceService.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Species; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; /** @@ -63,6 +64,9 @@ public interface BenthosBatchPersistenceService extends TuttiPersistenceServiceI BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId); @Transactional(readOnly = false) + Collection<BenthosBatch> createBenthosBatches(String fishingOperationId, Collection<BenthosBatch> beans); + + @Transactional(readOnly = false) BenthosBatch saveBenthosBatch(BenthosBatch bean); @Transactional(readOnly = false) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java index 8db972f..dee2116 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java @@ -31,6 +31,7 @@ import fr.ifremer.adagio.core.dao.data.batch.CatchBatch; import fr.ifremer.adagio.core.dao.data.batch.SortingBatch; import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon; import fr.ifremer.tutti.persistence.InvalidBatchModelException; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; @@ -54,6 +55,7 @@ import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; @@ -170,16 +172,51 @@ public class BenthosBatchPersistenceServiceImpl extends AbstractPersistenceServi } @Override - public BenthosBatch createBenthosBatch(BenthosBatch bean, - String parentBatchId) { + public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId) { Preconditions.checkNotNull(bean); - Preconditions.checkArgument(bean.getId() == null); + Preconditions.checkArgument(TuttiEntities.isNew(bean)); Preconditions.checkNotNull(bean.getSpecies()); Preconditions.checkNotNull(bean.getSpecies().getId()); Preconditions.checkNotNull(bean.getFishingOperation()); Preconditions.checkNotNull(bean.getFishingOperation().getId()); CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(bean.getFishingOperation().getId(), false); + BenthosBatch created = createBenthosBatch(bean, parentBatchId, catchBatch); +// SortingBatch batch = SortingBatch.Factory.newInstance(); +// beanToEntity(bean, batch, parentBatchId, catchBatch); +// bean = batchHelper.createSortingBatch(bean, catchBatch, batch); + + return created; + } + + @Override + public Collection<BenthosBatch> createBenthosBatches(String fishingOperationId, Collection<BenthosBatch> beans) { + + Preconditions.checkNotNull(beans); + Preconditions.checkNotNull(fishingOperationId); + + CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(fishingOperationId, false); + + Collection<BenthosBatch> result = new ArrayList<>(); + for (BenthosBatch bean : beans) { + + BenthosBatch created = createBenthosBatch(bean, null, catchBatch); + result.add(created); + + } + return result; + + } + + protected BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId, CatchBatch catchBatch) { + + Preconditions.checkNotNull(bean); + Preconditions.checkArgument(TuttiEntities.isNew(bean)); + Preconditions.checkNotNull(bean.getSpecies()); + Preconditions.checkNotNull(bean.getSpecies().getId()); + Preconditions.checkNotNull(bean.getFishingOperation()); + Preconditions.checkNotNull(bean.getFishingOperation().getId()); + SortingBatch batch = SortingBatch.Factory.newInstance(); beanToEntity(bean, batch, parentBatchId, catchBatch); bean = batchHelper.createSortingBatch(bean, catchBatch, batch); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java index d588ad9..bd4c8aa 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java @@ -26,6 +26,7 @@ import fr.ifremer.tutti.persistence.TuttiPersistenceServiceImplementor; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; /** @@ -43,6 +44,9 @@ public interface IndividualObservationBatchPersistenceService extends TuttiPersi IndividualObservationBatch createIndividualObservationBatch(IndividualObservationBatch bean); @Transactional(readOnly = false) + Collection<IndividualObservationBatch> createIndividualObservationBatches(String fishingOperationId, Collection<IndividualObservationBatch> beans); + + @Transactional(readOnly = false) IndividualObservationBatch saveIndividualObservationBatch(IndividualObservationBatch bean); @Transactional(readOnly = false) 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 ccb9772..04c2b03 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 @@ -59,6 +59,8 @@ 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; import java.util.Iterator; import java.util.List; @@ -99,7 +101,7 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe Integer operationId = Integer.valueOf(fishingOperationId); // Get catch Batch - Batch catchBatch = getBatch(operationId); + Batch catchBatch = getBatch(fishingOperationId); Iterator<Object[]> list = queryList( "allFishingOperationSamplesWithBatch", @@ -146,21 +148,38 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe public IndividualObservationBatch createIndividualObservationBatch(IndividualObservationBatch bean) { Preconditions.checkNotNull(bean); Preconditions.checkState(TuttiEntities.isNew(bean)); - Preconditions.checkNotNull(bean.getSpecies()); +// Preconditions.checkNotNull(bean.getSpecies()); FishingOperation fishingOperation = bean.getFishingOperation(); Preconditions.checkNotNull(fishingOperation); Preconditions.checkState(!TuttiEntities.isNew(fishingOperation)); // Get catch Batch - Batch catchBatch = getBatch(fishingOperation.getIdAsInt()); + Batch catchBatch = getBatch(fishingOperation.getId()); + IndividualObservationBatch created = createIndividualObservationBatch(bean, catchBatch); + return created; +// Sample sample = Sample.Factory.newInstance(); +// beanToEntity(bean, sample, catchBatch); +// samplePersistenceHelper.create(sample); +// bean.setId(String.valueOf(sample.getId())); +// synchronizationStatusHelper.setDirty(bean); +// return bean; + } - Sample sample = Sample.Factory.newInstance(); - beanToEntity(bean, sample, catchBatch); - samplePersistenceHelper.create(sample); - bean.setId(String.valueOf(sample.getId())); - synchronizationStatusHelper.setDirty(bean); - return bean; + @Override + public Collection<IndividualObservationBatch> createIndividualObservationBatches(String fishingOperationId, Collection<IndividualObservationBatch> beans) { + + // Get catch Batch + Batch catchBatch = getBatch(fishingOperationId); + + Collection<IndividualObservationBatch> result = new ArrayList<>(); + for (IndividualObservationBatch bean : beans) { + + IndividualObservationBatch created = createIndividualObservationBatch(bean, catchBatch); + result.add(created); + + } + return result; } @Override @@ -174,7 +193,7 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe Preconditions.checkState(!TuttiEntities.isNew(fishingOperation)); // Get catch Batch - Batch catchBatch = getBatch(fishingOperation.getIdAsInt()); + Batch catchBatch = getBatch(fishingOperation.getId()); Sample sample = samplePersistenceHelper.load(bean.getIdAsInt()); @@ -215,6 +234,26 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe // -- Internal methods --// // ------------------------------------------------------------------------// + protected IndividualObservationBatch createIndividualObservationBatch(IndividualObservationBatch bean, Batch catchBatch) { + + Preconditions.checkNotNull(bean); + Preconditions.checkState(TuttiEntities.isNew(bean)); + Preconditions.checkNotNull(bean.getSpecies()); + + FishingOperation fishingOperation = bean.getFishingOperation(); + Preconditions.checkNotNull(fishingOperation); + Preconditions.checkState(!TuttiEntities.isNew(fishingOperation)); + + //TODO Optimize this (in the method we load each time the fishing operation...) + Sample sample = Sample.Factory.newInstance(); + beanToEntity(bean, sample, catchBatch); + samplePersistenceHelper.create(sample); + bean.setId(String.valueOf(sample.getId())); + synchronizationStatusHelper.setDirty(bean); + return bean; + + } + protected void beanToEntity(IndividualObservationBatch source, Sample target, Batch vracSpeciesBatch) { @@ -308,10 +347,10 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe caracteristics); } - protected Batch getBatch(Integer operationId) { + protected Batch getBatch(String operationId) { Preconditions.checkNotNull(operationId); - CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(operationId.toString(), false); + CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(operationId, false); return catchBatch; } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceService.java index 30ab527..31e04f1 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceService.java @@ -27,6 +27,8 @@ import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; + /** * CRUD of {@link MarineLitterBatch} entity. * @@ -52,6 +54,9 @@ public interface MarineLitterBatchPersistenceService extends TuttiPersistenceSer MarineLitterBatch createMarineLitterBatch(MarineLitterBatch bean); @Transactional(readOnly = false) + Collection<MarineLitterBatch> createMarineLitterBatches(String fishingOperationId, Collection<MarineLitterBatch> beans); + + @Transactional(readOnly = false) MarineLitterBatch saveMarineLitterBatch(MarineLitterBatch bean); @Transactional(readOnly = false) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java index 61fd223..f28acbd 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java @@ -46,6 +46,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; import java.util.Set; @@ -130,19 +131,47 @@ public class MarineLitterBatchPersistenceServiceImpl extends AbstractPersistence @Override public MarineLitterBatch createMarineLitterBatch(MarineLitterBatch bean) { Preconditions.checkNotNull(bean); - Preconditions.checkArgument(bean.getId() == null); Preconditions.checkNotNull(bean.getFishingOperation()); Preconditions.checkNotNull(bean.getFishingOperation().getId()); + + CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(bean.getFishingOperation().getId(), false); + + MarineLitterBatch created = createMarineLitterBatch(catchBatch, bean); + return created; + + } + + @Override + public Collection<MarineLitterBatch> createMarineLitterBatches(String fishingOperationId, Collection<MarineLitterBatch> beans) { + + Preconditions.checkNotNull(beans); + + CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(fishingOperationId, false); + + Collection<MarineLitterBatch> result = new ArrayList<>(beans.size()); + + for (MarineLitterBatch bean : beans) { + + MarineLitterBatch created = createMarineLitterBatch(catchBatch, bean); + result.add(created); + + } + return result; + } + + protected MarineLitterBatch createMarineLitterBatch(CatchBatch catchBatch, MarineLitterBatch bean) { + + Preconditions.checkNotNull(bean); + Preconditions.checkArgument(bean.getId() == null); Preconditions.checkNotNull(bean.getMarineLitterCategory()); Preconditions.checkNotNull(bean.getMarineLitterSizeCategory()); Preconditions.checkNotNull(bean.getNumber()); - CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(bean.getFishingOperation().getId(), false); SortingBatch batch = SortingBatch.Factory.newInstance(); beanToEntity(bean, batch, catchBatch); - bean = batchHelper.createSortingBatch(bean, catchBatch, batch); + MarineLitterBatch created = batchHelper.createSortingBatch(bean, catchBatch, batch); + return created; - return bean; } @Override @@ -203,8 +232,8 @@ public class MarineLitterBatchPersistenceServiceImpl extends AbstractPersistence SortingBatch target, CatchBatch catchBatch) { - Preconditions.checkNotNull(source.getFishingOperation()); - Preconditions.checkNotNull(source.getFishingOperation().getId()); +// Preconditions.checkNotNull(source.getFishingOperation()); +// Preconditions.checkNotNull(source.getFishingOperation().getId()); // If parent and root need to be set if (target.getId() == null || target.getRootBatch() == null) { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java index 8975c2c..cb648ec 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Species; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; /** @@ -65,6 +66,9 @@ public interface SpeciesBatchPersistenceService extends TuttiPersistenceServiceI SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId); @Transactional(readOnly = false) + Collection<SpeciesBatch> createSpeciesBatches(String fishingOperationId, Collection<SpeciesBatch> beans); + + @Transactional(readOnly = false) SpeciesBatch saveSpeciesBatch(SpeciesBatch bean); @Transactional(readOnly = false) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java index 4b97288..b91d021 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java @@ -31,6 +31,7 @@ import fr.ifremer.adagio.core.dao.data.batch.CatchBatch; import fr.ifremer.adagio.core.dao.data.batch.SortingBatch; import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon; import fr.ifremer.tutti.persistence.InvalidBatchModelException; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; @@ -54,6 +55,7 @@ import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; @@ -179,16 +181,54 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi } @Override - public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, - String parentBatchId) { + public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId) { Preconditions.checkNotNull(bean); - Preconditions.checkArgument(bean.getId() == null); + Preconditions.checkArgument(TuttiEntities.isNew(bean)); Preconditions.checkNotNull(bean.getSpecies()); Preconditions.checkNotNull(bean.getSpecies().getId()); Preconditions.checkNotNull(bean.getFishingOperation()); Preconditions.checkNotNull(bean.getFishingOperation().getId()); CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(bean.getFishingOperation().getId(), false); + + SpeciesBatch created = createSpeciesBatch(bean, parentBatchId, catchBatch); +// +// SortingBatch batch = SortingBatch.Factory.newInstance(); +// beanToEntity(bean, batch, parentBatchId, catchBatch); +// bean = batchHelper.createSortingBatch(bean, catchBatch, batch); + + return created; + } + + @Override + public Collection<SpeciesBatch> createSpeciesBatches(String fishingOperationId, Collection<SpeciesBatch> beans) { + + Preconditions.checkNotNull(beans); + Preconditions.checkNotNull(fishingOperationId); + + CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(fishingOperationId, false); + + Collection<SpeciesBatch> result = new ArrayList<>(); + for (SpeciesBatch bean : beans) { + + SpeciesBatch created = createSpeciesBatch(bean, null, catchBatch); + result.add(created); + + } + return result; + + } + + + protected SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId, CatchBatch catchBatch) { + + Preconditions.checkNotNull(bean); + Preconditions.checkArgument(TuttiEntities.isNew(bean)); + Preconditions.checkNotNull(bean.getSpecies()); + Preconditions.checkNotNull(bean.getSpecies().getId()); + Preconditions.checkNotNull(bean.getFishingOperation()); + Preconditions.checkNotNull(bean.getFishingOperation().getId()); + SortingBatch batch = SortingBatch.Factory.newInstance(); beanToEntity(bean, batch, parentBatchId, catchBatch); bean = batchHelper.createSortingBatch(bean, catchBatch, batch); @@ -199,7 +239,7 @@ public class SpeciesBatchPersistenceServiceImpl extends AbstractPersistenceServi @Override public SpeciesBatch saveSpeciesBatch(SpeciesBatch bean) { Preconditions.checkNotNull(bean); - Preconditions.checkNotNull(bean.getId()); + Preconditions.checkArgument(!TuttiEntities.isNew(bean)); Integer batchId = bean.getIdAsInt(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 67c3413..1e1ff30 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1256,12 +1256,16 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, - String parentBatchId) { + public SpeciesBatch createSpeciesBatch(SpeciesBatch bean, String parentBatchId) { return driver.createSpeciesBatch(bean, parentBatchId); } @Override + public Collection<SpeciesBatch> createSpeciesBatches(String fishingOperationId, Collection<SpeciesBatch> beans) { + return driver.createSpeciesBatches(fishingOperationId, beans); + } + + @Override public SpeciesBatch saveSpeciesBatch(SpeciesBatch bean) { return driver.saveSpeciesBatch(bean); } @@ -1312,12 +1316,16 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public BenthosBatch createBenthosBatch(BenthosBatch bean, - String parentBatchId) { + public BenthosBatch createBenthosBatch(BenthosBatch bean, String parentBatchId) { return driver.createBenthosBatch(bean, parentBatchId); } @Override + public Collection<BenthosBatch> createBenthosBatches(String fishingOperationId, Collection<BenthosBatch> beans) { + return driver.createBenthosBatches(fishingOperationId, beans); + } + + @Override public BenthosBatch saveBenthosBatch(BenthosBatch bean) { return driver.saveBenthosBatch(bean); } @@ -1373,6 +1381,11 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override + public Collection<MarineLitterBatch> createMarineLitterBatches(String fishingOperationId, Collection<MarineLitterBatch> beans) { + return driver.createMarineLitterBatches(fishingOperationId, beans); + } + + @Override public MarineLitterBatch saveMarineLitterBatch(MarineLitterBatch bean) { return driver.saveMarineLitterBatch(bean); } @@ -1392,6 +1405,11 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override + public Collection<AccidentalBatch> createAccidentalBatches(String fishingOperationId, Collection<AccidentalBatch> beans) { + return driver.createAccidentalBatches(fishingOperationId, beans); + } + + @Override public AccidentalBatch createAccidentalBatch(AccidentalBatch bean) { return driver.createAccidentalBatch(bean); } @@ -1426,6 +1444,11 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override + public Collection<IndividualObservationBatch> createIndividualObservationBatches(String fishingOperationId, Collection<IndividualObservationBatch> beans) { + return driver.createIndividualObservationBatches(fishingOperationId, beans); + } + + @Override public IndividualObservationBatch saveIndividualObservationBatch(IndividualObservationBatch bean) { return driver.saveIndividualObservationBatch(bean); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 3c9f2a8e86715fa8460b4bd7566804ad29a89848 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:21:55 2015 +0100 only parse referent species --- .../main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java index c640b2e..45671fd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java @@ -39,7 +39,7 @@ public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species @Override protected List<Species> getEntities() { - return persistenceService.getAllSpecies(); + return persistenceService.getAllReferentSpecies(); } protected Map<String, Species> getEntitiesById() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 0b4d72a99eeda096612130c3578b647a1fb0dde3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:23:11 2015 +0100 introduce some row support (for cruise context and operation context) + adapts csv rows for import --- .../genericformat/csv/AccidentalCatchModel.java | 8 +- .../genericformat/csv/AccidentalCatchRow.java | 81 ++++------- .../service/genericformat/csv/CatchModel.java | 5 +- .../tutti/service/genericformat/csv/CatchRow.java | 72 +++------- .../genericformat/csv/GearCaracteristicModel.java | 5 +- .../genericformat/csv/GearCaracteristicRow.java | 44 +----- .../csv/IndividualObservationModel.java | 9 +- .../csv/IndividualObservationRow.java | 78 +++-------- .../genericformat/csv/MarineLitterModel.java | 4 +- .../service/genericformat/csv/MarineLitterRow.java | 83 +++++------ .../service/genericformat/csv/OperationModel.java | 10 +- .../service/genericformat/csv/OperationRow.java | 152 +++++---------------- .../service/genericformat/csv/ParameterModel.java | 6 +- .../service/genericformat/csv/ParameterRow.java | 83 ++--------- .../csv/RowWithCruiseContextSupport.java | 58 ++++++++ .../csv/RowWithOperationContextSupport.java | 73 ++++++++++ .../service/genericformat/csv/SurveyModel.java | 5 +- .../tutti/service/genericformat/csv/SurveyRow.java | 85 ++++-------- 18 files changed, 315 insertions(+), 546 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index eea120e..d2135b2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -24,7 +24,6 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; @@ -58,8 +57,7 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden @Override public AccidentalCatchRow newEmptyInstance() { - AccidentalCatchRow row = new AccidentalCatchRow(); - row.setCruise(Cruises.newCruise()); + AccidentalCatchRow row = AccidentalCatchRow.newEmptyInstance(); return row; } @@ -105,11 +103,11 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newIgnoredColumn("Engin"); newIgnoredColumn("Rang_Engin"); - newIgnoredColumn("Id_Lot"); + newMandatoryColumn("Id_Lot",AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newMandatoryColumn("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicWithProtectedParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java index b52c090..29c7af2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchRow.java @@ -22,17 +22,10 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; import java.io.Serializable; -import java.util.Date; /** * A row in a accidental catch export. @@ -40,9 +33,7 @@ import java.util.Date; * @author tchemit <chemit@codelutin.com> * @since 2.2 */ -public class AccidentalCatchRow implements Serializable { - - public static final String PROPERTY_BATCH = "batch"; +public class AccidentalCatchRow extends RowWithOperationContextSupport { private static final long serialVersionUID = 1L; @@ -52,26 +43,24 @@ public class AccidentalCatchRow implements Serializable { public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue"; - protected Cruise cruise; + public static AccidentalCatchRow newEmptyInstance() { + AccidentalCatchRow row = new AccidentalCatchRow(); + row.forImport(); + return row; + } + + protected Integer batchId; - protected FishingOperation fishingOperation; + protected Species species; - protected AccidentalBatch batch; + protected String comment; protected Caracteristic caracteristic; protected Serializable caracteristicValue; - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } - - public void setFishingOperation(FishingOperation fishingOperation) { - this.fishingOperation = fishingOperation; - } - - public void setBatch(AccidentalBatch batch) { - this.batch = batch; + public void setBatchId(Integer batchId) { + this.batchId = batchId; } public void setCaracteristic(Caracteristic caracteristic) { @@ -82,8 +71,16 @@ public class AccidentalCatchRow implements Serializable { this.caracteristicValue = caracteristicValue; } + public void setSpecies(Species species) { + this.species = species; + } + + public void setComment(String comment) { + this.comment = comment; + } + public Integer getBatchId() { - return batch.getIdAsInt(); + return batchId; } public Caracteristic getCaracteristic() { @@ -95,43 +92,11 @@ public class AccidentalCatchRow implements Serializable { } public String getComment() { - return batch.getComment(); + return comment; } public Species getSpecies() { - return batch.getSpecies(); - } - - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); - } - - public String getStationNumber() { - return fishingOperation.getStationNumber(); - } - - public Integer getFishingOperationNumber() { - return fishingOperation.getFishingOperationNumber(); - } - - public Gear getGear() { - return fishingOperation.getGear(); - } - - public Vessel getVessel() { - return fishingOperation.getVessel(); - } - - public String getMultirigAggregation() { - return fishingOperation.getMultirigAggregation(); + return species; } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 87b8560..cb775a6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.service.genericformat.csv; */ import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; @@ -68,8 +67,8 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { @Override public CatchRow newEmptyInstance() { - CatchRow row = new CatchRow(false, false); - row.setCruise(Cruises.newCruise()); + CatchRow row = CatchRow.newEmptyInstance(); + row.forImport(); return row; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java index d9ac96a..958566c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchRow.java @@ -25,21 +25,14 @@ package fr.ifremer.tutti.service.genericformat.csv; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.io.Serializable; import java.util.ArrayList; -import java.util.Date; import java.util.List; /** @@ -48,7 +41,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class CatchRow implements Serializable { +public class CatchRow extends RowWithOperationContextSupport { private static final long serialVersionUID = 1L; @@ -79,9 +72,11 @@ public class CatchRow implements Serializable { public static final String FINAL_RAISING_FACTOR = "finalRaisingFactor"; - protected Cruise cruise; - - protected FishingOperation fishingOperation; + public static CatchRow newEmptyInstance() { + CatchRow row = new CatchRow(); + row.forImport(); + return row; + } protected final List<ExportSampleCategory> sampleCategory = new ArrayList<>(); @@ -101,23 +96,18 @@ public class CatchRow implements Serializable { protected String batchWeightUnit; - protected final boolean benthos; + protected boolean benthos; - protected final boolean vrac; + protected boolean vrac; protected final List<String> comment = new ArrayList<>(); - public CatchRow(boolean vrac, boolean benthos) { - this.vrac = vrac; + public void setBenthos(boolean benthos) { this.benthos = benthos; } - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } - - public void setFishingOperation(FishingOperation fishingOperation) { - this.fishingOperation = fishingOperation; + public void setVrac(boolean vrac) { + this.vrac = vrac; } public void setReferenceWeight(Float referenceWeight) { @@ -160,38 +150,6 @@ public class CatchRow implements Serializable { this.finalRaisingFactor = finalRaisingFactor; } - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); - } - - public Vessel getVessel() { - return cruise.getVessel(); - } - - public String getStationNumber() { - return fishingOperation.getStationNumber(); - } - - public Integer getFishingOperationNumber() { - return fishingOperation.getFishingOperationNumber(); - } - - public Gear getGear() { - return fishingOperation.getGear(); - } - - public String getMultirigAggregation() { - return fishingOperation.getMultirigAggregation(); - } - public Object getFrequency() { return speciesFrequency == null ? benthosFrequency : speciesFrequency; } @@ -241,9 +199,11 @@ public class CatchRow implements Serializable { } public CatchRow copy() { - CatchRow result = new CatchRow(vrac, benthos); - result.setCruise(cruise); - result.setFishingOperation(fishingOperation); + CatchRow result = new CatchRow(); + result.setVrac(vrac); + result.setBenthos(benthos); + result.setCruise(getCruise()); + result.setFishingOperation(getFishingOperation()); result.sampleCategory.addAll(sampleCategory); if (benthosFrequency != null) { result.setBenthosFrequency(benthosFrequency); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index 2b8c95e..4af55d4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.service.genericformat.csv; */ import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; @@ -55,9 +54,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC @Override public GearCaracteristicRow newEmptyInstance() { - GearCaracteristicRow row = new GearCaracteristicRow(); - Cruise cruise = Cruises.newCruise(); - row.setCruise(cruise); + GearCaracteristicRow row = GearCaracteristicRow.newEmptyInstance(); return row; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java index 8aeea72..bff3da2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java @@ -22,13 +22,10 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import java.io.Serializable; -import java.util.Date; /** * A row in a gear caracteristics export. @@ -36,7 +33,7 @@ import java.util.Date; * @author tchemit <chemit@codelutin.com> * @since 2.3.2 */ -public class GearCaracteristicRow implements Serializable { +public class GearCaracteristicRow extends RowWithCruiseContextSupport { private static final long serialVersionUID = 1L; @@ -48,7 +45,11 @@ public class GearCaracteristicRow implements Serializable { public static final String PROPERTY_RANK_ORDER = Gear.PROPERTY_RANK_ORDER; - protected Cruise cruise; + public static GearCaracteristicRow newEmptyInstance() { + GearCaracteristicRow row = new GearCaracteristicRow(); + row.forImport(); + return row; + } protected Gear gear; @@ -58,14 +59,6 @@ public class GearCaracteristicRow implements Serializable { protected Serializable value; - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } - - public Cruise getCruise() { - return cruise; - } - public void setGear(Gear gear) { this.gear = gear; } @@ -82,30 +75,6 @@ public class GearCaracteristicRow implements Serializable { this.value = value; } - public void setBeginDate(Date beginDate) { - cruise.setBeginDate(beginDate); - } - - public void setSurveyPart(String surveyPart) { - cruise.setSurveyPart(surveyPart); - } - - public void setProgram(Program program) { - cruise.setProgram(program); - } - - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); - } - public Gear getGear() { return gear; } @@ -125,4 +94,5 @@ public class GearCaracteristicRow implements Serializable { public void setRankOrder(short rankOrder) { this.rankOrder = rankOrder; } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index b7f9a33..5a03a82 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.service.genericformat.csv; */ import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -58,9 +57,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I @Override public IndividualObservationRow newEmptyInstance() { - IndividualObservationRow row = new IndividualObservationRow(); - row.setCruise(Cruises.newCruise()); - + IndividualObservationRow row = IndividualObservationRow.newEmptyInstance(); return row; } @@ -106,11 +103,11 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newIgnoredColumn("Engin"); newIgnoredColumn("Rang_Engin"); - newIgnoredColumn("Id_Lot"); + newMandatoryColumn("Id_Lot", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicWithProtectedParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java index 09d80df..7d5afea 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java @@ -22,17 +22,10 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; import java.io.Serializable; -import java.util.Date; /** * A row in a individual observation export. @@ -40,9 +33,7 @@ import java.util.Date; * @author tchemit <chemit@codelutin.com> * @since 2.0.1 */ -public class IndividualObservationRow implements Serializable { - - public static final String PROPERTY_BATCH = "batch"; +public class IndividualObservationRow extends RowWithOperationContextSupport { private static final long serialVersionUID = 1L; @@ -52,26 +43,24 @@ public class IndividualObservationRow implements Serializable { public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue"; - protected Cruise cruise; + private Integer batchId; - protected FishingOperation fishingOperation; + protected Species species; - protected IndividualObservationBatch batch; + protected String comment; protected Caracteristic caracteristic; protected Serializable caracteristicValue; - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } - - public void setFishingOperation(FishingOperation fishingOperation) { - this.fishingOperation = fishingOperation; + public static IndividualObservationRow newEmptyInstance() { + IndividualObservationRow row = new IndividualObservationRow(); + row.forImport(); + return row; } - public void setBatch(IndividualObservationBatch batch) { - this.batch = batch; + public void setBatchId(Integer batchId) { + this.batchId = batchId; } public void setCaracteristic(Caracteristic caracteristic) { @@ -82,8 +71,16 @@ public class IndividualObservationRow implements Serializable { this.caracteristicValue = caracteristicValue; } + public void setSpecies(Species species) { + this.species = species; + } + + public void setComment(String comment) { + this.comment = comment; + } + public Integer getBatchId() { - return batch.getIdAsInt(); + return batchId; } public Caracteristic getCaracteristic() { @@ -95,42 +92,11 @@ public class IndividualObservationRow implements Serializable { } public String getComment() { - return batch.getComment(); - } - - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); - } - - public String getStationNumber() { - return fishingOperation.getStationNumber(); - } - - public Integer getFishingOperationNumber() { - return fishingOperation.getFishingOperationNumber(); - } - - public Gear getGear() { - return fishingOperation.getGear(); - } - - public Vessel getVessel() { - return fishingOperation.getVessel(); - } - - public String getMultirigAggregation() { - return fishingOperation.getMultirigAggregation(); + return comment; } public Species getSpecies() { - return batch.getSpecies(); + return species; } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 2c54ade..77a368a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.service.genericformat.csv; */ import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -58,8 +57,7 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt @Override public MarineLitterRow newEmptyInstance() { - MarineLitterRow row = new MarineLitterRow(); - row.setCruise(Cruises.newCruise()); + MarineLitterRow row = MarineLitterRow.newEmptyInstance(); return row; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java index b843a8b..ea63b19 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterRow.java @@ -22,16 +22,9 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; -import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatchs; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; - -import java.io.Serializable; -import java.util.Date; /** * A row in a marine litter export. @@ -39,7 +32,7 @@ import java.util.Date; * @author tchemit <chemit@codelutin.com> * @since 2.0.1 */ -public class MarineLitterRow implements Serializable { +public class MarineLitterRow extends RowWithOperationContextSupport { public static final String PROPERTY_TOTAL_WEIGHT = "totalWeight"; @@ -47,73 +40,61 @@ public class MarineLitterRow implements Serializable { private static final long serialVersionUID = 1L; - protected Cruise cruise; - - protected FishingOperation fishingOperation; - - protected MarineLitterBatch batch; - - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } + protected MarineLitterBatch marineLitterBatch; - public void setFishingOperation(FishingOperation fishingOperation) { - this.fishingOperation = fishingOperation; + public static MarineLitterRow newEmptyInstance() { + MarineLitterRow row = new MarineLitterRow(); + row.forImport(); + row.setMarineLitterBatch(MarineLitterBatchs.newMarineLitterBatch()); + return row; } - public void setBatch(MarineLitterBatch batch) { - this.batch = batch; + public void setMarineLitterBatch(MarineLitterBatch marineLitterBatch) { + this.marineLitterBatch = marineLitterBatch; } - public CaracteristicQualitativeValue getMarineLitterCategory() { - return batch.getMarineLitterCategory(); - } - - public CaracteristicQualitativeValue getMarineLitterSizeCategory() { - return batch.getMarineLitterSizeCategory(); + public void setMarineLitterCategory(CaracteristicQualitativeValue marineLitterCategory) { + marineLitterBatch.setMarineLitterCategory(marineLitterCategory); } - public Integer getNumber() { - return batch.getNumber(); + public void setMarineLitterSizeCategory(CaracteristicQualitativeValue marineLitterSizeCategory) { + marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory); } - public Float getWeight() { - return batch.getWeight(); + public void setNumber(Integer number) { + marineLitterBatch.setNumber(number); } - public String getComment() { - return batch.getComment(); + public void setWeight(Float weight) { + marineLitterBatch.setWeight(weight); } - public Date getBeginDate() { - return cruise.getBeginDate(); + public void setComment(String comment) { + marineLitterBatch.setComment(comment); } - public Program getProgram() { - return cruise.getProgram(); + public MarineLitterBatch getMarineLitterBatch() { + return marineLitterBatch; } - public String getSurveyPart() { - return cruise.getSurveyPart(); + public CaracteristicQualitativeValue getMarineLitterCategory() { + return marineLitterBatch.getMarineLitterCategory(); } - public String getStationNumber() { - return fishingOperation.getStationNumber(); + public CaracteristicQualitativeValue getMarineLitterSizeCategory() { + return marineLitterBatch.getMarineLitterSizeCategory(); } - public Integer getFishingOperationNumber() { - return fishingOperation.getFishingOperationNumber(); + public Integer getNumber() { + return marineLitterBatch.getNumber(); } - public Gear getGear() { - return fishingOperation.getGear(); + public Float getWeight() { + return marineLitterBatch.getWeight(); } - public Vessel getVessel() { - return fishingOperation.getVessel(); + public String getComment() { + return marineLitterBatch.getComment(); } - public String getMultirigAggregation() { - return fishingOperation.getMultirigAggregation(); - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 9548096..3c7d9a6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -22,11 +22,8 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.CatchBatchs; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -58,13 +55,8 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> @Override public OperationRow newEmptyInstance() { - - OperationRow row = new OperationRow(); - row.setCruise(Cruises.newCruise()); - row.setFishingOperation(FishingOperations.newFishingOperation()); - row.setCatchBatch(CatchBatchs.newCatchBatch()); + OperationRow row = OperationRow.newEmptyInstance(); return row; - } protected OperationModel(char separator) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java index 8dcd49c..b8da4c3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java @@ -24,17 +24,12 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatchs; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.util.DateTimes; import fr.ifremer.tutti.util.Numbers; -import java.io.Serializable; import java.util.Date; import java.util.List; @@ -44,7 +39,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class OperationRow implements Serializable { +public class OperationRow extends RowWithOperationContextSupport { public static final String PROPERTY_DURATION = "duration"; @@ -126,10 +121,6 @@ public class OperationRow implements Serializable { private static final long serialVersionUID = 1L; - protected Cruise cruise; - - protected FishingOperation fishingOperation; - protected CatchBatch catchBatch; protected boolean catchTotalWeightComputed; @@ -150,20 +141,13 @@ public class OperationRow implements Serializable { protected boolean marineLitterTotalWeightComputed; - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } - - public Cruise getCruise() { - return cruise; - } + public static OperationRow newEmptyInstance() { - public void setFishingOperation(FishingOperation fishingOperation) { - this.fishingOperation = fishingOperation; - } + OperationRow row = new OperationRow(); + row.forImport(); + row.setCatchBatch(CatchBatchs.newCatchBatch()); + return row; - public FishingOperation getFishingOperation() { - return fishingOperation; } public void setCatchBatch(CatchBatch catchBatch) { @@ -199,96 +183,64 @@ public class OperationRow implements Serializable { return catchBatch; } - public void setBeginDate(Date beginDate) { - cruise.setBeginDate(beginDate); - } - - public void setSurveyPart(String surveyPart) { - cruise.setSurveyPart(surveyPart); - } - - public void setProgram(Program program) { - cruise.setProgram(program); - } - - public void setFishingOperationNumber(Integer fishingOperationNumber) { - fishingOperation.setFishingOperationNumber(fishingOperationNumber); - } - - public void setStationNumber(String stationNumber) { - fishingOperation.setStationNumber(stationNumber); - } - - public void setMultirigAggregation(String multirigAggregation) { - fishingOperation.setMultirigAggregation(multirigAggregation); - } - public void setSubStrata(TuttiLocation subStrata) { - fishingOperation.setSubStrata(subStrata); + getFishingOperation().setSubStrata(subStrata); } public void setStrata(TuttiLocation strata) { - fishingOperation.setStrata(strata); - } - - public void setVessel(Vessel vessel) { - fishingOperation.setVessel(vessel); - } - - public void setGear(Gear gear) { - fishingOperation.setGear(gear); + getFishingOperation().setStrata(strata); } public void setRecorderPerson(List<Person> recorderPerson) { - fishingOperation.setRecorderPerson(recorderPerson); + getFishingOperation().setRecorderPerson(recorderPerson); } public void setLocation(TuttiLocation location) { - fishingOperation.setLocation(location); + getFishingOperation().setLocation(location); } public void setSecondaryVessel(List<Vessel> secondaryVessel) { - fishingOperation.setSecondaryVessel(secondaryVessel); + getFishingOperation().setSecondaryVessel(secondaryVessel); } public void setComment(String comment) { - fishingOperation.setComment(comment); + getFishingOperation().setComment(comment); } public void setFishingOperationValid(Boolean fishingOperationValid) { - fishingOperation.setFishingOperationValid(fishingOperationValid); + getFishingOperation().setFishingOperationValid(fishingOperationValid); } public void setTrawlDistance(Integer trawlDistance) { - fishingOperation.setTrawlDistance(trawlDistance); + getFishingOperation().setTrawlDistance(trawlDistance); } public void setFishingOperationRectiligne(boolean fishingOperationRectiligne) { - fishingOperation.setFishingOperationRectiligne(fishingOperationRectiligne); + getFishingOperation().setFishingOperationRectiligne(fishingOperationRectiligne); } public void setGearShootingEndDate(Date gearShootingEndDate) { - fishingOperation.setGearShootingEndDate(gearShootingEndDate); + getFishingOperation().setGearShootingEndDate(gearShootingEndDate); } public void setGearShootingEndLongitude(Float gearShootingEndLongitude) { - fishingOperation.setGearShootingEndLongitude(gearShootingEndLongitude); + getFishingOperation().setGearShootingEndLongitude(gearShootingEndLongitude); } public void setGearShootingEndLatitude(Float gearShootingEndLatitude) { - fishingOperation.setGearShootingEndLatitude(gearShootingEndLatitude); + getFishingOperation().setGearShootingEndLatitude(gearShootingEndLatitude); } public void setGearShootingStartDate(Date gearShootingStartDate) { - fishingOperation.setGearShootingStartDate(gearShootingStartDate); + getFishingOperation().setGearShootingStartDate(gearShootingStartDate); } public void setGearShootingStartLongitude(Float gearShootingStartLongitude) { - fishingOperation.setGearShootingStartLongitude(gearShootingStartLongitude); + getFishingOperation().setGearShootingStartLongitude(gearShootingStartLongitude); } public void setGearShootingStartLatitude(Float gearShootingStartLatitude) { - fishingOperation.setGearShootingStartLatitude(gearShootingStartLatitude); + getFishingOperation().setGearShootingStartLatitude(gearShootingStartLatitude); } public void setBenthosTotalLivingNotItemizedWeight(Float benthosTotalLivingNotItemizedWeight) { @@ -335,96 +287,64 @@ public class OperationRow implements Serializable { catchBatch.setSpeciesTotalInertWeight(speciesTotalInertWeight); } - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); - } - - public String getStationNumber() { - return fishingOperation.getStationNumber(); - } - - public Integer getFishingOperationNumber() { - return fishingOperation.getFishingOperationNumber(); - } - - public String getMultirigAggregation() { - return fishingOperation.getMultirigAggregation(); - } - - public Gear getGear() { - return fishingOperation.getGear(); - } - - public Vessel getVessel() { - return fishingOperation.getVessel(); - } - public Date getGearShootingStartDate() { - return fishingOperation.getGearShootingStartDate(); + return getFishingOperation().getGearShootingStartDate(); } public Float getGearShootingStartLatitude() { - return fishingOperation.getGearShootingStartLatitude(); + return getFishingOperation().getGearShootingStartLatitude(); } public Float getGearShootingStartLongitude() { - return fishingOperation.getGearShootingStartLongitude(); + return getFishingOperation().getGearShootingStartLongitude(); } public Date getGearShootingEndDate() { - return fishingOperation.getGearShootingEndDate(); + return getFishingOperation().getGearShootingEndDate(); } public Float getGearShootingEndLatitude() { - return fishingOperation.getGearShootingEndLatitude(); + return getFishingOperation().getGearShootingEndLatitude(); } public Float getGearShootingEndLongitude() { - return fishingOperation.getGearShootingEndLongitude(); + return getFishingOperation().getGearShootingEndLongitude(); } public TuttiLocation getStrata() { - return fishingOperation.getStrata(); + return getFishingOperation().getStrata(); } public TuttiLocation getSubStrata() { - return fishingOperation.getSubStrata(); + return getFishingOperation().getSubStrata(); } public TuttiLocation getLocation() { - return fishingOperation.getLocation(); + return getFishingOperation().getLocation(); } public Boolean getFishingOperationValid() { - return fishingOperation.getFishingOperationValid(); + return getFishingOperation().getFishingOperationValid(); } public boolean isFishingOperationRectiligne() { - return fishingOperation.isFishingOperationRectiligne(); + return getFishingOperation().isFishingOperationRectiligne(); } public Integer getTrawlDistance() { - return fishingOperation.getTrawlDistance(); + return getFishingOperation().getTrawlDistance(); } public String getComment() { - return fishingOperation.getComment(); + return getFishingOperation().getComment(); } public List<Person> getRecorderPerson() { - return fishingOperation.getRecorderPerson(); + return getFishingOperation().getRecorderPerson(); } public List<Vessel> getSecondaryVessel() { - return fishingOperation.getSecondaryVessel(); + return getFishingOperation().getSecondaryVessel(); } public String getDuration() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index b43eea7..2ae2c06 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -23,9 +23,7 @@ package fr.ifremer.tutti.service.genericformat.csv; */ import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; @@ -57,9 +55,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> @Override public ParameterRow newEmptyInstance() { - ParameterRow row = new ParameterRow(); - row.setCruise(Cruises.newCruise()); - row.setFishingOperation(FishingOperations.newFishingOperation()); + ParameterRow row = ParameterRow.newEmptyInstance(); return row; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java index 6357bbe..60c7896 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterRow.java @@ -22,13 +22,9 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import java.io.Serializable; -import java.util.Date; /** * A row in a parameter export. @@ -36,14 +32,11 @@ import java.util.Date; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class ParameterRow implements Serializable { +public class ParameterRow extends RowWithOperationContextSupport { private static final long serialVersionUID = 1L; - public static enum ParameterType { - GEAR, - VESSEL - } + public static enum ParameterType {GEAR, VESSEL} public static final String PROPERTY_CARACTERISTIC = "caracteristic"; @@ -51,9 +44,13 @@ public class ParameterRow implements Serializable { public static final String PROPERTY_PARAMETER_TYPE = "parameterType"; - private Cruise cruise; + public static ParameterRow newEmptyInstance() { + + ParameterRow row = new ParameterRow(); + row.forImport(); + return row; - private FishingOperation fishingOperation; + } private Caracteristic caracteristic; @@ -65,14 +62,6 @@ public class ParameterRow implements Serializable { this.parameterType = parameterType; } - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } - - public void setFishingOperation(FishingOperation fishingOperation) { - this.fishingOperation = fishingOperation; - } - public void setCaracteristic(Caracteristic caracteristic) { this.caracteristic = caracteristic; } @@ -81,66 +70,10 @@ public class ParameterRow implements Serializable { this.value = value; } - public void setSurveyPart(String surveyPart) { - cruise.setSurveyPart(surveyPart); - } - - public void setBeginDate(Date beginDate) { - cruise.setBeginDate(beginDate); - } - - public void setProgram(Program program) { - cruise.setProgram(program); - } - - public void setStationNumber(String stationNumber) { - fishingOperation.setStationNumber(stationNumber); - } - - public void setFishingOperationNumber(Integer fishingOperationNumber) { - fishingOperation.setFishingOperationNumber(fishingOperationNumber); - } - - public void setMultirigAggregation(String multirigAggregation) { - fishingOperation.setMultirigAggregation(multirigAggregation); - } - public ParameterType getParameterType() { return parameterType; } - public Cruise getCruise() { - return cruise; - } - - public FishingOperation getFishingOperation() { - return fishingOperation; - } - - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); - } - - public String getStationNumber() { - return fishingOperation.getStationNumber(); - } - - public Integer getFishingOperationNumber() { - return fishingOperation.getFishingOperationNumber(); - } - - public String getMultirigAggregation() { - return fishingOperation.getMultirigAggregation(); - } - public Caracteristic getCaracteristic() { return caracteristic; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithCruiseContextSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithCruiseContextSupport.java new file mode 100644 index 0000000..f8f7995 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithCruiseContextSupport.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; +import fr.ifremer.tutti.persistence.entities.data.Program; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created on 2/20/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class RowWithCruiseContextSupport implements Serializable { + + private static final long serialVersionUID = 1L; + + private Cruise cruise; + + public void forImport() { + setCruise(Cruises.newCruise()); + } + + public void setCruise(Cruise cruise) { + this.cruise = cruise; + } + + public void setSurveyPart(String surveyPart) { + cruise.setSurveyPart(surveyPart); + } + + public void setBeginDate(Date beginDate) { + cruise.setBeginDate(beginDate); + } + + public void setProgram(Program program) { + cruise.setProgram(program); + } + + public Cruise getCruise() { + return cruise; + } + + public Date getBeginDate() { + return cruise.getBeginDate(); + } + + public Program getProgram() { + return cruise.getProgram(); + } + + public String getSurveyPart() { + return cruise.getSurveyPart(); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithOperationContextSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithOperationContextSupport.java new file mode 100644 index 0000000..af51911 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/RowWithOperationContextSupport.java @@ -0,0 +1,73 @@ +package fr.ifremer.tutti.service.genericformat.csv; + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.FishingOperations; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; + +/** + * Created on 2/20/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class RowWithOperationContextSupport extends RowWithCruiseContextSupport { + + private static final long serialVersionUID = 1L; + + private FishingOperation fishingOperation; + + public void forImport() { + super.forImport(); + setFishingOperation(FishingOperations.newFishingOperation()); + } + + public void setFishingOperation(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public void setStationNumber(String stationNumber) { + fishingOperation.setStationNumber(stationNumber); + } + + public void setFishingOperationNumber(Integer fishingOperationNumber) { + fishingOperation.setFishingOperationNumber(fishingOperationNumber); + } + + public void setMultirigAggregation(String multirigAggregation) { + fishingOperation.setMultirigAggregation(multirigAggregation); + } + + public void setVessel(Vessel vessel) { + fishingOperation.setVessel(vessel); + } + + public void setGear(Gear gear) { + fishingOperation.setGear(gear); + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + public String getStationNumber() { + return fishingOperation.getStationNumber(); + } + + public Integer getFishingOperationNumber() { + return fishingOperation.getFishingOperationNumber(); + } + + public Gear getGear() { + return fishingOperation.getGear(); + } + + public Vessel getVessel() { + return fishingOperation.getVessel(); + } + + public String getMultirigAggregation() { + return fishingOperation.getMultirigAggregation(); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index e700cc2..6b05fb5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -23,7 +23,6 @@ package fr.ifremer.tutti.service.genericformat.csv; */ import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -56,9 +55,7 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { @Override public SurveyRow newEmptyInstance() { - Cruise cruise = Cruises.newCruise(); - SurveyRow row = new SurveyRow(); - row.setCruise(cruise); + SurveyRow row= SurveyRow.newEmptyInstance(); return row; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java index 876d842..c48923a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyRow.java @@ -22,14 +22,11 @@ package fr.ifremer.tutti.service.genericformat.csv; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import java.io.Serializable; import java.util.Date; import java.util.List; @@ -39,7 +36,7 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 1.3 */ -public class SurveyRow implements Serializable { +public class SurveyRow extends RowWithCruiseContextSupport { private static final long serialVersionUID = 1L; @@ -47,92 +44,64 @@ public class SurveyRow implements Serializable { public static final String PROPERTY_ID_SISMER = "idSismer"; - protected Cruise cruise; - - protected TuttiLocation country; - - public Cruise getCruise() { - return cruise; + public static SurveyRow newEmptyInstance() { + SurveyRow row = new SurveyRow(); + row.forImport(); + return row; } - public void setCruise(Cruise cruise) { - this.cruise = cruise; - } + protected TuttiLocation country; public void setCountry(TuttiLocation country) { this.country = country; } - public Date getBeginDate() { - return cruise.getBeginDate(); - } - - public Program getProgram() { - return cruise.getProgram(); - } - public void setDepartureLocation(TuttiLocation departureLocation) { - cruise.setDepartureLocation(departureLocation); + getCruise().setDepartureLocation(departureLocation); } public void setReturnLocation(TuttiLocation returnLocation) { - cruise.setReturnLocation(returnLocation); - } - - public void setProgram(Program program) { - cruise.setProgram(program); + getCruise().setReturnLocation(returnLocation); } public void setName(String name) { - cruise.setName(name); - } - - public void setSurveyPart(String surveyPart) { - cruise.setSurveyPart(surveyPart); + getCruise().setName(name); } public void setHeadOfMission(List<Person> headOfMission) { - cruise.setHeadOfMission(headOfMission); + getCruise().setHeadOfMission(headOfMission); } public void setMultirigNumber(Integer multirigNumber) { - cruise.setMultirigNumber(multirigNumber); + getCruise().setMultirigNumber(multirigNumber); } public void setHeadOfSortRoom(List<Person> headOfSortRoom) { - cruise.setHeadOfSortRoom(headOfSortRoom); + getCruise().setHeadOfSortRoom(headOfSortRoom); } public void setEndDate(Date endDate) { - cruise.setEndDate(endDate); + getCruise().setEndDate(endDate); } public void setGear(List<GearWithOriginalRankOrder> gear) { - cruise.setGear(gear); + getCruise().setGear(gear); } public void setComment(String comment) { - cruise.setComment(comment); - } - - public void setBeginDate(Date beginDate) { - cruise.setBeginDate(beginDate); + getCruise().setComment(comment); } public void setVessel(Vessel vessel) { - cruise.setVessel(vessel); - } - - public String getSurveyPart() { - return cruise.getSurveyPart(); + getCruise().setVessel(vessel); } public TuttiLocation getZone() { - return cruise.getProgram().getZone(); + return getCruise().getProgram().getZone(); } public Vessel getVessel() { - return cruise.getVessel(); + return getCruise().getVessel(); } public TuttiLocation getCountry() { @@ -140,39 +109,39 @@ public class SurveyRow implements Serializable { } public String getName() { - return cruise.getName(); + return getCruise().getName(); } public List<GearWithOriginalRankOrder> getGear() { - return cruise.getGear(); + return getCruise().getGear(); } public TuttiLocation getDepartureLocation() { - return cruise.getDepartureLocation(); + return getCruise().getDepartureLocation(); } public Date getEndDate() { - return cruise.getEndDate(); + return getCruise().getEndDate(); } public TuttiLocation getReturnLocation() { - return cruise.getReturnLocation(); + return getCruise().getReturnLocation(); } public String getComment() { - return cruise.getComment(); + return getCruise().getComment(); } public List<Person> getHeadOfMission() { - return cruise.getHeadOfMission(); + return getCruise().getHeadOfMission(); } public List<Person> getHeadOfSortRoom() { - return cruise.getHeadOfSortRoom(); + return getCruise().getHeadOfSortRoom(); } public Integer getMultirigNumber() { - return cruise.getMultirigNumber(); + return getCruise().getMultirigNumber(); } // see http://forge.codelutin.com/issues/2877 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 2a79044e149074acfd793a485717e6932dff378c Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:24:04 2015 +0100 impact row changes to producers --- .../genericformat/producer/CsvProducerForAccidentalCatch.java | 6 +++++- .../tutti/service/genericformat/producer/CsvProducerForCatch.java | 8 ++++++-- .../producer/CsvProducerForIndividualObservation.java | 8 ++++++-- .../genericformat/producer/CsvProducerForMarineLitter.java | 2 +- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java index b1c33e9..b750dff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAccidentalCatch.java @@ -104,7 +104,11 @@ public class CsvProducerForAccidentalCatch extends CsvProducer<AccidentalCatchRo AccidentalCatchRow row = new AccidentalCatchRow(); row.setCruise(operationExportContext.getCruise()); row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(accidentalBatch); + + row.setComment(accidentalBatch.getComment()); + row.setSpecies(accidentalBatch.getSpecies()); + row.setBatchId(accidentalBatch.getIdAsInt()); + row.setCaracteristic(caracteristic); row.setCaracteristicValue(caracteristicValue); rows.add(row); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java index c740135..a68215e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForCatch.java @@ -75,7 +75,9 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { boolean vracBatch = operationExportContext.isVracBatch(benthosBatch); - CatchRow row = new CatchRow(vracBatch, true); + CatchRow row = new CatchRow(); + row.setVrac(vracBatch); + row.setBenthos(true); row.setCruise(operationExportContext.getCruise()); row.setFishingOperation(operationExportContext.getOperation()); row.setSpecies(benthosBatch.getSpecies()); @@ -115,7 +117,9 @@ public class CsvProducerForCatch extends CsvProducer<CatchRow, CatchModel> { boolean vracBatch = operationExportContext.isVracBatch(speciesBatch); - CatchRow row = new CatchRow(vracBatch, false); + CatchRow row = new CatchRow(); + row.setVrac(vracBatch); + row.setBenthos(false); row.setCruise(operationExportContext.getCruise()); row.setFishingOperation(operationExportContext.getOperation()); row.setSpecies(speciesBatch.getSpecies()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java index 0965c68..9e424d2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -82,7 +82,7 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO protected void addCaracteristicRow(GenericFormatExportOperationContext operationExportContext, List<IndividualObservationRow> rows, - IndividualObservationBatch child, + IndividualObservationBatch individualObservationBatch, Caracteristic caracteristic, Serializable caracteristicValue) { if (caracteristicValue != null) { @@ -90,7 +90,11 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO IndividualObservationRow row = new IndividualObservationRow(); row.setCruise(operationExportContext.getCruise()); row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(child); + + row.setComment(individualObservationBatch.getComment()); + row.setSpecies(individualObservationBatch.getSpecies()); + row.setBatchId(individualObservationBatch.getIdAsInt()); + row.setCaracteristic(caracteristic); row.setCaracteristicValue(caracteristicValue); rows.add(row); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java index 9f0b34f..d4eace8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForMarineLitter.java @@ -37,7 +37,7 @@ public class CsvProducerForMarineLitter extends CsvProducer<MarineLitterRow, Mar MarineLitterRow row = new MarineLitterRow(); row.setCruise(operationExportContext.getCruise()); row.setFishingOperation(operationExportContext.getOperation()); - row.setBatch(child); + row.setMarineLitterBatch(child); rows.add(row); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit b106048f5c9a4c8de5a18aa0946218c06a7e814d Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:24:29 2015 +0100 introduce operation import context --- .../GenericFormatImportOperationContext.java | 162 +++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java new file mode 100644 index 0000000..f0f107f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java @@ -0,0 +1,162 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 2/20/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportOperationContext { + + private final FishingOperation fishingOperation; + + private final String fishingOperationLabel; + + private final Collection<MarineLitterBatch> marineLitterBatches; + + private final Map<Integer, AccidentalBatch> accidentalBatchesById; + + private final Map<Integer, IndividualObservationBatch> individualObservationBatchesById; + + private final Collection<SpeciesBatch> speciesBatches; + + private final Collection<BenthosBatch> benthosBatches; + + private final CaracteristicMap gearUseFeatures; + + private final CaracteristicMap vesselUseFeatures; + + public GenericFormatImportOperationContext(FishingOperation fishingOperation, String fishingOperationLabel) { + + this.fishingOperation = fishingOperation; + this.fishingOperationLabel = fishingOperationLabel; + this.marineLitterBatches = new ArrayList<>(); + this.accidentalBatchesById = new TreeMap<>(); + this.individualObservationBatchesById = new TreeMap<>(); + this.speciesBatches = new ArrayList<>(); + this.benthosBatches = new ArrayList<>(); + this.gearUseFeatures = new CaracteristicMap(); + this.vesselUseFeatures = new CaracteristicMap(); + + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + public String getFishingOperationLabel() { + return fishingOperationLabel; + } + + public boolean withParameters() { + + boolean withGearFeatures = MapUtils.isNotEmpty(gearUseFeatures); + boolean withVesselFeatures = MapUtils.isNotEmpty(vesselUseFeatures); + return withGearFeatures || withVesselFeatures; + + } + + public boolean withMarineLitterBatches() { + return CollectionUtils.isNotEmpty(marineLitterBatches); + } + + public boolean withAccidentalBatches() { + return MapUtils.isNotEmpty(accidentalBatchesById); + } + + public boolean withIndividualObservationBatches() { + return MapUtils.isNotEmpty(individualObservationBatchesById); + } + + public boolean withSpeciesBatches() { + return CollectionUtils.isNotEmpty(speciesBatches); + } + + public boolean withBenthosBatches() { + return CollectionUtils.isNotEmpty(benthosBatches); + } + + public void addGearUseFeature(Caracteristic caracteristic, Serializable value) { + gearUseFeatures.put(caracteristic, value); + } + + public void addVesselUseFeature(Caracteristic caracteristic, Serializable value) { + vesselUseFeatures.put(caracteristic, value); + } + + public void addMarineLitterBatch(MarineLitterBatch marineLitterBatch) { + marineLitterBatches.add(marineLitterBatch); + } + + public AccidentalBatch getAccidentalBatchById(Integer accidentalBatchId) { + AccidentalBatch result = accidentalBatchesById.get(accidentalBatchId); + return result; + } + + public void addAccidentalBatch(Integer batchId, AccidentalBatch accidentalBatch) { + accidentalBatchesById.put(batchId, accidentalBatch); + } + + public IndividualObservationBatch getIndividualObservationBatchesById(Integer individualObservationBatchId) { + return individualObservationBatchesById.get(individualObservationBatchId); + } + + public void addIndividualObservationBatch(Integer batchId, IndividualObservationBatch individualObservationBatch) { + individualObservationBatchesById.put(batchId, individualObservationBatch); + } + + public void addSpeciesBatch(SpeciesBatch speciesBatch) { + speciesBatches.add(speciesBatch); + } + + public void addBenthosBatch(BenthosBatch benthosBatch) { + benthosBatches.add(benthosBatch); + } + + public Collection<MarineLitterBatch> getMarineLitterBatches() { + return ImmutableSet.copyOf(marineLitterBatches); + } + + public Collection<AccidentalBatch> getAccidentalBatches() { + return ImmutableSet.copyOf(accidentalBatchesById.values()); + } + + public Collection<IndividualObservationBatch> getIndividualObservationBatches() { + return ImmutableSet.copyOf(individualObservationBatchesById.values()); + } + + public Collection<SpeciesBatch> getSpeciesBatches() { + return ImmutableSet.copyOf(speciesBatches); + } + + public Collection<BenthosBatch> getBenthosBatches() { + return ImmutableSet.copyOf(benthosBatches); + } + + public CaracteristicMap getGearUseFeatures() { + return gearUseFeatures; + } + + public CaracteristicMap getVesselUseFeatures() { + return vesselUseFeatures; + } +} + -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 18186d9005a0ef1e6bf879c8e306e7effc046bc9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:24:41 2015 +0100 open api --- .../src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index 7c9c896..09d0786 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -59,7 +59,7 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> IOUtils.closeQuietly(importer); } - protected void addCheckError(ImportRow<O> row, Exception e) { + public void addCheckError(ImportRow<O> row, Exception e) { row.addError(new CheckImportErrorInfo<>(row, null, e)); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit d560f0c208e60abd3d86bffe2648cca649c660a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:25:27 2015 +0100 add another caracteristic parser (with protected one) --- .../genericformat/GenericFormatImportEntityParserFactory.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java index 7c24386..7ae8fd3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java @@ -48,6 +48,8 @@ public class GenericFormatImportEntityParserFactory { private CaracteristicParserFormatter caracteristicParser; + private CaracteristicParserFormatter caracteristicWithProtectedParser; + private CaracteristicParserFormatter caracteristicForSampleCategoryParser; private FishingOperationStrataParserFormatter fishingOperationStrataParser; @@ -124,6 +126,14 @@ public class GenericFormatImportEntityParserFactory { return caracteristicParser; } + public CaracteristicParserFormatter getCaracteristicWithProtectedParser() { + if (caracteristicWithProtectedParser == null) { + List<Caracteristic> caracteristics = persistenceService.getAllCaracteristicWithProtected(); + caracteristicWithProtectedParser = CaracteristicParserFormatter.newParser(caracteristics); + } + return caracteristicWithProtectedParser; + } + public CaracteristicParserFormatter getCaracteristicForSampleCategoryParser() { if (caracteristicForSampleCategoryParser == null) { List<Caracteristic> caracteristics = persistenceService.getAllCaracteristicForSampleCategory(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 2f27401a4203e2afbc205900b838569de7ecb0bb Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:27:44 2015 +0100 add usefull validation method for consumers + continue import for marine litter, accidental catches and individual observations --- .../genericformat/GenericFormatImportContext.java | 56 +++++++- .../genericformat/GenericFormatImportService.java | 30 ++++- .../GenericFormatImportValidationHelper.java | 52 ++++++++ .../GenericformatImportPersitenceHelper.java | 143 +++++++++++++++++++-- .../consumer/CsvConsumerForAccidentalCatch.java | 61 ++++++++- .../consumer/CsvConsumerForCatch.java | 12 +- .../consumer/CsvConsumerForGearCaracteristic.java | 16 +-- .../CsvConsumerForIndividualObservation.java | 62 ++++++++- .../consumer/CsvConsumerForMarineLitter.java | 16 ++- .../consumer/CsvConsumerForOperation.java | 34 ++--- .../consumer/CsvConsumerForParameter.java | 92 +++++-------- .../consumer/CsvConsumerForSampleCategory.java | 2 +- .../FishingOperationAlreadyImportedException.java | 2 +- 13 files changed, 457 insertions(+), 121 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java index 999d63b..df2831b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -1,5 +1,9 @@ package fr.ifremer.tutti.service.genericformat; +import com.google.common.base.Predicate; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; @@ -20,6 +24,7 @@ import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; +import fr.ifremer.tutti.service.genericformat.csv.RowWithOperationContextSupport; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; @@ -50,12 +55,17 @@ public class GenericFormatImportContext implements Closeable { private final ProgressionModel progressionModel; + private final Decorator<FishingOperation> fishingOperationDecorator; + private final GenericFormatImportEntityParserFactory importEntityParserFactory; private final GenericformatImportPersitenceHelper persitenceHelper; private final GenericFormatImportValidationHelper validationHelper; + private final Multimap<Cruise, GenericFormatImportOperationContext> fishingOperationsContexts; + + public GenericFormatImportContext(GenericFormatImportRequest importRequest, ProgressionModel progressionModel, PersistenceService persistenceService, @@ -63,11 +73,12 @@ public class GenericFormatImportContext implements Closeable { Decorator<FishingOperation> fishingOperationDecorator) { this.importRequest = importRequest; this.progressionModel = progressionModel; + this.fishingOperationDecorator = fishingOperationDecorator; this.importResult = new GenericFormatImportResult(importRequest); this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest, importResult); this.persitenceHelper = new GenericformatImportPersitenceHelper(this, persistenceService, cruiseDecorator, fishingOperationDecorator); this.validationHelper = new GenericFormatImportValidationHelper(this, new ValidationService()); - + this.fishingOperationsContexts = ArrayListMultimap.create(); } public GenericFormatImportRequest getImportRequest() { @@ -143,16 +154,43 @@ public class GenericFormatImportContext implements Closeable { } - public FishingOperation getImportedFishingOperation(FishingOperation importRowFishingOperation) { + public void addImportedFishingOperation(FishingOperation fishingOperation) { + importResult.addImportedFishingOperation(fishingOperation); + String fishingOperationLabel = fishingOperationDecorator.toString(fishingOperation); + fishingOperationsContexts.put(fishingOperation.getCruise(), new GenericFormatImportOperationContext(fishingOperation, fishingOperationLabel)); + } + + public GenericFormatImportOperationContext getImportedFishingOperationContext(RowWithOperationContextSupport row) { + + Cruise cruise = row.getCruise(); + FishingOperation fishingOperation = row.getFishingOperation(); + + GenericFormatImportOperationContext result = null; + for (GenericFormatImportOperationContext importOperationContext : fishingOperationsContexts.get(cruise)) { + + FishingOperation importedFishingOperation = importOperationContext.getFishingOperation(); + boolean equals = FishingOperations.equals(importedFishingOperation, fishingOperation); + if (equals) { + result = importOperationContext; + break; + } + + } + return result; + + } + + public GenericFormatImportOperationContext getImportedFishingOperationContext(FishingOperation importRowFishingOperation) { Cruise cruise = importRowFishingOperation.getCruise(); - FishingOperation result = null; - for (FishingOperation importedFishingOperation : importResult.getImportedFishingOperations(cruise)) { + GenericFormatImportOperationContext result = null; + for (GenericFormatImportOperationContext importOperationContext : fishingOperationsContexts.get(cruise)) { - boolean equals = FishingOperations.equals(importRowFishingOperation, importedFishingOperation); + FishingOperation fishingOperation = importOperationContext.getFishingOperation(); + boolean equals = FishingOperations.equals(importRowFishingOperation, fishingOperation); if (equals) { - result = importedFishingOperation; + result = importOperationContext; break; } @@ -161,9 +199,13 @@ public class GenericFormatImportContext implements Closeable { } + public Iterable<GenericFormatImportOperationContext> getImportedFishingOperationContexts(Predicate<GenericFormatImportOperationContext> predicate) { + return Iterables.filter(fishingOperationsContexts.values(), predicate); + } + public boolean isFishingOperationAlreadyImported(FishingOperation fishingOperation) { - FishingOperation importedFishingOperation = getImportedFishingOperation(fishingOperation); + GenericFormatImportOperationContext importedFishingOperation = getImportedFishingOperationContext(fishingOperation); return importedFishingOperation != null; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index 26bcb74..bd579e2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -485,7 +485,9 @@ public class GenericFormatImportService extends AbstractTuttiService { consumer.validateRow(row, importContext); - consumer.prepareRowForPersist(row); + GenericFormatImportOperationContext fishingOperationContext = importContext.getImportedFishingOperationContext(row.getBean()); + + consumer.prepareRowForPersist(fishingOperationContext,row); } } catch (IOException e) { @@ -508,13 +510,19 @@ public class GenericFormatImportService extends AbstractTuttiService { consumer.validateRow(row, importContext); - consumer.prepareRowForPersist(row); + GenericFormatImportOperationContext fishingOperationContext = importContext.getImportedFishingOperationContext(row.getBean()); + + consumer.prepareRowForPersist(fishingOperationContext, row); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close catch.csv file", e); } + //TODO +// importContext.getPersitenceHelper().persistSpeciesBatches(); +// importContext.getPersitenceHelper().persistBenthosBatches(); + } protected void importAccidentalCatches(GenericFormatImportContext importContext) { @@ -529,13 +537,17 @@ public class GenericFormatImportService extends AbstractTuttiService { consumer.validateRow(row, importContext); - consumer.prepareRowForPersist(row); + GenericFormatImportOperationContext fishingOperationContext = importContext.getImportedFishingOperationContext(row.getBean()); + + consumer.prepareRowForPersist(fishingOperationContext, row); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close accidentalCatch.csv file", e); } + importContext.getPersitenceHelper().persistAccidentalBatches(); + } protected void importIndividualObservations(GenericFormatImportContext importContext) { @@ -550,13 +562,17 @@ public class GenericFormatImportService extends AbstractTuttiService { consumer.validateRow(row, importContext); - consumer.prepareRowForPersist(row); + GenericFormatImportOperationContext fishingOperationContext = importContext.getImportedFishingOperationContext(row.getBean()); + + consumer.prepareRowForPersist(fishingOperationContext, row); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close individualObservation.csv file", e); } + importContext.getPersitenceHelper().persistIndividualObservationBatches(); + } protected void importMarineLitters(GenericFormatImportContext importContext) { @@ -571,13 +587,17 @@ public class GenericFormatImportService extends AbstractTuttiService { consumer.validateRow(row, importContext); - consumer.prepareRowForPersist(row); + GenericFormatImportOperationContext fishingOperationContext = importContext.getImportedFishingOperationContext(row.getBean()); + + consumer.prepareRowForPersist(fishingOperationContext, row); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close marineLitter.csv file", e); } + importContext.getPersitenceHelper().persistMarineLitterBatches(); + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java index 90b65d0..3d1d129 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java @@ -4,7 +4,13 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.TuttiValidationDataContextSupport; import fr.ifremer.tutti.service.ValidationService; +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.consumer.CruiseNotFoundException; +import fr.ifremer.tutti.service.genericformat.consumer.FishingOperationNotFoundInCruiseException; +import fr.ifremer.tutti.service.genericformat.csv.RowWithCruiseContextSupport; +import fr.ifremer.tutti.service.genericformat.csv.RowWithOperationContextSupport; import org.apache.commons.io.IOUtils; +import org.nuiton.csv.ImportRow; import org.nuiton.validator.NuitonValidatorResult; import java.io.Closeable; @@ -59,4 +65,50 @@ public class GenericFormatImportValidationHelper implements Closeable { } } + public <R extends RowWithCruiseContextSupport> Cruise getCruise(CsvComsumer<R, ?> consumer, ImportRow<R> row, GenericFormatImportContext importContext) { + + R bean = row.getBean(); + + Cruise cruise = importContext.getImportedCruise(bean.getCruise()); + if (cruise == null) { + + consumer.addCheckError(row, new CruiseNotFoundException(bean.getCruise())); + + } else { + + bean.setCruise(cruise); + + } + + return cruise; + + } + + public <R extends RowWithOperationContextSupport> GenericFormatImportOperationContext getFishingOperationContext(CsvComsumer<R, ?> consumer, ImportRow<R> row, GenericFormatImportContext importContext) { + + GenericFormatImportOperationContext fishingOperationContext = null; + + Cruise cruise = getCruise(consumer, row, importContext); + + if (cruise != null) { + + R bean = row.getBean(); + + fishingOperationContext = importContext.getImportedFishingOperationContext(bean); + + if (fishingOperationContext == null) { + + consumer.addCheckError(row, new FishingOperationNotFoundInCruiseException(bean.getFishingOperation())); + + } else { + + bean.setFishingOperation(fishingOperationContext.getFishingOperation()); + + } + } + + return fishingOperationContext; + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java index 7092531..78e7542 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java @@ -1,9 +1,15 @@ package fr.ifremer.tutti.service.genericformat; +import com.google.common.base.Predicate; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.PersistenceService; import org.apache.commons.collections4.MapUtils; @@ -80,7 +86,7 @@ public class GenericformatImportPersitenceHelper { } FishingOperation savedFishingOperation = persistenceService.createFishingOperation(fishingOperation); - importContext.getImportResult().addImportedFishingOperation(savedFishingOperation); + importContext.addImportedFishingOperation(savedFishingOperation); return savedFishingOperation; @@ -98,21 +104,142 @@ public class GenericformatImportPersitenceHelper { public void persistFishingOperationParameters() { - Collection<FishingOperation> fishingOperations = importContext.getImportResult().getImportedFishingOperations().values(); + Iterable<GenericFormatImportOperationContext> fishingOperationContexts = importContext.getImportedFishingOperationContexts(new Predicate<GenericFormatImportOperationContext>() { + @Override + public boolean apply(GenericFormatImportOperationContext input) { + return input.withParameters(); + } + }); - for (FishingOperation fishingOperation : fishingOperations) { + for (GenericFormatImportOperationContext fishingOperationContext : fishingOperationContexts) { - if (MapUtils.isNotEmpty(fishingOperation.getGearUseFeatures()) || MapUtils.isNotEmpty(fishingOperation.getVesselUseFeatures())) { + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); - if (log.isInfoEnabled()) { - log.info("Persist parameters of " + fishingOperationDecorator.toString(fishingOperation) + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); - } - persistenceService.saveFishingOperation(fishingOperation); + if (log.isInfoEnabled()) { + log.info("Persist parameters of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); + } + persistenceService.saveFishingOperation(fishingOperation); + + } + + } + public void persistMarineLitterBatches() { + + Iterable<GenericFormatImportOperationContext> fishingOperationContexts = importContext.getImportedFishingOperationContexts(new Predicate<GenericFormatImportOperationContext>() { + @Override + public boolean apply(GenericFormatImportOperationContext input) { + return input.withMarineLitterBatches(); + } + }); + + for (GenericFormatImportOperationContext fishingOperationContext : fishingOperationContexts) { + + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); + String fishingOperationId = fishingOperation.getId(); + Collection<MarineLitterBatch> marineLitterBatches = fishingOperationContext.getMarineLitterBatches(); + if (log.isInfoEnabled()) { + log.info("Persist " + marineLitterBatches.size() + " marine litter(s) of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); } + persistenceService.createMarineLitterBatches(fishingOperationId, marineLitterBatches); } } + public void persistAccidentalBatches() { + + Iterable<GenericFormatImportOperationContext> fishingOperationContexts = importContext.getImportedFishingOperationContexts(new Predicate<GenericFormatImportOperationContext>() { + @Override + public boolean apply(GenericFormatImportOperationContext input) { + return input.withAccidentalBatches(); + } + }); + + for (GenericFormatImportOperationContext fishingOperationContext : fishingOperationContexts) { + + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); + String fishingOperationId = fishingOperation.getId(); + Collection<AccidentalBatch> accidentalBatches = fishingOperationContext.getAccidentalBatches(); + if (log.isInfoEnabled()) { + log.info("Persist " + accidentalBatches.size() + " accidental batch(es) of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); + } + persistenceService.createAccidentalBatches(fishingOperationId, accidentalBatches); + + } + + } + + public void persistIndividualObservationBatches() { + + Iterable<GenericFormatImportOperationContext> fishingOperationContexts = importContext.getImportedFishingOperationContexts(new Predicate<GenericFormatImportOperationContext>() { + @Override + public boolean apply(GenericFormatImportOperationContext input) { + return input.withIndividualObservationBatches(); + } + }); + + for (GenericFormatImportOperationContext fishingOperationContext : fishingOperationContexts) { + + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); + String fishingOperationId = fishingOperation.getId(); + Collection<IndividualObservationBatch> individualObservationBatches = fishingOperationContext.getIndividualObservationBatches(); + if (log.isInfoEnabled()) { + log.info("Persist " + individualObservationBatches.size() + " individual observation(s) of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); + } + + //TODO must reset caracteristics values for size, weight, ... using pmfmId + persistenceService.createIndividualObservationBatches(fishingOperationId, individualObservationBatches); + + } + + } + + public void persistSpeciesBatches() { + + Iterable<GenericFormatImportOperationContext> fishingOperationContexts = importContext.getImportedFishingOperationContexts(new Predicate<GenericFormatImportOperationContext>() { + @Override + public boolean apply(GenericFormatImportOperationContext input) { + return input.withSpeciesBatches(); + } + }); + + for (GenericFormatImportOperationContext fishingOperationContext : fishingOperationContexts) { + + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); + String fishingOperationId = fishingOperation.getId(); + Collection<SpeciesBatch> speciesBatches = fishingOperationContext.getSpeciesBatches(); + if (log.isInfoEnabled()) { + log.info("Persist " + speciesBatches.size() + " species batch(es) of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); + } + persistenceService.createSpeciesBatches(fishingOperationId, speciesBatches); + + } + + } + + public void persistBenthosBatches() { + + Iterable<GenericFormatImportOperationContext> fishingOperationContexts = importContext.getImportedFishingOperationContexts(new Predicate<GenericFormatImportOperationContext>() { + @Override + public boolean apply(GenericFormatImportOperationContext input) { + return input.withBenthosBatches(); + } + }); + + for (GenericFormatImportOperationContext fishingOperationContext : fishingOperationContexts) { + + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); + String fishingOperationId = fishingOperation.getId(); + Collection<BenthosBatch> benthosBatches = fishingOperationContext.getBenthosBatches(); + if (log.isInfoEnabled()) { + log.info("Persist " + benthosBatches.size() + " benthos batch(es) of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); + } + persistenceService.createBenthosBatches(fishingOperationId, benthosBatches); + + } + + } + + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java index 03ca96c..40cdf14 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -1,12 +1,21 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatchs; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; +import java.io.Serializable; import java.nio.file.Path; /** @@ -17,6 +26,9 @@ import java.nio.file.Path; */ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForAccidentalCatch.class); + public CsvConsumerForAccidentalCatch(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { super(file, AccidentalCatchModel.forImport(separator, parserFactory)); } @@ -25,9 +37,34 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo if (row.isValid()) { - AccidentalCatchRow bean = row.getBean(); + GenericFormatImportOperationContext fishingOperationContext = importContext.getValidationHelper().getFishingOperationContext(this, row, importContext); + + if (fishingOperationContext != null) { + + //TODO checks! + AccidentalCatchRow bean = row.getBean(); + + //TODO Use a validator ? + Caracteristic caracteristic = bean.getCaracteristic(); + if (caracteristic == null) { + //TODO Should done by parser ? + } + + //TODO Use a validator ? + if (bean.getCaracteristicValue() == null) { + + } - //TODO checks! + // parse caracteristic value + String value = (String) bean.getCaracteristicValue(); + try { + Serializable serializable = importContext.parseCaracteristicValue(caracteristic, value); + bean.setCaracteristicValue(serializable); + } catch (CaracteristicValueParseException e) { + addCheckError(row, e); + } + + } } @@ -35,9 +72,27 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo } - public void prepareRowForPersist(ImportRow<AccidentalCatchRow> row) { + public void prepareRowForPersist(GenericFormatImportOperationContext fishingOperationContext, ImportRow<AccidentalCatchRow> row) { AccidentalCatchRow bean = row.getBean(); + Integer batchId = bean.getBatchId(); + AccidentalBatch batch = fishingOperationContext.getAccidentalBatchById(batchId); + if (batch == null) { + + if (log.isInfoEnabled()) { + log.info("Detects accidentalBatch: " + batchId); + } + + batch = AccidentalBatchs.newAccidentalBatch(); + batch.setFishingOperation(fishingOperationContext.getFishingOperation()); + batch.setCaracteristics(new CaracteristicMap()); + batch.setComment(bean.getComment()); + batch.setSpecies(bean.getSpecies()); + fishingOperationContext.addAccidentalBatch(batchId, batch); + + } + + batch.getCaracteristics().put(bean.getCaracteristic(), bean.getCaracteristicValue()); } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java index 1b68a1b..909b6c9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -4,6 +4,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.CatchModel; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; import org.nuiton.csv.ImportRow; @@ -26,9 +27,14 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { if (row.isValid()) { - CatchRow bean = row.getBean(); + GenericFormatImportOperationContext fishingOperationContext = importContext.getValidationHelper().getFishingOperationContext(this, row, importContext); - //TODO checks! + if (fishingOperationContext != null) { + + //TODO checks! + CatchRow bean = row.getBean(); + + } } @@ -36,7 +42,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { } - public void prepareRowForPersist(ImportRow<CatchRow> row) { + public void prepareRowForPersist(GenericFormatImportOperationContext fishingOperationContext, ImportRow<CatchRow> row) { CatchRow bean = row.getBean(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java index 57ad59b..5a815aa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -8,6 +8,7 @@ import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportValidationHelper; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; import org.nuiton.csv.ImportRow; @@ -31,23 +32,20 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist if (row.isValid()) { - GearCaracteristicRow bean = row.getBean(); + GenericFormatImportValidationHelper validationHelper = importContext.getValidationHelper(); - Cruise importedCruise = importContext.getImportedCruise(bean.getCruise()); - if (importedCruise == null) { + Cruise cruise = validationHelper.getCruise(this, row, importContext); - addCheckError(row, new CruiseNotFoundException(bean.getCruise())); + if (cruise != null) { - } else { - - bean.setCruise(importedCruise); + GearCaracteristicRow bean = row.getBean(); Gear gear = bean.getGear(); int rankOrder = bean.getRankOrder(); - Gear cruiseGear = importContext.getGear(importedCruise, gear, rankOrder); + Gear cruiseGear = importContext.getGear(cruise, gear, rankOrder); if (cruiseGear == null) { - addCheckError(row, new GearNotFoundInCruiseException(importedCruise, gear, rankOrder)); + addCheckError(row, new GearNotFoundInCruiseException(cruise, gear, rankOrder)); } bean.setGear(cruiseGear); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java index d4da32c..b6481bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -1,12 +1,21 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +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.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; +import java.io.Serializable; import java.nio.file.Path; /** @@ -17,6 +26,9 @@ import java.nio.file.Path; */ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForIndividualObservation.class); + public CsvConsumerForIndividualObservation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { super(file, IndividualObservationModel.forImport(separator, parserFactory)); } @@ -25,9 +37,34 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO if (row.isValid()) { - IndividualObservationRow bean = row.getBean(); + GenericFormatImportOperationContext fishingOperationContext = importContext.getValidationHelper().getFishingOperationContext(this, row, importContext); + + if (fishingOperationContext != null) { + + //TODO checks! + IndividualObservationRow bean = row.getBean(); + + //TODO Use a validator ? + Caracteristic caracteristic = bean.getCaracteristic(); + if (caracteristic == null) { + //TODO Should done by parser ? + } + + //TODO Use a validator ? + if (bean.getCaracteristicValue() == null) { + + } + + // parse caracteristic value + String value = (String) bean.getCaracteristicValue(); + try { + Serializable serializable = importContext.parseCaracteristicValue(caracteristic, value); + bean.setCaracteristicValue(serializable); + } catch (CaracteristicValueParseException e) { + addCheckError(row, e); + } - //TODO checks! + } } @@ -35,9 +72,28 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO } - public void prepareRowForPersist(ImportRow<IndividualObservationRow> row) { + public void prepareRowForPersist(GenericFormatImportOperationContext fishingOperationContext, ImportRow<IndividualObservationRow> row) { IndividualObservationRow bean = row.getBean(); + Integer batchId = bean.getBatchId(); + IndividualObservationBatch batch = fishingOperationContext.getIndividualObservationBatchesById(batchId); + if (batch == null) { + + if (log.isInfoEnabled()) { + log.info("Detects individualObservationBatch: " + batchId); + } + + batch = IndividualObservationBatchs.newIndividualObservationBatch(); + batch.setFishingOperation(fishingOperationContext.getFishingOperation()); + batch.setCaracteristics(new CaracteristicMap()); + batch.setComment(bean.getComment()); + batch.setSpecies(bean.getSpecies()); + fishingOperationContext.addIndividualObservationBatch(batchId, batch); + + } + + batch.getCaracteristics().put(bean.getCaracteristic(), bean.getCaracteristicValue()); + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java index 714c7be..08ea266 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -1,8 +1,10 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import org.nuiton.csv.ImportRow; @@ -25,9 +27,14 @@ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, Mar if (row.isValid()) { - MarineLitterRow bean = row.getBean(); + GenericFormatImportOperationContext fishingOperationContext = importContext.getValidationHelper().getFishingOperationContext(this, row, importContext); - //TODO checks! + if (fishingOperationContext != null) { + + //TODO checks! + MarineLitterRow bean = row.getBean(); + + } } @@ -35,9 +42,12 @@ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, Mar } - public void prepareRowForPersist(ImportRow<MarineLitterRow> row) { + public void prepareRowForPersist(GenericFormatImportOperationContext fishingOperationContext, ImportRow<MarineLitterRow> row) { MarineLitterRow bean = row.getBean(); + MarineLitterBatch marineLitterBatch = bean.getMarineLitterBatch(); + marineLitterBatch.setFishingOperation(fishingOperationContext.getFishingOperation()); + fishingOperationContext.addMarineLitterBatch(marineLitterBatch); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java index a336602..28940e9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -6,6 +6,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportValidationHelper; import fr.ifremer.tutti.service.genericformat.csv.OperationModel; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import org.nuiton.csv.ImportRow; @@ -29,36 +30,37 @@ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, Operation if (row.isValid()) { - OperationRow bean = row.getBean(); + GenericFormatImportValidationHelper validationHelper = importContext.getValidationHelper(); - FishingOperation fishingOperation = bean.getFishingOperation(); + Cruise cruise = validationHelper.getCruise(this, row, importContext); - Cruise cruise = importContext.getImportedCruise(bean.getCruise()); - if (cruise == null) { + if (cruise != null) { - addCheckError(row, new CruiseNotFoundException(bean.getCruise())); + OperationRow bean = row.getBean(); - } else if (importContext.isFishingOperationAlreadyImported(fishingOperation)) { + FishingOperation fishingOperation = bean.getFishingOperation(); - addCheckError(row, new FishingOperationAlreadyImportedException(fishingOperation)); + if (importContext.isFishingOperationAlreadyImported(fishingOperation)) { - } else { + addCheckError(row, new FishingOperationAlreadyImportedException(fishingOperation)); - bean.setCruise(cruise); - fishingOperation.setCruise(cruise); + } else { - NuitonValidatorResult validatorResult = importContext.getValidationHelper().validateFishingOperation(fishingOperation); + fishingOperation.setCruise(cruise); - if (validatorResult.hasFatalMessages()) { + NuitonValidatorResult validatorResult = validationHelper.validateFishingOperation(fishingOperation); - addCheckError(row, new FishingOperationNotValidException(fishingOperation, validatorResult)); + if (validatorResult.hasFatalMessages()) { - } + addCheckError(row, new FishingOperationNotValidException(fishingOperation, validatorResult)); - //TODO other checks ? + } - } + //TODO other checks ? + } + + } } reportError(row); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java index f131086..8d793bb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -1,13 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; import org.nuiton.csv.ImportRow; @@ -31,58 +29,41 @@ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, Parameter if (row.isValid()) { - ParameterRow bean = row.getBean(); + GenericFormatImportOperationContext fishingOperationContext = importContext.getValidationHelper().getFishingOperationContext(this, row, importContext); - FishingOperation fishingOperation = bean.getFishingOperation(); + if (fishingOperationContext != null) { - Cruise cruise = importContext.getImportedCruise(bean.getCruise()); - if (cruise == null) { + ParameterRow bean = row.getBean(); - addCheckError(row, new CruiseNotFoundException(bean.getCruise())); + bean.setFishingOperation(fishingOperationContext.getFishingOperation()); - } else { - - bean.setCruise(cruise); - fishingOperation.setCruise(cruise); - - FishingOperation importedFishingOperation = importContext.getImportedFishingOperation(fishingOperation); - - if (importedFishingOperation == null) { - - addCheckError(row, new FishingOperationNotFoundInCruiseException(fishingOperation)); - - } else { - - bean.setFishingOperation(importedFishingOperation); - - //TODO Use a validator ? - if (bean.getParameterType() == null) { - //TODO Should done by parser ? - } + //TODO Use a validator ? + if (bean.getParameterType() == null) { + //TODO Should done by parser ? + } - //TODO Use a validator ? - Caracteristic caracteristic = bean.getCaracteristic(); - if (caracteristic == null) { - //TODO Should done by parser ? - } + //TODO Use a validator ? + Caracteristic caracteristic = bean.getCaracteristic(); + if (caracteristic == null) { + //TODO Should done by parser ? + } - //TODO Use a validator ? - if (bean.getValue() == null) { + //TODO Use a validator ? + if (bean.getValue() == null) { - } + } - // parse caracteristic value - String value = (String) bean.getValue(); - try { - Serializable serializable = importContext.parseCaracteristicValue(caracteristic, value); - bean.setValue(serializable); - } catch (CaracteristicValueParseException e) { - addCheckError(row, e); - } + // parse caracteristic value + String value = (String) bean.getValue(); + try { + Serializable serializable = importContext.parseCaracteristicValue(caracteristic, value); + bean.setValue(serializable); + } catch (CaracteristicValueParseException e) { + addCheckError(row, e); + } - //TODO other checks ? + //TODO other checks ? - } } } @@ -91,39 +72,26 @@ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, Parameter } - public void prepareRowForPersist(ImportRow<ParameterRow> row) { + public void prepareRowForPersist(GenericFormatImportOperationContext importedFishingOperation, ImportRow<ParameterRow> row) { ParameterRow bean = row.getBean(); ParameterRow.ParameterType parameterType = bean.getParameterType(); - CaracteristicMap caracteristicMap; - switch (parameterType) { case GEAR: - caracteristicMap = bean.getFishingOperation().getGearUseFeatures(); - if (caracteristicMap == null) { - caracteristicMap = new CaracteristicMap(); - bean.getFishingOperation().setGearUseFeatures(caracteristicMap); - } + importedFishingOperation.addGearUseFeature(bean.getCaracteristic(), bean.getValue()); break; + case VESSEL: - caracteristicMap = bean.getFishingOperation().getVesselUseFeatures(); - if (caracteristicMap == null) { - caracteristicMap = new CaracteristicMap(); - bean.getFishingOperation().setVesselUseFeatures(caracteristicMap); - } + importedFishingOperation.addVesselUseFeature(bean.getCaracteristic(), bean.getValue()); break; - default: - throw new IllegalStateException("Can't happen!"); } - caracteristicMap.put(bean.getCaracteristic(), bean.getValue()); - } } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index 55bde61..ad09359 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -31,7 +31,7 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, if (row.isValid()) { - int categoryIndex = (int) row.getLineNumber() -1; + int categoryIndex = (int) row.getLineNumber() - 1; fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); int nbSampling = sampleCategoryModel.getNbSampling(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationAlreadyImportedException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationAlreadyImportedException.java index 015ea11..66a850d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationAlreadyImportedException.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationAlreadyImportedException.java @@ -26,7 +26,7 @@ public class FishingOperationAlreadyImportedException extends Exception { @Override public String getMessage() { - return t("tutti.genericFormat.import.error.fishingOperationAlreadyImported", fishingOperation.getStationNumber() , fishingOperation.getFishingOperationNumber() , fishingOperation.getMultirigAggregation(), fishingOperation.getGearShootingStartDate(), fishingOperation.getCruise().getName()); + return t("tutti.genericFormat.import.error.fishingOperationAlreadyImported", fishingOperation.getStationNumber(), fishingOperation.getFishingOperationNumber(), fishingOperation.getMultirigAggregation(), fishingOperation.getGearShootingStartDate(), fishingOperation.getCruise().getName()); } } \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit a4c4ba401798aceaa0c90619cf5c7419bd419ce3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:27:56 2015 +0100 add more data for test --- .../genericFormat/empty/accidentalCatch.csv | 14 ++++++++++++ .../genericFormat/empty/individualObservation.csv | 25 ++++++++++++++++++++++ .../resources/genericFormat/empty/marineLitter.csv | 5 ++++- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv b/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv index d013e00..3fb8b64 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/accidentalCatch.csv @@ -1 +1,15 @@ Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Libelle_PMFM;Valeur;Serie_Id;Valeur_Id +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;1393;Rejet vivant ou mort ? - produit/lot - totale - Observation par un observateur;Rejet vivant;CAM-EVHOE;1768 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;196;Sexe - produit/lot - totale - Observation par un observateur;Femelle;CAM-EVHOE;301 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;220;Poids - produit/lot - totale - Mesure par un observateur;12.0;CAM-EVHOE;12.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;295;CAM-EVHOE;295 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;295;Hauteur de l'individu (H) - individu - totale - Mesure au 1/2 cm par un observateur;20.0;CAM-EVHOE;20.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;1460;Activité prévue - marée - totale - Déclaration d'un professionnel;CRU - Route;CAM-EVHOE;2404 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100000;-4;Divers 1;bah;102;Age - individu - otolithe droite - Lecture d'âge;233.0;CAM-EVHOE;233.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;1393;Rejet vivant ou mort ? - produit/lot - totale - Observation par un observateur;Unk - Inconnue;CAM-EVHOE;1770 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;196;Sexe - produit/lot - totale - Observation par un observateur;Male;CAM-EVHOE;300 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;220;Poids - produit/lot - totale - Mesure par un observateur;12.0;CAM-EVHOE;12.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;294;CAM-EVHOE;294 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;294;Hauteur de l'individu (H) - individu - totale - Mesure au mm par un observateur;45.0;CAM-EVHOE;45.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;1460;Activité prévue - marée - totale - Déclaration d'un professionnel;GUD - Assistance;CAM-EVHOE;2408 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100001;-5;Divers 2;gthy;102;Age - individu - otolithe droite - Lecture d'âge;45.0;CAM-EVHOE;45.0 diff --git a/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv b/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv index d013e00..fdb9391 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/individualObservation.csv @@ -1 +1,26 @@ Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Id_Lot;Code_Taxon;Nom_Scientifique;Commentaire;Code_PMFM;Libelle_PMFM;Valeur;Serie_Id;Valeur_Id +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100002;1394;Argentina sphyraena;gjtkgtjkg;220;Poids - produit/lot - totale - Mesure par un observateur;0.001;CAM-EVHOE;0.001 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100002;1394;Argentina sphyraena;gjtkgtjkg;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100002;1394;Argentina sphyraena;gjtkgtjkg;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;8.0;CAM-EVHOE;8.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100002;1394;Argentina sphyraena;gjtkgtjkg;1460;Activité prévue - marée - totale - Déclaration d'un professionnel;FSH - Activité de pêche (toutes opérations de pêche);CAM-EVHOE;2403 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100002;1394;Argentina sphyraena;gjtkgtjkg;1418;Age - individu - Coquille - Ageage par lecture directe des stries de la coquille;5676.0;CAM-EVHOE;5676.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100003;1972;Arnoglossus imperialis;;220;Poids - produit/lot - totale - Mesure par un observateur;0.056;CAM-EVHOE;0.056 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100003;1972;Arnoglossus imperialis;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100003;1972;Arnoglossus imperialis;;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;14.0;CAM-EVHOE;14.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100003;1972;Arnoglossus imperialis;;1418;Age - individu - Coquille - Ageage par lecture directe des stries de la coquille;67.0;CAM-EVHOE;67.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100003;1972;Arnoglossus imperialis;;1460;Activité prévue - marée - totale - Déclaration d'un professionnel;TSH - Transbordement;CAM-EVHOE;2405 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100004;1972;Arnoglossus imperialis;;220;Poids - produit/lot - totale - Mesure par un observateur;0.005;CAM-EVHOE;0.005 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100004;1972;Arnoglossus imperialis;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100004;1972;Arnoglossus imperialis;;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;14.0;CAM-EVHOE;14.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100005;1972;Arnoglossus imperialis;;220;Poids - produit/lot - totale - Mesure par un observateur;0.006;CAM-EVHOE;0.006 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100005;1972;Arnoglossus imperialis;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100005;1972;Arnoglossus imperialis;;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;16.0;CAM-EVHOE;16.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100006;1972;Arnoglossus imperialis;;220;Poids - produit/lot - totale - Mesure par un observateur;0.007;CAM-EVHOE;0.007 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100006;1972;Arnoglossus imperialis;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100006;1972;Arnoglossus imperialis;;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;16.0;CAM-EVHOE;16.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100007;1972;Arnoglossus imperialis;;220;Poids - produit/lot - totale - Mesure par un observateur;0.008;CAM-EVHOE;0.008 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100007;1972;Arnoglossus imperialis;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100007;1972;Arnoglossus imperialis;;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;17.0;CAM-EVHOE;17.0 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100008;1972;Arnoglossus imperialis;;220;Poids - produit/lot - totale - Mesure par un observateur;0.009;CAM-EVHOE;0.009 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100008;1972;Arnoglossus imperialis;;1433;ID du PSFM - données - sans objet - Organisation des données de campagnes;306;CAM-EVHOE;306 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;100008;1972;Arnoglossus imperialis;;306;Longueur totale (LT) - individu - totale - Mesure au cm par un observateur;17.0;CAM-EVHOE;17.0 diff --git a/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv b/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv index 6335540..ee90166 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/marineLitter.csv @@ -1 +1,4 @@ -Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Categorie;Categorie_Taille;Nombre;Poids;Commentaire;Serie_Id;Categorie_Id;Categorie_Taille_Id \ No newline at end of file +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Engin;Rang_Engin;Categorie;Categorie_Taille;Nombre;Poids;Commentaire;Serie_Id;Categorie_Id;Categorie_Taille_Id +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;L1a Sacs;X: UNK - catégorisation non réalisée;1;0.026;;CAM-EVHOE;2126;2163 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;L1f Filets de pêche;X: UNK - catégorisation non réalisée;1;0.125;;CAM-EVHOE;2131;2163 +2014;Campagne EVHOE;1;S0981;156;1;GOV 36/47;1;L1i Cordes synthétiques / bandes de cerclage;X: UNK - catégorisation non réalisée;10;0.023;;CAM-EVHOE;2134;2163 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 984e593beaf0ad5a262fea35b0c4b6162d6d2257 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 20 17:41:43 2015 +0100 use immutable list and not set + remove todo --- .../genericformat/GenericFormatImportOperationContext.java | 9 +++++---- .../genericformat/GenericformatImportPersitenceHelper.java | 2 -- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java index f0f107f..bce9d5b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java @@ -1,5 +1,6 @@ package fr.ifremer.tutti.service.genericformat; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; @@ -132,19 +133,19 @@ public class GenericFormatImportOperationContext { } public Collection<MarineLitterBatch> getMarineLitterBatches() { - return ImmutableSet.copyOf(marineLitterBatches); + return ImmutableList.copyOf(marineLitterBatches); } public Collection<AccidentalBatch> getAccidentalBatches() { - return ImmutableSet.copyOf(accidentalBatchesById.values()); + return ImmutableList.copyOf(accidentalBatchesById.values()); } public Collection<IndividualObservationBatch> getIndividualObservationBatches() { - return ImmutableSet.copyOf(individualObservationBatchesById.values()); + return ImmutableList.copyOf(individualObservationBatchesById.values()); } public Collection<SpeciesBatch> getSpeciesBatches() { - return ImmutableSet.copyOf(speciesBatches); + return ImmutableList.copyOf(speciesBatches); } public Collection<BenthosBatch> getBenthosBatches() { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java index 78e7542..5ba021e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java @@ -187,8 +187,6 @@ public class GenericformatImportPersitenceHelper { if (log.isInfoEnabled()) { log.info("Persist " + individualObservationBatches.size() + " individual observation(s) of " + fishingOperationContext.getFishingOperationLabel() + " of cruise: " + cruiseDecorator.toString(fishingOperation.getCruise())); } - - //TODO must reset caracteristics values for size, weight, ... using pmfmId persistenceService.createIndividualObservationBatches(fishingOperationId, individualObservationBatches); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm