This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit c5859463e47d72825e9d91af007fc37f4c8160a2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 2 16:29:23 2015 +0200 refs #6698: ajout au rapport de l'import des résultats des opérations de suppresions des poids en doubles et élévation des poids --- .../service/catches/WeightCleaningService.java | 10 ++++- .../GenericFormatImportCruiseResult.java | 15 ++++++- .../GenericFormatImportOperationContext.java | 13 +++++- .../GenericFormatImportOperationResult.java | 19 ++++++++ .../genericformat/GenericFormatImportResult.java | 13 ++++++ .../importactions/DoCleanWeightAction.java | 3 +- .../resources/ftl/genericFormatImportReport_fr.ftl | 51 ++++++++++++++++++++++ 7 files changed, 119 insertions(+), 5 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightCleaningService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightCleaningService.java index ef8be8c..0052a38 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightCleaningService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightCleaningService.java @@ -264,8 +264,9 @@ public class WeightCleaningService extends AbstractTuttiService { * the given operation. * * @param fishingOperationId id of the fishing operation to check + * @return {@code true} if some weights were deleted, {@code false} otherwise */ - public void cleanFishingOperation(String fishingOperationId) { + public boolean cleanFishingOperation(String fishingOperationId) { if (log.isDebugEnabled()) { log.debug("Will clean fishingOperation: " + fishingOperationId); @@ -275,6 +276,8 @@ public class WeightCleaningService extends AbstractTuttiService { persistenceService.isFishingOperationWithCatchBatch( fishingOperationId); + boolean result = false; + if (withCatchBatch) { // clean species batches @@ -313,6 +316,8 @@ public class WeightCleaningService extends AbstractTuttiService { // save modified batches + result = true; + FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); @@ -336,6 +341,9 @@ public class WeightCleaningService extends AbstractTuttiService { " since no catchBatch associated."); } } + + return result; + } protected <B extends SpeciesAbleBatch, F extends SpeciesAbleBatchFrequency> void checkBatch(String batchPrefix, diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java index 2361f6e..c1dd7dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportCruiseResult.java @@ -54,12 +54,16 @@ public class GenericFormatImportCruiseResult implements Serializable, Iterable<G private int nbOperationsUpdated; + private boolean withInvalidWeights; + public GenericFormatImportCruiseResult(GenericFormatImportCruiseContext cruiseContext) { label = cruiseContext.getCruiseLabel(); this.cruise = cruiseContext.getCruise(); this.override = cruiseContext.getExistingCruiseData() != null; this.fishingOperationResults = new HashMap<>(); + this.withInvalidWeights = false; + for (GenericFormatImportOperationContext operationContext : cruiseContext) { GenericFormatImportOperationResult operationResult = new GenericFormatImportOperationResult(operationContext); @@ -69,8 +73,11 @@ public class GenericFormatImportCruiseResult implements Serializable, Iterable<G nbOperationsUpdated++; } else { nbOperationsCreated++; - } + if (operationResult.isWithInvalidWeights()) { + withInvalidWeights = true; + } + } } @@ -91,6 +98,10 @@ public class GenericFormatImportCruiseResult implements Serializable, Iterable<G return nbOperationsUpdated; } + public boolean isWithInvalidWeights() { + return withInvalidWeights; + } + public Cruise getCruise() { return cruise; } @@ -102,7 +113,7 @@ public class GenericFormatImportCruiseResult implements Serializable, Iterable<G public String getVesselName() { Vessel vessel = cruise.getVessel(); String result = vessel.getInternationalRegistrationCode(); - if (result==null ) { + if (result == null) { result = vessel.getRegistrationCode(); } return result; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java index 413fcd3..f6ef162 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java @@ -101,6 +101,8 @@ public class GenericFormatImportOperationContext implements Closeable { private final Set<String> checkErrors; + private boolean weightsDeleted; + public GenericFormatImportOperationContext(FishingOperation fishingOperation, CatchBatch catchBatch, OperationDataModel existingFishingOperationData, @@ -127,8 +129,9 @@ public class GenericFormatImportOperationContext implements Closeable { } public boolean isOverride() { - return existingFishingOperationData!=null; + return existingFishingOperationData != null; } + public OperationDataModel getExistingFishingOperationData() { return existingFishingOperationData; } @@ -305,5 +308,13 @@ public class GenericFormatImportOperationContext implements Closeable { } + public void setWeightsDeleted(boolean weightsDeleted) { + this.weightsDeleted = weightsDeleted; + } + + public boolean isWeightsDeleted() { + return weightsDeleted; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java index 5374463..a3535ed 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationResult.java @@ -26,9 +26,11 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.BooleanUtils; import java.io.Serializable; +import java.util.Set; /** * Created on 2/22/15. @@ -46,6 +48,10 @@ public class GenericFormatImportOperationResult implements Serializable { private final String label; + private final Set<String> checkErrors; + + private final boolean weightsDeleted; + private int nbGearFeatures; private int nbVesselFeatures; @@ -71,6 +77,8 @@ public class GenericFormatImportOperationResult implements Serializable { this.label = operationContext.getFishingOperationLabel(); this.override = operationContext.isOverride(); this.catchBatch = operationContext.getCatchBatch(); + this.checkErrors = operationContext.getCheckErrors(); + this.weightsDeleted = operationContext.isWeightsDeleted(); flushContext(operationContext); } @@ -90,6 +98,17 @@ public class GenericFormatImportOperationResult implements Serializable { return BooleanUtils.isTrue(fishingOperation.getFishingOperationValid()); } + public boolean isWithInvalidWeights() { + return CollectionUtils.isNotEmpty(checkErrors); + } + + public boolean isWeightsDeleted() { + return weightsDeleted; + } + public Set<String> getCheckErrors() { + return checkErrors; + } + public Float getCatchTotalWeight() { return catchBatch.getCatchTotalWeight(); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index 6759e3f..049c88c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -50,11 +50,15 @@ public class GenericFormatImportResult extends GenericFormatResultSupport { private int nbOperationsUpdated; + private boolean withInvalidWeights; + public GenericFormatImportResult(GenericFormatImportContext importContext) { super(importContext); this.cruiseResults = new LinkedHashMap<>(); + this.withInvalidWeights = false; + for (GenericFormatImportCruiseContext cruiseContext : importContext) { Cruise cruise = cruiseContext.getCruise(); @@ -68,6 +72,11 @@ public class GenericFormatImportResult extends GenericFormatResultSupport { } nbOperationsCreated += cruiseResult.getNbOperationsCreated(); nbOperationsUpdated += cruiseResult.getNbOperationsUpdated(); + + if (cruiseResult.isWithInvalidWeights()) { + withInvalidWeights = true; + } + } } @@ -92,4 +101,8 @@ public class GenericFormatImportResult extends GenericFormatResultSupport { return nbOperationsUpdated; } + public boolean isWithInvalidWeights() { + return withInvalidWeights; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/DoCleanWeightAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/DoCleanWeightAction.java index 2cbc303..2cf1514 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/DoCleanWeightAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/DoCleanWeightAction.java @@ -77,7 +77,8 @@ public class DoCleanWeightAction extends ImportActionSupport { progressionModel.increments(t("tutti.service.genericFormat.cleanWeights.fishingOperation", cruiseContext.getCruiseLabel(), operationContext.getFishingOperationLabel())); - weightCleaningService.cleanFishingOperation(operationContext.getFishingOperation().getId()); + boolean weightsDeleted = weightCleaningService.cleanFishingOperation(operationContext.getFishingOperation().getId()); + operationContext.setWeightsDeleted(weightsDeleted); } diff --git a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl index a3b858b..a3f26fb 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl @@ -358,6 +358,8 @@ <#if importConfiguration.importAccidentalCatch><li>Importer les captures accidentelles</li></#if> <#if importConfiguration.importIndividualObservation><li>Importer les observations individuelles</li></#if> <#if importConfiguration.importAttachments><li>Importer les pièces-jointes</li></#if> +<#if importConfiguration.cleanWeights><li>Supprimer les poids en doubles</li></#if> +<#if importConfiguration.checkWeights><li>Valider les poids de la captures (élévation des poids)</li></#if> </ul> <h2>Protocol</h2> @@ -426,6 +428,8 @@ <tr> <th>Campagne - Trait</th> <th>Déja dans la base?</th> + <#if importConfiguration.cleanWeights><th>Poids en double ?</th></#if> + <#if importConfiguration.checkWeights><th>Poids valides ?</th></#if> </tr> </thead> <tbody> @@ -433,11 +437,19 @@ <tr> <td><a href="#cruise_${cruiseResult.id}">${cruiseResult.label}</a></td> <td>${cruiseResult.override?string('Oui','Non')}</td> + <td></td> + <td></td> </tr> <#list cruiseResult.iterator() as operationResult> <tr> <td class="operationPadding">Trait ${operationResult.label}</td> <td>${operationResult.override?string('Oui','Non')}</td> + <#if importConfiguration.cleanWeights> + <td>${operationResult.weightsDeleted?string('Oui','Non')}</td> + </#if> + <#if importConfiguration.checkWeights> + <td class="${operationResult.withInvalidWeights?string('notValid','valid')}"></td> + </#if> </tr> </#list> </#list> @@ -513,6 +525,45 @@ </#list> +<#if importConfiguration.checkWeights> +<h2 class="nextPage"></h2> + +<h2>Poids non valides (Élévation des poids)</h2> + + <#if !withInvalidWeights> + <p class="small">Aucune erreur d'élévation de poids détectée.</p> + <#else> + + <p class="small">L'élévation des poids a échoué sur certains traits importés.</p> + <table> + <thead> + <tr> + <th class="small">Campagne - Trait</th> + <th class="small">Erreur</th> + </tr> + </thead> + <tbody> + <#list cruiseResults as cruiseResult> + <#if cruiseResult.withInvalidWeights> + <#list cruiseResult.iterator() as operationResult> + <#if operationResult.withInvalidWeights> + <#list operationResult.checkErrors as checkError> + <tr> + <td class="small">${cruiseResult.label} - Trait ${operationResult.label}</td> + <td class="small">${checkError}</td> + </tr> + </#list> + </#if> + </#list> + </#if> + </#list> + </tbody> + </table> + </#if> + +<p><a href="#summary_data_imported">Remonter au résumé des données importées</a></p> + +</#if> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Engin <a name="referentialTemporaryGearFileResult"></a></h2> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.