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 17b3b9cf5b4d1b046b7c3dec2885dc77baa6ab66 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 2 19:49:36 2015 +0200 refs #6822 , mieux gérer les fichiers non importés --- .../genericformat/GenericFormatFileResult.java | 12 ++++- .../GenericformatImportPersistenceHelper.java | 11 ++-- .../importactions/ImportAccidentalCatchAction.java | 7 +++ .../importactions/ImportCatchAction.java | 8 +++ .../ImportIndividualObservationAction.java | 7 +++ .../importactions/ImportMarineLitterAction.java | 7 +++ .../importactions/ImportOperationAction.java | 59 ++++++++++++++++++++-- .../importactions/LoadAttachmentsAction.java | 7 +++ .../resources/ftl/genericFormatImportReport_fr.ftl | 17 +++++-- .../resources/i18n/tutti-service_fr_FR.properties | 15 +++--- 10 files changed, 127 insertions(+), 23 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatFileResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatFileResult.java index 614710d..759db08 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatFileResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatFileResult.java @@ -50,6 +50,8 @@ public class GenericFormatFileResult implements Serializable { private boolean imported; + private boolean skipped; + public GenericFormatFileResult(String filename, boolean mandatory, boolean found) { this.filename = filename; this.mandatory = mandatory; @@ -76,7 +78,7 @@ public class GenericFormatFileResult implements Serializable { } else { // must be imported and with no errors please - result = isImported() && errors.isEmpty(); + result = isSkipped() || (isImported() && errors.isEmpty()); } @@ -101,6 +103,14 @@ public class GenericFormatFileResult implements Serializable { this.imported = imported; } + public boolean isSkipped() { + return skipped; + } + + public void setSkipped(boolean skipped) { + this.skipped = skipped; + } + public boolean isFound() { return found; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java index afe9ee4..d8b38be 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java @@ -146,16 +146,15 @@ public class GenericformatImportPersistenceHelper { return saveFishingOperation; } - public String getCatchBatchId(String operationId) { + public CatchBatch getExistingCatchBatch(String operationId) { boolean withCatchBatch = isWithCatchBatch(operationId); - String catchBatchId; + CatchBatch catchBatch; if (withCatchBatch) { - CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); - catchBatchId = catchBatch.getId(); + catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); } else { - catchBatchId = null; + catchBatch= null; } - return catchBatchId; + return catchBatch; } public boolean isWithCatchBatch(String operationId) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportAccidentalCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportAccidentalCatchAction.java index 33623c3..c89ccba 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportAccidentalCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportAccidentalCatchAction.java @@ -75,7 +75,14 @@ public class ImportAccidentalCatchAction extends ImportActionSupport { @Override protected void skipExecute() { + importContext.increments(t("tutti.service.genericFormat.skip.import.accidentalCatches")); + + if (!importContext.getImportRequest().isImportAccidentalCatch()) { + GenericFormatCsvFileResult importFileResult = importContext.getAccidentalCatchFileResult(); + importFileResult.setSkipped(true); + } + } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java index e99659d..61bb3e9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java @@ -81,7 +81,15 @@ public class ImportCatchAction extends ImportActionSupport { @Override protected void skipExecute() { + importContext.increments(t("tutti.service.genericFormat.skip.import.catches")); + + if (!(importContext.getImportRequest().isImportSpecies() || + importContext.getImportRequest().isImportBenthos())) { + GenericFormatCsvFileResult importFileResult = importContext.getCatchFileResult(); + importFileResult.setSkipped(true); + } + } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java index 70c3a6d..e62813d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java @@ -75,7 +75,14 @@ public class ImportIndividualObservationAction extends ImportActionSupport { @Override protected void skipExecute() { + importContext.increments(t("tutti.service.genericFormat.skip.import.individualObservations")); + + if (!importContext.getImportRequest().isImportIndividualObservation()) { + GenericFormatCsvFileResult importFileResult = importContext.getIndividualObservationFileResult(); + importFileResult.setSkipped(true); + } + } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportMarineLitterAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportMarineLitterAction.java index 887cb2b..ca254be 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportMarineLitterAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportMarineLitterAction.java @@ -75,7 +75,14 @@ public class ImportMarineLitterAction extends ImportActionSupport { @Override protected void skipExecute() { + importContext.increments(t("tutti.service.genericFormat.skip.import.marineLitters")); + + if (!importContext.getImportRequest().isImportMarineLitter()) { + GenericFormatCsvFileResult importFileResult = importContext.getMarineLitterFileResult(); + importFileResult.setSkipped(true); + } + } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportOperationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportOperationAction.java index d6c38f4..11d02fd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportOperationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportOperationAction.java @@ -28,6 +28,7 @@ import com.google.common.base.Preconditions; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +import fr.ifremer.tutti.persistence.entities.data.CatchBatchs; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.model.OperationDataModel; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; @@ -226,11 +227,36 @@ public class ImportOperationAction extends ImportActionSupport { if (persistenceHelper.isWithCatchBatch(updatedFishingOperation.getId())) { - String existingCatchBatchId = persistenceHelper.getCatchBatchId(updatedFishingOperation.getId()); - catchBatch.setId(existingCatchBatchId); + CatchBatch existingCatchBatch = persistenceHelper.getExistingCatchBatch(updatedFishingOperation.getId()); + catchBatch.setId(existingCatchBatch.getId()); + + if (!importContext.getImportRequest().isImportSpecies()) { + + // use back existing species weights + catchBatch.setSpeciesTotalSortedWeight(existingCatchBatch.getSpeciesTotalSortedWeight()); + catchBatch.setSpeciesTotalInertWeight(existingCatchBatch.getSpeciesTotalInertWeight()); + catchBatch.setSpeciesTotalLivingNotItemizedWeight(existingCatchBatch.getSpeciesTotalLivingNotItemizedWeight()); + + } + + if (!importContext.getImportRequest().isImportBenthos()) { + + // use back existing benthos weights + catchBatch.setBenthosTotalSortedWeight(existingCatchBatch.getBenthosTotalSortedWeight()); + catchBatch.setBenthosTotalInertWeight(existingCatchBatch.getBenthosTotalInertWeight()); + catchBatch.setBenthosTotalLivingNotItemizedWeight(existingCatchBatch.getBenthosTotalLivingNotItemizedWeight()); + + } + + if (!importContext.getImportRequest().isImportMarineLitter()) { + + // use back existing marine litters weights + catchBatch.setMarineLitterTotalWeight(existingCatchBatch.getMarineLitterTotalWeight()); + + } if (log.isInfoEnabled()) { - log.info("Update catch batch (" + operationStr + "): " + existingCatchBatchId); + log.info("Update catch batch (" + operationStr + "): " + existingCatchBatch.getId()); } updatedCatchBatch = persistenceHelper.saveCatchBatch(catchBatch); @@ -260,4 +286,31 @@ public class ImportOperationAction extends ImportActionSupport { } + + private Pair<FishingOperation, CatchBatch> loadFishingOperation(FishingOperation fishingOperation) { + + String operationStr = importContext.decorate(fishingOperation); + + boolean createFishingOperation = TuttiEntities.isNew(fishingOperation); + Preconditions.checkState(!createFishingOperation, "In loadFishingOperation method, can't create new operation: " + operationStr); + Preconditions.checkState(!importContext.getImportRequest().isUpdateOperations(), "In loadFishingOperation method, must not be allowed to update operation: " + operationStr); + + if (log.isInfoEnabled()) { + log.info("Loading fishing Operation: " + operationStr); + } + + FishingOperation loadedFishingOperation = persistenceHelper.saveFishingOperation(fishingOperation); + + CatchBatch loadedCatchBatch = persistenceHelper.getExistingCatchBatch(loadedFishingOperation.getId()); + + if (loadedCatchBatch == null) { + + loadedCatchBatch = CatchBatchs.newCatchBatch(); + + } + + return Pair.of(loadedFishingOperation, loadedCatchBatch); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/LoadAttachmentsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/LoadAttachmentsAction.java index 48b444c..392a63a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/LoadAttachmentsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/LoadAttachmentsAction.java @@ -38,7 +38,14 @@ public class LoadAttachmentsAction extends ImportActionSupport { @Override protected void skipExecute() { + importContext.increments(t("tutti.service.genericFormat.skip.load.attachments")); + + if (!importContext.getImportRequest().isImportAttachments()) { + GenericFormatCsvFileResult importFileResult = importContext.getAttachmentFileResult(); + importFileResult.setSkipped(true); + } + } @Override diff --git a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl index a3f26fb..a794e4b 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl @@ -212,7 +212,6 @@ <#macro renderImportFileResult fileResult anchorName showDetail> <tr> <td>${fileResult.filename}</td> - <td>${fileResult.mandatory?string('Oui', 'Non')}</td> <#if fileResult.found> <td class="valid"></td> <#if fileResult.imported> @@ -379,7 +378,6 @@ <thead> <tr> <th>Fichier</th> - <th>Obligatoire</th> <th>Présent</th> <th>Importé</th> <th>Valide</th> @@ -400,7 +398,6 @@ <thead> <tr> <th>Fichier</th> - <th>Obligatoire</th> <th>Présent</th> <th>Importé</th> <th>Valide</th> @@ -412,11 +409,21 @@ <@renderImportFileResult fileResult=gearCaracteristicFileResult anchorName="gearCaracteristicFileResult" showDetail=false/> <@renderImportFileResult fileResult=operationFileResult anchorName="operationFileResult" showDetail=false/> <@renderImportFileResult fileResult=parameterFileResult anchorName="parameterFileResult" showDetail=false/> +<#if importConfiguration.importSpecies || importConfiguration.importBenthos> <@renderImportFileResult fileResult=catchFileResult anchorName="catchFileResult" showDetail=false/> +</#if> +<#if importConfiguration.importMarineLitter> <@renderImportFileResult fileResult=marineLitterFileResult anchorName="marineLitterFileResult" showDetail=false/> +</#if> +<#if importConfiguration.importAccidentalCatch> <@renderImportFileResult fileResult=accidentalCatchFileResult anchorName="accidentalCatchFileResult" showDetail=false/> +</#if> +<#if importConfiguration.importIndividualObservation> <@renderImportFileResult fileResult=individualObservationFileResult anchorName="individualObservationFileResult" showDetail=false/> +</#if> +<#if importConfiguration.importAttachments> <@renderImportFileResult fileResult=attachmentsFileResult anchorName="attachmentsFileResult" showDetail=false/> +</#if> </tbody> </table> @@ -462,8 +469,8 @@ <ul class="small"> <li>Date de début : ${cruiseResult.cruise.beginDate?date?string.full}</li> <li>Date de fin : ${cruiseResult.cruise.endDate?date?string.full}</li> - <li>Nombre de taits créés : ${cruiseResult.nbOperationsCreated}</li> - <li>Nombre de taits mis à jour : ${cruiseResult.nbOperationsUpdated}</li> + <li>Nombre de traits créés : ${cruiseResult.nbOperationsCreated}</li> + <li>Nombre de traits mis à jour : ${cruiseResult.nbOperationsUpdated}</li> <li>Navire : ${cruiseResult.vesselName!'Inconnu'} </li> <li>Engins : <ul> diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 75c16c1..9a1805f 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -100,8 +100,7 @@ tutti.service.genericFormat.checkCruiseFishingOperation=Vérification de la camp tutti.service.genericFormat.checkWeights.fishingOperation=Vérification des poids du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.cleanWeights.fishingOperation=Suppression des poids en double du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.export.accidentalCatch.error=Erreur lors de l'export des captures accidentelles -tutti.service.genericFormat.export.attachment.error= -tutti.service.genericFormat.export.attachments.error= +tutti.service.genericFormat.export.attachment.error=Erreur lors de l'export des pièces-jointes tutti.service.genericFormat.export.buildZip=Création de l'archive de l'export (fichier %s) tutti.service.genericFormat.export.catches.error=Erreur lors de l'export des captures tutti.service.genericFormat.export.closeContext.error=Erreur lors de la fermeture du contexte d'export @@ -195,14 +194,14 @@ tutti.service.genericFormat.persist.update.cruise=Mise à jour de la campagne <s tutti.service.genericFormat.persist.update.operation=Mise à jour du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.remove.existingCruise.fishingOperation=Suppression du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.reuse.protocol=Réutilisation du protocol existant %s -tutti.service.genericFormat.skip.import.accidentalCatches= +tutti.service.genericFormat.skip.import.accidentalCatches=Ne pas importer les captures accidentelles tutti.service.genericFormat.skip.import.catches=Ne pas importer les captures tutti.service.genericFormat.skip.import.cruises=Ne pas importer les caractéristiques de campagne -tutti.service.genericFormat.skip.import.gearCaracteristics= -tutti.service.genericFormat.skip.import.individualObservations= -tutti.service.genericFormat.skip.import.marineLitters= -tutti.service.genericFormat.skip.import.operations= -tutti.service.genericFormat.skip.import.parameters= +tutti.service.genericFormat.skip.import.gearCaracteristics=Ne pas importer les caractéristiques d'engin +tutti.service.genericFormat.skip.import.individualObservations=Ne pas importer les observations individuelles +tutti.service.genericFormat.skip.import.marineLitters=Ne pas importer les macro déchets +tutti.service.genericFormat.skip.import.operations=Ne pas importer les opérations +tutti.service.genericFormat.skip.import.parameters=Ne pas importer les caractéristiques d'opération tutti.service.genericFormat.skip.import.protocol=Pas de protocole à importer tutti.service.genericFormat.skip.import.temporaryGears=Pas d'engin temporaire à importer tutti.service.genericFormat.skip.import.temporaryPersons=Pas de personne temporaire à importer -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.