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 30ace567229e3736af9372fe2565a693b370bb0d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 25 19:23:32 2015 +0100 add failFast option in csvconsumer --- .../fr/ifremer/tutti/service/csv/CsvComsumer.java | 31 ++++++++- .../consumer/CsvConsumerForAccidentalCatch.java | 4 +- .../consumer/CsvConsumerForCatch.java | 4 +- .../consumer/CsvConsumerForGearCaracteristic.java | 4 +- .../CsvConsumerForIndividualObservation.java | 4 +- .../consumer/CsvConsumerForMarineLitter.java | 4 +- .../consumer/CsvConsumerForOperation.java | 4 +- .../consumer/CsvConsumerForParameter.java | 4 +- .../consumer/CsvConsumerForSampleCategory.java | 4 +- .../consumer/CsvConsumerForSurvey.java | 4 +- .../consumer/CsvConsumerForTemporaryGear.java | 72 +++++++++++---------- .../consumer/CsvConsumerForTemporaryPerson.java | 72 +++++++++++---------- .../consumer/CsvConsumerForTemporarySpecies.java | 72 +++++++++++---------- .../consumer/CsvConsumerForTemporaryVessel.java | 73 ++++++++++++---------- 14 files changed, 207 insertions(+), 149 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java index 09d0786..0b865dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvComsumer.java @@ -2,6 +2,7 @@ package fr.ifremer.tutti.service.csv; import com.google.common.base.Charsets; import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; import org.apache.commons.io.IOUtils; import org.nuiton.csv.AbstractImportErrorInfo; @@ -18,6 +19,8 @@ import java.io.IOException; import java.nio.file.Path; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -34,8 +37,13 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> private final Import2<O> importer; - public CsvComsumer(Path file, M model) { + private final boolean failFast; + private final Map<Long, String> rowsInError; + + public CsvComsumer(Path file, M model, boolean failFast) { + this.failFast = failFast; + this.rowsInError = new LinkedHashMap<>(); try { this.reader = Files.newReader(file.toFile(), Charsets.UTF_8); } catch (FileNotFoundException e) { @@ -88,13 +96,32 @@ public abstract class CsvComsumer<O, M extends AbstractTuttiImportExportModel<O> } + public boolean foundSomeErrors() { + return !rowsInError.isEmpty(); + } + + public Map<Long, String> getRowsInError() { + return ImmutableMap.copyOf(rowsInError); + } + protected void reportError(ImportRow<O> row) { + if (!row.isValid()) { String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); + + if (failFast) { + + throw new ApplicationBusinessException(message); + + } else { + + rowsInError.put(row.getLineNumber(), message); + + } } + } public static class CheckImportErrorInfo<E> extends AbstractImportErrorInfo<E> { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java index 9d2ac1f..b703d76 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -29,8 +29,8 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForAccidentalCatch.class); - public CsvConsumerForAccidentalCatch(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, AccidentalCatchModel.forImport(separator, parserFactory)); + public CsvConsumerForAccidentalCatch(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, AccidentalCatchModel.forImport(separator, parserFactory), reportError); } public GenericFormatImportOperationContext validateRow(ImportRow<AccidentalCatchRow> row, GenericFormatImportContext importContext) { 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 eaa02e3..e996674 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 @@ -42,9 +42,9 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { private final Predicate<CatchRow> catchRowVracPredicate; - public CsvConsumerForCatch(Path file, char separator, SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { + public CsvConsumerForCatch(Path file, char separator, SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { - super(file, CatchModel.forImport(separator, sampleCategoryModel, parserFactory)); + super(file, CatchModel.forImport(separator, sampleCategoryModel, parserFactory), reportError); this.catchRowVracPredicate = new Predicate<CatchRow>() { @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java index 1450bd5..2ea3985 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -23,8 +23,8 @@ import java.nio.file.Path; */ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { - public CsvConsumerForGearCaracteristic(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, GearCaracteristicModel.forImport(separator, parserFactory)); + public CsvConsumerForGearCaracteristic(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, GearCaracteristicModel.forImport(separator, parserFactory), reportError); } public GenericFormatImportCruiseContext validateRow(ImportRow<GearCaracteristicRow> row, GenericFormatImportContext importContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java index 8b59fd5..5b9166d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -29,8 +29,8 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForIndividualObservation.class); - public CsvConsumerForIndividualObservation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, IndividualObservationModel.forImport(separator, parserFactory)); + public CsvConsumerForIndividualObservation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, IndividualObservationModel.forImport(separator, parserFactory), reportError); } public GenericFormatImportOperationContext validateRow(ImportRow<IndividualObservationRow> row, GenericFormatImportContext importContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java index d7eac16..80afb31 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -19,8 +19,8 @@ import java.nio.file.Path; */ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, MarineLitterModel> { - public CsvConsumerForMarineLitter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, MarineLitterModel.forImport(separator, parserFactory)); + public CsvConsumerForMarineLitter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, MarineLitterModel.forImport(separator, parserFactory), reportError); } public GenericFormatImportOperationContext validateRow(ImportRow<MarineLitterRow> row, GenericFormatImportContext importContext) { 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 60b340e..d00c78b 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 @@ -24,8 +24,8 @@ import java.nio.file.Path; */ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, OperationModel> { - public CsvConsumerForOperation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, OperationModel.forImport(separator, parserFactory)); + public CsvConsumerForOperation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, OperationModel.forImport(separator, parserFactory), reportError); } public GenericFormatImportCruiseContext validateRow(ImportRow<OperationRow> row, GenericFormatImportContext importContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java index 93fefe3..6a39d2f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -21,8 +21,8 @@ import java.nio.file.Path; */ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, ParameterModel> { - public CsvConsumerForParameter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, ParameterModel.forImport(separator, parserFactory)); + public CsvConsumerForParameter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, ParameterModel.forImport(separator, parserFactory), reportError); } public GenericFormatImportOperationContext validateRow(ImportRow<ParameterRow> row, GenericFormatImportContext importContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index 272d6f8..d32a6f3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -23,8 +23,8 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, SampleCategoryModel> { - public CsvConsumerForSampleCategory(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, SampleCategoryModel.forImport(separator, parserFactory)); + public CsvConsumerForSampleCategory(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, SampleCategoryModel.forImport(separator, parserFactory), reportError); } public void validateRow(ImportRow<SampleCategoryRow> row, GenericFormatImportContext importContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index 2470218..4968b75 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -22,8 +22,8 @@ import java.util.List; */ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { - public CsvConsumerForSurvey(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { - super(file, SurveyModel.forImport(separator, parserFactory)); + public CsvConsumerForSurvey(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory, boolean reportError) { + super(file, SurveyModel.forImport(separator, parserFactory), reportError); } public void validateRow(ImportRow<SurveyRow> row, GenericFormatImportContext importContext) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java index a738cd6..d723ad2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryGear.java @@ -30,8 +30,8 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryGear.class); - public CsvConsumerForTemporaryGear(Path file, char separator) { - super(file, GearModel.forImport(separator)); + public CsvConsumerForTemporaryGear(Path file, char separator, boolean reportError) { + super(file, GearModel.forImport(separator), reportError); } public void checkRow(ImportRow<GearRow> row, @@ -39,41 +39,45 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> DecoratorService decoratorService, ReferentialImportRequest<Gear, Integer> requestResult) { - reportError(row); + if (row.isValid()) { - GearRow bean = row.getBean(); + GearRow bean = row.getBean(); - Integer id = bean.getIdAsInt(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - if (id == null) { + if (id == null) { - // Ajout - checkAdd(bean, requestResult); + // Ajout + checkAdd(bean, requestResult); - } else { + } else { - // Mise à jour ou Suppression + // Mise à jour ou Suppression - Gear gear = requestResult.getExistingEntityById(id); + Gear gear = requestResult.getExistingEntityById(id); - if (gear == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.notExistingId", id)); - } + if (gear == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.notExistingId", id)); + } - if (delete) { + if (delete) { - // Suppression - checkDelete(bean, gear, persistenceService, decoratorService, requestResult); + // Suppression + checkDelete(bean, gear, persistenceService, decoratorService, requestResult); - } else { + } else { - // Mise à jour - checkUpdate(bean, gear, requestResult); + // Mise à jour + checkUpdate(bean, gear, requestResult); + } } + } + reportError(row); + } public void checkRowForGenericFormatImport(ImportRow<GearRow> row, ReferentialImportRequest<Gear, Integer> requestResult) { @@ -106,21 +110,25 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> reportError(row); - Gear entity = bean.toEntity(); - boolean toAdd = requestResult.addExistingNaturalId(name); - if (toAdd) { + if (row.isValid()) { - if (log.isInfoEnabled()) { - log.info("Will add gear with name: " + name); - } - requestResult.addEntityToAdd(entity); + Gear entity = bean.toEntity(); + boolean toAdd = requestResult.addExistingNaturalId(name); + if (toAdd) { + + if (log.isInfoEnabled()) { + log.info("Will add gear with name: " + name); + } + requestResult.addEntityToAdd(entity); + + } else { - } else { + if (log.isInfoEnabled()) { + log.info("Will link gear with name: " + name); + } + requestResult.addEntityToLink(entity); - if (log.isInfoEnabled()) { - log.info("Will link gear with name: " + name); } - requestResult.addEntityToLink(entity); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java index f0f9619..d4d4a93 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryPerson.java @@ -30,8 +30,8 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryPerson.class); - public CsvConsumerForTemporaryPerson(Path file, char separator) { - super(file, PersonModel.forImport(separator)); + public CsvConsumerForTemporaryPerson(Path file, char separator, boolean reportError) { + super(file, PersonModel.forImport(separator), reportError); } public void checkRow(ImportRow<PersonRow> row, @@ -39,41 +39,45 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person DecoratorService decoratorService, ReferentialImportRequest<Person, Integer> requestResult) { - reportError(row); + if (row.isValid()) { - PersonRow bean = row.getBean(); + PersonRow bean = row.getBean(); - Integer id = bean.getIdAsInt(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - if (id == null) { + if (id == null) { - // Ajout - checkAdd(bean, requestResult); + // Ajout + checkAdd(bean, requestResult); - } else { + } else { - // Mise à jour ou Suppression + // Mise à jour ou Suppression - Person person = requestResult.getExistingEntityById(id); + Person person = requestResult.getExistingEntityById(id); - if (person == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.notExistingId", id)); - } + if (person == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.notExistingId", id)); + } - if (delete) { + if (delete) { - // Suppression - checkDelete(bean, person, persistenceService, decoratorService, requestResult); + // Suppression + checkDelete(bean, person, persistenceService, decoratorService, requestResult); - } else { + } else { - // Mise à jour - checkUpdate(bean, person, requestResult); + // Mise à jour + checkUpdate(bean, person, requestResult); + } } + } + reportError(row); + } public void checkRowForGenericFormatImport(ImportRow<PersonRow> row, ReferentialImportRequest<Person, Integer> requestResult) { @@ -105,21 +109,25 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person reportError(row); - Person entity = bean.toEntity(); - boolean toAdd = requestResult.addExistingNaturalId(name); - if (toAdd) { + if (row.isValid()) { - if (log.isInfoEnabled()) { - log.info("Will add person with name: " + name); - } - requestResult.addEntityToAdd(entity); + Person entity = bean.toEntity(); + boolean toAdd = requestResult.addExistingNaturalId(name); + if (toAdd) { + + if (log.isInfoEnabled()) { + log.info("Will add person with name: " + name); + } + requestResult.addEntityToAdd(entity); - } else { + } else { - if (log.isInfoEnabled()) { - log.info("Will link person with name: " + name); + if (log.isInfoEnabled()) { + log.info("Will link person with name: " + name); + } + requestResult.addEntityToLink(entity); } - requestResult.addEntityToLink(entity); + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index 86357d4..0dc144f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -30,8 +30,8 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForTemporarySpecies.class); - public CsvConsumerForTemporarySpecies(Path file, char separator) { - super(file, SpeciesModel.forImport(separator)); + public CsvConsumerForTemporarySpecies(Path file, char separator, boolean reportError) { + super(file, SpeciesModel.forImport(separator), reportError); } public void checkRow(ImportRow<SpeciesRow> row, @@ -39,41 +39,45 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec DecoratorService decoratorService, ReferentialImportRequest<Species, Integer> requestResult) { - reportError(row); + if (row.isValid()) { - SpeciesRow bean = row.getBean(); + SpeciesRow bean = row.getBean(); - Integer id = bean.getIdAsInt(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - if (id == null) { + if (id == null) { - // Ajout - checkAdd(bean, requestResult); + // Ajout + checkAdd(bean, requestResult); - } else { + } else { - // Mise à jour ou Suppression + // Mise à jour ou Suppression - Species species = requestResult.getExistingEntityById(id); + Species species = requestResult.getExistingEntityById(id); - if (species == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.notExistingId", id)); - } + if (species == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.notExistingId", id)); + } - if (delete) { + if (delete) { - // Suppression - checkDelete(bean, species, persistenceService, decoratorService, requestResult); + // Suppression + checkDelete(bean, species, persistenceService, decoratorService, requestResult); - } else { + } else { - // Mise à jour - checkUpdate(bean, species, requestResult); + // Mise à jour + checkUpdate(bean, species, requestResult); + } } + } + reportError(row); + } public void checkRowForGenericFormatImport(ImportRow<SpeciesRow> row, ReferentialImportRequest<Species, Integer> requestResult) { @@ -105,21 +109,25 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec reportError(row); - Species entity = bean.toEntity(null); - boolean toAdd = requestResult.addExistingNaturalId(name); - if (toAdd) { + if (row.isValid()) { - if (log.isInfoEnabled()) { - log.info("Will add species with name: " + name); - } - requestResult.addEntityToAdd(entity); + Species entity = bean.toEntity(null); + boolean toAdd = requestResult.addExistingNaturalId(name); + if (toAdd) { + + if (log.isInfoEnabled()) { + log.info("Will add species with name: " + name); + } + requestResult.addEntityToAdd(entity); + + } else { - } else { + if (log.isInfoEnabled()) { + log.info("Will link species with name: " + name); + } + requestResult.addEntityToLink(entity); - if (log.isInfoEnabled()) { - log.info("Will link species with name: " + name); } - requestResult.addEntityToLink(entity); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java index 1dfcd5b..0dec002 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporaryVessel.java @@ -30,8 +30,8 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryVessel.class); - public CsvConsumerForTemporaryVessel(Path file, char separator) { - super(file, VesselModel.forImport(separator)); + public CsvConsumerForTemporaryVessel(Path file, char separator, boolean reportError) { + super(file, VesselModel.forImport(separator), reportError); } public void checkRow(ImportRow<VesselRow> row, @@ -39,42 +39,46 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel DecoratorService decoratorService, ReferentialImportRequest<Vessel, String> requestResult) { - reportError(row); + if (row.isValid()) { - VesselRow bean = row.getBean(); + VesselRow bean = row.getBean(); - String id = bean.getId(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + String id = bean.getId(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - if (StringUtils.isBlank(id)) { + if (StringUtils.isBlank(id)) { - // Ajout - checkAdd(bean, requestResult); + // Ajout + checkAdd(bean, requestResult); - } else { + } else { - // Mise à jour ou Suppression + // Mise à jour ou Suppression - Vessel vessel = requestResult.getExistingEntityById(id); + Vessel vessel = requestResult.getExistingEntityById(id); - if (vessel == null) { + if (vessel == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.notExistingId", id)); - } + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.notExistingId", id)); + } - if (delete) { + if (delete) { - // Suppression - checkDelete(bean, vessel, persistenceService, decoratorService, requestResult); + // Suppression + checkDelete(bean, vessel, persistenceService, decoratorService, requestResult); - } else { + } else { - // Mise à jour - checkUpdate(bean, vessel, requestResult); + // Mise à jour + checkUpdate(bean, vessel, requestResult); + } } + } + reportError(row); + } public void checkRowForGenericFormatImport(ImportRow<VesselRow> row, ReferentialImportRequest<Vessel, String> requestResult) { @@ -106,24 +110,27 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel reportError(row); - Vessel entity = bean.toEntity(); - boolean toAdd = requestResult.addExistingNaturalId(internationalRegistrationCode); - if (toAdd) { + if (row.isValid()) { - if (log.isInfoEnabled()) { - log.info("Will add vessel with internationalRegistrationCode: " + internationalRegistrationCode); - } - requestResult.addEntityToAdd(entity); + Vessel entity = bean.toEntity(); + boolean toAdd = requestResult.addExistingNaturalId(internationalRegistrationCode); + if (toAdd) { - } else { + if (log.isInfoEnabled()) { + log.info("Will add vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addEntityToAdd(entity); + + } else { + + if (log.isInfoEnabled()) { + log.info("Will link vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addEntityToLink(entity); - if (log.isInfoEnabled()) { - log.info("Will link vessel with internationalRegistrationCode: " + internationalRegistrationCode); } - requestResult.addEntityToLink(entity); } - } protected void checkAdd(VesselRow bean, ReferentialImportRequest<Vessel, String> requestResult) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.