Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 4058 discussions
28 May '14
Author: tchemit
Date: 2014-05-28 17:35:16 +0200 (Wed, 28 May 2014)
New Revision: 1818
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1818
Log:
refs #4959 implements it
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.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/MarineLitterBatchPersistenceServiceImpl.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/util/BatchPersistenceHelper.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchTreeHelper.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/MeasurementPersistenceHelper.java
trunk/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties
trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ComputeBatchWeightsAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/pom.xml 2014-05-28 15:35:16 UTC (rev 1818)
@@ -146,7 +146,7 @@
<jaxxVersion>2.8.5</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<slf4jVersion>1.7.5</slf4jVersion>
- <adagioVersion>3.5.2</adagioVersion>
+ <adagioVersion>3.5.5-SNAPSHOT</adagioVersion>
<bluecoveVersion>2.1.0</bluecoveVersion>
<hibernateVersion>4.3.1.Final</hibernateVersion>
<springVersion>4.0.1.RELEASE</springVersion>
@@ -425,7 +425,7 @@
<dependency>
<groupId>com.esotericsoftware.yamlbeans</groupId>
<artifactId>yamlbeans</artifactId>
- <version>1.06</version>
+ <version>1.08</version>
</dependency>
<!-- flying-saucer -->
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -734,6 +734,11 @@
catchBatchService.deleteCatchBatch(fishingOperationId);
}
+ @Override
+ public void recomputeCatchBatchSampleRatios(String fishingOperationId) {
+ catchBatchService.recomputeCatchBatchSampleRatios(fishingOperationId);
+ }
+
//------------------------------------------------------------------------//
//-- Species Batch methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -493,6 +493,11 @@
}
@Override
+ public void recomputeCatchBatchSampleRatios(String fishingOperationId) {
+ throw notImplemented();
+ }
+
+ @Override
public BatchContainer<SpeciesBatch> getRootSpeciesBatch(String fishingOperationId, boolean validateTree) throws InvalidBatchModelException {
throw notImplemented();
}
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 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -3,10 +3,8 @@
/*
* #%L
* Tutti :: Persistence
- * $Id$
- * $HeadURL$
* %%
- * Copyright (C) 2012 - 2013 Ifremer
+ * Copyright (C) 2012 - 2014 Ifremer
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -28,18 +26,13 @@
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
-import fr.ifremer.adagio.core.dao.data.measure.QuantificationMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
import fr.ifremer.adagio.core.dao.referential.QualityFlag;
import fr.ifremer.adagio.core.dao.referential.QualityFlagCode;
-import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
-import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.tutti.persistence.InvalidBatchModelException;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
@@ -59,10 +52,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import static org.nuiton.i18n.I18n.t;
@@ -315,7 +306,7 @@
target = SortingBatch.Factory.newInstance();
// Fill the sorting batch from the source
- beanToEntity(source, target, parentBatch, rankOrder);
+ batchHelper.beanToEntity(source, target, parentBatch, rankOrder);
// Create the targeted batch, then update the source id
batchHelper.createSortingBatch(source, catchBatch, target);
@@ -326,7 +317,7 @@
target = batchHelper.getSortingBatchById(catchBatch, source.getIdAsInt());
// Fill the sorting batch from the source
- beanToEntity(source, target, parentBatch, rankOrder);
+ batchHelper.beanToEntity(source, target, parentBatch, rankOrder);
// Add the batch into a list (will be update later, using this list)
batchsToUpdate.add(target);
@@ -375,6 +366,14 @@
target.setSampleCategoryWeight(source.getWeightBeforeSampling());
}
+ if (CollectionUtils.isNotEmpty(source.getChildBatchs()) && target.getWeight() != null) {
+
+ // can't use this sample weight on a node
+ // the weight comes from sampleRatioText, but must NOT be used here
+ target.setWeight(null);
+
+ }
+
// Comments
target.setComment(source.getComments());
@@ -434,20 +433,6 @@
Preconditions.checkNotNull(source.getFishingOperation());
Preconditions.checkNotNull(source.getFishingOperation().getId());
- Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
- Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
-
- // Create lists to store all updates, then remove not updated items
-
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
- Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
- if (sortingMeasurements != null) {
- notChangedSortingMeasurements.addAll(sortingMeasurements);
- }
-
// If parent and root need to be set
if (target.getId() == null
|| target.getRootBatch() == null
@@ -460,179 +445,75 @@
catchBatch);
}
- // RankOrder (initialize once, at creation)
- if (target.getRankOrder() == null) {
- // Start rank order at 1
- short rankOrder = (short) 1;
- if (source.getParentBatch() != null && source.getParentBatch().getChildBatchs() != null) {
- int maxRankOrder = 0;
- for (BenthosBatch batch : source.getParentBatch().getChildBatchs()) {
- Integer r = batch.getRankOrder();
- if (r != null && r > maxRankOrder) {
- maxRankOrder = r;
- }
- }
- rankOrder += (short) maxRankOrder;
-
- } else if (target.getParentBatch() != null && target.getParentBatch().getChildBatchs() != null) {
- short maxRankOrder = 0;
- for (Batch batch : target.getParentBatch().getChildBatchs()) {
- Short r = batch.getRankOrder();
- if (r != null && r > maxRankOrder) {
- maxRankOrder = r;
- }
- }
- rankOrder += maxRankOrder;
- }
- target.setRankOrder(rankOrder);
- }
-
- // Force subgroup count to '1', as Allegro
- target.setSubgroupCount(1f);
-
- // Weight or SampleCategoryWeight
- if (source.getWeight() == null && source.getSampleCategoryWeight() != null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getSampleCategoryWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- } else if (source.getWeight() != null && source.getSampleCategoryWeight() == null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
-
- // Sampling Ratio
- if (source.getSampleCategoryWeight() == null || source.getWeight() == null) {
- target.setSamplingRatio(null);
- target.setSamplingRatioText(null);
- } else {
- String samplingRatioText = source.getWeight() + "/" + source.getSampleCategoryWeight();
- samplingRatioText = samplingRatioText.replaceAll(",", ".");
- target.setSamplingRatioText(samplingRatioText);
- target.setSamplingRatio(source.getWeight() / source.getSampleCategoryWeight());
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
-
- // Sorting measurement
- if (source.getSampleCategoryId() != null && source.getSampleCategoryValue() != null) {
- Integer pmfmId = source.getSampleCategoryId();
- // Do not store sorting measurement if pmfm = SORTED (already store in an ancestor batch)
- if (!pmfmId.equals(PmfmId2.SORTED_UNSORTED.getValue())) {
- SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(
- target,
- pmfmId,
- source.getSampleCategoryValue());
- notChangedSortingMeasurements.remove(sortingMeasurement);
- }
- }
-
- // Individual count
- target.setIndividualCount(source.getNumber());
-
- // Species
- ReferenceTaxon referenceTaxon;
- if (source.getSpecies() == null || parentBatchId != null) {
- referenceTaxon = null;
- } else {
- referenceTaxon = load(ReferenceTaxonImpl.class, source.getSpecies().getReferenceTaxonId());
- }
- target.setReferenceTaxon(referenceTaxon);
-
- // QualityFlag
- String qualityFlag;
- if (source.isSpeciesToConfirm()) {
- qualityFlag = QualityFlagCode.DOUBTFUL.getValue();
- } else {
- qualityFlag = QualityFlagCode.NOTQUALIFIED.getValue();
- }
- target.setQualityFlag(load(QualityFlagImpl.class, qualityFlag));
-
- // Comments
- target.setComments(source.getComment());
-
- // Exhaustive inventory (always true under a species batch)
- target.setExhaustiveInventory(true);
-
- // Removed not changed measurements (in sorting and quantification measurement lists)
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
- if (sortingMeasurements != null) {
- sortingMeasurements.removeAll(notChangedSortingMeasurements);
- }
+ batchHelper.beanToEntity(parentBatchId, source, target);
}
- protected void beanToEntity(BenthosBatchFrequency source,
- SortingBatch target,
- SortingBatch parentBatch,
- short rankOrder) {
- Preconditions.checkNotNull(source.getBatch());
- Preconditions.checkNotNull(source.getBatch().getId());
-
- Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
- Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
-
- // Create lists to store all updates, then remove not updated items
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
- Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
- if (sortingMeasurements != null) {
- notChangedSortingMeasurements.addAll(sortingMeasurements);
- }
-
- // If parent and root need to be set
- if (target.getId() == null
- || target.getRootBatch() == null
- || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) {
-
- target.setParentBatch(parentBatch);
- target.setRootBatch(parentBatch.getRootBatch());
- }
-
- // RankOrder
- target.setRankOrder(rankOrder);
-
- // Weight or SampleCategoryWeight
- if (source.getWeight() != null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
-
- // Sorting measurement
- if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) {
- Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt();
- SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId,
- source.getLengthStep());
- notChangedSortingMeasurements.remove(sortingMeasurement);
- }
-
- // Individual count
- target.setIndividualCount(source.getNumber());
-
- // Species
- target.setReferenceTaxon(null);
-
- // QualityFlag
- target.setQualityFlag(parentBatch.getQualityFlag());
-
- // Exhaustive inventory (always true under a species batch)
- target.setExhaustiveInventory(true);
-
- // Removed not changed measurements (in sorting and quantification measurement lists)
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
- if (sortingMeasurements != null) {
- sortingMeasurements.removeAll(notChangedSortingMeasurements);
- }
- }
+// protected void beanToEntity(BenthosBatchFrequency source,
+// SortingBatch target,
+// SortingBatch parentBatch,
+// short rankOrder) {
+// Preconditions.checkNotNull(source.getBatch());
+// Preconditions.checkNotNull(source.getBatch().getId());
+//
+// Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
+// Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
+//
+// // Create lists to store all updates, then remove not updated items
+// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
+// if (quantificationMeasurements != null) {
+// notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
+// }
+// Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
+// if (sortingMeasurements != null) {
+// notChangedSortingMeasurements.addAll(sortingMeasurements);
+// }
+//
+// // If parent and root need to be set
+// if (target.getId() == null
+// || target.getRootBatch() == null
+// || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) {
+//
+// target.setParentBatch(parentBatch);
+// target.setRootBatch(parentBatch.getRootBatch());
+// }
+//
+// // RankOrder
+// target.setRankOrder(rankOrder);
+//
+// // Weight or SampleCategoryWeight
+// if (source.getWeight() != null) {
+// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
+// target,
+// source.getWeight());
+// notChangedQuantificationMeasurements.remove(quantificationMeasurement);
+// }
+//
+// // Sorting measurement
+// if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) {
+// Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt();
+// SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId,
+// source.getLengthStep());
+// notChangedSortingMeasurements.remove(sortingMeasurement);
+// }
+//
+// // Individual count
+// target.setIndividualCount(source.getNumber());
+//
+// // Species
+// target.setReferenceTaxon(null);
+//
+// // QualityFlag
+// target.setQualityFlag(parentBatch.getQualityFlag());
+//
+// // Exhaustive inventory (always true under a species batch)
+// target.setExhaustiveInventory(true);
+//
+// // Removed not changed measurements (in sorting and quantification measurement lists)
+// if (quantificationMeasurements != null) {
+// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
+// }
+// if (sortingMeasurements != null) {
+// sortingMeasurements.removeAll(notChangedSortingMeasurements);
+// }
+// }
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -77,4 +77,13 @@
@Transactional(readOnly = false)
void deleteCatchBatch(String fishingOperationId);
+ /**
+ * Recompute all the sampleRatio and sampleRatioText for the catch batch
+ * and all his children batches for the given fishing operation id.
+ *
+ * @param fishingOperationId id of the fihsing operation
+ * @since 3.5
+ */
+ @Transactional(readOnly = false)
+ void recomputeCatchBatchSampleRatios(String fishingOperationId);
}
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 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -24,19 +24,22 @@
import com.google.common.base.Preconditions;
-import com.google.common.collect.Sets;
+import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchImpl;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
import fr.ifremer.adagio.core.dao.data.measure.QuantificationMeasurement;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
import fr.ifremer.adagio.core.dao.referential.QualityFlagCode;
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
import fr.ifremer.tutti.persistence.entities.data.CatchBatchBean;
import fr.ifremer.tutti.persistence.service.util.BatchPersistenceHelper;
import fr.ifremer.tutti.persistence.service.util.BatchTreeHelper;
import fr.ifremer.tutti.persistence.service.util.MeasurementPersistenceHelper;
import fr.ifremer.tutti.persistence.service.util.SynchronizationStatusHelper;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.FlushMode;
@@ -46,8 +49,12 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.math.BigDecimal;
import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
@Service("batchPersistenceService")
public class CatchBatchPersistenceServiceImpl
@@ -170,6 +177,75 @@
batchHelper.deleteCatchBatch(fishingOperationId, catchBatchId);
}
+ @Override
+ public void recomputeCatchBatchSampleRatios(String fishingOperationId) {
+
+ Preconditions.checkNotNull(fishingOperationId);
+ Integer catchBatchId = batchHelper.getCatchBatchIdByFishingOperationId(Integer.valueOf(fishingOperationId));
+
+ if (catchBatchId == null) {
+ throw new DataRetrievalFailureException("Could not retrieve catch batch for fishingOperation id=" + fishingOperationId);
+ }
+
+ fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch = batchTreeHelper.loadCatchBatch(catchBatchId);
+
+ // To store computed indirect weights by batch
+ // If a batch has a weight before sampling then nothing is computed
+ Map<Integer, SortingBatch> indirectWeightByBatch = new TreeMap<>();
+
+ // To store quantification measurement ids which need to update to pass
+ // is_reference_quantification to false
+ // such measurements are only on batch nodes (leaf always keep the value to true)
+ Set<Integer> quantificationMeasurementIds = new HashSet<>();
+
+ Set<Integer> indirectWeightByBatchSkip = new HashSet<>();
+
+ for (Batch rootBatch : catchBatch.getChildBatchs()) {
+
+ computeIndirectWeight(rootBatch,
+ indirectWeightByBatch,
+ indirectWeightByBatchSkip,
+ quantificationMeasurementIds);
+
+ }
+
+ if (!indirectWeightByBatch.isEmpty()) {
+
+ // update batchs sample ratio
+ for (SortingBatch batch : indirectWeightByBatch.values()) {
+
+ Float weight = batch.getWeight();
+ Float indirectWeight = batch.getIndirectWeight();
+ batch.setIndirectWeight(null);
+
+ if (indirectWeight == null) {
+
+ // will reuse then the weight
+ indirectWeight = weight;
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("setWeightAndSampleRatio :: %d (%s // %s)", batch.getId(), weight, indirectWeight));
+ }
+
+ batchTreeHelper.setSortingSamplingRatio(batch, indirectWeight, weight);
+
+ }
+
+ }
+ if (!quantificationMeasurementIds.isEmpty()) {
+
+ // update measurements
+ if (log.isInfoEnabled()) {
+ log.info("updateQuantificationMeasurementsForBatchNodes :: " + quantificationMeasurementIds);
+ }
+ queryUpdate("updateQuantificationMeasurementsForBatchNodes",
+ "ids", IntegerType.INSTANCE, quantificationMeasurementIds);
+
+ }
+
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -264,39 +340,27 @@
Preconditions.checkNotNull(source.getFishingOperation());
Preconditions.checkNotNull(source.getFishingOperation().getId());
- // Retrieve recorder department
-
// First initialization (when created)
Integer fishingOperationId = source.getFishingOperation().getIdAsInt();
target.setFishingOperation(load(FishingOperationImpl.class, fishingOperationId));
+ // Quality flag
target.setQualityFlag(load(QualityFlagImpl.class, QualityFlagCode.NOTQUALIFIED.getValue()));
+
+ // Rank order
target.setRankOrder((short) 1);
// Synchronization status
synchronizationStatusHelper.setDirty(target);
- // Create lists to store all updates, then remove not updated items
- Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
-
// Total Weight
if (source.getCatchTotalWeight() != null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
+ measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
target,
source.getCatchTotalWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
}
- // Removed not changed measurements (in sorting and quantification measurement lists)
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
-
SortingBatch vracBatch = batchTreeHelper.getVracBatch(target);
SortingBatch horsVracBatch = batchTreeHelper.getHorsVracBatch(target);
@@ -486,4 +550,130 @@
}
}
+ protected void computeIndirectWeight(Batch batch,
+ Map<Integer, SortingBatch> indirectWeightByBatch,
+ Set<Integer> indirectWeightByBatchSkip,
+ Set<Integer> quantificationMeasurements) {
+
+ Integer batchId = batch.getId();
+
+ if (indirectWeightByBatch.containsKey(batchId) ||
+ indirectWeightByBatchSkip.contains(batchId)) {
+
+ // already computed
+ return;
+
+ }
+
+ Collection<Batch> childBatchs = batch.getChildBatchs();
+ boolean batchIsLeaf = CollectionUtils.isEmpty(childBatchs);
+
+ if (batchIsLeaf) {
+
+ // on a leaf, nothing else to do
+ if (log.isDebugEnabled()) {
+ log.debug("[BATCH :: " + batchId + "] - Do not compute on a leaf ");
+ }
+ return;
+
+ }
+
+ QuantificationMeasurement measurement = measurementPersistenceHelper.getWeightMeasurementQuantificationMeasurement(batch);
+ if (measurement != null &&
+ BooleanUtils.isTrue(measurement.getIsReferenceQuantification())) {
+
+ // need to pass this to false
+ quantificationMeasurements.add(measurement.getId());
+
+ if (log.isDebugEnabled()) {
+ log.debug("[BATCH :: " + batchId + "] - Need to update the quantification measurement (not a leaf) :: " + measurement.getId());
+ }
+
+ }
+
+ // compute indirect weights of childs before all
+
+ for (Batch childBatch : childBatchs) {
+
+ computeIndirectWeight(childBatch, indirectWeightByBatch, indirectWeightByBatchSkip, quantificationMeasurements);
+
+ }
+
+// if (batch.getWeight() == null) {
+//
+// // no need to compute indirect weight, mark batch
+// indirectWeightByBatchSkip.add(batchId);
+//
+// if (log.isDebugEnabled()) {
+// log.debug("[BATCH :: " + batchId + "] - No need of indirect weight (no weight on it) ");
+// }
+// return;
+//
+// }
+ if (batch.getWeightBeforeSampling() != null) {
+
+ // no need to compute indirect weight, mark batch
+ indirectWeightByBatchSkip.add(batchId);
+
+ if (log.isDebugEnabled()) {
+ log.debug("[BATCH :: " + batchId + "] - No need of indirect weight (there is a weight before sampling) ");
+ }
+ return;
+
+ }
+
+ // At last, compute the indirect weight
+ Float indirectWeight = computeIndirectWeight(batch);
+ batch.setIndirectWeight(indirectWeight);
+
+ if (batch.getWeight() != null) {
+
+ // Can only update the sample ratio if there is a weight on the batch
+ indirectWeightByBatch.put(batchId, (SortingBatch) batch);
+
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("[BATCH :: " + batchId + "] - " + "Computed indirect weight " + indirectWeight);
+ }
+
+ }
+
+ protected Float computeIndirectWeight(Batch batch) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("[BATCH :: " + batch.getId() + "] compute indirect weight");
+ }
+
+ BigDecimal result = new BigDecimal(0);
+
+ for (Batch childBatch : batch.getChildBatchs()) {
+
+ Float weight = TuttiEntities.getValueOrComputedValue(childBatch.getWeightBeforeSampling(),
+ childBatch.getWeight());
+
+ if (weight == null) {
+
+ // at last use the indirectWeight
+ weight = childBatch.getIndirectWeight();
+
+ }
+
+ if (weight == null) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("[BATCH :: " + batch.getId() + "] Found a child batch " + childBatch.getId() + " has no weight, skip computing indirect weight for batch :: ...");
+ }
+
+ return null;
+
+ }
+ result = result.add(new BigDecimal(String.valueOf(weight)));
+
+ }
+
+ return TuttiEntities.roundKiloGram(result.floatValue());
+
+ }
+
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -27,7 +27,6 @@
import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
-import fr.ifremer.adagio.core.dao.data.measure.QuantificationMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
import fr.ifremer.adagio.core.dao.referential.QualityFlagCode;
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
@@ -206,20 +205,6 @@
Preconditions.checkNotNull(source.getFishingOperation());
Preconditions.checkNotNull(source.getFishingOperation().getId());
- Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
- Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
-
- // Create lists to store all updates, then remove not updated items
-
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
- Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
- if (sortingMeasurements != null) {
- notChangedSortingMeasurements.addAll(sortingMeasurements);
- }
-
// If parent and root need to be set
if (target.getId() == null || target.getRootBatch() == null) {
batchHelper.setMarineLitterBatchParents(target, catchBatch);
@@ -245,40 +230,44 @@
// Force subgroup count to '1', as Allegro
target.setSubgroupCount(1f);
- // Weight
- if (source.getWeight() != null) {
+ // Sorting Measurements
+ {
+ Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
+ Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
+ if (sortingMeasurements != null) {
+ notChangedSortingMeasurements.addAll(sortingMeasurements);
+ }
- // MarineLitterCategory
- if (source.getMarineLitterCategory() != null) {
+ // MarineLitterCategory
+ if (source.getMarineLitterCategory() != null) {
- SortingMeasurement measurement = measurementPersistenceHelper.setSortingMeasurement(
- target,
- marineLitterCategory,
- source.getMarineLitterCategory().getIdAsInt()
- );
- notChangedSortingMeasurements.remove(measurement);
- }
+ SortingMeasurement measurement = measurementPersistenceHelper.setSortingMeasurement(
+ target,
+ marineLitterCategory,
+ source.getMarineLitterCategory().getIdAsInt()
+ );
+ notChangedSortingMeasurements.remove(measurement);
+ }
- // MarineLitterSizeCategory
- if (source.getMarineLitterSizeCategory() != null) {
+ // MarineLitterSizeCategory
+ if (source.getMarineLitterSizeCategory() != null) {
- SortingMeasurement measurement = measurementPersistenceHelper.setSortingMeasurement(
- target,
- marineLitterSizeCategory,
- source.getMarineLitterSizeCategory().getIdAsInt()
- );
- notChangedSortingMeasurements.remove(measurement);
+ SortingMeasurement measurement = measurementPersistenceHelper.setSortingMeasurement(
+ target,
+ marineLitterSizeCategory,
+ source.getMarineLitterSizeCategory().getIdAsInt()
+ );
+ notChangedSortingMeasurements.remove(measurement);
+ }
+
+ if (sortingMeasurements != null) {
+ sortingMeasurements.removeAll(notChangedSortingMeasurements);
+ }
}
- // Sampling Ratio
- target.setSamplingRatio(1.0f);
- target.setSamplingRatioText(null);
+ // Sampling Ratio + Weight
+ batchTreeHelper.setWeightAndSampleRatio(target, source.getWeight(), null);
// Individual count
target.setIndividualCount(source.getNumber());
@@ -293,12 +282,5 @@
// Exhaustive inventory (always true under a marine litter batch)
target.setExhaustiveInventory(true);
- // Removed not changed measurements (in sorting and quantification measurement lists)
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
- if (sortingMeasurements != null) {
- sortingMeasurements.removeAll(notChangedSortingMeasurements);
- }
}
}
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 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -3,10 +3,8 @@
/*
* #%L
* Tutti :: Persistence
- * $Id$
- * $HeadURL$
* %%
- * Copyright (C) 2012 - 2013 Ifremer
+ * Copyright (C) 2012 - 2014 Ifremer
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -28,18 +26,13 @@
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
-import fr.ifremer.adagio.core.dao.data.measure.QuantificationMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
import fr.ifremer.adagio.core.dao.referential.QualityFlag;
import fr.ifremer.adagio.core.dao.referential.QualityFlagCode;
-import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
-import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.tutti.persistence.InvalidBatchModelException;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
@@ -59,10 +52,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import static org.nuiton.i18n.I18n.t;
@@ -333,7 +324,7 @@
target = SortingBatch.Factory.newInstance();
// Fill the sorting batch from the source
- beanToEntity(source, target, parentBatch, rankOrder);
+ batchHelper.beanToEntity(source, target, parentBatch, rankOrder);
// Create the targeted batch, then update the source id
batchHelper.createSortingBatch(source, catchBatch, target);
@@ -350,7 +341,7 @@
target = batchHelper.loadSortingBatch(source.getIdAsInt(), catchBatch);
// Fill the sorting batch from the source
- beanToEntity(source, target, parentBatch, rankOrder);
+ batchHelper.beanToEntity(source, target, parentBatch, rankOrder);
// Add the batch into a list (will be update later, using this list)
batchsToUpdate.add(target);
@@ -389,7 +380,8 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected SpeciesBatch entityToBean(SampleCategoryModel sampleCategoryModel, SortingBatch source,
+ protected SpeciesBatch entityToBean(SampleCategoryModel sampleCategoryModel,
+ SortingBatch source,
SpeciesBatch target) {
Preconditions.checkNotNull(target.getSpecies());
@@ -410,6 +402,15 @@
target.setSampleCategoryWeight(source.getWeightBeforeSampling());
}
+ if (CollectionUtils.isNotEmpty(source.getChildBatchs()) && target.getWeight() != null) {
+
+ // can't use this sample weight on a node
+ // the weight comes from sampleRatioText, but must NOT be used here
+ target.setWeight(null);
+
+ }
+
+
// Comments
target.setComment(source.getComments());
@@ -470,20 +471,6 @@
Preconditions.checkNotNull(source.getFishingOperation());
Preconditions.checkNotNull(source.getFishingOperation().getId());
- Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
- Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
-
- // Create lists to store all updates, then remove not updated items
-
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
- Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
- if (sortingMeasurements != null) {
- notChangedSortingMeasurements.addAll(sortingMeasurements);
- }
-
// If parent and root need to be set
if (target.getId() == null
|| target.getRootBatch() == null
@@ -498,181 +485,77 @@
);
}
- // RankOrder (initialize once, at creation)
- if (target.getRankOrder() == null) {
- // Start rank order at 1
- short rankOrder = (short) 1;
- if (source.getParentBatch() != null && source.getParentBatch().getChildBatchs() != null) {
- int maxRankOrder = 0;
- for (SpeciesBatch batch : source.getParentBatch().getChildBatchs()) {
- Integer r = batch.getRankOrder();
- if (r != null && r > maxRankOrder) {
- maxRankOrder = r;
- }
- }
- rankOrder += (short) maxRankOrder;
+ batchHelper.beanToEntity(parentBatchId, source, target);
- } else if (target.getParentBatch() != null && target.getParentBatch().getChildBatchs() != null) {
- short maxRankOrder = 0;
- for (Batch batch : target.getParentBatch().getChildBatchs()) {
- Short r = batch.getRankOrder();
- if (r != null && r > maxRankOrder) {
- maxRankOrder = r;
- }
- }
- rankOrder += maxRankOrder;
- }
-
- target.setRankOrder(rankOrder);
- }
-
- // Force subgroup count to '1', as Allegro
- target.setSubgroupCount(1f);
-
- // Weight or SampleCategoryWeight
- if (source.getSampleCategoryWeight() != null && source.getWeight() == null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getSampleCategoryWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- } else if (source.getWeight() != null && source.getSampleCategoryWeight() == null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
-
- // Sampling Ratio
- if (source.getSampleCategoryWeight() == null || source.getWeight() == null) {
- target.setSamplingRatio(null);
- target.setSamplingRatioText(null);
- } else {
- String samplingRatioText = source.getWeight() + "/" + source.getSampleCategoryWeight();
- samplingRatioText = samplingRatioText.replaceAll(",", ".");
- target.setSamplingRatioText(samplingRatioText);
- target.setSamplingRatio(source.getWeight() / source.getSampleCategoryWeight());
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
-
- // Sorting measurement
- if (source.getSampleCategoryId() != null && source.getSampleCategoryValue() != null) {
- Integer pmfmId = source.getSampleCategoryId();
- // Do not store sorting measurement if pmfm = SORTED (already store in an ancestor batch)
- if (!pmfmId.equals(PmfmId2.SORTED_UNSORTED.getValue())) {
- SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(
- target,
- pmfmId,
- source.getSampleCategoryValue());
- notChangedSortingMeasurements.remove(sortingMeasurement);
- }
- }
-
- // Individual count
- target.setIndividualCount(source.getNumber());
-
- // Species
- ReferenceTaxon referenceTaxon;
- if (source.getSpecies() == null || parentBatchId != null) {
- referenceTaxon = null;
- } else {
- referenceTaxon = load(ReferenceTaxonImpl.class, source.getSpecies().getReferenceTaxonId());
- }
- target.setReferenceTaxon(referenceTaxon);
-
- // QualityFlag
- String qualityFlag;
- if (source.isSpeciesToConfirm()) {
- qualityFlag = QualityFlagCode.DOUBTFUL.getValue();
- } else {
- qualityFlag = QualityFlagCode.NOTQUALIFIED.getValue();
- }
- target.setQualityFlag(load(QualityFlagImpl.class, qualityFlag));
-
- // Comments
- target.setComments(source.getComment());
-
- // Exhaustive inventory (always true under a species batch)
- target.setExhaustiveInventory(true);
-
- // Removed not changed measurements (in sorting and quantification measurement lists)
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
- if (sortingMeasurements != null) {
- sortingMeasurements.removeAll(notChangedSortingMeasurements);
- }
}
- protected void beanToEntity(SpeciesBatchFrequency source,
- SortingBatch target,
- SortingBatch parentBatch,
- short rankOrder) {
- Preconditions.checkNotNull(source.getBatch());
- Preconditions.checkNotNull(source.getBatch().getId());
+// protected void beanToEntity(SpeciesBatchFrequency source,
+// SortingBatch target,
+// SortingBatch parentBatch,
+// short rankOrder) {
+// Preconditions.checkNotNull(source.getBatch());
+// Preconditions.checkNotNull(source.getBatch().getId());
+//
+// Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
+// Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
+//
+// // Create lists to store all updates, then remove not updated items
+// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
+// if (quantificationMeasurements != null) {
+// notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
+// }
+// Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
+// if (sortingMeasurements != null) {
+// notChangedSortingMeasurements.addAll(sortingMeasurements);
+// }
+//
+// // If parent and root need to be set
+// if (target.getId() == null
+// || target.getRootBatch() == null
+// || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) {
+//
+// target.setParentBatch(parentBatch);
+// target.setRootBatch(parentBatch.getRootBatch());
+// }
+//
+// // RankOrder
+// target.setRankOrder(rankOrder);
+//
+// // Weight or SampleCategoryWeight
+// if (source.getWeight() != null) {
+// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
+// target,
+// source.getWeight());
+// notChangedQuantificationMeasurements.remove(quantificationMeasurement);
+// }
+//
+// // Sorting measurement
+// if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) {
+// Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt();
+// SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId,
+// source.getLengthStep());
+// notChangedSortingMeasurements.remove(sortingMeasurement);
+// }
+//
+// // Individual count
+// target.setIndividualCount(source.getNumber());
+//
+// // Species
+// target.setReferenceTaxon(null);
+//
+// // QualityFlag
+// target.setQualityFlag(parentBatch.getQualityFlag());
+//
+// // Exhaustive inventory (always true under a species batch)
+// target.setExhaustiveInventory(true);
+//
+// // Removed not changed measurements (in sorting and quantification measurement lists)
+// if (quantificationMeasurements != null) {
+// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
+// }
+// if (sortingMeasurements != null) {
+// sortingMeasurements.removeAll(notChangedSortingMeasurements);
+// }
+// }
- Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
- Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
-
- // Create lists to store all updates, then remove not updated items
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
- Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
- if (sortingMeasurements != null) {
- notChangedSortingMeasurements.addAll(sortingMeasurements);
- }
-
- // If parent and root need to be set
- if (target.getId() == null
- || target.getRootBatch() == null
- || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) {
-
- target.setParentBatch(parentBatch);
- target.setRootBatch(parentBatch.getRootBatch());
- }
-
- // RankOrder
- target.setRankOrder(rankOrder);
-
- // Weight or SampleCategoryWeight
- if (source.getWeight() != null) {
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- target,
- source.getWeight());
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
-
- // Sorting measurement
- if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) {
- Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt();
- SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId,
- source.getLengthStep());
- notChangedSortingMeasurements.remove(sortingMeasurement);
- }
-
- // Individual count
- target.setIndividualCount(source.getNumber());
-
- // Species
- target.setReferenceTaxon(null);
-
- // QualityFlag
- target.setQualityFlag(parentBatch.getQualityFlag());
-
- // Exhaustive inventory (always true under a species batch)
- target.setExhaustiveInventory(true);
-
- // Removed not changed measurements (in sorting and quantification measurement lists)
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
- if (sortingMeasurements != null) {
- sortingMeasurements.removeAll(notChangedSortingMeasurements);
- }
- }
-
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchPersistenceHelper.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -3,10 +3,8 @@
/*
* #%L
* Tutti :: Persistence
- * $Id$
- * $HeadURL$
* %%
- * Copyright (C) 2012 - 2013 Ifremer
+ * Copyright (C) 2012 - 2014 Ifremer
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -27,7 +25,7 @@
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import fr.ifremer.adagio.core.dao.administration.user.DepartmentId;
+import com.google.common.collect.Sets;
import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchExtendDao;
@@ -38,10 +36,14 @@
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperation;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagCode;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
import fr.ifremer.adagio.core.dao.referential.pmfm.ObjectTypeCode2;
import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId2;
import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId;
+import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
+import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.tutti.persistence.InvalidBatchModelException;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
@@ -71,6 +73,7 @@
import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
+import java.util.Set;
import static org.nuiton.i18n.I18n.t;
@@ -108,6 +111,9 @@
@Resource(name = "scientificCruiseCatchBatchValidator")
protected TuttiCatchBatchValidator catchBatchValidator;
+ @Resource(name = "measurementPersistenceHelper")
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
@Resource(name = "batchTreeHelper")
protected BatchTreeHelper batchTreeHelper;
@@ -276,13 +282,13 @@
if (validate) {
try {
- result = catchBatchDao.loadFullTree(catchBatchId, true, false);
+ result = catchBatchDao.loadFullTree(catchBatchId, PmfmId2.WEIGHT_MEASURED.getValue(), true, false);
} catch (CatchBatchValidationException e) {
throw new InvalidBatchModelException(
"L'arbre d'échantillonage n'est pas compatible avec celui de Tutti.", e);
}
} else {
- result = catchBatchDao.loadFullTree(catchBatchId);
+ result = catchBatchDao.loadFullTree(catchBatchId, PmfmId2.WEIGHT_MEASURED.getValue());
}
Preconditions.checkNotNull(result);
return result;
@@ -305,7 +311,7 @@
// whenever want to repair anything from Tutti
fr.ifremer.adagio.core.dao.data.batch.CatchBatch result;
- result = catchBatchDao.loadFullTree(catchBatchId);
+ result = catchBatchDao.loadFullTree(catchBatchId, PmfmId2.WEIGHT_MEASURED.getValue());
Preconditions.checkNotNull(result);
return result;
@@ -488,6 +494,201 @@
target.setRootBatch(catchBatch);
}
+ public void beanToEntity(String parentBatchId,
+ SpeciesAbleBatch source,
+ SortingBatch target) {
+
+ // --- RankOrder (initialize once, at creation) --- //
+ {
+ if (target.getRankOrder() == null) {
+ // Start rank order at 1
+ short rankOrder = (short) 1;
+ if (source.getParentBatch() != null && source.getParentBatch().getChildBatchs() != null) {
+ int maxRankOrder = 0;
+ for (SpeciesAbleBatch batch : source.getParentBatch().getChildBatchs()) {
+ Integer r = batch.getRankOrder();
+ if (r != null && r > maxRankOrder) {
+ maxRankOrder = r;
+ }
+ }
+ rankOrder += (short) maxRankOrder;
+
+ } else if (target.getParentBatch() != null && target.getParentBatch().getChildBatchs() != null) {
+ short maxRankOrder = 0;
+ for (Batch batch : target.getParentBatch().getChildBatchs()) {
+ Short r = batch.getRankOrder();
+ if (r != null && r > maxRankOrder) {
+ maxRankOrder = r;
+ }
+ }
+ rankOrder += maxRankOrder;
+ }
+
+ target.setRankOrder(rankOrder);
+ }
+ }
+
+ // --- Force subgroup count to '1', as Allegro --- //
+ target.setSubgroupCount(1f);
+
+ // --- Individual count --- //
+ target.setIndividualCount(source.getNumber());
+
+ // --- Comments --- //
+ target.setComments(source.getComment());
+
+ // --- Exhaustive inventory (always true under a species batch) --- //
+ target.setExhaustiveInventory(true);
+
+ // --- Species --- //
+ {
+ ReferenceTaxon referenceTaxon;
+ if (source.getSpecies() == null || parentBatchId != null) {
+ referenceTaxon = null;
+ } else {
+ referenceTaxon = load(ReferenceTaxonImpl.class, source.getSpecies().getReferenceTaxonId());
+ }
+ target.setReferenceTaxon(referenceTaxon);
+ }
+
+ // --- QualityFlag --- //
+ {
+ String qualityFlag;
+ if (source.isSpeciesToConfirm()) {
+ qualityFlag = QualityFlagCode.DOUBTFUL.getValue();
+ } else {
+ qualityFlag = QualityFlagCode.NOTQUALIFIED.getValue();
+ }
+ target.setQualityFlag(load(QualityFlagImpl.class, qualityFlag));
+ }
+
+ Float weight = source.getWeight();
+ Float sampleCategoryWeight = source.getSampleCategoryWeight();
+
+ // --- Sampling Ratio + QuantificationMeasurement --- //
+ batchTreeHelper.setWeightAndSampleRatio(target, weight, sampleCategoryWeight);
+
+// // --- QuantificationMeasurement --- //
+// {
+// Float weightMeasurement = sampleCategoryWeight;
+//
+// if (weight != null) {
+//
+// // on converse toujours les poids le plus fin
+// weightMeasurement = weight;
+// }
+//
+//// Float weightMeasurement = null;
+//// if (weight == null && sampleCategoryWeight != null) {
+//// weightMeasurement = sampleCategoryWeight;
+////
+//// } else if (weight != null && sampleCategoryWeight == null) {
+//// weightMeasurement = weight;
+//// }
+////
+//// if (sampleCategoryWeight != null && weight != null) {
+//// weightMeasurement = weight;
+//// }
+//
+// Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
+// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
+// if (quantificationMeasurements != null) {
+// notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
+// }
+//
+// if (weightMeasurement != null) {
+// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
+// target,
+// weightMeasurement);
+// notChangedQuantificationMeasurements.remove(quantificationMeasurement);
+// }
+//
+// if (quantificationMeasurements != null) {
+// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
+// }
+// }
+
+ // --- Sorting measurement --- //
+ {
+ Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
+ Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
+ if (sortingMeasurements != null) {
+ notChangedSortingMeasurements.addAll(sortingMeasurements);
+ }
+
+ if (source.getSampleCategoryId() != null && source.getSampleCategoryValue() != null) {
+ Integer pmfmId = source.getSampleCategoryId();
+ // Do not store sorting measurement if pmfm = SORTED (already store in an ancestor batch)
+ if (!pmfmId.equals(PmfmId2.SORTED_UNSORTED.getValue())) {
+ SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(
+ target,
+ pmfmId,
+ source.getSampleCategoryValue());
+ notChangedSortingMeasurements.remove(sortingMeasurement);
+ }
+ }
+ if (sortingMeasurements != null) {
+ sortingMeasurements.removeAll(notChangedSortingMeasurements);
+ }
+ }
+
+ }
+
+
+ public void beanToEntity(SpeciesAbleBatchFrequency source,
+ SortingBatch target,
+ SortingBatch parentBatch,
+ short rankOrder) {
+ Preconditions.checkNotNull(source.getBatch());
+ Preconditions.checkNotNull(source.getBatch().getId());
+
+ // If parent and root need to be set
+ if (target.getId() == null
+ || target.getRootBatch() == null
+ || (target.getParentBatch() != null && !target.getParentBatch().getId().equals(parentBatch.getId()))) {
+
+ target.setParentBatch(parentBatch);
+ target.setRootBatch(parentBatch.getRootBatch());
+ }
+
+ // --- RankOrder --- //
+ target.setRankOrder(rankOrder);
+
+ // --- Individual count --- //
+ target.setIndividualCount(source.getNumber());
+
+ // --- Species --- //
+ target.setReferenceTaxon(null);
+
+ // --- QualityFlag --- //
+ target.setQualityFlag(parentBatch.getQualityFlag());
+
+ // --- Exhaustive inventory (always true under a species batch) --- //
+ target.setExhaustiveInventory(true);
+
+ // --- Sampling Ratio + QuantificationMeasurement --- //
+ batchTreeHelper.setWeightAndSampleRatio(target, source.getWeight(), null);
+
+ // --- Sorting measurement --- //
+ {
+ Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
+ Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
+ if (sortingMeasurements != null) {
+ notChangedSortingMeasurements.addAll(sortingMeasurements);
+ }
+ if ((source.getLengthStepCaracteristic() != null && source.getLengthStep() != null)) {
+ Integer pmfmId = source.getLengthStepCaracteristic().getIdAsInt();
+ SortingMeasurement sortingMeasurement = measurementPersistenceHelper.setSortingMeasurement(target, pmfmId,
+ source.getLengthStep());
+ notChangedSortingMeasurements.remove(sortingMeasurement);
+ }
+ if (sortingMeasurements != null) {
+ sortingMeasurements.removeAll(notChangedSortingMeasurements);
+ }
+ }
+
+ }
+
public Integer convertSampleCategoryValueIntoQualitativeId(Serializable value) {
if (value == null) {
return null;
@@ -632,11 +833,6 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected Integer getRecorderDepartmentId() {
- // TODO BL : voir si on peut récupérer le departement (du 1er saisisseur ?)
- return DepartmentId.UNKOWN_RECODER_DEPARTMENT.getValue();
- }
-
/**
* Check if the given {@code sortingBatch} is a frequency one.
* <p/>
@@ -665,124 +861,4 @@
return result;
}
-// protected SortingBatch getOrCreate(fr.ifremer.adagio.core.dao.data.batch.CatchBatch target,
-// Batch batch,
-// Integer pmfmId,
-// Integer pmfmValue,
-// Float totalWeight,
-// short rankOrder) {
-// return getOrCreate(
-// target,
-// batch,
-// pmfmId,
-// pmfmValue,
-// totalWeight,
-// null,
-// rankOrder
-// );
-// }
-
-// protected SortingBatch getOrCreate(fr.ifremer.adagio.core.dao.data.batch.CatchBatch rootBatch,
-// Batch parentBatch,
-// Integer sortingPmfmId,
-// Integer sortingQualitativeValueId,
-// Float weight,
-// Float weightBeforeSampling,
-// short rankOrder) {
-// SortingBatch result = batchTreeHelper.get(
-// parentBatch,
-// sortingPmfmId,
-// sortingQualitativeValueId);
-//
-// if (result == null) {
-//
-// result = SortingBatch.Factory.newInstance();
-// if (parentBatch.getChildBatchs() == null) {
-// parentBatch.setChildBatchs(Sets.<Batch>newHashSet());
-// }
-// parentBatch.getChildBatchs().add(result);
-//
-// Collection<SortingMeasurement> sortingMeasurements = result.getSortingMeasurements();
-//
-// // Create lists to store all updates, then remove not updated items
-// Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
-// if (sortingMeasurements != null) {
-// notChangedSortingMeasurements.addAll(sortingMeasurements);
-// }
-//
-// // Some mandatory properties :
-// QualityFlagImpl qualityFlag = load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED);
-// result.setQualityFlag(qualityFlag);
-// result.setRootBatch(rootBatch);
-// result.setParentBatch(parentBatch);
-// result.setExhaustiveInventory(true);
-//
-// // No taxon or taxon group
-// result.setReferenceTaxon(null);
-// result.setTaxonGroup(null);
-//
-// result.setRankOrder(rankOrder);
-//
-// // Sorting measurement
-// if (sortingPmfmId != null && sortingQualitativeValueId != null) {
-// SortingMeasurement sm = setSortingMeasurement(
-// result,
-// sortingPmfmId,
-// sortingQualitativeValueId);
-// notChangedSortingMeasurements.remove(sm);
-// }
-// // Removed not changed sorting measurements
-// if (sortingMeasurements != null) {
-// sortingMeasurements.removeAll(notChangedSortingMeasurements);
-// }
-//
-// catchBatchDao.createSortingBatch(result, rootBatch);
-// }
-//
-// Collection<QuantificationMeasurement> quantificationMeasurements = result.getQuantificationMeasurements();
-// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
-// if (quantificationMeasurements != null) {
-// notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
-// }
-//
-// // Sampling Ratio
-// if (weightBeforeSampling == null || weight == null) {
-// result.setSamplingRatio(null);
-// result.setSamplingRatioText(null);
-// } else {
-// String samplingRatioText = weight + "/" + weightBeforeSampling;
-// samplingRatioText = samplingRatioText.replaceAll(",", ".");
-// result.setSamplingRatioText(samplingRatioText);
-// result.setSamplingRatio(weight / weightBeforeSampling);
-// }
-//
-// // Weight
-// if (weightBeforeSampling != null || weight != null) {
-// Float batchReferenceWeight = weight;
-// if (batchReferenceWeight == null) {
-// batchReferenceWeight = weightBeforeSampling;
-// }
-// QuantificationMeasurement quantificationMeasurement = setWeightMeasurementQuantificationMeasurement(
-// result,
-// batchReferenceWeight);
-// notChangedQuantificationMeasurements.remove(quantificationMeasurement);
-// }
-// // Removed not changed quantification measurements
-// if (quantificationMeasurements != null) {
-// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
-// }
-//
-// return result;
-// }
-
-// protected SortingBatch get(Batch parentBatch,
-// Integer sortingPmfmId,
-// Integer sortingQualitativeValueId) {
-// SortingBatch result = getSortingBatch(
-// parentBatch,
-// null,
-// sortingPmfmId,
-// sortingQualitativeValueId);
-// return result;
-// }
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchTreeHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchTreeHelper.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/BatchTreeHelper.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -1,5 +1,27 @@
package fr.ifremer.tutti.persistence.service.util;
+/*
+ * #%L
+ * Tutti :: Persistence
+ * %%
+ * Copyright (C) 2012 - 2014 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import com.google.common.base.Joiner;
import com.google.common.collect.Sets;
import fr.ifremer.adagio.core.dao.data.batch.Batch;
@@ -310,7 +332,6 @@
"Vrac > Benthos > Alive Itemized",
SORTING_TYPE2_ID,
QualitativeValueId.SORTING_TYPE2_ALIVE_ITEMIZED.getValue(),
- null,
(short) 3
);
}
@@ -365,7 +386,6 @@
"Vrac > Benthos > Alive Itemized",
SORTING_TYPE2_ID,
QualitativeValueId.SORTING_TYPE2_ALIVE_ITEMIZED.getValue(),
- null,
(short) 3
);
}
@@ -377,7 +397,6 @@
"Hors Vrac",
PmfmId2.SORTED_UNSORTED.getValue(),
QualitativeValueId.SORTED_HORS_VRAC.getValue(),
- null,
(short) 2
);
}
@@ -390,7 +409,6 @@
"Hors Vrac > Species",
SORTING_TYPE_ID,
QualitativeValueId.SORTING_TYPE_SPECIES.getValue(),
- null,
(short) 1
);
}
@@ -403,7 +421,6 @@
"Hors Vrac > Benthos",
SORTING_TYPE_ID,
QualitativeValueId.SORTING_TYPE_BENTHOS.getValue(),
- null,
(short) 2
);
}
@@ -436,6 +453,24 @@
);
}
+ public void setWeightAndSampleRatio(SortingBatch target, Float weight, Float weightBeforeSampling) {
+
+ catchBatchDao.setSortingBatchWeights(target,
+ weight,
+ weightBeforeSampling,
+ PmfmId2.WEIGHT_MEASURED.getValue(),
+ measurementPersistenceHelper.getRecorderDepartmentId());
+
+ }
+
+ public void setSortingSamplingRatio(SortingBatch target, Float weight, Float weightBeforeSampling) {
+
+ catchBatchDao.setSortingSamplingRatio(target,
+ weight,
+ weightBeforeSampling);
+
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -484,6 +519,24 @@
String debugMessage,
Integer sortingPmfmId,
Integer sortingQualitativeValueId,
+ short rankOrder) {
+ return getOrCreate(
+ rootBatch,
+ batch,
+ debugMessage,
+ sortingPmfmId,
+ sortingQualitativeValueId,
+ null,
+ null,
+ rankOrder
+ );
+ }
+
+ protected SortingBatch getOrCreate(fr.ifremer.adagio.core.dao.data.batch.CatchBatch rootBatch,
+ Batch batch,
+ String debugMessage,
+ Integer sortingPmfmId,
+ Integer sortingQualitativeValueId,
Float totalWeight,
short rankOrder) {
return getOrCreate(
@@ -506,6 +559,7 @@
Float weight,
Float weightBeforeSampling,
short rankOrder) {
+
SortingBatch result = getSortingBatch(
batch,
debugMessage,
@@ -520,28 +574,27 @@
}
batch.getChildBatchs().add(result);
- Collection<SortingMeasurement> sortingMeasurements = result.getSortingMeasurements();
+ // --- Some mandatory properties --- //
- // Create lists to store all updates, then remove not updated items
- Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
- if (sortingMeasurements != null) {
- notChangedSortingMeasurements.addAll(sortingMeasurements);
- }
-
- // Some mandatory properties :
QualityFlagImpl qualityFlag = load(QualityFlagImpl.class, QualityFlagCode.NOTQUALIFIED.getValue());
result.setQualityFlag(qualityFlag);
result.setRootBatch(rootBatch);
result.setParentBatch(batch);
result.setExhaustiveInventory(true);
+ result.setRankOrder(rankOrder);
// No taxon or taxon group
result.setReferenceTaxon(null);
result.setTaxonGroup(null);
- result.setRankOrder(rankOrder);
+ // --- Sorting measurement --- //
- // Sorting measurement
+ Collection<SortingMeasurement> sortingMeasurements = result.getSortingMeasurements();
+ Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
+ if (sortingMeasurements != null) {
+ notChangedSortingMeasurements.addAll(sortingMeasurements);
+ }
+
if (sortingPmfmId != null && sortingQualitativeValueId != null) {
SortingMeasurement sm = measurementPersistenceHelper.setSortingMeasurement(
result,
@@ -549,7 +602,6 @@
sortingQualitativeValueId);
notChangedSortingMeasurements.remove(sm);
}
- // Removed not changed sorting measurements
if (sortingMeasurements != null) {
sortingMeasurements.removeAll(notChangedSortingMeasurements);
}
@@ -557,38 +609,43 @@
catchBatchDao.createSortingBatch(result, rootBatch);
}
- Collection<QuantificationMeasurement> quantificationMeasurements = result.getQuantificationMeasurements();
- Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
- if (quantificationMeasurements != null) {
- notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
- }
+ // --- Sampling Ratio + QuantificationMeasurement --- //
- // Sampling Ratio
- if (weightBeforeSampling == null || weight == null) {
- result.setSamplingRatio(null);
- result.setSamplingRatioText(null);
- } else {
- String samplingRatioText = weight + "/" + weightBeforeSampling;
- samplingRatioText = samplingRatioText.replaceAll(",", ".");
- result.setSamplingRatioText(samplingRatioText);
- result.setSamplingRatio(weight / weightBeforeSampling);
- }
+ setWeightAndSampleRatio(result, weight, weightBeforeSampling);
- // Weight
- if (weightBeforeSampling != null || weight != null) {
- Float batchReferenceWeight = weight;
- if (batchReferenceWeight == null) {
- batchReferenceWeight = weightBeforeSampling;
- }
- QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
- result,
- batchReferenceWeight);
- notChangedQuantificationMeasurements.remove(quantificationMeasurement);
- }
- // Removed not changed quantification measurements
- if (quantificationMeasurements != null) {
- quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
- }
+// // --- QuantificationMeasurement --- //
+//
+// Collection<QuantificationMeasurement> quantificationMeasurements = result.getQuantificationMeasurements();
+// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
+// if (quantificationMeasurements != null) {
+// notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
+// }
+//
+// Float batchReferenceWeight = weightBeforeSampling;
+// if (weight != null) {
+// batchReferenceWeight = weight;
+// }
+//
+// if (batchReferenceWeight != null) {
+// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
+// result,
+// batchReferenceWeight);
+// notChangedQuantificationMeasurements.remove(quantificationMeasurement);
+// }
+//
+//// if (weightBeforeSampling != null || weight != null) {
+//// Float batchReferenceWeight = weight;
+//// if (batchReferenceWeight == null) {
+//// batchReferenceWeight = weightBeforeSampling;
+//// }
+//// QuantificationMeasurement quantificationMeasurement = measurementPersistenceHelper.setWeightMeasurementQuantificationMeasurement(
+//// result,
+//// batchReferenceWeight);
+//// notChangedQuantificationMeasurements.remove(quantificationMeasurement);
+//// }
+// if (quantificationMeasurements != null) {
+// quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
+// }
return result;
}
@@ -675,7 +732,11 @@
}
}
+ public CatchBatch loadCatchBatch(Integer catchBatchId) {
+ return catchBatchDao.loadFullTreeWithCache(catchBatchId, PmfmId2.WEIGHT_MEASURED.getValue(), true, true);
+ }
+
static final class BatchTreeToStringStyle extends ToStringStyle {
private static final long serialVersionUID = 1L;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/MeasurementPersistenceHelper.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/MeasurementPersistenceHelper.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -53,6 +53,8 @@
import javax.annotation.Resource;
import java.io.Serializable;
+import java.util.Collection;
+import java.util.Set;
/**
* Helper around {@link Measurement}.
@@ -117,11 +119,25 @@
}
public QuantificationMeasurement setWeightMeasurementQuantificationMeasurement(Batch batch, Float weightValue) {
- return catchBatchDao.setQuantificationMeasurement(batch, PmfmId2.WEIGHT_MEASURED.getValue(), getRecorderDepartmentId(), weightValue, true);
+
+ Collection<QuantificationMeasurement> quantificationMeasurements = batch.getQuantificationMeasurements();
+ Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
+ if (quantificationMeasurements != null) {
+ notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
+ }
+
+ QuantificationMeasurement quantificationMeasurement = catchBatchDao.setQuantificationMeasurement(batch, PmfmId2.WEIGHT_MEASURED.getValue(), getRecorderDepartmentId(), weightValue, true);
+
+ // Removed not changed measurements (in sorting and quantification measurement lists)
+ if (quantificationMeasurements != null) {
+ quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
+ }
+
+ return quantificationMeasurement;
}
public QuantificationMeasurement getWeightMeasurementQuantificationMeasurement(Batch batch) {
- QuantificationMeasurement quantificationMeasurement = catchBatchDao.getQuantificationMeasurement(batch, PmfmId2.WEIGHT_MEASURED.getValue(), getRecorderDepartmentId(), false);
+ QuantificationMeasurement quantificationMeasurement = catchBatchDao.getQuantificationMeasurement(batch, PmfmId2.WEIGHT_MEASURED.getValue());
return quantificationMeasurement;
}
@@ -283,7 +299,7 @@
} else if (measurement.getAlphanumericalValue() != null) {
value = measurement.getAlphanumericalValue();
}
- return pmfm.getParameter().getName() + " (" + pmfm.getId() + ") / " + value;
+ return "[id:" + measurement.getId() + "] - " + pmfm.getParameter().getName() + " (" + pmfm.getId() + ") / " + value;
}
//------------------------------------------------------------------------//
@@ -368,7 +384,7 @@
return result;
}
- protected Integer getRecorderDepartmentId() {
+ public Integer getRecorderDepartmentId() {
// TODO BL : voir si on peut récupérer le departement (du 1er saisisseur ?)
return DepartmentId.UNKOWN_RECODER_DEPARTMENT.getValue();
}
Modified: trunk/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-persistence/src/main/resources/queries-failsafe.hbm.xml 2014-05-28 15:35:16 UTC (rev 1818)
@@ -432,6 +432,16 @@
<query-param name="catchBatchId" type="java.lang.Integer"/>
</query>
+ <query cacheable="true" name="updateQuantificationMeasurementsForBatchNodes">
+ <![CDATA[
+ UPDATE QuantificationMeasurementImpl qm
+ SET isReferenceQuantification = false
+ WHERE qm.id IN (:ids)
+ ]]>
+ <query-param name="ids" type="java.lang.List"/>
+ </query>
+
+
<query cacheable="true" name="allFishingOperationSamplesWithoutBatch">
<![CDATA[
SELECT
@@ -484,7 +494,7 @@
<query-param name="sampleId" type="java.lang.Integer"/>
</query>
- <query cacheable="true" name="catchBatch">
+ <!--query cacheable="true" name="catchBatch">
<![CDATA[
SELECT
cb.id AS catchBatchId,
@@ -513,7 +523,7 @@
<query-param name="fishingOperationId" type="java.lang.Integer"/>
<query-param name="pmfmIdSorted" type="java.lang.Integer"/>
<query-param name="pmfmIdSortingType" type="java.lang.Integer"/>
- </query>
+ </query-->
<query cacheable="true" name="allSpeciesBatchFrequency">
<![CDATA[
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -1202,6 +1202,11 @@
driver.deleteCatchBatch(fishingOperationId);
}
+ @Override
+ public void recomputeCatchBatchSampleRatios(String fishingOperationId) {
+ driver.recomputeCatchBatchSampleRatios(fishingOperationId);
+ }
+
//------------------------------------------------------------------------//
//-- Species Batch methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2014-05-28 15:35:16 UTC (rev 1818)
@@ -39,7 +39,7 @@
# Please fill the missing licenses for dependencies :
#
#
-#Thu Apr 24 15:55:59 CEST 2014
+#Tue May 27 17:05:30 CEST 2014
batik--batik-awt-util--1.6=The Apache Software License, Version 2.0
batik--batik-bridge--1.6=The Apache Software License, Version 2.0
batik--batik-css--1.6=The Apache Software License, Version 2.0
@@ -55,3 +55,4 @@
batik--batik-xml--1.6=The Apache Software License, Version 2.0
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
+org.hibernate--hibernate-spatial--4.3-20140213=Lesser General Public License (LGPL)
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties 2014-05-28 15:35:16 UTC (rev 1818)
@@ -36,6 +36,7 @@
#See https://forum.hibernate.org/viewtopic.php?p=2404391
log4j.logger.org.hibernate.engine.StatefulPersistenceContext.ProxyWarnLog=ERROR
log4j.logger.fr.ifremer.adagio.core.service.technical.synchro=DEBUG
+log4j.logger.fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceImpl=DEBUG
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.file=${tutti.log.file}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ComputeBatchWeightsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ComputeBatchWeightsAction.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ComputeBatchWeightsAction.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -243,6 +243,8 @@
}
}
+// persistenceService.recomputeCatchBatchSampleRatios(operationId);
+
boolean modified = model.isModify();
CatchBatch catchBatch = model.toEntity();
weightComputingService.computeCatchBatchWeights(catchBatch,
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java 2014-05-23 07:57:44 UTC (rev 1817)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java 2014-05-28 15:35:16 UTC (rev 1818)
@@ -23,6 +23,7 @@
*/
import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.persistence.ProgressionModel;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI;
import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUIHandler;
@@ -31,6 +32,7 @@
import org.apache.commons.logging.LogFactory;
import javax.swing.JOptionPane;
+import java.util.List;
import static org.nuiton.i18n.I18n.t;
@@ -60,6 +62,11 @@
JOptionPane.YES_NO_OPTION);
doAction = answer == JOptionPane.YES_OPTION;
}
+
+ PersistenceService persistenceService = getContext().getPersistenceService();
+ int fishingOperationCount = persistenceService.getFishingOperationCount(getModel().getCruise().getId());
+ createProgressionModelIfRequired(fishingOperationCount + 1);
+
return doAction;
}
@@ -70,12 +77,31 @@
Preconditions.checkState(getContext().isCruiseFilled());
PersistenceService persistenceService = getContext().getPersistenceService();
+
+ ProgressionModel progressionModel = getProgressionModel();
+
+ List<String> allFishingOperation = persistenceService.getAllFishingOperationIds(getModel().getCruise().getId());
+
+ for (String fishingOperationId : allFishingOperation) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Recompute sample ratios for operation " + fishingOperationId);
+ }
+ persistenceService.recomputeCatchBatchSampleRatios(fishingOperationId);
+
+ progressionModel.increments("Recalcul des poids référents pour l'opération " + fishingOperationId);
+ }
+
Integer cruiseId = getModel().getCruise().getIdAsInt();
if (log.isInfoEnabled()) {
log.info("Pass synchronizationStatus to *ready to synch* for cruise: " + cruiseId);
}
+
+ progressionModel.increments("Mise en place des données synchronisables");
+
persistenceService.setCruiseReadyToSynch(cruiseId);
+
}
@Override
@@ -84,7 +110,7 @@
// reload cruise in data context
getDataContext().reloadCruise();
-
+
// reload it in our model
getModel().setCruise(getDataContext().getCruise());
}
1
0
The Tutti team is pleased to announce the tutti-3.4.5 release!
Outil de saisie de données d'opérations et de captures au
cours des campagnes halieutiques.
Documentation of the project can be found here:
https://doc.codelutin.com/projects/tutti
Changes
-------
Changes in this version include:
New features:
o [IMPORT PSION] ajout catégorisation gros petit Issue: 5132. Thanks to Vincent BADTS. Resolved by tchemit.
Fixed Bugs:
o [CAPTURE] mauvais affichage des // en Hors Vrac Issue: 5082. Thanks to Vincent BADTS. Resolved by tchemit.
Changes:
o [TECH] Update to java 1.7u55 Issue: 5133. Thanks to Tony Chemit. Resolved by tchemit.
Downloads
---------
For a manual installation, you can download files here:
http://forge.codelutin.com/projects/tutti/files
* tutti-3.4.5-full-linux-i586.zip - http://forge.codelutin.com/attachments/download/1872
* tutti-3.4.5-full-windows-i586.zip - http://forge.codelutin.com/attachments/download/1873
* tutti-ichtyometer-3.4.5-tools.zip - http://forge.codelutin.com/attachments/download/1874
Maven artifacts
---------------
Artifacts are deployed in nuiton maven repository
http://maven.nuiton.org/other-releases/
Have fun!
-Tutti team
1
0
r1817 - in branches/tutti-3.4.x: . tutti-ichtyometer tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com 23 May '14
by maven-release@users.forge.codelutin.com 23 May '14
23 May '14
Author: maven-release
Date: 2014-05-23 09:57:44 +0200 (Fri, 23 May 2014)
New Revision: 1817
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1817
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
branches/tutti-3.4.x/pom.xml
branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
branches/tutti-3.4.x/tutti-persistence/pom.xml
branches/tutti-3.4.x/tutti-service/pom.xml
branches/tutti-3.4.x/tutti-ui-swing/pom.xml
Modified: branches/tutti-3.4.x/pom.xml
===================================================================
--- branches/tutti-3.4.x/pom.xml 2014-05-23 07:57:38 UTC (rev 1816)
+++ branches/tutti-3.4.x/pom.xml 2014-05-23 07:57:44 UTC (rev 1817)
@@ -32,7 +32,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5</version>
+ <version>3.4.6-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Tutti</name>
@@ -99,13 +99,13 @@
<scm>
<url>
- https://forge.codelutin.com/projects/tutti/repository/tags/tutti-3.4.5
+ https://forge.codelutin.com/projects/tutti/repository/branches/tutti-3.4.x
</url>
<connection>
- scm:svn:http://svn.codelutin.com/tutti/tags/tutti-3.4.5
+ scm:svn:http://svn.codelutin.com/tutti/branches/tutti-3.4.x
</connection>
<developerConnection>
- scm:svn:https://svn.codelutin.com/tutti/tags/tutti-3.4.5
+ scm:svn:https://svn.codelutin.com/tutti/branches/tutti-3.4.x
</developerConnection>
</scm>
<distributionManagement>
Modified: branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-23 07:57:38 UTC (rev 1816)
+++ branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-23 07:57:44 UTC (rev 1817)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5</version>
+ <version>3.4.6-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-persistence/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-23 07:57:38 UTC (rev 1816)
+++ branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-23 07:57:44 UTC (rev 1817)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5</version>
+ <version>3.4.6-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-service/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-23 07:57:38 UTC (rev 1816)
+++ branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-23 07:57:44 UTC (rev 1817)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5</version>
+ <version>3.4.6-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-ui-swing/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-23 07:57:38 UTC (rev 1816)
+++ branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-23 07:57:44 UTC (rev 1817)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5</version>
+ <version>3.4.6-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
Author: maven-release
Date: 2014-05-23 09:57:38 +0200 (Fri, 23 May 2014)
New Revision: 1816
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1816
Log:
[maven-release-plugin] copy for tag tutti-3.4.5
Added:
tags/tutti-3.4.5/
1
0
r1815 - in branches/tutti-3.4.x: . tutti-ichtyometer tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com 23 May '14
by maven-release@users.forge.codelutin.com 23 May '14
23 May '14
Author: maven-release
Date: 2014-05-23 09:57:32 +0200 (Fri, 23 May 2014)
New Revision: 1815
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1815
Log:
[maven-release-plugin] prepare release tutti-3.4.5
Modified:
branches/tutti-3.4.x/pom.xml
branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
branches/tutti-3.4.x/tutti-persistence/pom.xml
branches/tutti-3.4.x/tutti-service/pom.xml
branches/tutti-3.4.x/tutti-ui-swing/pom.xml
Modified: branches/tutti-3.4.x/pom.xml
===================================================================
--- branches/tutti-3.4.x/pom.xml 2014-05-23 07:55:19 UTC (rev 1814)
+++ branches/tutti-3.4.x/pom.xml 2014-05-23 07:57:32 UTC (rev 1815)
@@ -32,7 +32,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5-SNAPSHOT</version>
+ <version>3.4.5</version>
<packaging>pom</packaging>
<name>Tutti</name>
@@ -99,13 +99,13 @@
<scm>
<url>
- https://forge.codelutin.com/projects/tutti/repository/branches/tutti-3.4.x
+ https://forge.codelutin.com/projects/tutti/repository/tags/tutti-3.4.5
</url>
<connection>
- scm:svn:http://svn.codelutin.com/tutti/branches/tutti-3.4.x
+ scm:svn:http://svn.codelutin.com/tutti/tags/tutti-3.4.5
</connection>
<developerConnection>
- scm:svn:https://svn.codelutin.com/tutti/branches/tutti-3.4.x
+ scm:svn:https://svn.codelutin.com/tutti/tags/tutti-3.4.5
</developerConnection>
</scm>
<distributionManagement>
Modified: branches/tutti-3.4.x/tutti-ichtyometer/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-23 07:55:19 UTC (rev 1814)
+++ branches/tutti-3.4.x/tutti-ichtyometer/pom.xml 2014-05-23 07:57:32 UTC (rev 1815)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5-SNAPSHOT</version>
+ <version>3.4.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-persistence/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-23 07:55:19 UTC (rev 1814)
+++ branches/tutti-3.4.x/tutti-persistence/pom.xml 2014-05-23 07:57:32 UTC (rev 1815)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5-SNAPSHOT</version>
+ <version>3.4.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-service/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-23 07:55:19 UTC (rev 1814)
+++ branches/tutti-3.4.x/tutti-service/pom.xml 2014-05-23 07:57:32 UTC (rev 1815)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5-SNAPSHOT</version>
+ <version>3.4.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: branches/tutti-3.4.x/tutti-ui-swing/pom.xml
===================================================================
--- branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-23 07:55:19 UTC (rev 1814)
+++ branches/tutti-3.4.x/tutti-ui-swing/pom.xml 2014-05-23 07:57:32 UTC (rev 1815)
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>3.4.5-SNAPSHOT</version>
+ <version>3.4.5</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
Author: tchemit
Date: 2014-05-23 09:55:19 +0200 (Fri, 23 May 2014)
New Revision: 1814
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1814
Log:
fixes #5133
Modified:
branches/tutti-3.4.x/pom.xml
Modified: branches/tutti-3.4.x/pom.xml
===================================================================
--- branches/tutti-3.4.x/pom.xml 2014-05-23 07:50:40 UTC (rev 1813)
+++ branches/tutti-3.4.x/pom.xml 2014-05-23 07:55:19 UTC (rev 1814)
@@ -166,7 +166,7 @@
<relativizeDecorationLinks>false</relativizeDecorationLinks>
<!-- Last JRE version to use -->
- <jreVersion>1.7.51</jreVersion>
+ <jreVersion>1.7.55</jreVersion>
</properties>
1
0
r1813 - branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport
by tchemit@users.forge.codelutin.com 23 May '14
by tchemit@users.forge.codelutin.com 23 May '14
23 May '14
Author: tchemit
Date: 2014-05-23 09:50:40 +0200 (Fri, 23 May 2014)
New Revision: 1813
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1813
Log:
fixes #5132 [IMPORT PSION] ajout cat?\195?\169gorisation gros petit
Modified:
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-23 07:50:04 UTC (rev 1812)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-23 07:50:40 UTC (rev 1813)
@@ -151,11 +151,11 @@
List<CaracteristicQualitativeValue> qualitativeValues = caracteristic.getQualitativeValue();
- Map<Integer, CaracteristicQualitativeValue> sexById = TuttiEntities.splitByIdAsInt(qualitativeValues);
- CaracteristicQualitativeValue smallCaracteristic = sexById.get(enumerationFile.QUALITATIVE_SIZE_SMALL_ID);
+ Map<Integer, CaracteristicQualitativeValue> sizeById = TuttiEntities.splitByIdAsInt(qualitativeValues);
+ CaracteristicQualitativeValue smallCaracteristic = sizeById.get(enumerationFile.QUALITATIVE_SIZE_SMALL_ID);
sizeCaracteristicValues.put("P", smallCaracteristic);
sizeCaracteristicValues.put("p", smallCaracteristic);
- CaracteristicQualitativeValue bigCaracteristic = sexById.get(enumerationFile.QUALITATIVE_SIZE_BIG_ID);
+ CaracteristicQualitativeValue bigCaracteristic = sizeById.get(enumerationFile.QUALITATIVE_SIZE_BIG_ID);
sizeCaracteristicValues.put("G", bigCaracteristic);
sizeCaracteristicValues.put("g", bigCaracteristic);
}
1
0
r1812 - in trunk/tutti-service/src: main/java/fr/ifremer/tutti/service/psionimport test/resources/psion
by tchemit@users.forge.codelutin.com 23 May '14
by tchemit@users.forge.codelutin.com 23 May '14
23 May '14
Author: tchemit
Date: 2014-05-23 09:50:04 +0200 (Fri, 23 May 2014)
New Revision: 1812
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1812
Log:
refs #5132 (report from version 3.3.5)
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
trunk/tutti-service/src/test/resources/psion/evo-5077.IWA
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-23 07:42:55 UTC (rev 1811)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-23 07:50:04 UTC (rev 1812)
@@ -245,33 +245,6 @@
void checkSortedBatches() throws IOException {
-// for (Species species : sortedBatchsBySpecies.keySet()) {
-//
-// Collection<PsionImportBatchModel> sortedBatches = sortedBatchsBySpecies.get(species);
-//
-// Map<String, Float> weightByCategory = new HashMap<>();
-//
-// for (PsionImportBatchModel sortedBatch : sortedBatches) {
-// Float weight = sortedBatch.getWeight();
-// if (TuttiEntities.isGreaterWeight(weight, 0)) {
-//
-// Float rootweight = weightByCategory.get(sortedBatch.getCategoryCode());
-//
-// if (rootweight == null) {
-//
-// // first time
-// weightByCategory.put(sortedBatch.getCategoryCode(), weight);
-// } else if (!TuttiEntities.isEqualWeight(rootweight, weight)) {
-//
-// // can't have 2 batches with different vrac batch weight
-// throw new IOException(
-// t("tutti.service.psionimport.error.inconsistentVracWeight.message", species.getSurveyCode()));
-// }
-//
-// }
-// }
-// }
-
for (Species species : sortedBatchsBySpecies.keySet()) {
Collection<PsionImportBatchModel> speciesBatchesWithDoubleWeight = new ArrayList<>();
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-23 07:42:55 UTC (rev 1811)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-23 07:50:04 UTC (rev 1812)
@@ -89,10 +89,14 @@
private static final Log log = LogFactory.getLog(PsionImportService.class);
- protected static final Set<String> SEX_VALUES = Sets.newHashSet("I", "i", "F", "f", "M", "m");
+ protected static final Set<String> NO_CATEGORY_VALUES = Sets.newHashSet("N", "n");
- protected static final Set<String> MATURITY_VALUES = Sets.newHashSet("1", "2", "3", "4", "5");
+ protected static final Set<String> SIZE_CATEGORY_VALUES = Sets.newHashSet("G", "g", "P", "p");
+ protected static final Set<String> SEX_CATEGORY_VALUES = Sets.newHashSet("I", "i", "F", "f", "M", "m");
+
+ protected static final Set<String> MATURITY_CATEGORY_VALUES = Sets.newHashSet("1", "2", "3", "4", "5");
+
/**
* All usables keywords in a psion import.
* <p/>
@@ -116,6 +120,8 @@
protected CaracteristicQualitativeValue unsortedCaracteristic;
+ protected Map<String, CaracteristicQualitativeValue> sizeCaracteristicValues;
+
protected Map<String, CaracteristicQualitativeValue> sexCaracteristicValues;
protected Map<String, CaracteristicQualitativeValue> maturityCaracteristicValues;
@@ -135,6 +141,23 @@
unsortedCaracteristic = TuttiEntities.getQualitativeValue(caracteristic, QualitativeValueId.SORTED_HORS_VRAC.getValue());
}
+ { // size caracteristic
+
+ sizeCaracteristicValues = Maps.newTreeMap();
+
+ Caracteristic caracteristic = persistenceService.getSizeCategoryCaracteristic();
+
+ List<CaracteristicQualitativeValue> qualitativeValues = caracteristic.getQualitativeValue();
+
+ Map<Integer, CaracteristicQualitativeValue> sizeById = TuttiEntities.splitByIdAsInt(qualitativeValues);
+ CaracteristicQualitativeValue smallCaracteristic = sizeById.get(QualitativeValueId.SIZE_SMALL.getValue());
+ sizeCaracteristicValues.put("P", smallCaracteristic);
+ sizeCaracteristicValues.put("p", smallCaracteristic);
+ CaracteristicQualitativeValue bigCaracteristic = sizeById.get(QualitativeValueId.SIZE_BIG.getValue());
+ sizeCaracteristicValues.put("G", bigCaracteristic);
+ sizeCaracteristicValues.put("g", bigCaracteristic);
+ }
+
{ // sex caracteristic
sexCaracteristicValues = Maps.newTreeMap();
@@ -432,7 +455,7 @@
continue;
}
- if ("n".equals(value) || "N".equals(value)) {
+ if (NO_CATEGORY_VALUES.contains(value)) {
// special case, no category
@@ -452,9 +475,7 @@
if (log.isWarnEnabled()) {
log.warn(error);
}
- importModel.addError(
- error
- );
+ importModel.addError(error);
break;
}
@@ -720,15 +741,23 @@
Integer caracteristicId;
CaracteristicQualitativeValue caracteristicQualitativeValue;
- if (SEX_VALUES.contains(categoryCode)) {
+ if (SIZE_CATEGORY_VALUES.contains(categoryCode)) {
+ // size caracteristic
+ caracteristicId = PmfmId2.SIZE_CATEGORY.getValue();
+ caracteristicQualitativeValue = sizeCaracteristicValues.get(categoryCode);
+
+ result = new PsionImportBatchModel.SampleCategory(caracteristicId, caracteristicQualitativeValue);
+
+ } else if (SEX_CATEGORY_VALUES.contains(categoryCode)) {
+
// sex caracteristic
caracteristicId = PmfmId2.SEX.getValue();
caracteristicQualitativeValue = sexCaracteristicValues.get(categoryCode);
result = new PsionImportBatchModel.SampleCategory(caracteristicId, caracteristicQualitativeValue);
- } else if (MATURITY_VALUES.contains(categoryCode)) {
+ } else if (MATURITY_CATEGORY_VALUES.contains(categoryCode)) {
// maturity caracteristic
caracteristicId = PmfmId2.MATURITY.getValue();
Modified: trunk/tutti-service/src/test/resources/psion/evo-5077.IWA
===================================================================
--- trunk/tutti-service/src/test/resources/psion/evo-5077.IWA 2014-05-23 07:42:55 UTC (rev 1811)
+++ trunk/tutti-service/src/test/resources/psion/evo-5077.IWA 2014-05-23 07:50:04 UTC (rev 1812)
@@ -22,10 +22,10 @@
ESPE : PAGEERY
POID : 100
TAIL : 50
-CATE : M
+CATE : GM2
LONG : 16.5
ESPE : PAGEERY
POID : 150
TAIL : 80
-CATE : F
+CATE : PF1
LONG : 16.5
1
0
r1811 - in branches/tutti-3.4.x/tutti-service/src: main/java/fr/ifremer/tutti/service/psionimport test/java/fr/ifremer/tutti/service/psionimport test/resources/psion
by tchemit@users.forge.codelutin.com 23 May '14
by tchemit@users.forge.codelutin.com 23 May '14
23 May '14
Author: tchemit
Date: 2014-05-23 09:42:55 +0200 (Fri, 23 May 2014)
New Revision: 1811
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1811
Log:
fixes #5132 [IMPORT PSION] ajout cat?\195?\169gorisation gros petit
Modified:
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java
branches/tutti-3.4.x/tutti-service/src/test/resources/psion/evo-5077.IWA
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-22 15:40:39 UTC (rev 1810)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java 2014-05-23 07:42:55 UTC (rev 1811)
@@ -55,8 +55,6 @@
/** Logger. */
private static final Log log = LogFactory.getLog(PsionImportModel.class);
-// protected final Map<String, PsionImportBatchModel> batchsByCategory;
-
/**
* All registred species in their registred order.
*/
@@ -82,7 +80,6 @@
speciesSet = new LinkedHashSet<>();
sortedBatchsBySpecies = ArrayListMultimap.create();
unsortedBatchsBySpecies = ArrayListMultimap.create();
-// batchsByCategory = Maps.newLinkedHashMap();
errors = Lists.newArrayList();
}
@@ -248,33 +245,6 @@
void checkSortedBatches() throws IOException {
-// for (Species species : sortedBatchsBySpecies.keySet()) {
-//
-// Collection<PsionImportBatchModel> sortedBatches = sortedBatchsBySpecies.get(species);
-//
-// Map<String, Float> weightByCategory = new HashMap<>();
-//
-// for (PsionImportBatchModel sortedBatch : sortedBatches) {
-// Float weight = sortedBatch.getWeight();
-// if (TuttiEntities.isGreaterWeight(weight, 0)) {
-//
-// Float rootweight = weightByCategory.get(sortedBatch.getCategoryCode());
-//
-// if (rootweight == null) {
-//
-// // first time
-// weightByCategory.put(sortedBatch.getCategoryCode(), weight);
-// } else if (!TuttiEntities.isEqualWeight(rootweight, weight)) {
-//
-// // can't have 2 batches with different vrac batch weight
-// throw new IOException(
-// t("tutti.service.psionimport.error.inconsistentVracWeight.message", species.getSurveyCode()));
-// }
-//
-// }
-// }
-// }
-
for (Species species : sortedBatchsBySpecies.keySet()) {
Collection<PsionImportBatchModel> speciesBatchesWithDoubleWeight = new ArrayList<>();
Modified: branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-22 15:40:39 UTC (rev 1810)
+++ branches/tutti-3.4.x/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java 2014-05-23 07:42:55 UTC (rev 1811)
@@ -87,10 +87,14 @@
private static final Log log = LogFactory.getLog(PsionImportService.class);
- protected static final Set<String> SEX_VALUES = Sets.newHashSet("I", "i", "F", "f", "M", "m");
+ protected static final Set<String> NO_CATEGORY_VALUES = Sets.newHashSet("N", "n");
- protected static final Set<String> MATURITY_VALUES = Sets.newHashSet("1", "2", "3", "4", "5");
+ protected static final Set<String> SIZE_CATEGORY_VALUES = Sets.newHashSet("G", "g", "P", "p");
+ protected static final Set<String> SEX_CATEGORY_VALUES = Sets.newHashSet("I", "i", "F", "f", "M", "m");
+
+ protected static final Set<String> MATURITY_CATEGORY_VALUES = Sets.newHashSet("1", "2", "3", "4", "5");
+
/**
* All usables keywords in a psion import.
* <p/>
@@ -116,6 +120,8 @@
protected CaracteristicQualitativeValue unsortedCaracteristic;
+ protected Map<String, CaracteristicQualitativeValue> sizeCaracteristicValues;
+
protected Map<String, CaracteristicQualitativeValue> sexCaracteristicValues;
protected Map<String, CaracteristicQualitativeValue> maturityCaracteristicValues;
@@ -137,6 +143,23 @@
unsortedCaracteristic = TuttiEntities.getQualitativeValue(caracteristic, enumerationFile.QUALITATIVE_HORS_VRAC_ID);
}
+ { // size caracteristic
+
+ sizeCaracteristicValues = Maps.newTreeMap();
+
+ Caracteristic caracteristic = persistenceService.getSizeCategoryCaracteristic();
+
+ List<CaracteristicQualitativeValue> qualitativeValues = caracteristic.getQualitativeValue();
+
+ Map<Integer, CaracteristicQualitativeValue> sexById = TuttiEntities.splitByIdAsInt(qualitativeValues);
+ CaracteristicQualitativeValue smallCaracteristic = sexById.get(enumerationFile.QUALITATIVE_SIZE_SMALL_ID);
+ sizeCaracteristicValues.put("P", smallCaracteristic);
+ sizeCaracteristicValues.put("p", smallCaracteristic);
+ CaracteristicQualitativeValue bigCaracteristic = sexById.get(enumerationFile.QUALITATIVE_SIZE_BIG_ID);
+ sizeCaracteristicValues.put("G", bigCaracteristic);
+ sizeCaracteristicValues.put("g", bigCaracteristic);
+ }
+
{ // sex caracteristic
sexCaracteristicValues = Maps.newTreeMap();
@@ -434,7 +457,7 @@
continue;
}
- if ("n".equals(value) || "N".equals(value)) {
+ if (NO_CATEGORY_VALUES.contains(value)) {
// special case, no category
@@ -454,9 +477,7 @@
if (log.isWarnEnabled()) {
log.warn(error);
}
- importModel.addError(
- error
- );
+ importModel.addError(error);
break;
}
@@ -720,15 +741,23 @@
Integer caracteristicId;
CaracteristicQualitativeValue caracteristicQualitativeValue;
- if (SEX_VALUES.contains(categoryCode)) {
+ if (SIZE_CATEGORY_VALUES.contains(categoryCode)) {
+ // size caracteristic
+ caracteristicId = enumerationFile.PMFM_ID_SIZE_CATEGORY;
+ caracteristicQualitativeValue = sizeCaracteristicValues.get(categoryCode);
+
+ result = new PsionImportBatchModel.SampleCategory(caracteristicId, caracteristicQualitativeValue);
+
+ } else if (SEX_CATEGORY_VALUES.contains(categoryCode)) {
+
// sex caracteristic
caracteristicId = enumerationFile.PMFM_ID_SEX;
caracteristicQualitativeValue = sexCaracteristicValues.get(categoryCode);
result = new PsionImportBatchModel.SampleCategory(caracteristicId, caracteristicQualitativeValue);
- } else if (MATURITY_VALUES.contains(categoryCode)) {
+ } else if (MATURITY_CATEGORY_VALUES.contains(categoryCode)) {
// maturity caracteristic
caracteristicId = enumerationFile.PMFM_ID_MATURITY;
Modified: branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java 2014-05-22 15:40:39 UTC (rev 1810)
+++ branches/tutti-3.4.x/tutti-service/src/test/java/fr/ifremer/tutti/service/psionimport/PsionImportServiceTest.java 2014-05-23 07:42:55 UTC (rev 1811)
@@ -118,17 +118,8 @@
catchBatch.setFishingOperation(operation);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- int oldSortedBatchs = 0;
- int oldUnsortedBatchs = 0;
for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
-
- boolean sorted = vracPredicate.apply(speciesBatch);
-
- if (sorted) {
- oldSortedBatchs++;
- } else {
- oldUnsortedBatchs++;
- }
+ persistenceService.deleteSpeciesBatch(speciesBatch.getId());
}
PsionImportResult importResult = service.importFile(importFile, operation, catchBatch);
@@ -165,8 +156,8 @@
}
}
- Assert.assertEquals(oldSortedBatchs + nbNewSortedBatchs, totalSortedBatchs);
- Assert.assertEquals(oldUnsortedBatchs + nbNewUnsortedBatchs, totalUnsortedBatchs);
+ Assert.assertEquals(nbNewSortedBatchs, totalSortedBatchs);
+ Assert.assertEquals(nbNewUnsortedBatchs, totalUnsortedBatchs);
}
@Test
@@ -179,17 +170,8 @@
catchBatch.setFishingOperation(operation);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- int oldSortedBatchs = 0;
- int oldUnsortedBatchs = 0;
for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
-
- boolean sorted = vracPredicate.apply(speciesBatch);
-
- if (sorted) {
- oldSortedBatchs++;
- } else {
- oldUnsortedBatchs++;
- }
+ persistenceService.deleteSpeciesBatch(speciesBatch.getId());
}
PsionImportResult importResult = service.importFile(importFile, operation, catchBatch);
@@ -225,8 +207,8 @@
}
}
- Assert.assertEquals(oldSortedBatchs + nbNewSortedBatchs, totalSortedBatchs);
- Assert.assertEquals(oldUnsortedBatchs + nbNewUnsortedBatchs, totalUnsortedBatchs);
+ Assert.assertEquals( nbNewSortedBatchs, totalSortedBatchs);
+ Assert.assertEquals(nbNewUnsortedBatchs, totalUnsortedBatchs);
}
@Test
@@ -271,17 +253,8 @@
catchBatch.setFishingOperation(operation);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), null);
- int oldSortedBatchs = 0;
- int oldUnsortedBatchs = 0;
for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
-
- boolean sorted = vracPredicate.apply(speciesBatch);
-
- if (sorted) {
- oldSortedBatchs++;
- } else {
- oldUnsortedBatchs++;
- }
+ persistenceService.deleteSpeciesBatch(speciesBatch.getId());
}
PsionImportResult importResult = service.importFile(importFile, operation, catchBatch);
@@ -318,7 +291,7 @@
}
}
- Assert.assertEquals(oldSortedBatchs + nbNewSortedBatchs, totalSortedBatchs);
- Assert.assertEquals(oldUnsortedBatchs + nbNewUnsortedBatchs, totalUnsortedBatchs);
+ Assert.assertEquals(nbNewSortedBatchs, totalSortedBatchs);
+ Assert.assertEquals(nbNewUnsortedBatchs, totalUnsortedBatchs);
}
}
Modified: branches/tutti-3.4.x/tutti-service/src/test/resources/psion/evo-5077.IWA
===================================================================
--- branches/tutti-3.4.x/tutti-service/src/test/resources/psion/evo-5077.IWA 2014-05-22 15:40:39 UTC (rev 1810)
+++ branches/tutti-3.4.x/tutti-service/src/test/resources/psion/evo-5077.IWA 2014-05-23 07:42:55 UTC (rev 1811)
@@ -22,10 +22,10 @@
ESPE : PAGEERY
POID : 100
TAIL : 50
-CATE : M
+CATE : GM2
LONG : 16.5
ESPE : PAGEERY
POID : 150
TAIL : 80
-CATE : F
+CATE : PF1
LONG : 16.5
1
0
r1810 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities
by tchemit@users.forge.codelutin.com 22 May '14
by tchemit@users.forge.codelutin.com 22 May '14
22 May '14
Author: tchemit
Date: 2014-05-22 17:40:39 +0200 (Thu, 22 May 2014)
New Revision: 1810
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1810
Log:
fixes #5082 (report from version 3.3.5)
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2014-05-22 15:38:18 UTC (rev 1809)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2014-05-22 15:40:39 UTC (rev 1810)
@@ -522,13 +522,13 @@
* @since 1.0.1
*/
public static float roundKiloGram(float value) {
- BigDecimal sumB = new BigDecimal(value);
+ BigDecimal sumB = new BigDecimal(String.valueOf(value));
float result;
- if (Math.abs(value - sumB.floatValue()) < 0.0001f) {
- result = value;
- } else {
- result = sumB.abs(MATH_CONTEXT_4_DIGIT).floatValue();
- }
+// if (Math.abs(value - sumB.floatValue()) < 0.0001f) {
+// result = value;
+// } else {
+ result = sumB.abs(MATH_CONTEXT_4_DIGIT).floatValue();
+// }
return result;
}
1
0