This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 6c09cdf1a779224fcac90760714847ce99eb7d58 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 12:09:06 2015 +0100 debut d'import des operations --- .../consumer/CsvConsumerForOperation.java | 30 +++++++++-- .../FishingOperationNotValidException.java | 58 ++++++++++++++++++++++ .../service/genericformat/csv/OperationRow.java | 8 +++ .../resources/i18n/tutti-service_fr_FR.properties | 2 +- 4 files changed, 94 insertions(+), 4 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java index ac95852..7669392 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -1,11 +1,15 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.OperationModel; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import org.nuiton.csv.ImportRow; +import org.nuiton.validator.NuitonValidatorResult; import java.nio.file.Path; @@ -21,13 +25,33 @@ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, Operation super(file, OperationModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<OperationRow> row, GenericFormatImportContext importContext) { + public void checkRow(ImportRow<OperationRow> row, GenericFormatImportContext importContext, ValidationService validationService) { if (row.isValid()) { OperationRow bean = row.getBean(); - //TODO checks! + Cruise importedCruise = importContext.getImportedCruise(bean.getCruise()); + if (importedCruise == null) { + + addCheckError(row, new CruiseNotFoundException(bean.getCruise())); + + } else { + + bean.setCruise(importedCruise); + + FishingOperation fishingOperation = bean.getFishingOperation(); + NuitonValidatorResult validatorResult = validationService.validateEditFishingOperation(fishingOperation); + + if (validatorResult.hasFatalMessages() || validatorResult.hasErrorMessagess()) { + + addCheckError(row, new FishingOperationNotValidException(fishingOperation, validatorResult)); + + } + + //TODO other checkes ? + + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationNotValidException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationNotValidException.java new file mode 100644 index 0000000..f45ecb1 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/FishingOperationNotValidException.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import com.google.common.base.Joiner; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import org.nuiton.validator.NuitonValidatorResult; +import org.nuiton.validator.NuitonValidatorScope; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/19/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationNotValidException extends Exception { + + private static final long serialVersionUID = 1L; + + private final FishingOperation fishingOperation; + + private final NuitonValidatorResult validatorResult; + + public FishingOperationNotValidException(FishingOperation fishingOperation, NuitonValidatorResult validatorResult) { + this.fishingOperation = fishingOperation; + this.validatorResult = validatorResult; + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + @Override + public String getMessage() { + + StringBuilder builder = new StringBuilder(); + + if (validatorResult.hasFatalMessages()) { + List<String> fatalMessage = validatorResult.getMessagesForScope(NuitonValidatorScope.FATAL); + builder.append(t("tutti.fatal.messages", Joiner.on("\n-").join(fatalMessage))); + } + if (validatorResult.hasErrorMessagess()) { + List<String> errorsMessage = validatorResult.getMessagesForScope(NuitonValidatorScope.ERROR); + builder.append(t("tutti.error.messages", Joiner.on("\n-").join(errorsMessage))); + } + if (validatorResult.hasWarningMessages()) { + List<String> warningMessage = validatorResult.getMessagesForScope(NuitonValidatorScope.WARNING); + builder.append(t("tutti.warning.messages", Joiner.on("\n-").join(warningMessage))); + } + + String message = t("tutti.genericFormat.import.error.fishingOperationNotValid", builder.toString()); + return message; + + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java index 631c4fa..c89b244 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationRow.java @@ -137,10 +137,18 @@ public class OperationRow implements Serializable { this.cruise = cruise; } + public Cruise getCruise() { + return cruise; + } + public void setFishingOperation(FishingOperation fishingOperation) { this.fishingOperation = fishingOperation; } + public FishingOperation getFishingOperation() { + return fishingOperation; + } + public void setCatchBatch(CatchBatch catchBatch) { this.catchBatch = catchBatch; } 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 cb5c8ee..3cabedf 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 @@ -14,7 +14,7 @@ tutti.genericFormat.import.error.cruiseAlreadyExist=Il existe déjà une campagn tutti.genericFormat.import.error.cruiseAlreadyImported=La campagne avec ce nom %s a déjà été importée tutti.genericFormat.import.error.cruiseNotFound=La campagne (année: %s, série: %s, série partielle %s) n'existe pas tutti.genericFormat.import.error.gearNotFoundInCruise=L'engin %s (position %s) non trouvé dans la campagne (année: %s, série: %s, série partielle %s) -tutti.genericFormat.import.error.cruiseNotValid=La campagne n'est pas valide \:\n%s +tutti.genericFormat.import.error.fishingOperationNotValid=La campagne n'est pas valide \:\n%s tutti.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin tutti.genericFormat.import.individualObservations=Import des observations individuelles tutti.genericFormat.import.marineLitters=Import des macro-déchets -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.