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 6447002c2cc1849bdc7b655be32af73e974c9db7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 11 19:26:33 2015 +0100 prove consumer api for referentiel import --- .../consumer/CsvConsumerForAccidentalCatch.java | 10 ++ .../consumer/CsvConsumerForCatch.java | 22 ++++ .../consumer/CsvConsumerForGearCaracteristic.java | 22 ++++ .../CsvConsumerForIndividualObservation.java | 22 ++++ .../consumer/CsvConsumerForMarineLitter.java | 22 ++++ .../consumer/CsvConsumerForOperation.java | 22 ++++ .../consumer/CsvConsumerForParameter.java | 22 ++++ .../consumer/CsvConsumerForSampleCategory.java | 22 ++++ .../consumer/CsvConsumerForSurvey.java | 22 ++++ .../ReferentialTemporaryGearService.java | 84 +-------------- .../ReferentialTemporaryPersonService.java | 83 +-------------- .../ReferentialTemporarySpeciesService.java | 83 +-------------- .../ReferentialTemporaryVesselService.java | 84 +-------------- .../consumer/CsvConsumerForTemporaryGear.java | 115 ++++++++++++++++++++ .../consumer/CsvConsumerForTemporaryPerson.java | 114 ++++++++++++++++++++ .../consumer/CsvConsumerForTemporarySpecies.java | 118 +++++++++++++++++++++ .../consumer/CsvConsumerForTemporaryVessel.java | 117 ++++++++++++++++++++ .../tutti/service/referential/csv/PersonRow.java | 8 ++ .../ImportGenericFormatProgramCruisesAction.java | 107 +++++++++++++++++++ 19 files changed, 772 insertions(+), 327 deletions(-) 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 new file mode 100644 index 0000000..1f7750a --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForAccidentalCatch.java @@ -0,0 +1,10 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since XXX + */ +public class CsvConsumerForAccidentalCatch { +} 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 new file mode 100644 index 0000000..8555ddb --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForCatch.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; +import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { + + public CsvConsumerForCatch(Path file, char separator, GlobalImportContext importContext) { + super(file, AccidentalCatchModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..f304499 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { + + public CsvConsumerForGearCaracteristic(Path file, char separator, GlobalImportContext importContext) { + super(file, GearCaracteristicModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..de0f3cf --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForIndividualObservation extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { + + public CsvConsumerForIndividualObservation(Path file, char separator, GlobalImportContext importContext) { + super(file, GearCaracteristicModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..daf5118 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForMarineLitter.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; +import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForMarineLitter extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { + + public CsvConsumerForMarineLitter(Path file, char separator, GlobalImportContext importContext) { + super(file, IndividualObservationModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..97c8aa1 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; +import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForOperation extends CsvComsumer<MarineLitterRow, MarineLitterModel> { + + public CsvConsumerForOperation(Path file, char separator, GlobalImportContext importContext) { + super(file, MarineLitterModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..4e41547 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForParameter.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.OperationModel; +import fr.ifremer.tutti.service.genericformat.csv.OperationRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForParameter extends CsvComsumer<OperationRow, OperationModel> { + + public CsvConsumerForParameter(Path file, char separator, GlobalImportContext importContext) { + super(file, OperationModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..cc09d88 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForSampleCategory extends CsvComsumer<ParameterRow, ParameterModel> { + + public CsvConsumerForSampleCategory(Path file, char separator, GlobalImportContext importContext) { + super(file, ParameterModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..cbfc4e3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -0,0 +1,22 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.service.csv.CsvComsumer; +import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; +import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; + +import java.nio.file.Path; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CsvConsumerForSurvey extends CsvComsumer<ParameterRow, ParameterModel> { + + public CsvConsumerForSurvey(Path file, char separator, GlobalImportContext importContext) { + super(file, ParameterModel.forImport(separator, importContext)); + } + +} \ No newline at end of file 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 27f0417..06865cf 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 @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; import fr.ifremer.tutti.service.referential.csv.GearRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; -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; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,13 +70,12 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } - public ReferentialImportResult<Gear> importTemporaryGear(File file) throws IOException { + public ReferentialImportResult<Gear> importTemporaryGear(File file) { if (log.isInfoEnabled()) { log.info("Will import gears from file: " + file); } - // get all vessel names List<Gear> allGears = Lists.newArrayList(persistenceService.getAllGear()); ImportRequestResult<Gear, Integer> requestResult = processImportFile(file, allGears); @@ -191,16 +186,7 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { for (ImportRow<GearRow> bean : consumer) { - if (bean.isValid()) { - - importGear(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -212,72 +198,6 @@ public class ReferentialTemporaryGearService extends AbstractTuttiService { } - private void importGear(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { - - Integer id = bean.getIdAsInt(); - String name = bean.getName(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); - } - - if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); - } - - requestResult.addEntityToAdd(bean.toEntity()); - - } else { - - // Mise à jour ou Suppression - - Gear gear = requestResult.getExistingEntityById(id); - - if (gear == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.notExistingId.error", id)); - } - - if (delete) { - - // Suppression - - if (persistenceService.isTemporaryGearUsed(id)) { - - String gearRef = id + " : " + decoratorService.getDecoratorByType(Gear.class).toString(gear); - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.used.error", gearRef)); - } - - requestResult.addIdToDelete(id); - requestResult.removeExistingNaturalId(name); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.noName.error", id)); - } - - if (!name.equals(gear.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); - } - - requestResult.addEntityToUpdate(bean.toEntity()); - - } - } - - } - 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 fc55b45..653953c 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 @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; import fr.ifremer.tutti.service.referential.csv.PersonRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; -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; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,7 +70,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } - public ReferentialImportResult<Person> importTemporaryPerson(File file) throws IOException { + public ReferentialImportResult<Person> importTemporaryPerson(File file) { if (log.isInfoEnabled()) { log.info("Will import persons from file: " + file); @@ -184,16 +180,7 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { for (ImportRow<PersonRow> bean : consumer) { - if (bean.isValid()) { - - importPerson(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -205,72 +192,6 @@ public class ReferentialTemporaryPersonService extends AbstractTuttiService { } - private void importPerson(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { - - Integer id = bean.getIdAsInt(); - String name = Persons.GET_FULL_NAME.apply(bean.toEntity()); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); - } - - if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); - } - - requestResult.addEntityToAdd(bean.toEntity()); - - } else { - - // Mise à jour ou Suppression - - Person person = requestResult.getExistingEntityById(id); - - if (person == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.notExistingId.error", id)); - } - - if (delete) { - - // Suppression - - if (persistenceService.isTemporaryPersonUsed(id)) { - - String personRef = id + " : " + decoratorService.getDecoratorByType(Person.class).toString(person); - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); - } - - requestResult.addIdToDelete(id); - requestResult.removeExistingNaturalId(name); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.noName.error", id)); - } - - if (!name.equals(person.getName()) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); - } - - requestResult.addEntityToUpdate(bean.toEntity()); - - } - } - - } - 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 92bbd67..78db4dd 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 @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; -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; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -181,16 +177,7 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { for (ImportRow<SpeciesRow> bean : consumer) { - if (bean.isValid()) { - - importSpecies(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -202,74 +189,6 @@ public class ReferentialTemporarySpeciesService extends AbstractTuttiService { } - protected void importSpecies(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { - - Integer id = bean.getIdAsInt(); - String name = bean.getName(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); - } - - if (!requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); - } - - requestResult.addEntityToAdd(bean.toEntity(null)); - - } else { - - // Mise à jour ou Suppression - - Species species = requestResult.getExistingEntityById(id); - - if (species == null) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.notExistingId.error", id)); - } - - Integer referenceTaxonId = species.getReferenceTaxonId(); - - if (delete) { - - // Suppression - - if (persistenceService.isTemporarySpeciesUsed(referenceTaxonId)) { - - String speciesRef = id + " : " + decoratorService.getDecoratorByType(Species.class, DecoratorService.WITH_SURVEY_CODE).toString(species); - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); - } - - requestResult.addIdToDelete(referenceTaxonId); - requestResult.removeExistingNaturalId(name); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.noName.error", id)); - } - - if (!species.getName().equals(name) && !requestResult.addExistingNaturalId(name)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); - } - - requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); - - } - } - - } - 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 0aa386a..26ace0a 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 @@ -32,16 +32,12 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; import fr.ifremer.tutti.service.referential.csv.VesselRow; import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; -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; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,7 +70,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { decoratorService = getService(DecoratorService.class); } - public ReferentialImportResult<Vessel> importTemporaryVessel(File file) throws IOException { + public ReferentialImportResult<Vessel> importTemporaryVessel(File file) { if (log.isInfoEnabled()) { log.info("Will import vessels from file: " + file); @@ -199,16 +195,7 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { for (ImportRow<VesselRow> bean : consumer) { - if (bean.isValid()) { - - importVessel(bean.getBean(), requestResult); - - } else { - - String message = TuttiCsvUtil.rowErrorsToExceptionMessage(bean); - throw new ApplicationBusinessException(message); - - } + consumer.checkRow(bean, persistenceService, decoratorService, requestResult); } @@ -220,73 +207,6 @@ public class ReferentialTemporaryVesselService extends AbstractTuttiService { } - private void importVessel(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { - - String id = StringUtils.trimToNull(bean.getId()); - String internationalRegistrationCode = bean.getInternationalRegistrationCode(); - boolean delete = BooleanUtils.isTrue(bean.getToDelete()); - - if (id == null) { - - // Ajout - - if (delete) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); - } - - if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); - } - - if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); - } - - requestResult.addEntityToAdd(bean.toEntity()); - - } else { - - // Mise à jour ou Suppression - - Vessel vessel = requestResult.getExistingEntityById(id); - - if (vessel == null) { - - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); - } - - if (delete) { - - // Suppression - - if (persistenceService.isTemporaryVesselUsed(id)) { - - String vesselRef = id + " :" + decoratorService.getDecoratorByType(Vessel.class).toString(vessel); - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); - } - - requestResult.addIdToDelete(id); - requestResult.removeExistingNaturalId(internationalRegistrationCode); - - } else { - - // Mise à jour - - if (StringUtils.isBlank(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); - } - - if (!internationalRegistrationCode.equals(vessel.getName()) && !requestResult.addExistingNaturalId(internationalRegistrationCode)) { - throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); - } - - requestResult.addEntityToUpdate(bean.toEntity()); - - } - } - - } - 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 78b5786..94197b4 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 @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +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.csv.GearModel; import fr.ifremer.tutti.service.referential.csv.GearRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,108 @@ public class CsvConsumerForTemporaryGear extends CsvComsumer<GearRow, GearModel> super(file, GearModel.forImport(separator)); } + public void checkRow(ImportRow<GearRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Gear, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + GearRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Gear gear = requestResult.getExistingEntityById(id); + + if (gear == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, gear, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, gear, requestResult); + + } + } + + } + + protected void checkAdd(GearRow bean, ImportRequestResult<Gear, Integer> requestResult) { + + String name = bean.getName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + protected void checkDelete(GearRow bean, Gear gear, PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Gear, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + + if (persistenceService.isTemporaryGearUsed(id)) { + + String gearRef = id + " : " + decoratorService.getDecoratorByType(Gear.class).toString(gear); + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.used.error", gearRef)); + } + + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(name); + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + protected void checkUpdate(GearRow bean, Gear gear, ImportRequestResult<Gear, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.noName.error", id)); + } + + if (!name.equals(gear.getName()) && !requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.gear.existingName.error", name)); + } + + requestResult.addEntityToUpdate(bean.toEntity()); + + } } \ No newline at end of file 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 82b03e2..23ca3fb 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 @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Person; +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.csv.PersonModel; import fr.ifremer.tutti.service.referential.csv.PersonRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,107 @@ public class CsvConsumerForTemporaryPerson extends CsvComsumer<PersonRow, Person super(file, PersonModel.forImport(separator)); } + public void checkRow(ImportRow<PersonRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Person, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + PersonRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Person person = requestResult.getExistingEntityById(id); + + if (person == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, person, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, person, requestResult); + + } + } + + } + + protected void checkAdd(PersonRow bean, ImportRequestResult<Person, Integer> requestResult) { + + String name = bean.getFullName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + } + + protected void checkDelete(PersonRow bean, Person person, PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Person, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getFullName(); + + if (persistenceService.isTemporaryPersonUsed(id)) { + + String personRef = id + " : " + decoratorService.getDecoratorByType(Person.class).toString(person); + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.used.error", personRef)); + } + + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(name); + + } + + protected void checkUpdate(PersonRow bean, Person person, ImportRequestResult<Person, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getFullName(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.noName.error", id)); + } + + if (!name.equals(person.getName()) && !requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.person.existingName.error", name)); + } + + requestResult.addEntityToUpdate(bean.toEntity()); + + } + } \ No newline at end of file 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 b1302b9..c283ec7 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 @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Species; +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.csv.SpeciesModel; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,111 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec super(file, SpeciesModel.forImport(separator)); } + public void checkRow(ImportRow<SpeciesRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Species, Integer> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + SpeciesRow bean = row.getBean(); + + Integer id = bean.getIdAsInt(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Species species = requestResult.getExistingEntityById(id); + + if (species == null) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, species, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, species, requestResult); + + } + } + + } + + protected void checkAdd(SpeciesRow bean, ImportRequestResult<Species, Integer> requestResult) { + + String name = bean.getName(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.add.noName.error")); + } + + if (!requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); + } + + requestResult.addEntityToAdd(bean.toEntity(null)); + + + } + + protected void checkDelete(SpeciesRow bean, Species species, PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Species, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + Integer referenceTaxonId = species.getReferenceTaxonId(); + + if (persistenceService.isTemporarySpeciesUsed(referenceTaxonId)) { + + String speciesRef = id + " : " + decoratorService.getDecoratorByType(Species.class, DecoratorService.WITH_SURVEY_CODE).toString(species); + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.used.error", speciesRef)); + } + + requestResult.addIdToDelete(referenceTaxonId); + requestResult.removeExistingNaturalId(name); + + } + + protected void checkUpdate(SpeciesRow bean, Species species, ImportRequestResult<Species, Integer> requestResult) { + + Integer id = bean.getIdAsInt(); + String name = bean.getName(); + Integer referenceTaxonId = species.getReferenceTaxonId(); + + if (StringUtils.isBlank(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.noName.error", id)); + } + + if (!species.getName().equals(name) && !requestResult.addExistingNaturalId(name)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.species.existingName.error", name)); + } + + requestResult.addEntityToUpdate(bean.toEntity(referenceTaxonId)); + + } + + } \ No newline at end of file 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 7bb7c40..c673a75 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 @@ -1,11 +1,22 @@ package fr.ifremer.tutti.service.referential.consumer; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +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.csv.VesselModel; import fr.ifremer.tutti.service.referential.csv.VesselRow; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ImportRow; +import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/11/15. * @@ -18,4 +29,110 @@ public class CsvConsumerForTemporaryVessel extends CsvComsumer<VesselRow, Vessel super(file, VesselModel.forImport(separator)); } + public void checkRow(ImportRow<VesselRow> row, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Vessel, String> requestResult) { + + if (!row.isValid()) { + + String message = TuttiCsvUtil.rowErrorsToExceptionMessage(row); + throw new ApplicationBusinessException(message); + + } + + VesselRow bean = row.getBean(); + + String id = bean.getId(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (id == null) { + + // Ajout + checkAdd(bean, requestResult); + + } else { + + // Mise à jour ou Suppression + + Vessel vessel = requestResult.getExistingEntityById(id); + + if (vessel == null) { + + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); + } + + if (delete) { + + // Suppression + checkDelete(bean, vessel, persistenceService, decoratorService, requestResult); + + } else { + + // Mise à jour + checkUpdate(bean, vessel, requestResult); + + } + } + + } + + protected void checkAdd(VesselRow bean, ImportRequestResult<Vessel, String> requestResult) { + + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + boolean delete = BooleanUtils.isTrue(bean.getToDelete()); + + if (delete) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.cannotDeleteWithoutId.error")); + } + + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.add.noRegistrationCode.error")); + } + + if (!requestResult.addExistingNaturalId(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + } + + requestResult.addEntityToAdd(bean.toEntity()); + + + } + + protected void checkDelete(VesselRow bean, Vessel vessel, + PersistenceService persistenceService, + DecoratorService decoratorService, + ImportRequestResult<Vessel, String> requestResult) { + + String id = StringUtils.trimToNull(bean.getId()); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + + if (persistenceService.isTemporaryVesselUsed(id)) { + + String vesselRef = id + " :" + decoratorService.getDecoratorByType(Vessel.class).toString(vessel); + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.used.error", vesselRef)); + } + + requestResult.addIdToDelete(id); + requestResult.removeExistingNaturalId(internationalRegistrationCode); + + } + + protected void checkUpdate(VesselRow bean, Vessel vessel, ImportRequestResult<Vessel, String> requestResult) { + + String id = StringUtils.trimToNull(bean.getId()); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + + if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.noRegistrationCode.error", id)); + } + + if (!internationalRegistrationCode.equals(vessel.getName()) && !requestResult.addExistingNaturalId(internationalRegistrationCode)) { + throw new ApplicationBusinessException(t("tutti.service.referential.import.vessel.existingRegistrationCode.error", internationalRegistrationCode)); + } + + requestResult.addEntityToUpdate(bean.toEntity()); + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java index d6fcfcd..9734f47 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/csv/PersonRow.java @@ -86,6 +86,14 @@ public class PersonRow { this.lastName = lastName; } + public String getFullName() { + + Person person = this.toEntity(); + String fullName = Persons.GET_FULL_NAME.apply(person); + return fullName; + + } + public Boolean getToDelete() { return toDelete; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java new file mode 100644 index 0000000..ab1be99 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportGenericFormatProgramCruisesAction.java @@ -0,0 +1,107 @@ +package fr.ifremer.tutti.ui.swing.action; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportService; +import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; +import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIHandler; +import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationBusinessException; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class ImportGenericFormatProgramCruisesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportGenericFormatProgramCruisesAction.class); + + protected File file; + + public ImportGenericFormatProgramCruisesAction(SelectCruiseUIHandler handler) { + super(handler, true); + } + + @Override + public boolean prepareAction() throws Exception { + + boolean doAction = super.prepareAction(); + + if (doAction) { + + // choose file to import + file = chooseFile( + t("tutti.selectCruise.title.choose.importFile"), + t("tutti.selectCruise.action.importGenericformat"), + "^.+\\.zip$", t("tutti.common.file.genericFormat") + ); + + doAction = file != null; + } + + if (doAction) { + + // check archive is sane + + GenericFormatImportService service = getContext().getGenericFormatImportService(); + service.checkArchive(file); + + } + + return doAction; + + } + + @Override + public void doAction() throws Exception { + + Program program = getModel().getProgram(); + Preconditions.checkNotNull(program); + Preconditions.checkNotNull(file); + + if (log.isInfoEnabled()) { + log.info("Will import cruise to program " + program.getId() + " from archive: " + file); + } + + GenericFormatImportService service = getContext().getGenericFormatImportService(); + + int nbSteps = service.getImportProgramNbSteps(file); + createProgressionModelIfRequired(nbSteps); + + ApplicationBusinessException exportError = null; + + try { + service.importProgram(program.getId(), file, getProgressionModel()); + } catch (ApplicationBusinessException e) { + + String errorMessage; + errorMessage = t("tutti.importProgram.action.exportErrors", program.getName(), e.getMessage()); + + exportError = new ApplicationBusinessException(errorMessage); + } + + handler.resetEditProgramAction(); + + sendMessage(t("tutti.importProgram.action.success", program.getName(), file.getName())); + + if (exportError != null) { + throw exportError; + } + } + + @Override + public void releaseAction() { + file = null; + super.releaseAction(); + } +} + -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.