r912 - in trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service: . batch
Author: tchemit Date: 2013-05-02 15:21:08 +0200 (Thu, 02 May 2013) New Revision: 912 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/912 Log: refs #2221: Rendre les donn?\195?\169es CGFS compatible avec Tutti (cr?\195?\169ation dynamique des noeud de l'arbre uniquement quand requis) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-02 13:21:08 UTC (rev 912) @@ -459,13 +459,12 @@ if (target.getId() == null || target.getRootBatch() == null || (target.getParentBatch() != null && !target.getParentBatch().getId().toString().equals(parentBatchId))) { - batchHelper.setBatchParents( + batchHelper.setBenthosBatchParents( source.getSampleCategoryType(), source.getSampleCategoryValue(), target, parentBatchId, - catchBatch, - enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS); + catchBatch); } // RankOrder (initialize once, at creation) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-02 13:21:08 UTC (rev 912) @@ -93,9 +93,11 @@ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID); - result.setCatchTotalSortedCarousselWeight(vracBatch.getWeight()); - result.setCatchTotalSortedTremisWeight(vracBatch.getWeightBeforeSampling()); - { + if (vracBatch != null) { + + result.setCatchTotalSortedCarousselWeight(vracBatch.getWeight()); + result.setCatchTotalSortedTremisWeight(vracBatch.getWeightBeforeSampling()); + // Vrac > Species SortingBatch vracSpeciesBatch = batchHelper.getSortingBatch( vracBatch, @@ -299,110 +301,183 @@ quantificationMeasurements.removeAll(notChangedQuantificationMeasurements); } + boolean needVracSpeciesAliveNotItemized = + source.getSpeciesTotalLivingNotItemizedWeight() != null; + boolean needVracSpeciesInert = + source.getSpeciesTotalInertWeight() != null; + boolean needVracSpeciesAliveItemized = false; + + boolean needVracSpecies = source.getSpeciesTotalSortedWeight() != null || + needVracSpeciesAliveNotItemized || + needVracSpeciesInert || + needVracSpeciesAliveItemized; + + boolean needVracBenthosAliveNotItemized = + source.getBenthosTotalLivingNotItemizedWeight() != null; + boolean needVracBenthosInert = + source.getBenthosTotalInertWeight() != null; + boolean needVracBenthosAliveItemized = false; + + boolean needVracBenthos = source.getBenthosTotalSortedWeight() != null || + needVracBenthosAliveNotItemized || + needVracBenthosInert || + needVracBenthosAliveItemized; + + boolean needVrac = + source.getCatchTotalSortedCarousselWeight() != null || + source.getCatchTotalSortedTremisWeight() != null || + needVracSpecies || + needVracBenthos; + + boolean needHorsVracSpecies = false; + boolean needHorsVracBenthos = false; + boolean needHorsVracMarineLitter = + source.getMarineLitterTotalWeight() != null; + + boolean needHorsVrac = needHorsVracSpecies || + needHorsVracBenthos || + needHorsVracMarineLitter; + + boolean needUnsorted = source.getCatchTotalRejectedWeight() != null; + // --------------------------------------------------------------------- // Vrac // --------------------------------------------------------------------- - SortingBatch vracBatch = batchHelper.getOrCreateVracBatch( - target, - source.getCatchTotalSortedCarousselWeight(), - source.getCatchTotalSortedTremisWeight()); - // --------------------------------------------------------------------- - // Vrac / Species - // --------------------------------------------------------------------- + if (needVrac) { - SortingBatch speciesBatch = batchHelper.getOrCreateSpeciesVracRootBatch( - target, - vracBatch, - source.getSpeciesTotalSortedWeight()); + SortingBatch vracBatch = batchHelper.getOrCreateVracBatch( + target, + source.getCatchTotalSortedCarousselWeight(), + source.getCatchTotalSortedTremisWeight()); - // --------------------------------------------------------------------- - // Vrac / Species / Alive not itemized - // --------------------------------------------------------------------- - batchHelper.getOrCreateSpeciesVracAliveNotItemizeRootBatch( - target, - speciesBatch, - source.getSpeciesTotalLivingNotItemizedWeight()); + if (needVracSpecies) { - // --------------------------------------------------------------------- - // Vrac / Species / Inert (not alive) - // --------------------------------------------------------------------- - batchHelper.getOrCreateSpeciesVracInertRootBatch( - target, - speciesBatch, - source.getSpeciesTotalInertWeight()); + // --------------------------------------------------------------------- + // Vrac / Species + // --------------------------------------------------------------------- + SortingBatch speciesBatch = batchHelper.getOrCreateSpeciesVracRootBatch( + target, + vracBatch, + source.getSpeciesTotalSortedWeight()); - // --------------------------------------------------------------------- - // Vrac / Species / Alive itemized - // --------------------------------------------------------------------- - batchHelper.getOrCreateSpeciesVracAliveItemizeRootBatch( - target, - speciesBatch); + if (needVracSpeciesAliveNotItemized) { + // --------------------------------------------------------------------- + // Vrac / Species / Alive not itemized + // --------------------------------------------------------------------- + batchHelper.getOrCreateSpeciesVracAliveNotItemizeRootBatch( + target, + speciesBatch, + source.getSpeciesTotalLivingNotItemizedWeight()); + } - // --------------------------------------------------------------------- - // Vrac > Benthos - // --------------------------------------------------------------------- - SortingBatch benthosBatch = batchHelper.getOrCreateBenthosVracRootBatch( - target, - vracBatch, - source.getBenthosTotalSortedWeight()); + if (needVracSpeciesInert) { + // --------------------------------------------------------------------- + // Vrac / Species / Inert (not alive) + // --------------------------------------------------------------------- + batchHelper.getOrCreateSpeciesVracInertRootBatch( + target, + speciesBatch, + source.getSpeciesTotalInertWeight()); + } - // --------------------------------------------------------------------- - // Vrac / Benthos / Alive not itemized - // --------------------------------------------------------------------- - batchHelper.getOrCreateBenthosVracAliveNotItemizeRootBatch( - target, - benthosBatch, - source.getBenthosTotalLivingNotItemizedWeight()); + if (needVracSpeciesAliveItemized) { + // --------------------------------------------------------------------- + // Vrac / Species / Alive itemized + // --------------------------------------------------------------------- + batchHelper.getOrCreateSpeciesVracAliveItemizeRootBatch( + target, + speciesBatch); + } + } - // --------------------------------------------------------------------- - // Vrac / Benthos / Inert (not alive) - // --------------------------------------------------------------------- - batchHelper.getOrCreateBenthosVracInertRootBatch( - target, - benthosBatch, - source.getBenthosTotalInertWeight()); + if (needVracBenthos) { - // --------------------------------------------------------------------- - // Vrac / Benthos / Alive itemized - // --------------------------------------------------------------------- - batchHelper.getOrCreateBenthosVracAliveItemizeRootBatch( - target, - benthosBatch); + // --------------------------------------------------------------------- + // Vrac > Benthos + // --------------------------------------------------------------------- + SortingBatch benthosBatch = batchHelper.getOrCreateBenthosVracRootBatch( + target, + vracBatch, + source.getBenthosTotalSortedWeight()); - // --------------------------------------------------------------------- - // Hors Vrac - // --------------------------------------------------------------------- - SortingBatch horsVracBatch = batchHelper.getOrCreateHorsVracBatch(target); + if (needVracBenthosAliveNotItemized) { + // --------------------------------------------------------------------- + // Vrac / Benthos / Alive not itemized + // --------------------------------------------------------------------- + batchHelper.getOrCreateBenthosVracAliveNotItemizeRootBatch( + target, + benthosBatch, + source.getBenthosTotalLivingNotItemizedWeight()); + } - // --------------------------------------------------------------------- - // Hors Vrac > Species - // --------------------------------------------------------------------- - batchHelper.getOrCreateSpeciesHorsVracRootBatch( - target, - horsVracBatch); + if (needVracBenthosInert) { + // --------------------------------------------------------------------- + // Vrac / Benthos / Inert (not alive) + // --------------------------------------------------------------------- + batchHelper.getOrCreateBenthosVracInertRootBatch( + target, + benthosBatch, + source.getBenthosTotalInertWeight()); + } - // --------------------------------------------------------------------- - // Hors Vrac > Benthos - // --------------------------------------------------------------------- - batchHelper.getOrCreateBenthosHorsVracRootBatch( - target, - horsVracBatch); + if (needVracBenthosAliveItemized) { + // --------------------------------------------------------------------- + // Vrac / Benthos / Alive itemized + // --------------------------------------------------------------------- + batchHelper.getOrCreateBenthosVracAliveItemizeRootBatch( + target, + benthosBatch); + } + } - // --------------------------------------------------------------------- - // Hors Vrac > MarineLitter - // --------------------------------------------------------------------- - batchHelper.getOrCreateMarineLitterRootBatch( - target, - horsVracBatch, - source.getMarineLitterTotalWeight()); + } - // --------------------------------------------------------------------- - // Unsorted (=rejected) - // --------------------------------------------------------------------- - batchHelper.getOrCreateRejectedBatch( - target, source.getCatchTotalRejectedWeight()); + if (needHorsVrac) { + // --------------------------------------------------------------------- + // Hors Vrac + // --------------------------------------------------------------------- + SortingBatch horsVracBatch = + batchHelper.getOrCreateHorsVracBatch(target); + + if (needHorsVracSpecies) { + // --------------------------------------------------------------------- + // Hors Vrac > Species + // --------------------------------------------------------------------- + batchHelper.getOrCreateSpeciesHorsVracRootBatch( + target, + horsVracBatch); + } + + if (needHorsVracBenthos) { + // --------------------------------------------------------------------- + // Hors Vrac > Benthos + // --------------------------------------------------------------------- + batchHelper.getOrCreateBenthosHorsVracRootBatch( + target, + horsVracBatch); + } + + if (needHorsVracMarineLitter) { + // --------------------------------------------------------------------- + // Hors Vrac > MarineLitter + // --------------------------------------------------------------------- + batchHelper.getOrCreateMarineLitterRootBatch( + target, + horsVracBatch, + source.getMarineLitterTotalWeight()); + } + } + + if (needUnsorted) { + // --------------------------------------------------------------------- + // Unsorted (=rejected) + // --------------------------------------------------------------------- + batchHelper.getOrCreateRejectedBatch( + target, source.getCatchTotalRejectedWeight()); + } + } } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-02 13:21:08 UTC (rev 912) @@ -37,6 +37,7 @@ import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon; import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; @@ -104,21 +105,28 @@ // container of speciesBatch is arbitraty put on vrac type (there is // no common ancestor for all species batch). BatchContainer<SpeciesBatch> result = new BatchContainer<SpeciesBatch>(); - result.setId(vracSpeciesBatch.getId()); - for (Batch batch : vracSpeciesBatch.getChildBatchs()) { - SortingBatch source = (SortingBatch) batch; - ReferenceTaxon referenceTaxon = source.getReferenceTaxon(); - Preconditions.checkNotNull(referenceTaxon, "Can't have a rootSpeciesBatch with a null taxon, but was for " + batch.getId()); - Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId()); + if (vracSpeciesBatch != null) { - SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch(); - target.setSpecies(species); - entityToSpeciesBatch(source, target); - result.addChildren(target); + result.setId(vracSpeciesBatch.getId()); - if (log.isInfoEnabled()) { - log.info("Loaded CatchBatch Vrac > Species > Alive Itemized > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId()); + for (Batch batch : vracSpeciesBatch.getChildBatchs()) { + SortingBatch source = (SortingBatch) batch; + ReferenceTaxon referenceTaxon = source.getReferenceTaxon(); + Preconditions.checkNotNull(referenceTaxon, "Can't have a rootSpeciesBatch with a null taxon, but was for " + batch.getId()); + if (log.isTraceEnabled()) { + log.trace("Loading CatchBatch Vrac > Species > Alive Itemized > " + referenceTaxon.getId() + " - " + " (batch:" + source.getId() + ")"); + } + Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId()); + + SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch(); + target.setSpecies(species); + entityToSpeciesBatch(source, target); + result.addChildren(target); + + if (log.isDebugEnabled()) { + log.debug("Loaded CatchBatch Vrac > Species > Alive Itemized > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId()); + } } } @@ -133,14 +141,17 @@ SortingBatch source = (SortingBatch) batch; ReferenceTaxon referenceTaxon = source.getReferenceTaxon(); Preconditions.checkNotNull(referenceTaxon, "Can't have a rootSpeciesBatch with a null taxon, but was for " + source.getId()); + if (log.isTraceEnabled()) { + log.trace("Loading CatchBatch Hors Vrac > Species > " + referenceTaxon.getId() + " - " + " (batch:" + source.getId() + ")"); + } Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId()); SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch(); target.setSpecies(species); entityToSpeciesBatch(source, target); result.addChildren(target); - if (log.isInfoEnabled()) { - log.info("Loaded CatchBatch Hors Vrac > Species > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId()); + if (log.isDebugEnabled()) { + log.debug("Loaded CatchBatch Hors Vrac > Species > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId()); } } } @@ -425,7 +436,7 @@ targetChild.setSpecies(target.getSpecies()); entityToSpeciesBatch(sourceChild, targetChild); if (log.isInfoEnabled()) { - log.info("Loaded CatchBatch Hors Vrac > (Species|Benthos) > " + targetChild.getSpecies().getReferenceTaxonId() + " : " + target.getId()); + log.info("Loaded CatchBatch (Vrac|Hors Vrac) > Species > " + targetChild.getSpecies().getReferenceTaxonId() + " : " + target.getId()); } if (targetChild.getSampleCategoryValue() != null) { targetChilds.add(targetChild); @@ -466,11 +477,13 @@ protected void speciesBatchToEntity(SpeciesBatch source, SortingBatch target, String parentBatchId, - fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch ) { + fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch) { Preconditions.checkNotNull(source.getFishingOperation()); Preconditions.checkNotNull(source.getFishingOperation().getId()); + boolean createEntity = TuttiEntities.isNew(source); + Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements(); Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements(); @@ -490,13 +503,13 @@ || target.getRootBatch() == null || (target.getParentBatch() != null && !target.getParentBatch().getId().toString().equals(parentBatchId))) { - batchHelper.setBatchParents( + batchHelper.setSpeciesBatchParents( source.getSampleCategoryType(), source.getSampleCategoryValue(), target, parentBatchId, - catchBatch, - enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES); + catchBatch + ); } // RankOrder (initialize once, at creation) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-02 10:32:02 UTC (rev 911) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-02 13:21:08 UTC (rev 912) @@ -212,15 +212,17 @@ return result; } - public void setBatchParents(SampleCategoryEnum sampleCategoryType, - Serializable sampleCategoryValue, - SortingBatch target, - String parentBatchIdStr, - fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch, - Integer batchPmfmId) { + public void setSpeciesBatchParents(SampleCategoryEnum sampleCategoryType, + Serializable sampleCategoryValue, + SortingBatch target, + String parentBatchIdStr, + CatchBatch catchBatch) { Preconditions.checkNotNull(target); + Preconditions.checkNotNull(catchBatch); + target.setRootBatch(catchBatch); + SortingBatch parentBatch; if (parentBatchIdStr != null) { @@ -241,23 +243,66 @@ if (enumeration.QUALITATIVE_VRAC_ID.equals(qualitativeValueId)) { - // vrac + // get vrac / Species / Alive itemized batch parentBatch = getSortingBatch( catchBatch, - "Vrac > (Species | Benthos) > Alive Itemized", - enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID, // vrac - enumeration.PMFM_ID_SORTING_TYPE, batchPmfmId, // Species | Benthos - enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED // vivant trié - ); + "Vrac > Species > Alive Itemized", + enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID, + enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES, + enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED); + + if (parentBatch == null) { + + // get vrac batch + + SortingBatch vracBatch = getSortingBatch( + catchBatch, + "Vrac", + enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID); + + if (vracBatch == null) { + + // create vrac batch + vracBatch = getOrCreateVracBatch(catchBatch, null, null); + } + + // get vrac > species batch + + SortingBatch vracSpeciesBatch = getSortingBatch( + vracBatch, + "Vrac > Species", + enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES); + + if (vracSpeciesBatch == null) { + + // create vrac > species batch + vracSpeciesBatch = getOrCreateSpeciesVracRootBatch(catchBatch, vracBatch, null); + } + + // create vrac > species > Alive itemized batch + + parentBatch = getOrCreateSpeciesVracAliveItemizeRootBatch(catchBatch, vracSpeciesBatch); + + } } else if (enumeration.QUALITATIVE_HORS_VRAC_ID.equals(qualitativeValueId)) { - // hors-vrac + // get hors vrac > Species batch parentBatch = getSortingBatch( catchBatch, - "Hors vrac > (Species|Benthos)", - enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_HORS_VRAC_ID, // hors vrac - enumeration.PMFM_ID_SORTING_TYPE, batchPmfmId // Species | Benthos - ); + "Hors vrac > Species", + enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_HORS_VRAC_ID, + enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES); + + if (parentBatch == null) { + + // get (or create) hors vrac batch + SortingBatch horsVracBatch = getOrCreateHorsVracBatch(catchBatch); + + // create hors vrac > species batch + parentBatch = getOrCreateSpeciesHorsVracRootBatch( + catchBatch, + horsVracBatch); + } } else { // not possible @@ -266,14 +311,111 @@ } - if (parentBatch == null) { - throw new DataIntegrityViolationException( - "Could not retrieve parent batch, for a given speciesBatch or benthosBatch : invalid batch tree structure. Please make sure CatchBatch has been saved before to create a such batch."); + Preconditions.checkNotNull(parentBatch); + target.setParentBatch(parentBatch); + } + + public void setBenthosBatchParents(SampleCategoryEnum sampleCategoryType, + Serializable sampleCategoryValue, + SortingBatch target, + String parentBatchIdStr, + CatchBatch catchBatch) { + + Preconditions.checkNotNull(target); + Preconditions.checkNotNull(catchBatch); + + target.setRootBatch(catchBatch); + + SortingBatch parentBatch; + if (parentBatchIdStr != null) { + + // Load existing parent and root + parentBatch = catchBatchDao.getSortingBatchById(catchBatch, Integer.valueOf(parentBatchIdStr)); + } else { + + // Or retrieve parent batch, from pmfm id + // Retrieve category type + if (!sampleCategoryType.equals(SampleCategoryEnum.sortedUnsorted)) { + throw new DataIntegrityViolationException(MessageFormat.format( + "A species or benthos batch with no parent should have a sampleCategoryType {0} (PMFM.ID={1})", + SampleCategoryEnum.sortedUnsorted.name(), + enumeration.PMFM_ID_SORTED_UNSORTED)); + } + + Integer qualitativeValueId = convertSampleCategoryValueIntoQualitativeId(sampleCategoryValue); + + if (enumeration.QUALITATIVE_VRAC_ID.equals(qualitativeValueId)) { + + // Vrac > Benthos > Alive Itemized + parentBatch = getSortingBatch( + catchBatch, + "Vrac > Species > Alive Itemized", + enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID, + enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS, + enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED); + + if (parentBatch == null) { + + // get vrac batch + + SortingBatch vracBatch = getSortingBatch( + catchBatch, + "Vrac", + enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID); + + if (vracBatch == null) { + + // create vrac batch + vracBatch = getOrCreateVracBatch(catchBatch, null, null); + } + + // get vrac > Benthos batch + + SortingBatch vracBenthosBatch = getSortingBatch( + vracBatch, + "Vrac > Benthos", + enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS); + + if (vracBenthosBatch == null) { + + // create vrac > Benthos batch + vracBenthosBatch = getOrCreateBenthosVracRootBatch(catchBatch, vracBatch, null); + } + + // create vrac > Benthos > Alive itemized batch + + parentBatch = getOrCreateBenthosVracAliveItemizeRootBatch(catchBatch, vracBenthosBatch); + + } + } else if (enumeration.QUALITATIVE_HORS_VRAC_ID.equals(qualitativeValueId)) { + + // get hors-vrac > Benthos batch + parentBatch = getSortingBatch( + catchBatch, + "Hors vrac > Benthos", + enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_HORS_VRAC_ID, + enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS); + + if (parentBatch == null) { + + // get (or create) hors vrac batch + + SortingBatch horsVracBatch = getOrCreateHorsVracBatch(catchBatch); + + // create hors vrac > Benthos batch + parentBatch = getOrCreateBenthosHorsVracRootBatch( + catchBatch, + horsVracBatch); + } + } else { + + // not possible + throw new DataIntegrityViolationException("Should have Vrac / Hors Vrac qualitative value, but had: " + qualitativeValueId); + } } - // Parent Batch + Preconditions.checkNotNull(parentBatch); target.setParentBatch(parentBatch); - target.setRootBatch(catchBatch); } public Integer convertSampleCategoryValueIntoQualitativeId(Serializable value) {
participants (1)
-
tchemit@users.forge.codelutin.com