branch develop updated (4ce5c15 -> c585946)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 4ce5c15 fix NPE if no catch on fishing operation new 8334053 refs #6821 : la selection des campagnes n'est pas à exporter n'est pas corrrecte new c585946 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 The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 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 commit 83340538486d9a248e410d27c1c844ecce61f3dc Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 2 15:11:37 2015 +0200 refs #6821 : la selection des campagnes n'est pas à exporter n'est pas corrrecte Summary of changes: .../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 ++++++++++++++++++++++ .../genericformat/tree/CruiseSelectTreeNode.java | 25 ++++++----- 8 files changed, 134 insertions(+), 15 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 83340538486d9a248e410d27c1c844ecce61f3dc Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 2 15:11:37 2015 +0200 refs #6821 : la selection des campagnes n'est pas à exporter n'est pas corrrecte --- .../genericformat/tree/CruiseSelectTreeNode.java | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/genericformat/tree/CruiseSelectTreeNode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/genericformat/tree/CruiseSelectTreeNode.java index 61f4a6e..07b3786 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/genericformat/tree/CruiseSelectTreeNode.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/genericformat/tree/CruiseSelectTreeNode.java @@ -81,16 +81,24 @@ public class CruiseSelectTreeNode extends DataSelectTreeNodeSupport<CruiseDataMo @Override public CruiseDataModel getSelectedDataModel() { - Set<OperationDataModel> operations = new LinkedHashSet<>(); + CruiseDataModel result; - for (OperationSelectTreeNode o : this) { - OperationDataModel operation = o.getSelectedDataModel(); - if (operation != null) { - operations.add(operation); + if (isSelected() || isPartialSelected()) { + + Set<OperationDataModel> operations = new LinkedHashSet<>(); + + for (OperationSelectTreeNode o : this) { + OperationDataModel operation = o.getSelectedDataModel(); + if (operation != null) { + operations.add(operation); + } } + result = new CruiseDataModel(getId(), getLabel(), operations); + + } else { + result = null; } - CruiseDataModel result = new CruiseDataModel(getId(), getLabel(), operations); return result; } @@ -110,14 +118,11 @@ public class CruiseSelectTreeNode extends DataSelectTreeNodeSupport<CruiseDataMo nbChildSelected++; } } + if (!selected && nbChildSelected > 0 && nbChildSelected == nbChilds) { selected = true; } - if (selected && nbChildSelected < nbChilds) { - selected = false; - } - } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch 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>.
participants (1)
-
codelutin.com scm