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 68186cdae134cf92827fce376fab2d14040c1d5f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 16:34:38 2015 +0200 suppression des référentiels temporaires importés pendant la validation de l'import --- .../GenericFormatReferentialImportResult.java | 5 + .../importactions/RestoreAfterValidateAction.java | 132 +++++++++++++++++++-- 2 files changed, 126 insertions(+), 11 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index 016a020..d7f86f2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -31,6 +31,7 @@ import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -84,6 +85,10 @@ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEnti return entitiesAdded.entrySet(); } + public Collection<E> getEntitiesAdded() { + return entitiesAdded.values(); + } + public Set<Map.Entry<String, E>> getEntitiesLinkedEntries() { return entitiesLinked.entrySet(); } 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 index c62d051..32fc547 100644 --- 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 @@ -24,14 +24,26 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; 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; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatImportRequest; +import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.HashSet; +import java.util.Set; + /** * Created on 3/25/15. * @@ -58,16 +70,58 @@ public class RestoreAfterValidateAction extends ImportActionSupport { @Override protected void doExecute() { - GenericFormatImportRequest importRequest = importContext.getImportRequest(); - - try { - - rollbackSampleCategoryModel(importRequest); - - } finally { - - rollbackProtocol(importRequest); - + Set<Runnable> actions = new HashSet<>(); + actions.add(new Runnable() { + @Override + public void run() { + rollbackSampleCategoryModel(importContext.getImportRequest()); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackProtocol(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackPreviousProtocol(importContext.getImportRequest()); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporaryGears(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporaryPersons(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporarySpecies(); + } + }); + actions.add(new Runnable() { + @Override + public void run() { + rollbackTemporaryVessels(); + } + }); + + for (Runnable action : actions) { + try { + action.run(); + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not execute rollback action", e); + } + } } } @@ -83,7 +137,7 @@ public class RestoreAfterValidateAction extends ImportActionSupport { } - protected void rollbackProtocol(GenericFormatImportRequest importRequest) { + protected void rollbackPreviousProtocol(GenericFormatImportRequest importRequest) { TuttiProtocol previousProtocol = importRequest.getProtocol(); if (previousProtocol != null) { @@ -95,6 +149,10 @@ public class RestoreAfterValidateAction extends ImportActionSupport { } + } + + protected void rollbackProtocol() { + TuttiProtocol importedProtocol = importContext.getImportedProtocol(); if (importedProtocol != null) { @@ -105,6 +163,58 @@ public class RestoreAfterValidateAction extends ImportActionSupport { } + } + + protected void rollbackTemporaryGears() { + + GenericFormatReferentialImportResult<Gear, Integer> fileResult = importContext.getReferentialTemporaryGearFileResult(); + Set<Integer> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), TuttiEntities.GET_ID_AS_INT)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary gears: " + addedEntriesIds); + } + persistenceService.deleteTemporaryGears(addedEntriesIds); + } } + + protected void rollbackTemporaryPersons() { + + GenericFormatReferentialImportResult<Person, Integer> fileResult = importContext.getReferentialTemporaryPersonFileResult(); + Set<Integer> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), TuttiEntities.GET_ID_AS_INT)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary persons: " + addedEntriesIds); + } + persistenceService.deleteTemporaryPersons(addedEntriesIds); + } + + } + + protected void rollbackTemporarySpecies() { + + GenericFormatReferentialImportResult<Species, Integer> fileResult = importContext.getReferentialTemporarySpeciesFileResult(); + Set<Integer> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), Speciess.GET_REFERECE_TAXON_ID_AS_INT)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary species: " + addedEntriesIds); + } + persistenceService.deleteTemporarySpecies(addedEntriesIds); + } + + } + + protected void rollbackTemporaryVessels() { + + GenericFormatReferentialImportResult<Vessel, String> fileResult = importContext.getReferentialTemporaryVesselFileResult(); + Set<String> addedEntriesIds = Sets.newHashSet(Iterables.transform(fileResult.getEntitiesAdded(), TuttiEntities.GET_ID)); + if (!addedEntriesIds.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("Rollback previous imported temporary vessels: " + addedEntriesIds); + } + persistenceService.deleteTemporaryVessels(addedEntriesIds); + } + + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.