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 56fdeb2198eeeda98d82c7766384ec3e19e6b631 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 12 15:13:05 2015 +0100 review referentiel import API --- ...stResult.java => ReferentialImportRequest.java} | 4 +- .../ReferentialTemporaryGearService.java | 51 ++++++++------- .../ReferentialTemporaryPersonService.java | 50 ++++++++------- .../ReferentialTemporarySpeciesService.java | 50 ++++++++------- .../ReferentialTemporaryVesselService.java | 51 +++++++-------- .../consumer/CsvConsumerForTemporaryGear.java | 72 ++++++++++++++++++++-- .../consumer/CsvConsumerForTemporaryPerson.java | 72 ++++++++++++++++++++-- .../consumer/CsvConsumerForTemporarySpecies.java | 70 +++++++++++++++++++-- .../consumer/CsvConsumerForTemporaryVessel.java | 72 ++++++++++++++++++++-- 9 files changed, 379 insertions(+), 113 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java similarity index 93% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java index 6fc0b11..e6443f4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ImportRequestResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java @@ -42,7 +42,7 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.10 */ -public class ImportRequestResult<E extends TuttiReferentialEntity, K> { +public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { private final List<E> toAdd = Lists.newArrayList(); @@ -54,7 +54,7 @@ public class ImportRequestResult<E extends TuttiReferentialEntity, K> { private final Set<String> existingNaturalIds; - public ImportRequestResult(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { + public ReferentialImportRequest(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { this.existingEntitiesById = Maps.uniqueIndex(existingEntities, entityToIdFunction); this.existingNaturalIds = Sets.newHashSet(Iterables.transform(existingEntities, naturalIdFunction)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java index 06865cf..86f7537 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryGearService.java @@ -70,15 +70,41 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Gear, Integer> createReferentialImportRequest() { + + List<Gear> allGears = Lists.newArrayList(persistenceService.getAllGear()); + ReferentialImportRequest<Gear, Integer> requestResult = new ReferentialImportRequest<>(allGears, TuttiEntities.<Gear>newIdAstIntFunction(), Gears.GET_NAME); + return requestResult; + + } + public ReferentialImportResult<Gear> importTemporaryGear(File file) { if (log.isInfoEnabled()) { log.info("Will import gears from file: " + file); } - List<Gear> allGears = Lists.newArrayList(persistenceService.getAllGear()); + ReferentialImportRequest<Gear, Integer> requestResult = createReferentialImportRequest(); + + try (CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(file.toPath(), getCsvSeparator())) { + + for (ImportRow<GearRow> bean : consumer) { - ImportRequestResult<Gear, Integer> requestResult = processImportFile(file, allGears); + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.gears.error", file), e); + } + + ReferentialImportResult<Gear> result = executeImportRequest(requestResult); + return result; + + } + + + public ReferentialImportResult<Gear> executeImportRequest(ReferentialImportRequest<Gear, Integer> requestResult) { ReferentialImportResult<Gear> result = new ReferentialImportResult<>(); @@ -107,6 +133,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } return result; + } public void exportExistingTemporaryGear(File file) throws IOException { @@ -178,26 +205,6 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } - protected ImportRequestResult<Gear, Integer> processImportFile(File file, List<Gear> existingEntities) { - - ImportRequestResult<Gear, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Gear>newIdAstIntFunction(), Gears.GET_NAME); - - try (CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(file.toPath(), getCsvSeparator())) { - - for (ImportRow<GearRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.gears.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java index 653953c..6e4984b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryPersonService.java @@ -70,15 +70,40 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Person, Integer> createReferentialImportRequest() { + + List<Person> allPersons = persistenceService.getAllPerson(); + ReferentialImportRequest<Person, Integer> requestResult = new ReferentialImportRequest<>(allPersons, TuttiEntities.<Person>newIdAstIntFunction(), Persons.GET_FULL_NAME); + return requestResult; + + } + public ReferentialImportResult<Person> importTemporaryPerson(File file) { if (log.isInfoEnabled()) { log.info("Will import persons from file: " + file); } - List<Person> allPersons = persistenceService.getAllPerson(); + ReferentialImportRequest<Person, Integer> requestResult = createReferentialImportRequest(); + + try (CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(file.toPath(), getCsvSeparator())) { + + for (ImportRow<PersonRow> bean : consumer) { + + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.persons.error", file), e); + } + + ReferentialImportResult<Person> result = executeImportRequest(requestResult); + return result; - ImportRequestResult<Person, Integer> requestResult = processImportFile(file, allPersons); + } + + public ReferentialImportResult<Person> executeImportRequest(ReferentialImportRequest<Person, Integer> requestResult) { ReferentialImportResult<Person> result = new ReferentialImportResult<>(); @@ -108,6 +133,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } return result; + } public List<Person> getTemporaryPersons() { @@ -172,26 +198,6 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } - protected ImportRequestResult<Person, Integer> processImportFile(File file, List<Person> existingEntities) { - - ImportRequestResult<Person, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Person>newIdAstIntFunction(), Persons.GET_FULL_NAME); - - try (CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(file.toPath(), getCsvSeparator())) { - - for (ImportRow<PersonRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.persons.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java index 78db4dd..f1e97fa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporarySpeciesService.java @@ -70,15 +70,39 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Species, Integer> createReferentialImportRequest() { + + List<Species> allSpecies = persistenceService.getAllSpecies(); + return new ReferentialImportRequest<>(allSpecies, TuttiEntities.<Species>newIdAstIntFunction(), Speciess.GET_NAME); + + } + public ReferentialImportResult<Species> importTemporarySpecies(File file) { if (log.isInfoEnabled()) { log.info("Will import species from file: " + file); } - List<Species> allSpecies = persistenceService.getAllSpecies(); + ReferentialImportRequest<Species, Integer> requestResult = createReferentialImportRequest(); - ImportRequestResult<Species, Integer> requestResult = processImportFile(file, allSpecies); + try (CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(file.toPath(), getCsvSeparator())) { + + for (ImportRow<SpeciesRow> bean : consumer) { + + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.species.error", file), e); + } + + ReferentialImportResult<Species> result = executeImportRequest(requestResult); + return result; + + } + + public ReferentialImportResult<Species> executeImportRequest(ReferentialImportRequest<Species, Integer> requestResult) { ReferentialImportResult<Species> result = new ReferentialImportResult<>(); @@ -104,8 +128,8 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { result.addAllRefsUpdated(entitiesUpdated); } - return result; + } public List<Species> getTemporarySpeciess() { @@ -169,26 +193,6 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { } - protected ImportRequestResult<Species, Integer> processImportFile(File file, List<Species> existingEntities) { - - ImportRequestResult<Species, Integer> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Species>newIdAstIntFunction(), Speciess.GET_NAME); - - try (CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(file.toPath(), getCsvSeparator())) { - - for (ImportRow<SpeciesRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.species.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java index 26ace0a..7da7324 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialTemporaryVesselService.java @@ -70,16 +70,39 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } + public ReferentialImportRequest<Vessel, String> createReferentialImportRequest() { + + List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllVessel()); + return new ReferentialImportRequest<>(existingVessels, TuttiEntities.<Vessel>newIdFunction(), Vessels.GET_INTERNAL_REGISTRATION_CODE); + + } + public ReferentialImportResult<Vessel> importTemporaryVessel(File file) { if (log.isInfoEnabled()) { log.info("Will import vessels from file: " + file); } - // get all vessels - List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllVessel()); + ReferentialImportRequest<Vessel, String> requestResult = createReferentialImportRequest(); - ImportRequestResult<Vessel, String> requestResult = processImportFile(file, existingVessels); + try (CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(file.toPath(), getCsvSeparator())) { + + for (ImportRow<VesselRow> bean : consumer) { + + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); + + } + + } catch (IOException e) { + throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); + } + + ReferentialImportResult<Vessel> result = executeImportRequest(requestResult); + return result; + + } + + public ReferentialImportResult<Vessel> executeImportRequest(ReferentialImportRequest<Vessel, String> requestResult) { ReferentialImportResult<Vessel> result = new ReferentialImportResult<>(); @@ -105,8 +128,8 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { result.addAllRefsUpdated(entitiesUpdated); } - return result; + } public List<Vessel> getTemporaryVessels() { @@ -187,26 +210,6 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } - protected ImportRequestResult<Vessel, String> processImportFile(File file, List<Vessel> existingEntities) { - - ImportRequestResult<Vessel, String> requestResult = new ImportRequestResult<>(existingEntities, TuttiEntities.<Vessel>newIdFunction(), Vessels.GET_INTERNAL_REGISTRATION_CODE); - - try (CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(file.toPath(), getCsvSeparator())) { - - for (ImportRow<VesselRow> bean : consumer) { - - consumer.checkRow(bean, persistenceService, decoratorService, requestResult); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException(t("tutti.service.referential.import.vessels.error", file), e); - } - - return requestResult; - - } - protected char getCsvSeparator() { return ';'; } 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 94197b4..c988277 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 @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ 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)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> public void checkRow(ImportRow<GearRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Gear, Integer> requestResult) { + ReferentialImportRequest<Gear, Integer> requestResult) { if (!row.isValid()) { @@ -76,7 +81,52 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> } - protected void checkAdd(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<GearRow> row, ReferentialImportRequest<Gear, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + GearRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + + } + + String name = bean.getName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing gear with name: " + name); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import gear with name: " + name); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + } + + protected void checkAdd(GearRow bean, ReferentialImportRequest<Gear, Integer> requestResult) { String name = bean.getName(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -93,13 +143,17 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will import gear with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity()); } protected void checkDelete(GearRow bean, Gear gear, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Gear, Integer> requestResult) { + ReferentialImportRequest<Gear, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -113,11 +167,15 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> requestResult.addIdToDelete(id); requestResult.removeExistingNaturalId(name); + if (log.isInfoEnabled()) { + log.info("Will delete gear with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity()); } - protected void checkUpdate(GearRow bean, Gear gear, ImportRequestResult<Gear, Integer> requestResult) { + protected void checkUpdate(GearRow bean, Gear gear, ReferentialImportRequest<Gear, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -130,6 +188,10 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will update gear with name: " + name); + } + requestResult.addEntityToUpdate(bean.toEntity()); } 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 23ca3fb..cf9130d 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 @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, PersonModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryPerson.class); + public CsvConsumerForTemporaryPerson(Path file, char separator) { super(file, PersonModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person public void checkRow(ImportRow<PersonRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Person, Integer> requestResult) { + ReferentialImportRequest<Person, Integer> requestResult) { if (!row.isValid()) { @@ -76,7 +81,52 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person } - protected void checkAdd(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<PersonRow> row, ReferentialImportRequest<Person, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + PersonRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + + } + + String name = bean.getFullName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing person with name: " + name); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import person with name: " + name); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + } + + protected void checkAdd(PersonRow bean, ReferentialImportRequest<Person, Integer> requestResult) { String name = bean.getFullName(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -93,13 +143,17 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will import person with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity()); } protected void checkDelete(PersonRow bean, Person person, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Person, Integer> requestResult) { + ReferentialImportRequest<Person, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getFullName(); @@ -110,12 +164,16 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); } + if (log.isInfoEnabled()) { + log.info("Will delete person with name: " + name); + } + requestResult.addIdToDelete(id); requestResult.removeExistingNaturalId(name); } - protected void checkUpdate(PersonRow bean, Person person, ImportRequestResult<Person, Integer> requestResult) { + protected void checkUpdate(PersonRow bean, Person person, ReferentialImportRequest<Person, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getFullName(); @@ -128,6 +186,10 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will update person with name: " + name); + } + requestResult.addEntityToUpdate(bean.toEntity()); } 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 c283ec7..e6f1e49 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 @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, SpeciesModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporarySpecies.class); + public CsvConsumerForTemporarySpecies(Path file, char separator) { super(file, SpeciesModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec public void checkRow(ImportRow<SpeciesRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Species, Integer> requestResult) { + ReferentialImportRequest<Species, Integer> requestResult) { if (!row.isValid()) { @@ -76,7 +81,50 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec } - protected void checkAdd(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<SpeciesRow> row, ReferentialImportRequest<Species, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + SpeciesRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + } + + String name = bean.getName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing species with name: " + name); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import species with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity(null)); + + } + + } + + protected void checkAdd(SpeciesRow bean, ReferentialImportRequest<Species, Integer> requestResult) { String name = bean.getName(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -93,6 +141,10 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will delete species with name: " + name); + } + requestResult.addEntityToAdd(bean.toEntity(null)); @@ -100,7 +152,7 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec protected void checkDelete(SpeciesRow bean, Species species, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Species, Integer> requestResult) { + ReferentialImportRequest<Species, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -112,12 +164,16 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); } + if (log.isInfoEnabled()) { + log.info("Will delete species with referenceTaxonId: " + referenceTaxonId); + } + requestResult.addIdToDelete(referenceTaxonId); requestResult.removeExistingNaturalId(name); } - protected void checkUpdate(SpeciesRow bean, Species species, ImportRequestResult<Species, Integer> requestResult) { + protected void checkUpdate(SpeciesRow bean, Species species, ReferentialImportRequest<Species, Integer> requestResult) { Integer id = bean.getIdAsInt(); String name = bean.getName(); @@ -131,6 +187,10 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); } + if (log.isInfoEnabled()) { + log.info("Will update species with referenceTaxonId: " + referenceTaxonId); + } + requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); } 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 c673a75..0efe633 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 @@ -5,11 +5,13 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.csv.CsvComsumer; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.referential.ImportRequestResult; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -25,6 +27,9 @@ import static org.nuiton.i18n.I18n.t; */ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, VesselModel> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvConsumerForTemporaryVessel.class); + public CsvConsumerForTemporaryVessel(Path file, char separator) { super(file, VesselModel.forImport(separator)); } @@ -32,7 +37,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel public void checkRow(ImportRow<VesselRow> row, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Vessel, String> requestResult) { + ReferentialImportRequest<Vessel, String> requestResult) { if (!row.isValid()) { @@ -77,7 +82,52 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel } - protected void checkAdd(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { + public void checkRowForGenericFormatImport(ImportRow<VesselRow> row, ReferentialImportRequest<Vessel, String> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + VesselRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + + if (id != null) { + + // can't do other thing than an add import + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport", id)); + + } + + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); + } + + if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { + + // already exists do not reimport it + if (log.isWarnEnabled()) { + log.warn("Won't reimport existing vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + + } else { + + if (log.isInfoEnabled()) { + log.info("Will import vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + } + + protected void checkAdd(VesselRow bean, ReferentialImportRequest<Vessel, String> requestResult) { String internationalRegistrationCode = bean.getInternationalRegistrationCode(); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); @@ -94,6 +144,10 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); } + if (log.isInfoEnabled()) { + log.info("Will import vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addEntityToAdd(bean.toEntity()); @@ -102,7 +156,7 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel protected void checkDelete(VesselRow bean, Vessel vessel, PersistenceService persistenceService, DecoratorService decoratorService, - ImportRequestResult<Vessel, String> requestResult) { + ReferentialImportRequest<Vessel, String> requestResult) { String id = StringUtils.trimToNull(bean.getId()); String internationalRegistrationCode = bean.getInternationalRegistrationCode(); @@ -113,12 +167,16 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); } + if (log.isInfoEnabled()) { + log.info("Will delete vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addIdToDelete(id); requestResult.removeExistingNaturalId(internationalRegistrationCode); } - protected void checkUpdate(VesselRow bean, Vessel vessel, ImportRequestResult<Vessel, String> requestResult) { + protected void checkUpdate(VesselRow bean, Vessel vessel, ReferentialImportRequest<Vessel, String> requestResult) { String id = StringUtils.trimToNull(bean.getId()); String internationalRegistrationCode = bean.getInternationalRegistrationCode(); @@ -131,6 +189,10 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); } + if (log.isInfoEnabled()) { + log.info("Will update vessel with internationalRegistrationCode: " + internationalRegistrationCode); + } + requestResult.addEntityToUpdate(bean.toEntity()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.