branch develop updated (ed0767c -> c636f00)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from ed0767c fixes #6805: [REFERENTIEL] Incohérences lors de la modification des référentiels temporaires Merge branch 'feature/6805' into develop new d35b1de faire en sorte que les tests continue de fonctionner malgres le reusinage sur les départements new 7d963d7 pouvoir changer le modèle de catérogies depuis le service de persitence new 6f504b4 ajout test pour les parametres + suppression du test de validite des catégories new 8eb2beb reusinage du context + ajout du modèle de catégorisation dans le context + nettoyage a la fin de la validation ou import new c636f00 fixes #6868: [IMPORT GENERIQUE] Ne plus interferer avec le modèle de catégorisation de l'application lors de l'import générique Merge branch 'feature/6868' into develop The 5 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 c636f0097109a77bdf2b04228e005e2627c22518 Merge: ed0767c 8eb2beb Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:15:40 2015 +0100 fixes #6868: [IMPORT GENERIQUE] Ne plus interferer avec le modèle de catégorisation de l'application lors de l'import générique Merge branch 'feature/6868' into develop commit 8eb2beb9b45b0f693db06d2cf5b27066a8d05f4f Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:15:06 2015 +0100 reusinage du context + ajout du modèle de catégorisation dans le context + nettoyage a la fin de la validation ou import commit 6f504b476c71fb8402be3a91dbaa64b22c50f372 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:13:47 2015 +0100 ajout test pour les parametres + suppression du test de validite des catégories commit 7d963d747ed5006c103b8fc31a78369723f6c287 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:13:03 2015 +0100 pouvoir changer le modèle de catérogies depuis le service de persitence commit d35b1de22067b0a072069fd18538210657b07dfb Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:12:33 2015 +0100 faire en sorte que les tests continue de fonctionner malgres le reusinage sur les départements Summary of changes: .../tutti/persistence/test/DatabaseResource.java | 11 + .../ifremer/tutti/service/PersistenceService.java | 6 + ...ntext.java => GenericFormatContextSupport.java} | 45 +- .../genericformat/GenericFormatImportContext.java | 478 +-------------------- .../GenericFormatImportEntityParserFactory.java | 4 +- .../genericformat/GenericFormatImportRequest.java | 10 +- .../genericformat/GenericFormatImportService.java | 14 +- .../GenericFormatImportValidationDataContext.java | 4 +- .../GenericFormatImportValidationHelper.java | 8 +- .../genericformat/GenericFormatResultSupport.java | 16 +- .../GenericFormatValidateFileContext.java | 13 +- .../consumer/CsvConsumerForAccidentalCatch.java | 4 +- .../consumer/CsvConsumerForCatch.java | 4 +- .../consumer/CsvConsumerForGearCaracteristic.java | 4 +- .../CsvConsumerForIndividualObservation.java | 4 +- .../consumer/CsvConsumerForMarineLitter.java | 4 +- .../consumer/CsvConsumerForOperation.java | 4 +- .../consumer/CsvConsumerForParameter.java | 4 +- .../consumer/CsvConsumerForSampleCategory.java | 43 +- .../consumer/CsvConsumerForSurvey.java | 4 +- .../genericformat/csv/SampleCategoryRow.java | 4 + .../importactions/ImportActionSupport.java | 6 +- .../importactions/ImportProtocolAction.java | 4 +- .../importactions/ImportReferentialGearAction.java | 4 +- .../ImportReferentialPersonAction.java | 4 +- .../ImportReferentialSpeciesAction.java | 4 +- .../ImportReferentialVesselAction.java | 4 +- ...yAction.java => ImpotSampleCategoryAction.java} | 68 +-- .../importactions/RestoreAfterImportAction.java | 53 +++ .../importactions/RestoreAfterValidateAction.java | 86 ++++ .../ValidateAccidentalCatchAction.java | 4 +- .../importactions/ValidateCatchAction.java | 4 +- .../ValidateGearCaracteristicAction.java | 4 +- .../ValidateIndividualObservationAction.java | 4 +- .../importactions/ValidateMarineLitterAction.java | 4 +- .../importactions/ValidateOperationAction.java | 4 +- .../importactions/ValidateParameterAction.java | 4 +- .../importactions/ValidateSurveyAction.java | 4 +- .../resources/i18n/tutti-service_fr_FR.properties | 6 +- .../ifremer/tutti/service/ServiceDbResource.java | 17 + .../GenericFormatImportServiceValidTest.java | 55 ++- .../{default => parameter}/parameter.csv | 0 42 files changed, 381 insertions(+), 650 deletions(-) copy tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/{GenericFormatImportContext.java => GenericFormatContextSupport.java} (94%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/{ValidateSampleCategoryAction.java => ImpotSampleCategoryAction.java} (56%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterImportAction.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java copy tutti-service/src/test/resources/genericFormat/{default => parameter}/parameter.csv (100%) -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit d35b1de22067b0a072069fd18538210657b07dfb Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:12:33 2015 +0100 faire en sorte que les tests continue de fonctionner malgres le reusinage sur les départements --- .../tutti/persistence/test/DatabaseResource.java | 11 +++++++++++ .../fr/ifremer/tutti/service/ServiceDbResource.java | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java index 28d38f6..cdad907 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java @@ -84,6 +84,9 @@ public class DatabaseResource implements TestRule { private boolean destroyResources; + // To use legacy person departement TODO Remove this when all test db will use ng departements (says never!) + private boolean useLegacyPersonDepartement = true; + public static DatabaseResource readDb() { return new DatabaseResource(""); } @@ -158,6 +161,14 @@ public class DatabaseResource implements TestRule { return writeDb; } + public boolean isUseLegacyPersonDepartement() { + return useLegacyPersonDepartement; + } + + public void setUseLegacyPersonDepartement(boolean useLegacyPersonDepartement) { + this.useLegacyPersonDepartement = useLegacyPersonDepartement; + } + @Override public Statement apply(final Statement base, final Description description) { diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java index b2f3788..bf9e553 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java @@ -25,6 +25,8 @@ package fr.ifremer.tutti.service; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.io.Files; +import fr.ifremer.adagio.core.dao.administration.user.DepartmentCode; +import fr.ifremer.adagio.core.dao.administration.user.DepartmentId; import fr.ifremer.tutti.TuttiConfiguration; import fr.ifremer.tutti.TuttiConfigurationOption; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -132,6 +134,21 @@ public class ServiceDbResource extends DatabaseResource { counts.put(type, count); return type.getSimpleName() + "_" + count; } + + @Override + public <S extends TuttiService> S getService(Class<S> serviceType) { + S service = super.getService(serviceType); + if (PersistenceService.class.equals(serviceType) && isUseLegacyPersonDepartement()) { + + if (log.isWarnEnabled()) { + log.warn("Use legacy departement codes..."); + } + DepartmentId.UNKNOWN_RECORDER_DEPARTMENT.setValue(181); + DepartmentCode.INSIDE_PREFIX.setValue("PDG-"); + + } + return service; + } }; } -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 7d963d747ed5006c103b8fc31a78369723f6c287 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:13:03 2015 +0100 pouvoir changer le modèle de catérogies depuis le service de persitence --- .../src/main/java/fr/ifremer/tutti/service/PersistenceService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index d69b7c7..ca5828f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -46,6 +46,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; @@ -115,6 +116,10 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer init(); } + public void setSampleCategoryModel(SampleCategoryModel sampleCategoryModel) { + context.getDataContext().setSampleCategoryModel(sampleCategoryModel); + } + public List<Gear> retainTemporaryGearList(List<Gear> targetList) { List<Gear> sourceList = retainTemporaryList(Gears.IS_TEMPORARY, targetList); @@ -143,6 +148,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } + public <E extends TuttiEntity> List<E> retainTemporaryList(Predicate<E> isTemporaryPredicate, List<E> targetList) { List<E> sourceList = new ArrayList<>(); Iterator<E> iterator = targetList.iterator(); -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6f504b476c71fb8402be3a91dbaa64b22c50f372 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:13:47 2015 +0100 ajout test pour les parametres + suppression du test de validite des catégories --- .../GenericFormatImportServiceValidTest.java | 55 ++++++++++++++-------- .../genericFormat/parameter/parameter.csv | 12 +++++ 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java index 13e35ad..b074ae6 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java @@ -103,25 +103,6 @@ public class GenericFormatImportServiceValidTest extends GenericFormatImportServ } @Test - public void testSampleCategoryMismatch() throws IOException { - - GenericFormatValidateFileResult result = doValidate("sampleCategoryMismatch", PROGRAM_ID, - "empty", "sampleCategoryFormatMismatch"); - Assert.assertTrue(result.isArchiveLayoutValid()); - Assert.assertFalse(result.isValid()); - Assert.assertTrue(result.getSampleCategoryFileResult().isImported()); - Assert.assertFalse(result.getSampleCategoryFileResult().isValid()); - Assert.assertFalse(result.getReferentialTemporaryGearFileResult().isImported()); - Assert.assertFalse(result.getReferentialTemporaryPersonFileResult().isImported()); - Assert.assertFalse(result.getReferentialTemporarySpeciesFileResult().isImported()); - Assert.assertFalse(result.getReferentialTemporaryVesselFileResult().isImported()); - - Assert.assertFalse(result.getProtocolFileResult().isImported()); - Assert.assertTrue(result.getProtocolFileResult().isValid()); - - } - - @Test public void badTemporaryReferentialFormat() throws IOException { GenericFormatValidateFileResult result = doValidate("badTemporaryReferentialFormat", PROGRAM_ID, @@ -554,6 +535,42 @@ public class GenericFormatImportServiceValidTest extends GenericFormatImportServ } @Test + public void testOperationAndParameterImport() throws IOException { + + GenericFormatValidateFileResult result = doValidate("testOperationAndParameterImport", PROGRAM_ID, + "empty", "sampleCategory", "referentials", "protocol", + "survey", "gearCaracteristic", "operation", "parameters"); + + Assert.assertTrue(result.isArchiveLayoutValid()); + Assert.assertTrue(result.getSampleCategoryFileResult().isImported()); + Assert.assertTrue(result.getSampleCategoryFileResult().isValid()); + Assert.assertTrue(result.getSampleCategoryFileResult().isImported()); + Assert.assertTrue(result.getSampleCategoryFileResult().isValid()); + Assert.assertTrue(result.getReferentialTemporaryGearFileResult().isImported()); + Assert.assertTrue(result.getReferentialTemporaryGearFileResult().isValid()); + Assert.assertTrue(result.getReferentialTemporaryPersonFileResult().isImported()); + Assert.assertTrue(result.getReferentialTemporaryPersonFileResult().isValid()); + Assert.assertTrue(result.getReferentialTemporarySpeciesFileResult().isImported()); + Assert.assertTrue(result.getReferentialTemporarySpeciesFileResult().isValid()); + Assert.assertTrue(result.getReferentialTemporaryVesselFileResult().isImported()); + Assert.assertTrue(result.getReferentialTemporaryVesselFileResult().isValid()); + Assert.assertTrue(result.getProtocolFileResult().isImported()); + Assert.assertTrue(result.getProtocolFileResult().isValid()); + + Assert.assertTrue(result.isValid()); + + Assert.assertTrue(result.getSurveyFileResult().isImported()); + Assert.assertTrue(result.getSurveyFileResult().isValid()); + Assert.assertTrue(result.getGearCaracteristicFileResult().isImported()); + Assert.assertTrue(result.getGearCaracteristicFileResult().isValid()); + Assert.assertTrue(result.getOperationFileResult().isImported()); + Assert.assertTrue(result.getOperationFileResult().isValid()); + Assert.assertTrue(result.getParameterFileResult().isImported()); + Assert.assertTrue(result.getParameterFileResult().isValid()); + + } + + @Test public void testBadCatchFormat() throws IOException { GenericFormatValidateFileResult result = doValidate("testBadCatchFormat", PROGRAM_ID, diff --git a/tutti-service/src/test/resources/genericFormat/parameter/parameter.csv b/tutti-service/src/test/resources/genericFormat/parameter/parameter.csv new file mode 100644 index 0000000..7405f38 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/parameter/parameter.csv @@ -0,0 +1,12 @@ +Annee;Serie;Serie_Partielle;Code_Station;Id_Operation;Poche;Code_PMFM;Libelle_PMFM;Valeur;Type;Serie_Id;Valeur_Id +2014;Campagne EVHOE;1;S0820;1;1;828;Ouverture Horizontale aux pointes d'ailes - opération - totale - Instrument de bord;15.0;GEAR;CAM-EVHOE;15.0 +2014;Campagne EVHOE;1;S0820;1;1;979;Dispositif de sélectivité n°1 - engin - totale - Mesure méthode inconnue;Grille;GEAR;CAM-EVHOE;682 +2014;Campagne EVHOE;1;S0820;1;1;845;"Ecart type de la salinité - masse d'eau, eau brute - totale - Calculé, méthode inconnue";12.7;VESSEL;CAM-EVHOE;12.7 +2014;Campagne EVHOE;1;S0820;1;1;156;Frais de débarquement - navire - totale - Déclaration d'un professionnel;1222.0;VESSEL;CAM-EVHOE;1222.0 +2014;Campagne EVHOE;1;S0820;1;1;503;Le professionnel accepterait-il de répondre à une autre enquête ? - navire - totale - Enquête annuelle effectuée par un observateur;Non;VESSEL;CAM-EVHOE;847 +2014;Campagne EVHOE;1;S0981;156;1;828;Ouverture Horizontale aux pointes d'ailes - opération - totale - Instrument de bord;12.0;GEAR;CAM-EVHOE;12.0 +2014;Campagne EVHOE;1;S0981;156;1;289;Armature (drague) - engin - totale - Déclaration d'un professionnel;Dents;GEAR;CAM-EVHOE;362 +2014;Campagne EVHOE;1;S0981;156;1;979;Dispositif de sélectivité n°1 - engin - totale - Mesure méthode inconnue;TED - descriptif TED;GEAR;CAM-EVHOE;683 +2014;Campagne EVHOE;1;S0981;156;1;108;Coût total - navire - totale - Déclaration d'un professionnel;12.0;VESSEL;CAM-EVHOE;12.0 +2014;Campagne EVHOE;1;S0981;156;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;1.0;VESSEL;CAM-EVHOE;1.0 +2014;Campagne EVHOE;1;S0981;156;1;979;Dispositif de sélectivité n°1 - engin - totale - Mesure méthode inconnue;TED - descriptif TED;VESSEL;CAM-EVHOE;683 \ No newline at end of file -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 8eb2beb9b45b0f693db06d2cf5b27066a8d05f4f Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:15:06 2015 +0100 reusinage du context + ajout du modèle de catégorisation dans le context + nettoyage a la fin de la validation ou import --- ...ntext.java => GenericFormatContextSupport.java} | 45 +- .../genericformat/GenericFormatImportContext.java | 478 +-------------------- .../GenericFormatImportEntityParserFactory.java | 4 +- .../genericformat/GenericFormatImportRequest.java | 10 +- .../genericformat/GenericFormatImportService.java | 14 +- .../GenericFormatImportValidationDataContext.java | 4 +- .../GenericFormatImportValidationHelper.java | 8 +- .../genericformat/GenericFormatResultSupport.java | 16 +- .../GenericFormatValidateFileContext.java | 13 +- .../consumer/CsvConsumerForAccidentalCatch.java | 4 +- .../consumer/CsvConsumerForCatch.java | 4 +- .../consumer/CsvConsumerForGearCaracteristic.java | 4 +- .../CsvConsumerForIndividualObservation.java | 4 +- .../consumer/CsvConsumerForMarineLitter.java | 4 +- .../consumer/CsvConsumerForOperation.java | 4 +- .../consumer/CsvConsumerForParameter.java | 4 +- .../consumer/CsvConsumerForSampleCategory.java | 43 +- .../consumer/CsvConsumerForSurvey.java | 4 +- .../genericformat/csv/SampleCategoryRow.java | 4 + .../importactions/ImportActionSupport.java | 6 +- .../importactions/ImportProtocolAction.java | 4 +- .../importactions/ImportReferentialGearAction.java | 4 +- .../ImportReferentialPersonAction.java | 4 +- .../ImportReferentialSpeciesAction.java | 4 +- .../ImportReferentialVesselAction.java | 4 +- ...yAction.java => ImpotSampleCategoryAction.java} | 68 +-- .../importactions/RestoreAfterImportAction.java | 53 +++ .../importactions/RestoreAfterValidateAction.java | 86 ++++ .../ValidateAccidentalCatchAction.java | 4 +- .../importactions/ValidateCatchAction.java | 4 +- .../ValidateGearCaracteristicAction.java | 4 +- .../ValidateIndividualObservationAction.java | 4 +- .../importactions/ValidateMarineLitterAction.java | 4 +- .../importactions/ValidateOperationAction.java | 4 +- .../importactions/ValidateParameterAction.java | 4 +- .../importactions/ValidateSurveyAction.java | 4 +- .../resources/i18n/tutti-service_fr_FR.properties | 6 +- 37 files changed, 311 insertions(+), 631 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/GenericFormatContextSupport.java similarity index 94% copy from tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java copy to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java index 0aba098..6e32462 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/GenericFormatContextSupport.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; 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.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -74,7 +75,7 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.13 */ -public class GenericFormatImportContext implements Closeable { +public abstract class GenericFormatContextSupport implements Closeable { private final GenericFormatImportRequest importRequest; @@ -92,6 +93,8 @@ public class GenericFormatImportContext implements Closeable { private TuttiProtocol importedProtocol; + private SampleCategoryModel importedSampleCategoryModel; + private final GenericFormatCsvFileResult sampleCategoryFileResult; private final GenericFormatReferentialImportResult<Gear, Integer> referentialTemporaryGearFileResult; @@ -122,11 +125,13 @@ public class GenericFormatImportContext implements Closeable { private final Map<String, GenericFormatImportCruiseContext> cruiseContexts; - public GenericFormatImportContext(GenericFormatImportRequest importRequest, - ProgressionModel progressionModel, - PersistenceService persistenceService, - Decorator<Cruise> cruiseDecorator, - Decorator<FishingOperation> fishingOperationDecorator) { + protected abstract void onClose(); + + public GenericFormatContextSupport(GenericFormatImportRequest importRequest, + ProgressionModel progressionModel, + PersistenceService persistenceService, + Decorator<Cruise> cruiseDecorator, + Decorator<FishingOperation> fishingOperationDecorator) { Preconditions.checkNotNull(importRequest); Preconditions.checkNotNull(progressionModel); @@ -164,14 +169,22 @@ public class GenericFormatImportContext implements Closeable { } @Override - public void close() { + public final void close() { - validationHelper.close(); + try { + + onClose(); + + } finally { + + validationHelper.close(); + + for (GenericFormatImportCruiseContext cruiseContext : cruiseContexts.values()) { + cruiseContext.close(); + } + cruiseContexts.clear(); - for (GenericFormatImportCruiseContext cruiseContext : cruiseContexts.values()) { - cruiseContext.close(); } - cruiseContexts.clear(); } @@ -255,6 +268,14 @@ public class GenericFormatImportContext implements Closeable { this.importedProtocol = importedProtocol; } + public SampleCategoryModel getImportedSampleCategoryModel() { + return importedSampleCategoryModel; + } + + public void setImportedSampleCategoryModel(SampleCategoryModel importedSampleCategoryModel) { + this.importedSampleCategoryModel = importedSampleCategoryModel; + } + public Cruise getExistingCruise(Cruise cruise) { return importRequest.getExistingCruise(cruise); } @@ -353,7 +374,7 @@ public class GenericFormatImportContext implements Closeable { public CsvConsumerForCatch loadCatches(boolean failFast) { catchFileResult.setImported(true); catchFileResult.setLinesCount(importRequest.getArchive().getCatchPathLineCount()); - CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getCatchPath(), importRequest.getCsvSeparator(), importRequest.getSampleCategoryModel(), importEntityParserFactory, failFast); + CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getCatchPath(), importRequest.getCsvSeparator(), getImportedSampleCategoryModel(), importEntityParserFactory, failFast); return consumer; } 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 0aba098..037f8b9 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 @@ -24,103 +24,22 @@ package fr.ifremer.tutti.service.genericformat; * #L% */ -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.ProgressionModel; -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; 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.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -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.TuttiReferentialEntity; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.ValidationService; -import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; -import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; -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.RowWithCruiseContextSupport; -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.apache.commons.collections4.CollectionUtils; +import fr.ifremer.tutti.service.genericformat.importactions.RestoreAfterImportAction; import org.nuiton.decorator.Decorator; -import java.io.Closeable; -import java.io.File; -import java.io.Serializable; -import java.nio.file.Path; -import java.text.ParseException; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - /** * 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 ProgressionModel progressionModel; - - private final Decorator<Cruise> cruiseDecorator; - - private final Decorator<FishingOperation> fishingOperationDecorator; - - private final GenericFormatImportEntityParserFactory importEntityParserFactory; - - private final GenericFormatImportValidationHelper validationHelper; - - private Set<String> archiveLayoutErrors; - - private TuttiProtocol importedProtocol; - - private final GenericFormatCsvFileResult sampleCategoryFileResult; - - private final GenericFormatReferentialImportResult<Gear, Integer> referentialTemporaryGearFileResult; - - private final GenericFormatReferentialImportResult<Person, Integer> referentialTemporaryPersonFileResult; - - private final GenericFormatReferentialImportResult<Species, Integer> referentialTemporarySpeciesFileResult; - - private final GenericFormatReferentialImportResult<Vessel, String> referentialTemporaryVesselFileResult; - - private final GenericFormatFileResult protocolFileResult; - - private final GenericFormatCsvFileResult surveyFileResult; - - private final GenericFormatCsvFileResult accidentalCatchFileResult; - - private final GenericFormatCsvFileResult individualObservationFileResult; - - private final GenericFormatCsvFileResult marineLitterFileResult; - - private final GenericFormatCsvFileResult catchFileResult; - - private final GenericFormatCsvFileResult parameterFileResult; - - private final GenericFormatCsvFileResult operationFileResult; - - private final GenericFormatCsvFileResult gearCaracteristicFileResult; +public class GenericFormatImportContext extends GenericFormatContextSupport { - private final Map<String, GenericFormatImportCruiseContext> cruiseContexts; + private final RestoreAfterImportAction closeAction; public GenericFormatImportContext(GenericFormatImportRequest importRequest, ProgressionModel progressionModel, @@ -128,400 +47,17 @@ public class GenericFormatImportContext implements Closeable { Decorator<Cruise> cruiseDecorator, Decorator<FishingOperation> fishingOperationDecorator) { - Preconditions.checkNotNull(importRequest); - Preconditions.checkNotNull(progressionModel); - Preconditions.checkNotNull(persistenceService); - Preconditions.checkNotNull(cruiseDecorator); - Preconditions.checkNotNull(fishingOperationDecorator); - - this.importRequest = importRequest; - this.progressionModel = progressionModel; - this.cruiseDecorator = cruiseDecorator; - this.fishingOperationDecorator = fishingOperationDecorator; - this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, this); - this.validationHelper = new GenericFormatImportValidationHelper(this, new ValidationService()); - this.cruiseContexts = new LinkedHashMap<>(); - - GenericFormatArchive archive = importRequest.getArchive(); - - this.sampleCategoryFileResult = createFileResult(archive.getSampleCategoryModelPath(), true); - - this.referentialTemporaryGearFileResult = createReferentialFileResult(archive.getTemporaryReferentialGearsPath()); - this.referentialTemporaryPersonFileResult = createReferentialFileResult(archive.getTemporaryReferentialPersonsPath()); - this.referentialTemporarySpeciesFileResult = createReferentialFileResult(archive.getTemporaryReferentialSpeciesPath()); - this.referentialTemporaryVesselFileResult = createReferentialFileResult(archive.getTemporaryReferentialVesselsPath()); - this.protocolFileResult = createFileResult(archive.getProtocolPath(), false); - - this.surveyFileResult = createFileResult(archive.getSurveyPath(), true); - this.gearCaracteristicFileResult = createFileResult(archive.getGearCaracteristicsPath(), true); - this.operationFileResult = createFileResult(archive.getOperationPath(), true); - this.parameterFileResult = createFileResult(archive.getParameterPath(), true); - this.catchFileResult = createFileResult(archive.getCatchPath(), true); - this.marineLitterFileResult = createFileResult(archive.getMarineLitterPath(), true); - this.individualObservationFileResult = createFileResult(archive.getIndividualObservationPath(), true); - this.accidentalCatchFileResult = createFileResult(archive.getAccidentalCatchPath(), true); + super(importRequest, progressionModel, persistenceService, cruiseDecorator, fishingOperationDecorator); + this.closeAction = new RestoreAfterImportAction(this, persistenceService); } @Override - public void close() { - - validationHelper.close(); + protected void onClose() { - for (GenericFormatImportCruiseContext cruiseContext : cruiseContexts.values()) { - cruiseContext.close(); - } - cruiseContexts.clear(); - - } - - public boolean isArchiveLayoutValid() { - return CollectionUtils.isEmpty(archiveLayoutErrors); - } - - public void setArchiveLayoutErrors(Set<String> archiveLayoutErrors) { - this.archiveLayoutErrors = archiveLayoutErrors; - } + closeAction.execute(); - public Set<String> getArchiveLayoutErrors() { - return ImmutableSet.copyOf(archiveLayoutErrors); } - public GenericFormatCsvFileResult getSampleCategoryFileResult() { - return sampleCategoryFileResult; - } - - public GenericFormatReferentialImportResult<Gear, Integer> getReferentialTemporaryGearFileResult() { - return referentialTemporaryGearFileResult; - } - - public GenericFormatReferentialImportResult<Person, Integer> getReferentialTemporaryPersonFileResult() { - return referentialTemporaryPersonFileResult; - } - - public GenericFormatReferentialImportResult<Species, Integer> getReferentialTemporarySpeciesFileResult() { - return referentialTemporarySpeciesFileResult; - } - - public GenericFormatReferentialImportResult<Vessel, String> getReferentialTemporaryVesselFileResult() { - return referentialTemporaryVesselFileResult; - } - - public GenericFormatFileResult getProtocolFileResult() { - return protocolFileResult; - } - - public GenericFormatCsvFileResult getSurveyFileResult() { - return surveyFileResult; - } - - public GenericFormatCsvFileResult getGearCaracteristicFileResult() { - return gearCaracteristicFileResult; - } - - public GenericFormatCsvFileResult getOperationFileResult() { - return operationFileResult; - } - - public GenericFormatCsvFileResult getParameterFileResult() { - return parameterFileResult; - } - - public GenericFormatCsvFileResult getCatchFileResult() { - return catchFileResult; - } - - public GenericFormatCsvFileResult getMarineLitterFileResult() { - return marineLitterFileResult; - } - - public GenericFormatCsvFileResult getIndividualObservationFileResult() { - return individualObservationFileResult; - } - - public GenericFormatCsvFileResult getAccidentalCatchFileResult() { - return accidentalCatchFileResult; - } - - public GenericFormatImportRequest getImportRequest() { - return importRequest; - } - - public TuttiProtocol getImportedProtocol() { - return importedProtocol; - } - - public void setImportedProtocol(TuttiProtocol importedProtocol) { - this.importedProtocol = importedProtocol; - } - - public Cruise getExistingCruise(Cruise cruise) { - return importRequest.getExistingCruise(cruise); - } - - public boolean isCruiseAlreadyImported(Cruise cruise) { - - GenericFormatImportCruiseContext cruiseContext = getCruiseContext(cruise); - return cruiseContext != null; - - } - - public void addImportedCruise(Cruise cruise, boolean override) { - - String cruiseId = cruise.getId(); - GenericFormatImportCruiseContext cruiseContext = new GenericFormatImportCruiseContext(cruise, override, cruiseDecorator.toString(cruise)); - cruiseContexts.put(cruiseId, cruiseContext); - - } - - public void addImportedFishingOperation(FishingOperation fishingOperation, CatchBatch catchBatch) { - - GenericFormatImportCruiseContext cruiseContext = getCruiseContext(fishingOperation.getCruise()); - String fishingOperationLabel = fishingOperationDecorator.toString(fishingOperation); - cruiseContext.addFishingOperation(fishingOperation, catchBatch, fishingOperationLabel); - - } - - public GenericFormatImportCruiseContext getCruiseContext(RowWithCruiseContextSupport row) { - - Cruise cruise = row.getCruise(); - - GenericFormatImportCruiseContext result = null; - for (GenericFormatImportCruiseContext cruiseContext : cruiseContexts.values()) { - - boolean equals = Cruises.equals(cruise, cruiseContext.getCruise()); - if (equals) { - result = cruiseContext; - break; - } - - } - return result; - - } - - public GenericFormatImportCruiseContext getCruiseContext(Cruise cruise) { - - GenericFormatImportCruiseContext cruiseContext = cruiseContexts.get(cruise.getId()); - return cruiseContext; - - } - - public GenericFormatImportOperationContext getFishingOperationContext(FishingOperation fishingOperation) { - - GenericFormatImportCruiseContext cruiseContext = getCruiseContext(fishingOperation.getCruise()); - GenericFormatImportOperationContext result = cruiseContext.getFishingOperationContext(fishingOperation); - return result; - - } - - public CsvConsumerForSampleCategory loadSampleCategories(boolean failFast) { - sampleCategoryFileResult.setImported(true); - surveyFileResult.setLinesCount(importRequest.getArchive().getSampleCategoryLineCount()); - CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForSurvey loadSurveys(boolean failFast) { - surveyFileResult.setImported(true); - surveyFileResult.setLinesCount(importRequest.getArchive().getSurveyLineCount()); - CsvConsumerForSurvey consumer = new CsvConsumerForSurvey(importRequest.getArchive().getSurveyPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForGearCaracteristic loadGearCaracteristics(boolean failFast) { - gearCaracteristicFileResult.setImported(true); - gearCaracteristicFileResult.setLinesCount(importRequest.getArchive().getGearCaracteristicsPathLineCount()); - CsvConsumerForGearCaracteristic consumer = new CsvConsumerForGearCaracteristic(importRequest.getArchive().getGearCaracteristicsPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForOperation loadOperations(boolean failFast) { - operationFileResult.setImported(true); - operationFileResult.setLinesCount(importRequest.getArchive().getOperationPathLineCount()); - CsvConsumerForOperation consumer = new CsvConsumerForOperation(importRequest.getArchive().getOperationPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForParameter loadParameters(boolean failFast) { - parameterFileResult.setImported(true); - parameterFileResult.setLinesCount(importRequest.getArchive().getParameterPathLineCount()); - CsvConsumerForParameter consumer = new CsvConsumerForParameter(importRequest.getArchive().getParameterPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForCatch loadCatches(boolean failFast) { - catchFileResult.setImported(true); - catchFileResult.setLinesCount(importRequest.getArchive().getCatchPathLineCount()); - CsvConsumerForCatch consumer = new CsvConsumerForCatch(importRequest.getArchive().getCatchPath(), importRequest.getCsvSeparator(), importRequest.getSampleCategoryModel(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForMarineLitter loadMarineLitters(boolean failFast) { - marineLitterFileResult.setImported(true); - marineLitterFileResult.setLinesCount(importRequest.getArchive().getMarineLitterPathLineCount()); - CsvConsumerForMarineLitter consumer = new CsvConsumerForMarineLitter(importRequest.getArchive().getMarineLitterPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForIndividualObservation loadIndividualObservations(boolean failFast) { - individualObservationFileResult.setImported(true); - individualObservationFileResult.setLinesCount(importRequest.getArchive().getIndividualObservationPathLineCount()); - CsvConsumerForIndividualObservation consumer = new CsvConsumerForIndividualObservation(importRequest.getArchive().getIndividualObservationPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForAccidentalCatch loadAccidentalCatches(boolean failFast) { - accidentalCatchFileResult.setImported(true); - accidentalCatchFileResult.setLinesCount(importRequest.getArchive().getAccidentalCatchPathLineCount()); - CsvConsumerForAccidentalCatch consumer = new CsvConsumerForAccidentalCatch(importRequest.getArchive().getAccidentalCatchPath(), importRequest.getCsvSeparator(), importEntityParserFactory, failFast); - return consumer; - } - - public CsvConsumerForTemporaryGear loadTemporaryGears(boolean failFast) { - referentialTemporaryGearFileResult.setImported(true); - referentialTemporaryGearFileResult.setLinesCount(importRequest.getArchive().getTemporaryReferentialGearLineCount()); - CsvConsumerForTemporaryGear consumer = new CsvConsumerForTemporaryGear(importRequest.getArchive().getTemporaryReferentialGearsPath(), importRequest.getCsvSeparator(), failFast); - return consumer; - } - - public CsvConsumerForTemporaryPerson loadTemporaryPersons(boolean failFast) { - referentialTemporaryPersonFileResult.setImported(true); - referentialTemporaryPersonFileResult.setLinesCount(importRequest.getArchive().getTemporaryReferentialPersonLineCount()); - CsvConsumerForTemporaryPerson consumer = new CsvConsumerForTemporaryPerson(importRequest.getArchive().getTemporaryReferentialPersonsPath(), importRequest.getCsvSeparator(), failFast); - return consumer; - } - - public CsvConsumerForTemporarySpecies loadTemporarySpecies(boolean failFast) { - referentialTemporarySpeciesFileResult.setImported(true); - referentialTemporarySpeciesFileResult.setLinesCount(importRequest.getArchive().getTemporaryReferentialSpeciesLineCount()); - CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(importRequest.getArchive().getTemporaryReferentialSpeciesPath(), importRequest.getCsvSeparator(), failFast); - return consumer; - } - - public CsvConsumerForTemporaryVessel loadTemporaryVessels(boolean failFast) { - referentialTemporaryVesselFileResult.setImported(true); - referentialTemporaryVesselFileResult.setLinesCount(importRequest.getArchive().getTemporaryReferentialVesselLineCount()); - CsvConsumerForTemporaryVessel consumer = new CsvConsumerForTemporaryVessel(importRequest.getArchive().getTemporaryReferentialVesselsPath(), importRequest.getCsvSeparator(), failFast); - return consumer; - } - - public Serializable parseCaracteristicValue(Caracteristic caracteristic, String value) throws CaracteristicValueParseException { - - CaracteristicValueParserFormatter parser = CaracteristicValueParserFormatter.newParser(caracteristic); - try { - - Serializable caracteristicValue = parser.parse(value); - return caracteristicValue; - - } catch (ParseException e) { - throw new CaracteristicValueParseException(caracteristic, value, e.getMessage()); - } - - } - - public void increments(String message) { - progressionModel.increments(message); - } - - public void addStepsInProgressionModel(int size) { - progressionModel.adaptTotal(progressionModel.getTotal() + size); - } - - public GenericFormatImportValidationHelper getValidationHelper() { - return validationHelper; - } - - public void doActionOnCruiseContexts(CruiseContextAction action) { - - for (GenericFormatImportCruiseContext cruiseContext : cruiseContexts.values()) { - - action.onCruise(cruiseContext, progressionModel); - - } - } - - public boolean isTechnicalFilesValid() { - return isArchiveLayoutValid() - && sampleCategoryFileResult.isValid() - && referentialTemporaryGearFileResult.isValid() - && referentialTemporaryPersonFileResult.isValid() - && referentialTemporarySpeciesFileResult.isValid() - && referentialTemporaryVesselFileResult.isValid() - && protocolFileResult.isValid(); - } - - public boolean isCanImportReferentialGear() { - return isArchiveLayoutValid() && referentialTemporaryGearFileResult.isFound(); - } - - public boolean isCanImportReferentialPerson() { - return isArchiveLayoutValid() && referentialTemporaryPersonFileResult.isFound(); - } - - public boolean isCanImportReferentialSpecies() { - return isArchiveLayoutValid() && referentialTemporarySpeciesFileResult.isFound(); - } - - public boolean isCanImportReferentialVessel() { - return isArchiveLayoutValid() && referentialTemporaryVesselFileResult.isFound(); - } - - public boolean isCanImportProtocol() { - return isArchiveLayoutValid() && referentialTemporarySpeciesFileResult.isValid() && protocolFileResult.isFound(); - } - - public boolean isCanImportSurvey() { - return isTechnicalFilesValid(); - } - - public boolean isCanImportGearCaracteristic() { - return isTechnicalFilesValid() && getSurveyFileResult().isValid(); - } - - public boolean isCanImportOperation() { - return isTechnicalFilesValid() && getSurveyFileResult().isValid(); - } - - public boolean isCanImportParameter() { - return isTechnicalFilesValid() && getOperationFileResult().isValid(); - } - - public boolean isCanImportCatch() { - return isTechnicalFilesValid() && getOperationFileResult().isValid(); - } - - public boolean isCanImportMarineLitter() { - return isTechnicalFilesValid() && getOperationFileResult().isValid(); - } - - public boolean isCanImportAccidentalCatch() { - return isTechnicalFilesValid() && getOperationFileResult().isValid(); - } - - public boolean isCanImportIndividualObservation() { - return isTechnicalFilesValid() && getOperationFileResult().isValid(); - } - - - public static interface CruiseContextAction { - - void onCruise(GenericFormatImportCruiseContext cruiseContext, ProgressionModel progressionModel); - - } - - protected GenericFormatCsvFileResult createFileResult(Path path, boolean mandatory) { - - File file = path.toFile(); - return new GenericFormatCsvFileResult(file.getName(), mandatory, file.exists()); - - } - - protected <E extends TuttiReferentialEntity, K extends Comparable<K>> GenericFormatReferentialImportResult<E, K> createReferentialFileResult(Path path) { - - File file = path.toFile(); - return new GenericFormatReferentialImportResult<>(file.getName(), file.exists()); - - } } 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 index c58b7b4..e07d9b5 100644 --- 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 @@ -54,7 +54,7 @@ public class GenericFormatImportEntityParserFactory { private final PersistenceService persistenceService; - private final GenericFormatImportContext importContext; + private final GenericFormatContextSupport importContext; private ProgramParserFormatter programParser; @@ -89,7 +89,7 @@ public class GenericFormatImportEntityParserFactory { private CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; public GenericFormatImportEntityParserFactory(PersistenceService persistenceService, - GenericFormatImportContext importContext) { + GenericFormatContextSupport importContext) { this.persistenceService = persistenceService; this.importContext = importContext; } 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 index 7217138..1d56f7d 100644 --- 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 @@ -55,7 +55,7 @@ public class GenericFormatImportRequest implements Serializable { private final Set<Cruise> existingCruises; - private final TuttiProtocol oldProtocol; + private final TuttiProtocol protocol; private final Program program; @@ -67,14 +67,14 @@ public class GenericFormatImportRequest implements Serializable { Program program, SampleCategoryModel sampleCategoryModel, Set<Cruise> cruises, - TuttiProtocol oldProtocol) { + TuttiProtocol protocol) { this.importConfiguration = importConfiguration; this.archive = archive; this.csvSeparator = csvSeparator; this.sampleCategoryModel = sampleCategoryModel; this.program = program; this.existingCruises = cruises; - this.oldProtocol = oldProtocol; + this.protocol = protocol; this.startingDate = new Date(); } @@ -95,8 +95,8 @@ public class GenericFormatImportRequest implements Serializable { return existingCruises; } - public TuttiProtocol getOldProtocol() { - return oldProtocol; + public TuttiProtocol getProtocol() { + return protocol; } public Program getProgram() { 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 f932a0f..e5d54b4 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 @@ -56,7 +56,7 @@ import fr.ifremer.tutti.service.genericformat.importactions.ValidateIndividualOb import fr.ifremer.tutti.service.genericformat.importactions.ValidateMarineLitterAction; import fr.ifremer.tutti.service.genericformat.importactions.ValidateOperationAction; import fr.ifremer.tutti.service.genericformat.importactions.ValidateParameterAction; -import fr.ifremer.tutti.service.genericformat.importactions.ValidateSampleCategoryAction; +import fr.ifremer.tutti.service.genericformat.importactions.ImpotSampleCategoryAction; import fr.ifremer.tutti.service.genericformat.importactions.ValidateSurveyAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -121,14 +121,14 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { GenericFormatImportRequest importRequest = createImportRequest(importConfiguration, archive); try { - GenericFormatValidateFileResult result = doValidate(importRequest, progressionModel); + GenericFormatValidateFileResult result = doValidate(importRequest, progressionModel); generateValidateReport(result, progressionModel); - return result; + } finally { - TuttiProtocol oldProtocol = importRequest.getOldProtocol(); + TuttiProtocol oldProtocol = importRequest.getProtocol(); if (oldProtocol != null) { @@ -229,7 +229,7 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } - protected void validateArchiveLayout(GenericFormatImportContext importContext) { + protected void validateArchiveLayout(GenericFormatContextSupport importContext) { try { importContext.getImportRequest().getArchive().validateArchiveLayout(); @@ -370,9 +370,9 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } - protected void addTechnicalActions(GenericFormatImportContext importContext, Set<ImportActionSupport> actions) { + protected void addTechnicalActions(GenericFormatContextSupport importContext, Set<ImportActionSupport> actions) { - actions.add(new ValidateSampleCategoryAction(importContext)); + actions.add(new ImpotSampleCategoryAction(importContext, persistenceService)); actions.add(new ImportReferentialGearAction(importContext, referentialTemporaryGearService)); actions.add(new ImportReferentialPersonAction(importContext, referentialTemporaryPersonService)); actions.add(new ImportReferentialSpeciesAction(importContext, referentialTemporarySpeciesService)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationDataContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationDataContext.java index fb881b2..94765d3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationDataContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationDataContext.java @@ -49,9 +49,9 @@ public class GenericFormatImportValidationDataContext extends TuttiValidationDat private FishingOperation fishingOperation; - private final GenericFormatImportContext importContext; + private final GenericFormatContextSupport importContext; - public GenericFormatImportValidationDataContext(GenericFormatImportContext importContext) { + public GenericFormatImportValidationDataContext(GenericFormatContextSupport importContext) { this.importContext = importContext; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java index ab69cac..31b9d94 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportValidationHelper.java @@ -63,7 +63,7 @@ public class GenericFormatImportValidationHelper implements Closeable { private final GenericFormatImportValidationDataContext validationDataContext; - public GenericFormatImportValidationHelper(GenericFormatImportContext importContext, ValidationService validationService) { + public GenericFormatImportValidationHelper(GenericFormatContextSupport importContext, ValidationService validationService) { this.validationService = validationService; this.validationDataContext = new GenericFormatImportValidationDataContext(importContext); this.originalValidationDataContextSupport = TuttiValidationDataContextSupport.setValidationContext(validationDataContext, true); @@ -148,7 +148,7 @@ public class GenericFormatImportValidationHelper implements Closeable { } } - public <R extends RowWithCruiseContextSupport> GenericFormatImportCruiseContext getCruise(CsvComsumer<R, ?> consumer, ImportRow<R> row, GenericFormatImportContext importContext) { + public <R extends RowWithCruiseContextSupport> GenericFormatImportCruiseContext getCruise(CsvComsumer<R, ?> consumer, ImportRow<R> row, GenericFormatContextSupport importContext) { R bean = row.getBean(); @@ -173,7 +173,7 @@ public class GenericFormatImportValidationHelper implements Closeable { } - public <R extends RowWithCruiseContextSupport> Gear getGear(CsvComsumer<R, ?> consumer, GenericFormatImportContext importContext, ImportRow<R> row, Gear gear, short rankOrder) { + public <R extends RowWithCruiseContextSupport> Gear getGear(CsvComsumer<R, ?> consumer, GenericFormatContextSupport importContext, ImportRow<R> row, Gear gear, short rankOrder) { Cruise cruise = row.getBean().getCruise(); GenericFormatImportCruiseContext cruiseContext = importContext.getCruiseContext(cruise); @@ -187,7 +187,7 @@ public class GenericFormatImportValidationHelper implements Closeable { } - public <R extends RowWithOperationContextSupport> GenericFormatImportOperationContext getFishingOperationContext(CsvComsumer<R, ?> consumer, ImportRow<R> row, GenericFormatImportContext importContext) { + public <R extends RowWithOperationContextSupport> GenericFormatImportOperationContext getFishingOperationContext(CsvComsumer<R, ?> consumer, ImportRow<R> row, GenericFormatContextSupport importContext) { GenericFormatImportOperationContext fishingOperationContext = null; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java index 4015373..09d57b1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java @@ -25,9 +25,7 @@ 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.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; @@ -86,7 +84,7 @@ public abstract class GenericFormatResultSupport implements Serializable { private final GenericFormatCsvFileResult accidentalCatchFileResult; - protected GenericFormatResultSupport(GenericFormatImportContext importContext) { + protected GenericFormatResultSupport(GenericFormatContextSupport importContext) { this.importRequest = importContext.getImportRequest(); this.protocol = importContext.getImportedProtocol(); @@ -212,18 +210,6 @@ public abstract class GenericFormatResultSupport implements Serializable { return importRequest.getImportConfiguration(); } - public SampleCategoryModel getSampleCategoryModel() { - return importRequest.getSampleCategoryModel(); - } - - public Set<Cruise> getExistingCruises() { - return importRequest.getExistingCruises(); - } - - public TuttiProtocol getOldProtocol() { - return importRequest.getOldProtocol(); - } - public Program getProgram() { return importRequest.getProgram(); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java index 5faf8de..0b11594 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java @@ -29,6 +29,7 @@ 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.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.importactions.RestoreAfterValidateAction; import org.nuiton.decorator.Decorator; /** @@ -37,7 +38,9 @@ import org.nuiton.decorator.Decorator; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class GenericFormatValidateFileContext extends GenericFormatImportContext { +public class GenericFormatValidateFileContext extends GenericFormatContextSupport { + + private final RestoreAfterValidateAction closeAction; public GenericFormatValidateFileContext(GenericFormatImportRequest importRequest, ProgressionModel progressionModel, @@ -46,6 +49,14 @@ public class GenericFormatValidateFileContext extends GenericFormatImportContext Decorator<FishingOperation> fishingOperationDecorator) { super(importRequest, progressionModel, persistenceService, cruiseDecorator, fishingOperationDecorator); + this.closeAction = new RestoreAfterValidateAction(this, persistenceService); + + } + + @Override + protected void onClose() { + + closeAction.execute(); } 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 0034714..2694a7e 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 @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.data.AccidentalBatchs; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; @@ -57,7 +57,7 @@ public class CsvConsumerForAccidentalCatch extends CsvComsumer<AccidentalCatchRo super(file, AccidentalCatchModel.forImport(separator, parserFactory), reportError); } - public GenericFormatImportOperationContext validateRow(ImportRow<AccidentalCatchRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportOperationContext validateRow(ImportRow<AccidentalCatchRow> row, GenericFormatContextSupport importContext) { GenericFormatImportOperationContext operationContext = null; 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 85ef134..2ffdb69 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 @@ -40,7 +40,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchs; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.CatchModel; @@ -80,7 +80,7 @@ public class CsvConsumerForCatch extends CsvComsumer<CatchRow, CatchModel> { } - public GenericFormatImportOperationContext validateRow(ImportRow<CatchRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportOperationContext validateRow(ImportRow<CatchRow> row, GenericFormatContextSupport importContext) { GenericFormatImportOperationContext operationContext = null; 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 f900cc2..7dcbd28 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 @@ -28,7 +28,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportCruiseContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportValidationHelper; @@ -51,7 +51,7 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist super(file, GearCaracteristicModel.forImport(separator, parserFactory), reportError); } - public GenericFormatImportCruiseContext validateRow(ImportRow<GearCaracteristicRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportCruiseContext validateRow(ImportRow<GearCaracteristicRow> row, GenericFormatContextSupport importContext) { GenericFormatImportCruiseContext cruiseContext = null; 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 a71b28e..b7a7575 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 @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatchs; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel; @@ -57,7 +57,7 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO super(file, IndividualObservationModel.forImport(separator, parserFactory), reportError); } - public GenericFormatImportOperationContext validateRow(ImportRow<IndividualObservationRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportOperationContext validateRow(ImportRow<IndividualObservationRow> row, GenericFormatContextSupport importContext) { GenericFormatImportOperationContext operationContext = null; 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 b406b66..a233c52 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 @@ -26,7 +26,7 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterModel; @@ -47,7 +47,7 @@ public class CsvConsumerForMarineLitter extends CsvComsumer<MarineLitterRow, Mar super(file, MarineLitterModel.forImport(separator, parserFactory), reportError); } - public GenericFormatImportOperationContext validateRow(ImportRow<MarineLitterRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportOperationContext validateRow(ImportRow<MarineLitterRow> row, GenericFormatContextSupport importContext) { GenericFormatImportOperationContext operationContext = null; 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 d7f61d7..87fe198 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 @@ -28,7 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportCruiseContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportValidationHelper; @@ -54,7 +54,7 @@ public class CsvConsumerForOperation extends CsvComsumer<OperationRow, Operation super(file, OperationModel.forImport(separator, parserFactory), reportError); } - public GenericFormatImportCruiseContext validateRow(ImportRow<OperationRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportCruiseContext validateRow(ImportRow<OperationRow> row, GenericFormatContextSupport importContext) { GenericFormatImportCruiseContext cruiseContext = null; 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 fd6c4a2..129e6ea 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 @@ -27,7 +27,7 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.ParameterModel; @@ -49,7 +49,7 @@ public class CsvConsumerForParameter extends CsvComsumer<ParameterRow, Parameter super(file, ParameterModel.forImport(separator, parserFactory), reportError); } - public GenericFormatImportOperationContext validateRow(ImportRow<ParameterRow> row, GenericFormatImportContext importContext) { + public GenericFormatImportOperationContext validateRow(ImportRow<ParameterRow> row, GenericFormatContextSupport importContext) { GenericFormatImportOperationContext operationContext = null; 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 8832e58..22296dd 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 @@ -24,10 +24,8 @@ package fr.ifremer.tutti.service.genericformat.consumer; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; @@ -35,7 +33,7 @@ import org.apache.commons.lang3.StringUtils; import org.nuiton.csv.ImportRow; import java.nio.file.Path; -import java.util.Objects; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -51,44 +49,31 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, super(file, SampleCategoryModel.forImport(separator, parserFactory), reportError); } - public void validateRow(ImportRow<SampleCategoryRow> row, GenericFormatImportContext importContext) { + public void validateRow(ImportRow<SampleCategoryRow> row, Set<String> existingCodes, Set<Integer> existingCaracteristicIds) { if (row.isValid()) { - int categoryIndex = (int) row.getLineNumber() - 1; - fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); + SampleCategoryRow bean = row.getBean(); - int nbSampling = sampleCategoryModel.getNbSampling(); - if (nbSampling >= categoryIndex) { + String code = bean.getCode(); - SampleCategoryRow bean = row.getBean(); - SampleCategoryModelEntry categoryEntry = sampleCategoryModel.getCategoryByIndex(categoryIndex); + if (StringUtils.isBlank(code)) { - String code = bean.getCode(); + addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.noCode"))); - if (StringUtils.isBlank(code)) { - - addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.noCode"))); - - } else { - - if (!Objects.equals(categoryEntry.getCode(), code)) { - - addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.codeNotMatching", categoryEntry.getCode(), code))); - - } + } else if (!existingCodes.add(code)) { + addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.alreadyUsedCode", code))); + } - Caracteristic caracteristic = bean.getCaracteristic(); - if (caracteristic == null) { + Caracteristic caracteristic = bean.getCaracteristic(); + if (caracteristic == null) { - addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.noCaracteristic"))); + addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.noCaracteristic"))); - } else if (!Objects.equals(categoryEntry.getCategoryId(), caracteristic.getIdAsInt())) { + } else if (!existingCaracteristicIds.add(caracteristic.getIdAsInt())) { - addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching", categoryEntry.getCategoryId(), caracteristic.getIdAsInt()))); + addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.alreadyUsedCaracteristic", caracteristic.getIdAsInt()))); - } - } } } 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 42c76ec..31b5e5f 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 @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder; import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrders; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportValidationHelper; import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; @@ -54,7 +54,7 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { super(file, SurveyModel.forImport(separator, parserFactory), reportError); } - public void validateRow(ImportRow<SurveyRow> row, GenericFormatImportContext importContext) { + public void validateRow(ImportRow<SurveyRow> row, GenericFormatContextSupport importContext) { if (row.isValid()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java index b0d832e..cec3689 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SampleCategoryRow.java @@ -47,6 +47,10 @@ public class SampleCategoryRow implements Serializable { private SampleCategoryModelEntry sampleCategoryModelEntry; + public SampleCategoryModelEntry getSampleCategoryModelEntry() { + return sampleCategoryModelEntry; + } + public void setSampleCategoryModelEntry(SampleCategoryModelEntry sampleCategoryModelEntry) { this.sampleCategoryModelEntry = sampleCategoryModelEntry; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportActionSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportActionSupport.java index dee7743..94477d8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportActionSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportActionSupport.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; /** * Created on 3/3/15. @@ -34,13 +34,13 @@ import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; */ public abstract class ImportActionSupport { - protected final GenericFormatImportContext importContext; + protected final GenericFormatContextSupport importContext; protected abstract boolean canExecute(); protected abstract void doExecute(); - protected ImportActionSupport(GenericFormatImportContext importContext) { + protected ImportActionSupport(GenericFormatContextSupport importContext) { this.importContext = importContext; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportProtocolAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportProtocolAction.java index 32b3b05..680b3b9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportProtocolAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportProtocolAction.java @@ -29,8 +29,8 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatArchive; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -56,7 +56,7 @@ public class ImportProtocolAction extends ImportActionSupport { private final ProtocolImportExportService protocolImportExportService; - public ImportProtocolAction(GenericFormatImportContext importContext, PersistenceService persistenceService, ProtocolImportExportService protocolImportExportService) { + public ImportProtocolAction(GenericFormatContextSupport importContext, PersistenceService persistenceService, ProtocolImportExportService protocolImportExportService) { super(importContext); this.persistenceService = persistenceService; this.protocolImportExportService = protocolImportExportService; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialGearAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialGearAction.java index ceb09eb..2e94785 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialGearAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialGearAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; */ import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; @@ -55,7 +55,7 @@ public class ImportReferentialGearAction extends ImportActionSupport { private final ReferentialTemporaryGearService referentialTemporaryGearService; - public ImportReferentialGearAction(GenericFormatImportContext importContext, ReferentialTemporaryGearService referentialTemporaryGearService) { + public ImportReferentialGearAction(GenericFormatContextSupport importContext, ReferentialTemporaryGearService referentialTemporaryGearService) { super(importContext); this.referentialTemporaryGearService = referentialTemporaryGearService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialPersonAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialPersonAction.java index 3af42ae..3ad5c2c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialPersonAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialPersonAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; */ import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; @@ -55,7 +55,7 @@ public class ImportReferentialPersonAction extends ImportActionSupport { private final ReferentialTemporaryPersonService referentialTemporaryPersonService; - public ImportReferentialPersonAction(GenericFormatImportContext importContext, ReferentialTemporaryPersonService referentialTemporaryPersonService) { + public ImportReferentialPersonAction(GenericFormatContextSupport importContext, ReferentialTemporaryPersonService referentialTemporaryPersonService) { super(importContext); this.referentialTemporaryPersonService = referentialTemporaryPersonService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java index dc9a594..dcf2203 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; @@ -55,7 +55,7 @@ public class ImportReferentialSpeciesAction extends ImportActionSupport { private final ReferentialTemporarySpeciesService referentialTemporarySpeciesService; - public ImportReferentialSpeciesAction(GenericFormatImportContext importContext, ReferentialTemporarySpeciesService referentialTemporarySpeciesService) { + public ImportReferentialSpeciesAction(GenericFormatContextSupport importContext, ReferentialTemporarySpeciesService referentialTemporarySpeciesService) { super(importContext); this.referentialTemporarySpeciesService = referentialTemporarySpeciesService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialVesselAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialVesselAction.java index 2d213d6..78d46c3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialVesselAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialVesselAction.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; */ import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; @@ -55,7 +55,7 @@ public class ImportReferentialVesselAction extends ImportActionSupport { private final ReferentialTemporaryVesselService referentialTemporaryVesselService; - public ImportReferentialVesselAction(GenericFormatImportContext importContext, ReferentialTemporaryVesselService referentialTemporaryVesselService) { + public ImportReferentialVesselAction(GenericFormatContextSupport importContext, ReferentialTemporaryVesselService referentialTemporaryVesselService) { super(importContext); this.referentialTemporaryVesselService = referentialTemporaryVesselService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImpotSampleCategoryAction.java similarity index 56% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImpotSampleCategoryAction.java index 2c33ae6..8b805a5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImpotSampleCategoryAction.java @@ -26,8 +26,9 @@ package fr.ifremer.tutti.service.genericformat.importactions; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; import org.apache.commons.logging.Log; @@ -37,7 +38,9 @@ import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.IOException; -import java.util.LinkedHashSet; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -48,13 +51,16 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class ValidateSampleCategoryAction extends ImportActionSupport { +public class ImpotSampleCategoryAction extends ImportActionSupport { /** Logger. */ - private static final Log log = LogFactory.getLog(ValidateSampleCategoryAction.class); + private static final Log log = LogFactory.getLog(ImpotSampleCategoryAction.class); - public ValidateSampleCategoryAction(GenericFormatImportContext importContext) { + private final PersistenceService persistenceService; + + public ImpotSampleCategoryAction(GenericFormatContextSupport importContext, PersistenceService persistenceService) { super(importContext); + this.persistenceService = persistenceService; } @Override @@ -71,48 +77,30 @@ public class ValidateSampleCategoryAction extends ImportActionSupport { importContext.increments(t("tutti.service.genericFormat.import.sampleCategoryModel")); + List<SampleCategoryModelEntry> categories = new ArrayList<>(); + GenericFormatCsvFileResult importFileResult = importContext.getSampleCategoryFileResult(); try (CsvConsumerForSampleCategory consumer = importContext.loadSampleCategories(false)) { - SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); - int nbExpectedSampling = sampleCategoryModel.getNbSampling(); + Set<String> existingCodes = new HashSet<>(); + Set<Integer> existingCaracteristicIds = new HashSet<>(); - Set<String> categoryCodesFromApplication = new LinkedHashSet<>(); - for (SampleCategoryModelEntry sampleCategoryModelEntry : sampleCategoryModel.getCategory()) { - categoryCodesFromApplication.add(sampleCategoryModelEntry.getCode()); - } - - Set<String> categoryCodesFromImport = new LinkedHashSet<>(); for (ImportRow<SampleCategoryRow> row : consumer) { - consumer.validateRow(row, importContext); - SampleCategoryRow bean = row.getBean(); - categoryCodesFromImport.add(bean.getCode()); - } - - importFileResult.flushErrors(consumer); - - int nbActualSampling = categoryCodesFromImport.size(); - - if (nbActualSampling < nbExpectedSampling) { - - // Il manque des catégories dans l'import - Set<String> missingCodes = new LinkedHashSet<>(categoryCodesFromApplication); - missingCodes.removeAll(categoryCodesFromImport); - throw new ImportRuntimeException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.missingCategories", missingCodes)); + consumer.validateRow(row, existingCodes, existingCaracteristicIds); - } else if (nbActualSampling > nbExpectedSampling) { + if (row.isValid()) { - // Il manque des catégories dans l'application + SampleCategoryRow bean = row.getBean(); + categories.add(bean.getSampleCategoryModelEntry()); - Set<String> missingCodes = new LinkedHashSet<>(categoryCodesFromImport); - missingCodes.removeAll(categoryCodesFromApplication); - - throw new ImportRuntimeException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.tooMuchCategories", missingCodes)); + } } + importFileResult.flushErrors(consumer); + } catch (IOException e) { throw new ApplicationTechnicalException("Could not close sampleCategory.csv file", e); } catch (ImportRuntimeException e) { @@ -121,6 +109,18 @@ public class ValidateSampleCategoryAction extends ImportActionSupport { } + if (importFileResult.isValid()) { + + SampleCategoryModel sampleCategoryModel = new SampleCategoryModel(categories); + + if (log.isInfoEnabled()) { + log.info("Will use sample category model: " + sampleCategoryModel); + } + persistenceService.setSampleCategoryModel(sampleCategoryModel); + importContext.setImportedSampleCategoryModel(sampleCategoryModel); + + } + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterImportAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterImportAction.java new file mode 100644 index 0000000..8965ba9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterImportAction.java @@ -0,0 +1,53 @@ +package fr.ifremer.tutti.service.genericformat.importactions; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportRequest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 3/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.15 + */ +public class RestoreAfterImportAction extends ImportActionSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(RestoreAfterImportAction.class); + + private final PersistenceService persistenceService; + + public RestoreAfterImportAction(GenericFormatContextSupport importContext, PersistenceService persistenceService) { + super(importContext); + this.persistenceService = persistenceService; + } + + @Override + protected boolean canExecute() { + return true; + } + + @Override + protected void doExecute() { + + GenericFormatImportRequest importRequest = importContext.getImportRequest(); + + rollbackSampleCategoryModel(importRequest); + + } + + protected void rollbackSampleCategoryModel(GenericFormatImportRequest importRequest) { + + SampleCategoryModel sampleCategoryModel = importRequest.getSampleCategoryModel(); + + if (log.isInfoEnabled()) { + log.info("Rollback previous sample cateogry model: " + sampleCategoryModel); + } + persistenceService.setSampleCategoryModel(sampleCategoryModel); + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java new file mode 100644 index 0000000..f4c11d6 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/RestoreAfterValidateAction.java @@ -0,0 +1,86 @@ +package fr.ifremer.tutti.service.genericformat.importactions; + +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.genericformat.GenericFormatContextSupport; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportRequest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 3/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.15 + */ +public class RestoreAfterValidateAction extends ImportActionSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(RestoreAfterValidateAction.class); + + private final PersistenceService persistenceService; + + public RestoreAfterValidateAction(GenericFormatContextSupport importContext, PersistenceService persistenceService) { + super(importContext); + this.persistenceService = persistenceService; + } + + @Override + protected boolean canExecute() { + return true; + } + + @Override + protected void doExecute() { + + GenericFormatImportRequest importRequest = importContext.getImportRequest(); + + try { + + rollbackSampleCategoryModel(importRequest); + + } finally { + + rollbackProtocol(importRequest); + + } + + } + + protected void rollbackSampleCategoryModel(GenericFormatImportRequest importRequest) { + + SampleCategoryModel sampleCategoryModel = importRequest.getSampleCategoryModel(); + + if (log.isInfoEnabled()) { + log.info("Rollback previous sample cateogry model: " + sampleCategoryModel); + } + persistenceService.setSampleCategoryModel(sampleCategoryModel); + + } + + protected void rollbackProtocol(GenericFormatImportRequest importRequest) { + + TuttiProtocol previousProtocol = importRequest.getProtocol(); + if (previousProtocol != null) { + + if (log.isInfoEnabled()) { + log.info("Rollback previous protocol: " + previousProtocol); + } + persistenceService.setProtocol(previousProtocol); + + } + + TuttiProtocol importedProtocol = importContext.getImportedProtocol(); + if (importedProtocol != null) { + + if (log.isInfoEnabled()) { + log.info("Delete imported protocol: " + importedProtocol); + } + persistenceService.deleteProtocol(importedProtocol.getId()); + + } + + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateAccidentalCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateAccidentalCatchAction.java index a683b7a..56b7627 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateAccidentalCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateAccidentalCatchAction.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; @@ -50,7 +50,7 @@ public class ValidateAccidentalCatchAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateAccidentalCatchAction.class); - public ValidateAccidentalCatchAction(GenericFormatImportContext importContext) { + public ValidateAccidentalCatchAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateCatchAction.java index eeaa9ae..94037ee 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateCatchAction.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; @@ -50,7 +50,7 @@ public class ValidateCatchAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateCatchAction.class); - public ValidateCatchAction(GenericFormatImportContext importContext) { + public ValidateCatchAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateGearCaracteristicAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateGearCaracteristicAction.java index 793b1bb..486e1c7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateGearCaracteristicAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateGearCaracteristicAction.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportCruiseContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; @@ -50,7 +50,7 @@ public class ValidateGearCaracteristicAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateGearCaracteristicAction.class); - public ValidateGearCaracteristicAction(GenericFormatImportContext importContext) { + public ValidateGearCaracteristicAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java index d4ec3de..a17bd42 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; @@ -50,7 +50,7 @@ public class ValidateIndividualObservationAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateIndividualObservationAction.class); - public ValidateIndividualObservationAction(GenericFormatImportContext importContext) { + public ValidateIndividualObservationAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateMarineLitterAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateMarineLitterAction.java index 3d406ef..43f929a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateMarineLitterAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateMarineLitterAction.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; @@ -50,7 +50,7 @@ public class ValidateMarineLitterAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateMarineLitterAction.class); - public ValidateMarineLitterAction(GenericFormatImportContext importContext) { + public ValidateMarineLitterAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateOperationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateOperationAction.java index aa1a498..3238e0c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateOperationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateOperationAction.java @@ -26,8 +26,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportCruiseContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; @@ -52,7 +52,7 @@ public class ValidateOperationAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateOperationAction.class); - public ValidateOperationAction(GenericFormatImportContext importContext) { + public ValidateOperationAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateParameterAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateParameterAction.java index b933948..db7bc11 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateParameterAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateParameterAction.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; @@ -50,7 +50,7 @@ public class ValidateParameterAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateParameterAction.class); - public ValidateParameterAction(GenericFormatImportContext importContext) { + public ValidateParameterAction(GenericFormatContextSupport importContext) { super(importContext); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSurveyAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSurveyAction.java index b4eeaa7..436a807 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSurveyAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSurveyAction.java @@ -26,8 +26,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import org.apache.commons.logging.Log; @@ -51,7 +51,7 @@ public class ValidateSurveyAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateSurveyAction.class); - public ValidateSurveyAction(GenericFormatImportContext importContext) { + public ValidateSurveyAction(GenericFormatContextSupport importContext) { super(importContext); } 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 ce8e8b6..3ae7a58 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 @@ -155,12 +155,10 @@ tutti.service.genericFormat.import.parameters=Import des paramètres de trait tutti.service.genericFormat.import.protocol=Import d'un nouveau protocol %s tutti.service.genericFormat.import.protocol.notValid=Import d'un nouveau protocol %s annulé (protocol non valide) tutti.service.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation -tutti.service.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching=L'identifiant de la caractéristique devrait être %s, mais vaut %s -tutti.service.genericFormat.import.sampleCategoryModel.error.codeNotMatching=Le code devrait être %s, mais vaut %s -tutti.service.genericFormat.import.sampleCategoryModel.error.missingCategories=Dans le fichier d'import, il manque les catégorisations avec les codes suivants %s. Vous devez les supprimer dans l'application (Menu Administration > Configurer les catégorisations). tutti.service.genericFormat.import.sampleCategoryModel.error.noCaracteristic=La catactéristique est obligatoire +tutti.service.genericFormat.import.sampleCategoryModel.error.alreadyUsedCaracteristic=La catactéristique %s est déja utilisée tutti.service.genericFormat.import.sampleCategoryModel.error.noCode=Le code est obligatoire -tutti.service.genericFormat.import.sampleCategoryModel.error.tooMuchCategories=Dans l'application, il manque les catégories avec les codes suivants %s. Vous devez les ajouter dans l'application (Menu Administration > Configurer les catégorisations). +tutti.service.genericFormat.import.sampleCategoryModel.error.alreadyUsedCode=Le code %s est déja utilisé tutti.service.genericFormat.import.temporaryGears=Import des références temporaires d'engins tutti.service.genericFormat.import.temporaryPersons=Import des références temporaires de personnes tutti.service.genericFormat.import.temporarySpecies=Import des références temporaires de Taxons -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit c636f0097109a77bdf2b04228e005e2627c22518 Merge: ed0767c 8eb2beb Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 25 16:15:40 2015 +0100 fixes #6868: [IMPORT GENERIQUE] Ne plus interferer avec le modèle de catégorisation de l'application lors de l'import générique Merge branch 'feature/6868' into develop .../tutti/persistence/test/DatabaseResource.java | 11 + .../ifremer/tutti/service/PersistenceService.java | 6 + ...ntext.java => GenericFormatContextSupport.java} | 45 +- .../genericformat/GenericFormatImportContext.java | 478 +-------------------- .../GenericFormatImportEntityParserFactory.java | 4 +- .../genericformat/GenericFormatImportRequest.java | 10 +- .../genericformat/GenericFormatImportService.java | 14 +- .../GenericFormatImportValidationDataContext.java | 4 +- .../GenericFormatImportValidationHelper.java | 8 +- .../genericformat/GenericFormatResultSupport.java | 16 +- .../GenericFormatValidateFileContext.java | 13 +- .../consumer/CsvConsumerForAccidentalCatch.java | 4 +- .../consumer/CsvConsumerForCatch.java | 4 +- .../consumer/CsvConsumerForGearCaracteristic.java | 4 +- .../CsvConsumerForIndividualObservation.java | 4 +- .../consumer/CsvConsumerForMarineLitter.java | 4 +- .../consumer/CsvConsumerForOperation.java | 4 +- .../consumer/CsvConsumerForParameter.java | 4 +- .../consumer/CsvConsumerForSampleCategory.java | 43 +- .../consumer/CsvConsumerForSurvey.java | 4 +- .../genericformat/csv/SampleCategoryRow.java | 4 + .../importactions/ImportActionSupport.java | 6 +- .../importactions/ImportProtocolAction.java | 4 +- .../importactions/ImportReferentialGearAction.java | 4 +- .../ImportReferentialPersonAction.java | 4 +- .../ImportReferentialSpeciesAction.java | 4 +- .../ImportReferentialVesselAction.java | 4 +- ...yAction.java => ImpotSampleCategoryAction.java} | 68 +-- .../importactions/RestoreAfterImportAction.java | 53 +++ .../importactions/RestoreAfterValidateAction.java | 86 ++++ .../ValidateAccidentalCatchAction.java | 4 +- .../importactions/ValidateCatchAction.java | 4 +- .../ValidateGearCaracteristicAction.java | 4 +- .../ValidateIndividualObservationAction.java | 4 +- .../importactions/ValidateMarineLitterAction.java | 4 +- .../importactions/ValidateOperationAction.java | 4 +- .../importactions/ValidateParameterAction.java | 4 +- .../importactions/ValidateSurveyAction.java | 4 +- .../resources/i18n/tutti-service_fr_FR.properties | 6 +- .../ifremer/tutti/service/ServiceDbResource.java | 17 + .../GenericFormatImportServiceValidTest.java | 55 ++- .../genericFormat/parameter/parameter.csv | 12 + 42 files changed, 393 insertions(+), 650 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm