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 adc7f2c4835235fdf8539e3b3a8caf674dca62a2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:12:45 2015 +0100 normalize generic format import service classes --- .../genericformat/GenericFormatImportContext.java | 141 +++++++++++ .../GenericFormatImportEntityParserFactory.java | 146 ++++++++++++ .../genericformat/GenericFormatImportRequest.java | 73 ++++++ .../genericformat/GenericFormatImportResult.java | 39 ++-- .../genericformat/GenericFormatImportService.java | 143 ++++++------ .../service/genericformat/GlobalImportContext.java | 259 --------------------- .../consumer/CsvConsumerForAccidentalCatch.java | 18 +- .../consumer/CsvConsumerForCatch.java | 19 +- .../consumer/CsvConsumerForGearCaracteristic.java | 18 +- .../CsvConsumerForIndividualObservation.java | 18 +- .../consumer/CsvConsumerForMarineLitter.java | 18 +- .../consumer/CsvConsumerForOperation.java | 18 +- .../consumer/CsvConsumerForParameter.java | 18 +- .../consumer/CsvConsumerForSampleCategory.java | 6 +- .../consumer/CsvConsumerForSurvey.java | 18 +- .../genericformat/csv/AccidentalCatchModel.java | 12 +- .../service/genericformat/csv/CatchModel.java | 14 +- .../genericformat/csv/GearCaracteristicModel.java | 12 +- .../csv/IndividualObservationModel.java | 12 +- .../genericformat/csv/MarineLitterModel.java | 12 +- .../service/genericformat/csv/OperationModel.java | 20 +- .../service/genericformat/csv/ParameterModel.java | 10 +- .../genericformat/csv/SampleCategoryModel.java | 10 +- .../service/genericformat/csv/SurveyModel.java | 18 +- .../resources/i18n/tutti-service_fr_FR.properties | 32 +-- 25 files changed, 583 insertions(+), 521 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java new file mode 100644 index 0000000..bf21187 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -0,0 +1,141 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; +import org.nuiton.csv.ImportRow; + +import java.io.Closeable; +import java.io.IOException; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class GenericFormatImportContext implements Closeable { + + private final GenericFormatImportRequest importRequest; + + private final GenericFormatImportEntityParserFactory importEntityParserFactory; + + private final GenericFormatImportResult importResult; + + public GenericFormatImportContext(GenericFormatImportRequest importRequest, PersistenceService persistenceService) { + this.importRequest = importRequest; + this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest); + this.importResult = new GenericFormatImportResult(importRequest); + } + + public GenericFormatImportRequest getImportRequest() { + return importRequest; + } + + public GenericFormatImportResult getImportResult() { + return importResult; + } + + @Override + public void close() throws IOException { + + //TODO Close + //getArchive().close(); + + } + + public boolean isCruiseExists(Cruise cruise) { + + boolean equals = false; + for (Cruise existingCruise : importRequest.getExistingCruises()) { + + equals = Cruises.equals(cruise, existingCruise); + if (equals) { + break; + } + + } + return equals; + + } + + public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { + CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForSurvey loadSurveys() { + CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(importRequest.getArchive().getSurveyPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForGearCaracteristic loadGearCaracteristics() { + CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(importRequest.getArchive().getGearCaracteristicsPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForOperation loadOperations() { + CsvConsumerForOperation consumer = new CsvConsumerForOperation(importRequest.getArchive().getOperationPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForParameter loadParameters() { + CsvConsumerForParameter consumer = new CsvConsumerForParameter(importRequest.getArchive().getParameterPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForCatch loadCatches() { + CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importRequest.getSampleCategoryModel(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForMarineLitter loadMarineLitters() { + CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(importRequest.getArchive().getMarineLitterPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForIndividualObservation loadIndividualObservations() { + CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(importRequest.getArchive().getIndividualObservationPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForAccidentalCatch loadAccidentalCatches() { + CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(importRequest.getArchive().getAccidentalCatchPath(), importRequest.getCsvSeparator(), importEntityParserFactory); + return consumer; + } + + public CsvConsumerForTemporaryGear loadTemporaryGears() { + CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(importRequest.getArchive().getTemporaryReferentialGearsPath(), importRequest.getCsvSeparator()); + return consumer; + } + + public CsvConsumerForTemporaryPerson loadTemporaryPersons() { + CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(importRequest.getArchive().getTemporaryReferentialPersonsPath(), importRequest.getCsvSeparator()); + return consumer; + } + + public CsvConsumerForTemporarySpecies loadTemporarySpecies() { + CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(importRequest.getArchive().getTemporaryReferentialSpeciesPath(), importRequest.getCsvSeparator()); + return consumer; + } + + public CsvConsumerForTemporaryVessel loadTemporaryVessels() { + CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(importRequest.getArchive().getTemporaryReferentialVesselsPath(), importRequest.getCsvSeparator()); + return consumer; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java new file mode 100644 index 0000000..d429821 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java @@ -0,0 +1,146 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; +import fr.ifremer.tutti.service.csv.GearParserFormatter; +import fr.ifremer.tutti.service.csv.HarbourParserFormatter; +import fr.ifremer.tutti.service.csv.PersonListParserFormatter; +import fr.ifremer.tutti.service.csv.PersonParserFormatter; +import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; +import fr.ifremer.tutti.service.csv.VesselListParserFormatter; +import fr.ifremer.tutti.service.csv.VesselParserFormatter; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportEntityParserFactory { + + private final PersistenceService persistenceService; + + private final GenericFormatImportRequest importRequest; + + private VesselParserFormatter vesselParser; + + private HarbourParserFormatter harbourParser; + + private GearParserFormatter mandatoryGearParser; + + private PersonListParserFormatter listPersonParser; + + private CaracteristicParserFormatter caracteristicParser; + + private FishingOperationStrataParserFormatter fishingOperationStrataParser; + + private FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; + + private FishingOperationLocationParserFormatter fishingOperationLocationParser; + + private VesselListParserFormatter listVesselParser; + + private SpeciesParserFormatter speciesParser; + + private CaracteristicValueParserFormatter marineLitterCategoryValueParser; + + private CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; + + public GenericFormatImportEntityParserFactory(PersistenceService persistenceService, + GenericFormatImportRequest importRequest) { + this.persistenceService = persistenceService; + this.importRequest = importRequest; + } + + public VesselParserFormatter getVesselParser() { + if (vesselParser == null) { + vesselParser = VesselParserFormatter.newParser(persistenceService); + } + return vesselParser; + } + + public HarbourParserFormatter getHarbourParser() { + if (harbourParser == null) { + harbourParser = HarbourParserFormatter.newParser(persistenceService); + } + return harbourParser; + } + + public GearParserFormatter getMandatoryGearParser() { + if (mandatoryGearParser == null) { + mandatoryGearParser = GearParserFormatter.newParser(persistenceService); + } + return mandatoryGearParser; + } + + public PersonListParserFormatter getListPersonParser() { + if (listPersonParser == null) { + listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); + } + return listPersonParser; + } + + public CaracteristicParserFormatter getCaracteristicParser() { + if (caracteristicParser == null) { + caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); + } + return caracteristicParser; + } + + public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { + if (fishingOperationStrataParser == null) { + Program program = importRequest.getProgram(); + fishingOperationStrataParser = FishingOperationStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + } + return fishingOperationStrataParser; + } + + public FishingOperationSubStrataParserFormatter getFishingOperationSubStrataParser() { + if (fishingOperationSubStrataParser == null) { + Program program = importRequest.getProgram(); + fishingOperationSubStrataParser = FishingOperationSubStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + } + return fishingOperationSubStrataParser; + } + + public FishingOperationLocationParserFormatter getFishingOperationLocationParser() { + if (fishingOperationLocationParser == null) { + Program program = importRequest.getProgram(); + fishingOperationLocationParser = FishingOperationLocationParserFormatter.newParser(persistenceService, program.getZone().getId()); + } + return fishingOperationLocationParser; + } + + public VesselListParserFormatter getListVesselParser() { + if (listVesselParser == null) { + listVesselParser = VesselListParserFormatter.newParser(getVesselParser()); + } + return listVesselParser; + } + + public SpeciesParserFormatter getSpeciesParser() { + if (speciesParser == null) { + speciesParser = SpeciesParserFormatter.newParser(persistenceService); + } + return speciesParser; + } + + public CaracteristicValueParserFormatter getMarineLitterCategoryValueParser() { + if (marineLitterCategoryValueParser == null) { + marineLitterCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterCategoryCaracteristic()); + } + return marineLitterCategoryValueParser; + } + + public CaracteristicValueParserFormatter getMarineLitterSizeCategoryValueParser() { + if (marineLitterSizeCategoryValueParser == null) { + marineLitterSizeCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); + } + return marineLitterSizeCategoryValueParser; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java new file mode 100644 index 0000000..052113b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java @@ -0,0 +1,73 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; +import java.util.Set; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatImportRequest { + + private final GenericFormatArchive archive; + + private final char csvSeparator; + + private final SampleCategoryModel sampleCategoryModel; + + private final Set<Cruise> existingCruises; + + private final TuttiProtocol oldProtocol; + + private final Program program; + + public GenericFormatImportRequest(PersistenceService persistenceService, + GenericFormatArchive archive, + char csvSeparator, + Program program, + SampleCategoryModel sampleCategoryModel) { + this.archive = archive; + this.csvSeparator = csvSeparator; + this.sampleCategoryModel = sampleCategoryModel; + this.program = program; + + List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); + this.existingCruises = ImmutableSet.copyOf(allCruise); + this.oldProtocol = persistenceService.getProtocol(); + + } + + public GenericFormatArchive getArchive() { + return archive; + } + + public char getCsvSeparator() { + return csvSeparator; + } + + public SampleCategoryModel getSampleCategoryModel() { + return sampleCategoryModel; + } + + public Set<Cruise> getExistingCruises() { + return existingCruises; + } + + public TuttiProtocol getOldProtocol() { + return oldProtocol; + } + + public Program getProgram() { + return program; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index 90c96a1..a9921f2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -7,7 +7,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.referential.ReferentialImportResult; import java.util.LinkedHashSet; import java.util.Set; @@ -20,30 +19,31 @@ import java.util.Set; */ public class GenericFormatImportResult { - private final GenericFormatArchive archive; - private final Set<Cruise> importedCruises; private final Set<String> errors; private TuttiProtocol protocol; - private ReferentialImportResult<Gear> importedGears; - private ReferentialImportResult<Person> importedPersons; + private GenericFormatReferentialImportResult<Gear, Integer> importedGears; + + private GenericFormatReferentialImportResult<Person, Integer> importedPersons; - private ReferentialImportResult<Species> importedSpecies; + private GenericFormatReferentialImportResult<Species, Integer> importedSpecies; - private ReferentialImportResult<Vessel> importedVessels; + private GenericFormatReferentialImportResult<Vessel, String> importedVessels; - public GenericFormatImportResult(GenericFormatArchive archive) { - this.archive = archive; + private final GenericFormatImportRequest importRequest; + + public GenericFormatImportResult(GenericFormatImportRequest importRequest) { + this.importRequest = importRequest; this.importedCruises = new LinkedHashSet<>(); this.errors = new LinkedHashSet<>(); } - public GenericFormatArchive getArchive() { - return archive; + public GenericFormatImportRequest getImportRequest() { + return importRequest; } public Set<Cruise> getImportedCruises() { @@ -70,36 +70,35 @@ public class GenericFormatImportResult { this.protocol = protocol; } - public ReferentialImportResult<Gear> getImportedGears() { + public GenericFormatReferentialImportResult<Gear, Integer> getImportedGears() { return importedGears; } - public void setImportedGears(ReferentialImportResult<Gear> importedGears) { + public void setImportedGears(GenericFormatReferentialImportResult<Gear, Integer> importedGears) { this.importedGears = importedGears; } - public ReferentialImportResult<Person> getImportedPersons() { + public GenericFormatReferentialImportResult<Person, Integer> getImportedPersons() { return importedPersons; } - public void setImportedPersons(ReferentialImportResult<Person> importedPersons) { + public void setImportedPersons(GenericFormatReferentialImportResult<Person, Integer> importedPersons) { this.importedPersons = importedPersons; } - public ReferentialImportResult<Species> getImportedSpecies() { + public GenericFormatReferentialImportResult<Species, Integer> getImportedSpecies() { return importedSpecies; } - public void setImportedSpecies(ReferentialImportResult<Species> importedSpecies) { + public void setImportedSpecies(GenericFormatReferentialImportResult<Species, Integer> importedSpecies) { this.importedSpecies = importedSpecies; } - public ReferentialImportResult<Vessel> getImportedVessels() { + public GenericFormatReferentialImportResult<Vessel, String> getImportedVessels() { return importedVessels; } - public void setImportedVessels(ReferentialImportResult<Vessel> importedVessels) { + public void setImportedVessels(GenericFormatReferentialImportResult<Vessel, String> importedVessels) { this.importedVessels = importedVessels; } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index e20e443..fc6a253 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -145,28 +145,31 @@ public class GenericFormatImportService extends AbstractTuttiService { GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); archive.checkArchiveLayout(); - try (GlobalImportContext importContext = new GlobalImportContext(persistenceService, - archive, - ';', - program, - context.getSampleCategoryModel())) { - - GenericFormatImportResult result = new GenericFormatImportResult(archive); - - checkSampleCategoryModel(importContext, result, progressionModel); - importTemporaryGears(importContext, result, progressionModel); - importTemporaryPersons(importContext, result, progressionModel); - importTemporarySpecies(importContext, result, progressionModel); - importTemporaryVessels(importContext, result, progressionModel); - importProtocol(importContext, result, progressionModel); - importCruises(importContext, result, progressionModel); - importGearCaracteristics(importContext, result, progressionModel); - importOperations(importContext, result, progressionModel); - importParameters(importContext, result, progressionModel); - importCatches(importContext, result, progressionModel); - importMarineLitters(importContext, result, progressionModel); - importIndividualObservations(importContext, result, progressionModel); - importAccidentalCatches(importContext, result, progressionModel); + GenericFormatImportRequest request = new GenericFormatImportRequest(persistenceService, + archive, + ';', + program, + context.getSampleCategoryModel()); + + try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, persistenceService)) { + + GenericFormatImportResult result = new GenericFormatImportResult(request); + + checkSampleCategoryModel(importContext, progressionModel); + importTemporaryGears(importContext, progressionModel); + importTemporaryPersons(importContext, progressionModel); + importTemporarySpecies(importContext, progressionModel); + importTemporaryVessels(importContext, progressionModel); + importProtocol(importContext, progressionModel); + + importCruises(importContext, progressionModel); + importGearCaracteristics(importContext, progressionModel); + importOperations(importContext, progressionModel); + importParameters(importContext, progressionModel); + importCatches(importContext, progressionModel); + importMarineLitters(importContext, progressionModel); + importIndividualObservations(importContext, progressionModel); + importAccidentalCatches(importContext, progressionModel); return result; @@ -177,7 +180,7 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void checkSampleCategoryModel(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void checkSampleCategoryModel(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); Iterable<ImportRow<SampleCategoryRow>> rows = importContext.loadSampleCategories(); @@ -188,102 +191,110 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importTemporaryGears(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporaryGears(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporaryGears")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialGearsPathExists()) { - ReferentialImportRequest<Gear, Integer> requestResult = referentialTemporaryGearService.createReferentialImportRequest(); + ReferentialImportRequest<Gear, Integer> referentialImportRequest = referentialTemporaryGearService.createReferentialImportRequest(); try (CsvConsumerForTemporaryGear consumer = importContext.loadTemporaryGears()) { for (ImportRow<GearRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close gears.csv file", e); } - ReferentialImportResult<Gear> importResult = referentialTemporaryGearService.executeImportRequest(requestResult); - result.setImportedGears(importResult); + ReferentialImportResult<Gear> referentialImportResult = referentialTemporaryGearService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Gear, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedGears(genericFormatReferentialImportResult); } } - protected void importTemporaryPersons(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporaryPersons(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporaryPersons")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialPersonsPathExists()) { - ReferentialImportRequest<Person, Integer> requestResult = referentialTemporaryPersonService.createReferentialImportRequest(); + ReferentialImportRequest<Person, Integer> referentialImportRequest = referentialTemporaryPersonService.createReferentialImportRequest(); try (CsvConsumerForTemporaryPerson consumer = importContext.loadTemporaryPersons()) { for (ImportRow<PersonRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close person.csv file", e); } - ReferentialImportResult<Person> importResult = referentialTemporaryPersonService.executeImportRequest(requestResult); - result.setImportedPersons(importResult); + ReferentialImportResult<Person> referentialImportResult = referentialTemporaryPersonService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Person, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedPersons(genericFormatReferentialImportResult); } } - protected void importTemporarySpecies(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporarySpecies(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporarySpecies")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialSpeciesPathExists()) { - ReferentialImportRequest<Species, Integer> requestResult = referentialTemporarySpeciesService.createReferentialImportRequest(); + ReferentialImportRequest<Species, Integer> referentialImportRequest = referentialTemporarySpeciesService.createReferentialImportRequest(); try (CsvConsumerForTemporarySpecies consumer = importContext.loadTemporarySpecies()) { for (ImportRow<SpeciesRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close species.csv file", e); } - ReferentialImportResult<Species> importResult = referentialTemporarySpeciesService.executeImportRequest(requestResult); - result.setImportedSpecies(importResult); + ReferentialImportResult<Species> referentialImportResult = referentialTemporarySpeciesService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Species, Integer> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedSpecies(genericFormatReferentialImportResult); } } - protected void importTemporaryVessels(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importTemporaryVessels(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.temporaryVessels")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialVesselsPathExists()) { - ReferentialImportRequest<Vessel, String> requestResult = referentialTemporaryVesselService.createReferentialImportRequest(); + ReferentialImportRequest<Vessel, String> referentialImportRequest = referentialTemporaryVesselService.createReferentialImportRequest(); try (CsvConsumerForTemporaryVessel consumer = importContext.loadTemporaryVessels()) { for (ImportRow<VesselRow> row : consumer) { - consumer.checkRowForGenericFormatImport(row, requestResult); + consumer.checkRowForGenericFormatImport(row, referentialImportRequest); } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close vessel.csv file", e); } - ReferentialImportResult<Vessel> importResult = referentialTemporaryVesselService.executeImportRequest(requestResult); - result.setImportedVessels(importResult); + ReferentialImportResult<Vessel> referentialImportResult = referentialTemporaryVesselService.executeImportRequest(referentialImportRequest); + + GenericFormatReferentialImportResult<Vessel, String> genericFormatReferentialImportResult = new GenericFormatReferentialImportResult<>(referentialImportRequest, referentialImportResult); + importContext.getImportResult().setImportedVessels(genericFormatReferentialImportResult); } } - protected void importProtocol(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importProtocol(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.load.protocol")); - GenericFormatArchive archive = importContext.getArchive(); + GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isProtocolExists()) { TuttiProtocol tuttiProtocol = protocolImportExportService.importProtocol(archive.getProtocolPath().toFile()); @@ -317,19 +328,19 @@ public class GenericFormatImportService extends AbstractTuttiService { } - result.setProtocol(tuttiProtocol); + importContext.getImportResult().setProtocol(tuttiProtocol); } } - protected void importCruises(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importCruises(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.cruises")); try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { for (ImportRow<SurveyRow> row : consumer) { - consumer.checkRow(row, importContext, result, validationService); + consumer.checkRow(row, importContext, validationService); } } catch (IOException e) { @@ -338,13 +349,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importGearCaracteristics(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importGearCaracteristics(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.gearCaracteristics")); try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { for (ImportRow<GearCaracteristicRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -353,13 +364,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importOperations(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importOperations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.operations")); try (CsvConsumerForOperation consumer = importContext.loadOperations()) { for (ImportRow<OperationRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -368,13 +379,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importParameters(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importParameters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.parameters")); try (CsvConsumerForParameter consumer = importContext.loadParameters()) { for (ImportRow<ParameterRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -383,13 +394,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importCatches(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.catches")); try (CsvConsumerForCatch consumer = importContext.loadCatches()) { for (ImportRow<CatchRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -398,13 +409,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importAccidentalCatches(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importAccidentalCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.accidentalCatches")); try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { for (ImportRow<AccidentalCatchRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -413,13 +424,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importIndividualObservations(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importIndividualObservations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.individualObservations")); try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { for (ImportRow<IndividualObservationRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { @@ -428,13 +439,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importMarineLitters(GlobalImportContext importContext, GenericFormatImportResult result, ProgressionModel progressionModel) { + protected void importMarineLitters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.marineLitters")); try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { for (ImportRow<MarineLitterRow> row : consumer) { - consumer.checkRow(row, importContext, result); + consumer.checkRow(row, importContext); } } catch (IOException e) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java deleted file mode 100644 index f39eef3..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ /dev/null @@ -1,259 +0,0 @@ -package fr.ifremer.tutti.service.genericformat; - -import com.google.common.collect.ImmutableSet; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; -import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; -import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; -import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; -import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; -import fr.ifremer.tutti.service.csv.GearParserFormatter; -import fr.ifremer.tutti.service.csv.HarbourParserFormatter; -import fr.ifremer.tutti.service.csv.PersonListParserFormatter; -import fr.ifremer.tutti.service.csv.PersonParserFormatter; -import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; -import fr.ifremer.tutti.service.csv.VesselListParserFormatter; -import fr.ifremer.tutti.service.csv.VesselParserFormatter; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; -import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; -import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; -import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; -import org.nuiton.csv.ImportRow; - -import java.io.Closeable; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GlobalImportContext implements Closeable { - - private final VesselParserFormatter vesselParser; - - private final HarbourParserFormatter harbourParser; - - private final GearParserFormatter mandatoryGearParser; - - private final PersonListParserFormatter listPersonParser; - - private final CaracteristicParserFormatter caracteristicParser; - - private final FishingOperationStrataParserFormatter fishingOperationStrataParser; - - private final FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; - - private final FishingOperationLocationParserFormatter fishingOperationLocationParser; - - private final VesselListParserFormatter listVesselParser; - - private final SpeciesParserFormatter speciesParser; - - private final CaracteristicValueParserFormatter marineLitterCategoryValueParser; - - private final CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; - - private final GenericFormatArchive archive; - - private final char csvSeparator; - - private final SampleCategoryModel sampleCategoryModel; - - private final Set<Cruise> existingCruises; - - private final TuttiProtocol oldProtocol; - - public GlobalImportContext(PersistenceService persistenceService, - GenericFormatArchive archive, - char csvSeparator, - Program program, - SampleCategoryModel sampleCategoryModel) { - this.archive = archive; - this.csvSeparator = csvSeparator; - this.sampleCategoryModel = sampleCategoryModel; - this.vesselParser = VesselParserFormatter.newParser(persistenceService); - this.harbourParser = HarbourParserFormatter.newParser(persistenceService); - this.listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); - this.mandatoryGearParser = GearParserFormatter.newParser(persistenceService); - this.caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); - this.fishingOperationStrataParser = FishingOperationStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); - this.fishingOperationSubStrataParser = FishingOperationSubStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); - this.fishingOperationLocationParser = FishingOperationLocationParserFormatter.newParser(persistenceService, program.getZone().getId()); - this.listVesselParser = VesselListParserFormatter.newParser(vesselParser); - this.speciesParser = SpeciesParserFormatter.newParser(persistenceService); - this.marineLitterCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterCategoryCaracteristic()); - this.marineLitterSizeCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); - - List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); - this.existingCruises = ImmutableSet.copyOf(allCruise); - this.oldProtocol = persistenceService.getProtocol(); - - } - - @Override - public void close() throws IOException { - - //TODO Close - //archive.close(); - - } - - public GenericFormatArchive getArchive() { - return archive; - } - - public VesselParserFormatter getVesselParser() { - return vesselParser; - } - - public HarbourParserFormatter getHarbourParser() { - return harbourParser; - } - - public PersonListParserFormatter getListPersonParser() { - return listPersonParser; - } - - public GearParserFormatter getGearParser() { - return mandatoryGearParser; - } - - public CaracteristicParserFormatter getCaracteristicParser() { - return caracteristicParser; - } - - public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { - return fishingOperationStrataParser; - } - - public FishingOperationSubStrataParserFormatter getFishingOperationSubStrataParser() { - return fishingOperationSubStrataParser; - } - - public FishingOperationLocationParserFormatter getFishingOperationLocationParser() { - return fishingOperationLocationParser; - } - - public VesselListParserFormatter getListVesselParser() { - return listVesselParser; - } - - public SpeciesParserFormatter getSpeciesParser() { - return speciesParser; - } - - public CaracteristicValueParserFormatter getMarineLitterCategoryValueParser() { - return marineLitterCategoryValueParser; - } - - public CaracteristicValueParserFormatter getMarineLitterSizeCategoryValueParser() { - return marineLitterSizeCategoryValueParser; - } - - public SampleCategoryModel getSampleCategoryModel() { - return sampleCategoryModel; - } - - public boolean isCruiseExists(Cruise cruise) { - - boolean equals = false; - for (Cruise existingCruise : existingCruises) { - - equals = Cruises.equals(cruise, existingCruise); - if (equals) { - break; - } - - } - return equals; - - } - - public Iterable<ImportRow<SampleCategoryRow>> loadSampleCategories() { - CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(archive.getSampleCategoryModelPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForSurvey loadSurveys() { - CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(archive.getSurveyPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForGearCaracteristic loadGearCaracteristics() { - CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(archive.getGearCaracteristicsPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForOperation loadOperations() { - CsvConsumerForOperation consumer = new CsvConsumerForOperation(archive.getOperationPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForParameter loadParameters() { - CsvConsumerForParameter consumer = new CsvConsumerForParameter(archive.getParameterPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForCatch loadCatches() { - CsvConsumerForCatch consumer = new CsvConsumerForCatch(archive.getSampleCategoryModelPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForMarineLitter loadMarineLitters() { - CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(archive.getMarineLitterPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForIndividualObservation loadIndividualObservations() { - CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(archive.getIndividualObservationPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForAccidentalCatch loadAccidentalCatches() { - CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(archive.getAccidentalCatchPath(), csvSeparator, this); - return consumer; - } - - public CsvConsumerForTemporaryGear loadTemporaryGears() { - CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(archive.getTemporaryReferentialGearsPath(), csvSeparator); - return consumer; - } - - public CsvConsumerForTemporaryPerson loadTemporaryPersons() { - CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(archive.getTemporaryReferentialPersonsPath(), csvSeparator); - return consumer; - } - - public CsvConsumerForTemporarySpecies loadTemporarySpecies() { - CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(archive.getTemporaryReferentialSpeciesPath(), csvSeparator); - return consumer; - } - - public CsvConsumerForTemporaryVessel loadTemporaryVessels() { - CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(archive.getTemporaryReferentialVesselsPath(), csvSeparator); - return consumer; - } - - public TuttiProtocol getOldProtocol() { - return oldProtocol; - } -} 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 ce2a6c4..8cc531b 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 @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRow, AccidentalCatchModel> { - public CsvConsumerForAccidentalCatch(Path file, char separator, GlobalImportContext importContext) { - super(file, AccidentalCatchModel.forImport(separator, importContext)); + public CsvConsumerForAccidentalCatch(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, AccidentalCatchModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<AccidentalCatchRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<AccidentalCatchRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } } \ No newline at end of file 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 dd87e52..d597d7b 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 @@ -1,12 +1,12 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.CatchModel; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +18,11 @@ import java.nio.file.Path; */ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { - public CsvConsumerForCatch(Path file, char separator, GlobalImportContext importContext) { - super(file, CatchModel.forImport(separator, importContext)); + public CsvConsumerForCatch(Path file, char separator, SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { + super(file, CatchModel.forImport(separator, sampleCategoryModel, parserFactory)); } - public void checkRow(ImportRow<CatchRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<CatchRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +32,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } 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 1937f19..5bfe65d 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 @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracteristicRow, GearCaracteristicModel> { - public CsvConsumerForGearCaracteristic(Path file, char separator, GlobalImportContext importContext) { - super(file, GearCaracteristicModel.forImport(separator, importContext)); + public CsvConsumerForGearCaracteristic(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, GearCaracteristicModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<GearCaracteristicRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<GearCaracteristicRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } 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 d9af30a..ed03845 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 @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualObservationRow, IndividualObservationModel> { - public CsvConsumerForIndividualObservation(Path file, char separator, GlobalImportContext importContext) { - super(file, IndividualObservationModel.forImport(separator, importContext)); + public CsvConsumerForIndividualObservation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, IndividualObservationModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<IndividualObservationRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<IndividualObservationRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } 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 c3f6ba4..d568ec3 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 @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, MarineLitterModel> { - public CsvConsumerForMarineLitter(Path file, char separator, GlobalImportContext importContext) { - super(file, MarineLitterModel.forImport(separator, importContext)); + public CsvConsumerForMarineLitter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, MarineLitterModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<MarineLitterRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<MarineLitterRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, Mar } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } 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 a33f92d..ac95852 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForOperation.java @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.OperationModel; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, OperationModel> { - public CsvConsumerForOperation(Path file, char separator, GlobalImportContext importContext) { - super(file, OperationModel.forImport(separator, importContext)); + public CsvConsumerForOperation(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, OperationModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<OperationRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<OperationRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, Operation } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } 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 0fbf829..f3a790f 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 @@ -1,12 +1,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import java.nio.file.Path; @@ -18,11 +17,11 @@ import java.nio.file.Path; */ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, ParameterModel> { - public CsvConsumerForParameter(Path file, char separator, GlobalImportContext importContext) { - super(file, ParameterModel.forImport(separator, importContext)); + public CsvConsumerForParameter(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, ParameterModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<ParameterRow> row, GlobalImportContext importContext, GenericFormatImportResult result) { + public void checkRow(ImportRow<ParameterRow> row, GenericFormatImportContext importContext) { if (row.isValid()) { @@ -32,12 +31,7 @@ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, Parameter } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } 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 ebe7072..661bc05 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 @@ -1,7 +1,7 @@ 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.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; @@ -15,8 +15,8 @@ import java.nio.file.Path; */ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, SampleCategoryModel> { - public CsvConsumerForSampleCategory(Path file, char separator, GlobalImportContext importContext) { - super(file, SampleCategoryModel.forImport(separator, importContext)); + public CsvConsumerForSampleCategory(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, SampleCategoryModel.forImport(separator, parserFactory)); } } \ 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 index 4ac3416..5490b17 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 @@ -3,12 +3,11 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportResult; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import org.nuiton.csv.ImportRow; -import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.validator.NuitonValidatorResult; import java.nio.file.Path; @@ -21,11 +20,11 @@ import java.nio.file.Path; */ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { - public CsvConsumerForSurvey(Path file, char separator, GlobalImportContext importContext) { - super(file, SurveyModel.forImport(separator, importContext)); + public CsvConsumerForSurvey(Path file, char separator, GenericFormatImportEntityParserFactory parserFactory) { + super(file, SurveyModel.forImport(separator, parserFactory)); } - public void checkRow(ImportRow<SurveyRow> row, GlobalImportContext importContext, GenericFormatImportResult result, ValidationService validationService) { + public void checkRow(ImportRow<SurveyRow> row, GenericFormatImportContext importContext, ValidationService validationService) { if (row.isValid()) { @@ -50,12 +49,7 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { } - if (!row.isValid()) { - - String message = rowErrorsToExceptionMessage(row); - throw new ApplicationBusinessException(message); - - } + reportError(row); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index 063cc58..9af43f2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * TODO @@ -47,10 +47,10 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden } - public static AccidentalCatchModel forImport(char separator, GlobalImportContext globalImportContext) { + public static AccidentalCatchModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { AccidentalCatchModel importModel = new AccidentalCatchModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -92,7 +92,7 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -105,10 +105,10 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newIgnoredColumn("Rang_Engin"); newIgnoredColumn("Id_Lot"); - newMandatoryColumn("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("Code_Taxon", AccidentalBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", AccidentalCatchRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 9f50a9f..c162301 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -33,7 +33,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import org.apache.commons.beanutils.PropertyUtils; import org.nuiton.csv.ValueSetter; @@ -57,10 +57,10 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { } - public static CatchModel forImport(char separator, GlobalImportContext globalImportContext) { + public static CatchModel forImport(char separator, SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { CatchModel importModel = new CatchModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(sampleCategoryModel, parserFactory); return importModel; } @@ -137,9 +137,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { } - protected void forImport(GlobalImportContext globalImportContext) { - - SampleCategoryModel sampleCategoryModel = globalImportContext.getSampleCategoryModel(); + protected void forImport(SampleCategoryModel sampleCategoryModel, GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -151,7 +149,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newIgnoredColumn("Engin"); newIgnoredColumn("Rang_Engin"); - newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("Code_Taxon", SpeciesBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Code_Espece_Campagne"); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); @@ -173,7 +171,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { // mensuration - newMandatoryColumn("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_Longueur"); newMandatoryColumn("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); newMandatoryColumn("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index e8216a3..a000522 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * To export gear caracteristics. @@ -45,10 +45,10 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } - public static GearCaracteristicModel forImport(char separator, GlobalImportContext globalImportContext) { + public static GearCaracteristicModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { GearCaracteristicModel importModel = new GearCaracteristicModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -85,7 +85,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -95,11 +95,11 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC //FIXME newMandatoryColumn("Rang_Engin", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); - newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); - newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getGearParser()); + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, parserFactory.getMandatoryGearParser()); newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index 5222f4b..81f60e1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a individual observation export. @@ -47,10 +47,10 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I } - public static IndividualObservationModel forImport(char separator, GlobalImportContext globalImportContext) { + public static IndividualObservationModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { IndividualObservationModel importModel = new IndividualObservationModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -93,7 +93,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -106,10 +106,10 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newIgnoredColumn("Rang_Engin"); newIgnoredColumn("Id_Lot"); - newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, globalImportContext.getSpeciesParser()); + newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java index 1af9d26..4daee37 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/MarineLitterModel.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a marine litter export. @@ -47,10 +47,10 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt } - public static MarineLitterModel forImport(char separator, GlobalImportContext globalImportContext) { + public static MarineLitterModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { MarineLitterModel importModel = new MarineLitterModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -91,7 +91,7 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -109,8 +109,8 @@ public class MarineLitterModel extends AbstractTuttiImportExportModel<MarineLitt newMandatoryColumn("Poids", MarineLitterBatch.PROPERTY_WEIGHT, TuttiCsvUtil.FLOAT); newMandatoryColumn("Commentaire", MarineLitterBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Categorie_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, globalImportContext.getMarineLitterCategoryValueParser()); - newMandatoryColumn("Categorie_Taille_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, globalImportContext.getMarineLitterSizeCategoryValueParser()); + newMandatoryColumn("Categorie_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, parserFactory.getMarineLitterCategoryValueParser()); + newMandatoryColumn("Categorie_Taille_Id", MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, parserFactory.getMarineLitterSizeCategoryValueParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java index 98126c6..9c954a9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/OperationModel.java @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a operation export. @@ -48,10 +48,10 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - public static OperationModel forImport(char separator, GlobalImportContext globalImportContext) { + public static OperationModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { OperationModel importModel = new OperationModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -169,7 +169,7 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -256,12 +256,12 @@ public class OperationModel extends AbstractTuttiImportExportModel<OperationRow> newMandatoryColumn("Poids_Total_Macro_Dechet", OperationRow.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_NULL_TO_9); newIgnoredColumn("Poids_Total_Macro_Dechet_Calcule"); - newMandatoryColumn("Navire_Id", FishingOperation.PROPERTY_VESSEL, globalImportContext.getVesselParser()); - newMandatoryColumn("Strate_Id", FishingOperation.PROPERTY_STRATA, globalImportContext.getFishingOperationStrataParser()); - newMandatoryColumn("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, globalImportContext.getFishingOperationSubStrataParser()); - newMandatoryColumn("Localite_Id", FishingOperation.PROPERTY_LOCATION, globalImportContext.getFishingOperationLocationParser()); - newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, globalImportContext.getListPersonParser()); - newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, globalImportContext.getListVesselParser()); + newMandatoryColumn("Navire_Id", FishingOperation.PROPERTY_VESSEL, parserFactory.getVesselParser()); + newMandatoryColumn("Strate_Id", FishingOperation.PROPERTY_STRATA, parserFactory.getFishingOperationStrataParser()); + newMandatoryColumn("Sous_Strate_Id", FishingOperation.PROPERTY_SUB_STRATA, parserFactory.getFishingOperationSubStrataParser()); + newMandatoryColumn("Localite_Id", FishingOperation.PROPERTY_LOCATION, parserFactory.getFishingOperationLocationParser()); + newMandatoryColumn("Saisisseur_Id", FishingOperation.PROPERTY_RECORDER_PERSON, parserFactory.getListPersonParser()); + newMandatoryColumn("Navire_Associe_Id", FishingOperation.PROPERTY_SECONDARY_VESSEL, parserFactory.getListVesselParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index f9db65d..856bff8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a parameter export. @@ -45,10 +45,10 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> } - public static ParameterModel forImport(char separator, GlobalImportContext globalImportContext) { + public static ParameterModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { ParameterModel importModel = new ParameterModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -84,7 +84,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -94,7 +94,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java index bb63285..c86ac2f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryModel.java @@ -3,7 +3,7 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Created on 2/8/15. @@ -21,10 +21,10 @@ public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCa } - public static SampleCategoryModel forImport(char separator, GlobalImportContext globalImportContext) { + public static SampleCategoryModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { SampleCategoryModel importModel = new SampleCategoryModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -50,11 +50,11 @@ public class SampleCategoryModel extends AbstractTuttiImportExportModel<SampleCa } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn(SampleCategoryRow.PROPERTY_CODE); newMandatoryColumn(SampleCategoryRow.PROPERTY_ORDER, TuttiCsvUtil.INTEGER); - newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, globalImportContext.getCaracteristicParser()); + newMandatoryColumn(SampleCategoryRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java index 7b3a4a5..b33b316 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SurveyModel.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; -import fr.ifremer.tutti.service.genericformat.GlobalImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; /** * Model of a survey export. @@ -45,10 +45,10 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } - public static SurveyModel forImport(char separator, GlobalImportContext globalImportContext) { + public static SurveyModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) { SurveyModel importModel = new SurveyModel(separator); - importModel.forImport(globalImportContext); + importModel.forImport(parserFactory); return importModel; } @@ -93,7 +93,7 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { } - protected void forImport(GlobalImportContext globalImportContext) { + protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newIgnoredColumn("Serie"); @@ -109,11 +109,11 @@ public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> { newIgnoredColumn("Resp_Salle_Tri"); newMandatoryColumn("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); - newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, globalImportContext.getVesselParser()); - newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, globalImportContext.getHarbourParser()); - newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, globalImportContext.getHarbourParser()); - newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, globalImportContext.getListPersonParser()); - newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, globalImportContext.getListPersonParser()); + newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, parserFactory.getVesselParser()); + newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, parserFactory.getHarbourParser()); + newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, parserFactory.getHarbourParser()); + newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, parserFactory.getListPersonParser()); + newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, parserFactory.getListPersonParser()); } diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 4ad1f0e..bad7cf5 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -7,25 +7,25 @@ tutti.csv.import.error.on.field=Colonne %s \: %s tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s tutti.error.messages=Erreurs :\n %s tutti.fatal.messages=Erreurs critiques :\n %s -tutti.genericFormat.import.accidentalCatches= -tutti.genericFormat.import.catches= -tutti.genericFormat.import.cruises= +tutti.genericFormat.import.accidentalCatches=Import des captures accidentelles +tutti.genericFormat.import.catches=Import des captures +tutti.genericFormat.import.cruises=Import des campagnes tutti.genericFormat.import.error.cruiseAlreadyExist= tutti.genericFormat.import.error.cruiseNotValid= -tutti.genericFormat.import.gearCaracteristics= -tutti.genericFormat.import.individualObservations= -tutti.genericFormat.import.marineLitters= -tutti.genericFormat.import.operations= -tutti.genericFormat.import.parameters= -tutti.genericFormat.import.protocol= -tutti.genericFormat.import.sampleCategoryModel= -tutti.genericFormat.import.temporaryGears= -tutti.genericFormat.import.temporaryPersons= -tutti.genericFormat.import.temporarySpecies= -tutti.genericFormat.import.temporaryVessels= +tutti.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin +tutti.genericFormat.import.individualObservations=Import des observations individuelles +tutti.genericFormat.import.marineLitters=Import des macro-déchets +tutti.genericFormat.import.operations=Import des traits +tutti.genericFormat.import.parameters=Import des paramètres de trait +tutti.genericFormat.import.protocol=Import d'un nouveau protocol %s +tutti.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation +tutti.genericFormat.import.temporaryGears=Import des références temporaires d'engins +tutti.genericFormat.import.temporaryPersons=Import des références temporaires de personnes +tutti.genericFormat.import.temporarySpecies=Import des références temporaires de Taxons +tutti.genericFormat.import.temporaryVessels=Import des références temporaires de navires tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique \:\n%s -tutti.genericFormat.load.protocol= -tutti.genericFormat.reuse.protocol= +tutti.genericFormat.load.protocol=Import du protocol +tutti.genericFormat.reuse.protocol=Réutilisation du protocol existant %s tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.