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 fcda3ba1ee92d3e6e6f7cf4c8d544886a61c379e Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 5 20:57:06 2015 +0200 ajout de controle pour valider le dénombrement sur une mensuration mais aussi un poids de mensuration différent de Zéro (refs #7058) --- .../consumer/CsvConsumerForCatch.java | 19 +++++++++++++ .../FrequencyWeigthNullValueException.java | 31 ++++++++++++++++++++++ .../MissingBatchNumberForFrequencyException.java | 31 ++++++++++++++++++++++ .../resources/i18n/tutti-service_en_GB.properties | 2 ++ .../resources/i18n/tutti-service_fr_FR.properties | 2 ++ 5 files changed, 85 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java index 999344b..7258ca9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -46,6 +46,7 @@ import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContex import fr.ifremer.tutti.service.genericformat.csv.CatchModel; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; import fr.ifremer.tutti.service.genericformat.csv.ExportSampleCategory; +import fr.ifremer.tutti.util.Weights; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; @@ -70,6 +71,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { super(file, CatchModel.forImport(separator, sampleCategoryModel, parserFactory), reportError); this.catchRowVracPredicate = new Predicate<CatchRow>() { + @Override public boolean apply(CatchRow input) { ExportSampleCategory exportSampleCategory = input.getSampleCategory().get(0); @@ -98,6 +100,23 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { } } + if (bean.withFrequency()) { + + // Mandatory batchNumber (see https://forge.codelutin.com/issues/7058) + + if (bean.getBatchNumber() == null) { + + addCheckError(row, new MissingBatchNumberForFrequencyException(operationContext.getFishingOperation())); + + } + + if (bean.getFrequencyWeight()!=null && Weights.isEqualWeight(bean.getFrequencyWeight(), 0f)) { + + // Cant have a Weight 0.0 + addCheckError(row, new FrequencyWeigthNullValueException(operationContext.getFishingOperation())); + } + } + } reportError(row); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FrequencyWeigthNullValueException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FrequencyWeigthNullValueException.java new file mode 100644 index 0000000..46af817 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FrequencyWeigthNullValueException.java @@ -0,0 +1,31 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 5/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class FrequencyWeigthNullValueException extends Exception { + + private static final long serialVersionUID = 1L; + + private final FishingOperation fishingOperation; + + public FrequencyWeigthNullValueException(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + @Override + public String getMessage() { + return t("tutti.service.genericFormat.import.error.frequencyWeigthNullValueException", fishingOperation.getStationNumber(), fishingOperation.getFishingOperationNumber(), fishingOperation.getMultirigAggregation(), fishingOperation.getGearShootingStartDate(), fishingOperation.getCruise().getName()); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/MissingBatchNumberForFrequencyException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/MissingBatchNumberForFrequencyException.java new file mode 100644 index 0000000..4856ce5 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/MissingBatchNumberForFrequencyException.java @@ -0,0 +1,31 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 5/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class MissingBatchNumberForFrequencyException extends Exception { + + private static final long serialVersionUID = 1L; + + private final FishingOperation fishingOperation; + + public MissingBatchNumberForFrequencyException(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + @Override + public String getMessage() { + return t("tutti.service.genericFormat.import.error.missingBatchNumberForFrequency", fishingOperation.getStationNumber(), fishingOperation.getFishingOperationNumber(), fishingOperation.getMultirigAggregation(), fishingOperation.getGearShootingStartDate(), fishingOperation.getCruise().getName()); + } +} diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 396999d..50bc56b 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -184,8 +184,10 @@ tutti.service.genericFormat.import.error.cruiseNotValid= tutti.service.genericFormat.import.error.fishingOperationAlreadyImported= tutti.service.genericFormat.import.error.fishingOperationNotFoundInCruise= tutti.service.genericFormat.import.error.fishingOperationNotValid= +tutti.service.genericFormat.import.error.frequencyWeigthNullValueException= tutti.service.genericFormat.import.error.gearNotFoundInCruise= tutti.service.genericFormat.import.error.mismatchProgram= +tutti.service.genericFormat.import.error.missingBatchNumberForFrequency= tutti.service.genericFormat.import.error.programNotDefined= tutti.service.genericFormat.import.gearCaracteristics= tutti.service.genericFormat.import.individualObservations= 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 69b21d4..1e9c39d 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 @@ -146,8 +146,10 @@ tutti.service.genericFormat.import.error.cruiseNotValid=La campagne n'est pas va tutti.service.genericFormat.import.error.fishingOperationAlreadyImported=Un trait %s - %s - %s -%s a déjà été importé dans la campagne %s tutti.service.genericFormat.import.error.fishingOperationNotFoundInCruise=Le trait %s - %s - %s -%s n'existe pas dans la campagne %s tutti.service.genericFormat.import.error.fishingOperationNotValid=Le trait n'est pas valide \:\n%s +tutti.service.genericFormat.import.error.frequencyWeigthNullValueException=Le trait %s - %s - %s -%s possède une mensuration avec un poids de valeur 0.0 (colonne Poids_Classe_Taille) tutti.service.genericFormat.import.error.gearNotFoundInCruise=L'engin %s (position %s) non trouvé dans la campagne %s tutti.service.genericFormat.import.error.mismatchProgram=La campagne (année\: %s, série\: %s, série partielle %s) devrait utiliser la série %s (code %s) +tutti.service.genericFormat.import.error.missingBatchNumberForFrequency=Le trait %s - %s - %s -%s possède une mensuration qui n'a pas de dénombrement (colonne Nbr non renseignée) tutti.service.genericFormat.import.error.programNotDefined=La série de campagne n'est pas renseignée tutti.service.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin tutti.service.genericFormat.import.individualObservations=Import des observations individuelles -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.