branch feature/6688 updated (39c37e4 -> 150c45e)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git from 39c37e4 renommage de la methode de validation d'une ligne + ajout de la methode de preparation pour les autres fichiers new 150c45e ca continue l'import... The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 150c45eb905551c9182b600095f797c2bdd001a6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 17:10:54 2015 +0100 ca continue l'import... Summary of changes: .../genericformat/GenericFormatImportContext.java | 54 +++++++++++++++------- .../genericformat/GenericFormatImportResult.java | 19 ++++++++ .../genericformat/GenericFormatImportService.java | 52 +++++++++++++++------ .../GenericformatImportPersitenceHelper.java | 31 +++++++++++-- .../resources/i18n/tutti-service_en_GB.properties | 7 +++ .../resources/i18n/tutti-service_fr_FR.properties | 10 ++-- 6 files changed, 136 insertions(+), 37 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 150c45eb905551c9182b600095f797c2bdd001a6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 17:10:54 2015 +0100 ca continue l'import... --- .../genericformat/GenericFormatImportContext.java | 54 +++++++++++++++------- .../genericformat/GenericFormatImportResult.java | 19 ++++++++ .../genericformat/GenericFormatImportService.java | 52 +++++++++++++++------ .../GenericformatImportPersitenceHelper.java | 31 +++++++++++-- .../resources/i18n/tutti-service_en_GB.properties | 7 +++ .../resources/i18n/tutti-service_fr_FR.properties | 10 ++-- 6 files changed, 136 insertions(+), 37 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 index a0bfceb..9afba1a 100644 --- 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 @@ -3,6 +3,8 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.PersistenceService; @@ -23,6 +25,7 @@ import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpec import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; import java.io.Closeable; import java.io.IOException; @@ -50,12 +53,12 @@ public class GenericFormatImportContext implements Closeable { private final GenericformatImportPersitenceHelper persitenceHelper; - public GenericFormatImportContext(GenericFormatImportRequest importRequest, ProgressionModel progressionModel, PersistenceService persistenceService) { + public GenericFormatImportContext(GenericFormatImportRequest importRequest, ProgressionModel progressionModel, PersistenceService persistenceService, Decorator<Cruise> cruiseDecorator, Decorator<FishingOperation> fishingOperationDecorator) { this.importRequest = importRequest; this.progressionModel = progressionModel; this.importResult = new GenericFormatImportResult(importRequest); this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest, importResult); - this.persitenceHelper = new GenericformatImportPersitenceHelper(this, persistenceService); + this.persitenceHelper = new GenericformatImportPersitenceHelper(this, persistenceService, cruiseDecorator, fishingOperationDecorator); } public GenericFormatImportRequest getImportRequest() { @@ -89,21 +92,6 @@ public class GenericFormatImportContext implements Closeable { } - public boolean isCruiseAlreadyImported(Cruise cruise) { - - boolean equals = false; - for (Cruise existingCruise : importResult.getImportedCruises()) { - - equals = Cruises.equals(cruise, existingCruise); - if (equals) { - break; - } - - } - return equals; - - } - public Cruise getImportedCruise(Cruise importRowCruise) { Cruise result = null; @@ -120,6 +108,13 @@ public class GenericFormatImportContext implements Closeable { } + public boolean isCruiseAlreadyImported(Cruise cruise) { + + Cruise importedCruise = getImportedCruise(cruise); + return importedCruise !=null; + + } + public Gear getGear(Cruise cruise, Gear gear, int rankOrder) { Gear result = null; @@ -137,6 +132,31 @@ public class GenericFormatImportContext implements Closeable { } + public FishingOperation getImportedFishingOperation(FishingOperation importRowFishingOperation) { + + Cruise cruise = importRowFishingOperation.getCruise(); + + FishingOperation result = null; + for (FishingOperation importedFishingOperation : importResult.getImportedFishingOperations(cruise)) { + + boolean equals = FishingOperations.equals(importRowFishingOperation, importedFishingOperation); + if (equals) { + result = importedFishingOperation; + break; + } + + } + return result; + + } + + public boolean isFishingOperationAlreadyImported(FishingOperation fishingOperation) { + + FishingOperation importedFishingOperation = getImportedFishingOperation(fishingOperation); + return importedFishingOperation!=null; + + } + public CsvConsumerForSampleCategory loadSampleCategories() { CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importEntityParserFactory); return consumer; 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 b551a79..24471a5 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 @@ -1,7 +1,11 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; @@ -21,6 +25,8 @@ public class GenericFormatImportResult { private final Set<Cruise> importedCruises; + private final Multimap<Cruise, FishingOperation> importedFishingOperations; + private final Set<String> errors; private TuttiProtocol protocol; @@ -39,6 +45,7 @@ public class GenericFormatImportResult { this.importRequest = importRequest; this.importedCruises = new LinkedHashSet<>(); this.errors = new LinkedHashSet<>(); + this.importedFishingOperations = LinkedHashMultimap.create(); } public GenericFormatImportRequest getImportRequest() { @@ -49,6 +56,14 @@ public class GenericFormatImportResult { return ImmutableSet.copyOf(importedCruises); } + public Multimap<Cruise, FishingOperation> getImportedFishingOperations() { + return ImmutableSetMultimap.copyOf(importedFishingOperations); + } + + public Set<FishingOperation> getImportedFishingOperations(Cruise cruise) { + return ImmutableSet.copyOf(importedFishingOperations.get(cruise)); + } + public TuttiProtocol getProtocol() { return protocol; } @@ -61,6 +76,10 @@ public class GenericFormatImportResult { importedCruises.add(cruise); } + public void addImportedFishingOperation(FishingOperation fishingOperation) { + importedFishingOperations.put(fishingOperation.getCruise(), fishingOperation); + } + public void addError(String error) { errors.add(error); } 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 c584601..9c6625c 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 @@ -2,6 +2,8 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; @@ -52,6 +54,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -80,8 +83,6 @@ public class GenericFormatImportService extends AbstractTuttiService { protected WeightComputingService weightComputingService; - protected DecoratorService decoratorService; - protected ReferentialTemporaryGearService referentialTemporaryGearService; protected ReferentialTemporaryPersonService referentialTemporaryPersonService; @@ -92,12 +93,15 @@ public class GenericFormatImportService extends AbstractTuttiService { protected ProtocolImportExportService protocolImportExportService; + protected Decorator<FishingOperation> fishingOperationDecorator; + + protected Decorator<Cruise> cruiseDecorator; + @Override public void setServiceContext(TuttiServiceContext context) { super.setServiceContext(context); persistenceService = getService(PersistenceService.class); - decoratorService = getService(DecoratorService.class); validationService = getService(ValidationService.class); weightComputingService = getService(WeightComputingService.class); referentialTemporaryGearService = getService(ReferentialTemporaryGearService.class); @@ -106,6 +110,10 @@ public class GenericFormatImportService extends AbstractTuttiService { referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); protocolImportExportService = getService(ProtocolImportExportService.class); + DecoratorService decoratorService = getService(DecoratorService.class); + cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); + fishingOperationDecorator = decoratorService.getDecoratorByType(FishingOperation.class); + } public int getImportProgramNbSteps(File importFile) { @@ -147,7 +155,7 @@ public class GenericFormatImportService extends AbstractTuttiService { program, context.getSampleCategoryModel()); - try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, progressionModel, persistenceService)) { + try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, progressionModel, persistenceService, cruiseDecorator, fishingOperationDecorator)) { GenericFormatImportResult result = new GenericFormatImportResult(request); @@ -186,7 +194,7 @@ public class GenericFormatImportService extends AbstractTuttiService { int nbCategories = 0; for (ImportRow<SampleCategoryRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); nbCategories++; } @@ -403,7 +411,7 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { for (ImportRow<SurveyRow> row : consumer) { - consumer.checkRow(row, importContext, validationService); + consumer.validateRow(row, importContext, validationService); consumer.prepareRowForPersist(row); @@ -426,7 +434,7 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { for (ImportRow<GearCaracteristicRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); consumer.prepareRowForPersist(row); @@ -449,7 +457,15 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForOperation consumer = importContext.loadOperations()) { for (ImportRow<OperationRow> row : consumer) { - consumer.checkRow(row, importContext,validationService); + consumer.validateRow(row, importContext, validationService); + + consumer.prepareRowForPersist(row); + + OperationRow bean = row.getBean(); + + importContext.getPersitenceHelper().persistFishingOperation(bean.getFishingOperation()); + + importContext.getPersitenceHelper().persistCatchBatch(bean.getCatchBatch()); } } catch (IOException e) { @@ -468,7 +484,9 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForParameter consumer = importContext.loadParameters()) { for (ImportRow<ParameterRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); + + consumer.prepareRowForPersist(row); } } catch (IOException e) { @@ -487,7 +505,9 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForCatch consumer = importContext.loadCatches()) { for (ImportRow<CatchRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); + + consumer.prepareRowForPersist(row); } } catch (IOException e) { @@ -506,7 +526,9 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { for (ImportRow<AccidentalCatchRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); + + consumer.prepareRowForPersist(row); } } catch (IOException e) { @@ -525,7 +547,9 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { for (ImportRow<IndividualObservationRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); + + consumer.prepareRowForPersist(row); } } catch (IOException e) { @@ -544,7 +568,9 @@ public class GenericFormatImportService extends AbstractTuttiService { try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { for (ImportRow<MarineLitterRow> row : consumer) { - consumer.checkRow(row, importContext); + consumer.validateRow(row, importContext); + + consumer.prepareRowForPersist(row); } } catch (IOException e) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java index 8739011..0ec9ba7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java @@ -1,12 +1,15 @@ package fr.ifremer.tutti.service.genericformat; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.PersistenceService; import org.apache.commons.collections4.MapUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; import java.util.Set; @@ -25,15 +28,21 @@ public class GenericformatImportPersitenceHelper { private final PersistenceService persistenceService; - public GenericformatImportPersitenceHelper(GenericFormatImportContext importContext, PersistenceService persistenceService) { + private final Decorator<Cruise> cruiseDecorator; + + private final Decorator<FishingOperation> fishingOperationDecorator; + + public GenericformatImportPersitenceHelper(GenericFormatImportContext importContext, PersistenceService persistenceService, Decorator<Cruise> cruiseDecorator, Decorator<FishingOperation> fishingOperationDecorator) { this.importContext = importContext; this.persistenceService = persistenceService; + this.cruiseDecorator = cruiseDecorator; + this.fishingOperationDecorator = fishingOperationDecorator; } public void persistCruise(Cruise cruise) { if (log.isInfoEnabled()) { - log.info("Persist cruise: " + cruise.getName()); + log.info("Persist cruise: " + cruiseDecorator.toString(cruise)); } Cruise persistedCruise = persistenceService.createCruise(cruise); importContext.getImportResult().addImportedCruise(persistedCruise); @@ -52,7 +61,7 @@ public class GenericformatImportPersitenceHelper { if (MapUtils.isNotEmpty(caracteristics)) { if (log.isInfoEnabled()) { - log.info("Persist " + caracteristics.size() + " gear caracteristics for gear: " + gear.getName() + " of cruise: " + cruise.getName()); + log.info("Persist " + caracteristics.size() + " gear caracteristics for gear: " + gear.getName() + " of cruise: " + cruiseDecorator.toString(cruise)); } persistenceService.saveGearCaracteristics(gear, cruise); @@ -63,4 +72,20 @@ public class GenericformatImportPersitenceHelper { } + public void persistFishingOperation(FishingOperation fishingOperation) { + + if (log.isInfoEnabled()) { + log.info("Persist fishing Operation: " + fishingOperationDecorator.toString(fishingOperation)); + } + + } + + public void persistCatchBatch(CatchBatch catchBatch) { + + if (log.isInfoEnabled()) { + log.info("Persist catchBatch of fishing Operation: " + fishingOperationDecorator.toString(catchBatch.getFishingOperation())); + } + + } + } diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 1a5c17b..dba959a 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -16,7 +16,12 @@ tutti.genericFormat.import.accidentalCatches= tutti.genericFormat.import.catches= tutti.genericFormat.import.cruises= tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.error.cruiseAlreadyImported= +tutti.genericFormat.import.error.cruiseNotFound= tutti.genericFormat.import.error.cruiseNotValid= +tutti.genericFormat.import.error.fishingOperationAlreadyImported= +tutti.genericFormat.import.error.fishingOperationNotValid= +tutti.genericFormat.import.error.gearNotFoundInCruise= tutti.genericFormat.import.gearCaracteristics= tutti.genericFormat.import.individualObservations= tutti.genericFormat.import.marineLitters= @@ -103,8 +108,10 @@ tutti.service.bigfinImport.warning.speciesBatch.tooCategorized= tutti.service.bigfinimport.error.no.protocol= tutti.service.compressZipFile.error= tutti.service.context.serviceInstanciation.error= +tutti.service.csv.caracteristic.qualitativeValue.notFound= tutti.service.csv.parse.entityNotFound= tutti.service.csv.parse.foreignEntityNotFound= +tutti.service.csv.parse.qualitativeValueError= tutti.service.cvs.format.error= tutti.service.cvs.mandatory.value= tutti.service.error.species.null= 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 3cabedf..5bfa000 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 @@ -12,17 +12,17 @@ tutti.genericFormat.import.catches=Import des captures tutti.genericFormat.import.cruises=Import des campagnes tutti.genericFormat.import.error.cruiseAlreadyExist=Il existe déjà une campagne avec ce nom %s tutti.genericFormat.import.error.cruiseAlreadyImported=La campagne avec ce nom %s a déjà été importée -tutti.genericFormat.import.error.cruiseNotFound=La campagne (année: %s, série: %s, série partielle %s) n'existe pas -tutti.genericFormat.import.error.gearNotFoundInCruise=L'engin %s (position %s) non trouvé dans la campagne (année: %s, série: %s, série partielle %s) +tutti.genericFormat.import.error.cruiseNotFound=La campagne (année\: %s, série\: %s, série partielle %s) n'existe pas +tutti.genericFormat.import.error.cruiseNotValid= +tutti.genericFormat.import.error.fishingOperationAlreadyImported=Un trait %s - %s - %s -%s a déjà été importé dans la campagne %s tutti.genericFormat.import.error.fishingOperationNotValid=La campagne n'est pas valide \:\n%s +tutti.genericFormat.import.error.gearNotFoundInCruise=L'engin %s (position %s) non trouvé dans la campagne (année\: %s, série\: %s, série partielle %s) tutti.genericFormat.import.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.service.csv.parse.qualitativeValueError=La valeur %s de la caractéristique %s n'est pas valide: %s -tutti.service.csv.caracteristic.qualitativeValue.notFound=La caractéristique qualitative %s n'a pas de value d'id %s tutti.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation tutti.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching=L'identifiant de la caractéristique devrait être %s, mais vaut %s tutti.genericFormat.import.sampleCategoryModel.error.codeNotMatching=Le code devrait être %s, mais vaut %s @@ -97,8 +97,10 @@ tutti.service.bigfinImport.warning.speciesBatch.tooCategorized=Le lot '<strong>% tutti.service.bigfinimport.error.no.protocol=Impossible de faire un import Bigfin sans protocol. tutti.service.compressZipFile.error=Erreur lors de la compression du dossier %1s dans le fichier %2s tutti.service.context.serviceInstanciation.error=Erreur lors de l'instanciation du service %s +tutti.service.csv.caracteristic.qualitativeValue.notFound=La caractéristique qualitative %s n'a pas de value d'id %s tutti.service.csv.parse.entityNotFound=L'entité de type %1s avec la propriété %2s de valeur %3s n'a pas été trouvée tutti.service.csv.parse.foreignEntityNotFound=L'entité de type %1s avec l'identifiant %3s n'a pas été trouvée +tutti.service.csv.parse.qualitativeValueError=La valeur %s de la caractéristique %s n'est pas valide\: %s tutti.service.cvs.format.error=Erreur lors du formatage de la valeur %s tutti.service.cvs.mandatory.value=Valeur obligatoire tutti.service.error.species.null=Taxon non trouvé -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm