This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See http://git.codelutin.com/echobase.git commit badce5e45c1e5ac8650526f97de759ddd06e4259 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Feb 19 11:45:36 2016 +0100 Utiliser un optional quand on veut récupérer un ImportLog (il se peut qu'il n'existe plus suite à des suppressions en cascade d'autres imports) (See #8000) --- .../services/service/UserDbPersistenceService.java | 5 ++- .../service/removedata/RemoveDataService.java | 40 ++++++++++++++-------- .../ui/actions/removeData/ConfirmDelete.java | 25 +++++++++----- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java index cdba5a5..73394b3 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java @@ -78,7 +78,6 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaIdFactory; import org.nuiton.topia.persistence.TopiaNotFoundException; -import org.nuiton.topia.persistence.internal.AbstractTopiaDao; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import javax.inject.Inject; @@ -484,8 +483,8 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getImportLogDao().findAll(); } - public ImportLog getImportLog(String id) { - return persistenceContext.getImportLogDao().findByTopiaId(id); + public Optional<ImportLog> getOptionalImportLog(String id) { + return persistenceContext.getImportLogDao().forTopiaIdEquals(id).tryFindUnique(); } public ImportLog createImportLog(String voyageId, diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java index 105838b..aa4883e 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java @@ -21,6 +21,7 @@ package fr.ifremer.echobase.services.service.removedata; * #L% */ +import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -122,20 +123,26 @@ public class RemoveDataService extends EchoBaseServiceSupport { Maps.newTreeMap(IMPORT_LOG_COMPARATOR); for (String id : model.getImportLogIds()) { - ImportLog importLog = persistenceService.getImportLog(id); - - Class<? extends AbstractRemoveDataStrategy> strategyType = - getStrategy(importLog); - AbstractRemoveDataStrategy strategy = newService(strategyType); - strategy.setProgressModel(model); - Voyage voyage = persistenceService.getVoyage(importLog.getVoyageId()); - long l = strategy.computeNbSteps(voyage, importLog); - ImportContext importContext = new ImportContext(id, l + 3, strategy, voyage); - toTreat.put(importLog, importContext); - if (log.isInfoEnabled()) { - log.info("Nb steps for importLog " + id + ": " + l); + Optional<ImportLog> optionalImportLog = persistenceService.getOptionalImportLog(id); + + if (optionalImportLog.isPresent()) { + + ImportLog importLog = optionalImportLog.get(); + Class<? extends AbstractRemoveDataStrategy> strategyType = + getStrategy(importLog); + AbstractRemoveDataStrategy strategy = newService(strategyType); + strategy.setProgressModel(model); + Voyage voyage = persistenceService.getVoyage(importLog.getVoyageId()); + long l = strategy.computeNbSteps(voyage, importLog); + ImportContext importContext = new ImportContext(id, l + 3, strategy, voyage); + toTreat.put(importLog, importContext); + if (log.isInfoEnabled()) { + log.info("Nb steps for importLog " + id + ": " + l); + } + nbSteps += importContext.nbSteps; + } - nbSteps += importContext.nbSteps; + } model.setNbSteps(nbSteps); @@ -152,11 +159,12 @@ public class RemoveDataService extends EchoBaseServiceSupport { EchoBaseUser user) { // check that importLog still exists - ImportLog importLog = persistenceService.getImportLog(importContext.importLogId); + Optional<ImportLog> optionalImportLog = persistenceService.getOptionalImportLog(importContext.importLogId); AbstractRemoveDataStrategy strategy = importContext.strategy; - if (importLog == null) { + if (!optionalImportLog.isPresent()) { + // import was already removed (from a previously remove I guess) long nbStreps = importContext.nbSteps; for (long i = 0; i < nbStreps; i++) { @@ -166,6 +174,8 @@ public class RemoveDataService extends EchoBaseServiceSupport { return "\n"; } + ImportLog importLog = optionalImportLog.get(); + long s0 = TimeLog.getTime(); try { diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java index 5b69a09..e09add0 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/removeData/ConfirmDelete.java @@ -21,6 +21,7 @@ package fr.ifremer.echobase.ui.actions.removeData; * #L% */ +import com.google.common.base.Optional; import com.google.common.collect.Lists; import fr.ifremer.echobase.entities.ImportLog; import fr.ifremer.echobase.entities.ImportType; @@ -84,17 +85,23 @@ public class ConfirmDelete extends AbstractConfigureAction<RemoveDataConfigurati if (log.isInfoEnabled()) { log.info("Load import log " + id); } - ImportLog importLog = userDbPersistenceService.getImportLog(id); - Voyage voyageEntity = userDbPersistenceService.getVoyage(importLog.getVoyageId()); + Optional<ImportLog> optionalImportLog = userDbPersistenceService.getOptionalImportLog(id); + if (optionalImportLog.isPresent()) { + + ImportLog importLog = optionalImportLog.get(); + Voyage voyageEntity = userDbPersistenceService.getVoyage(importLog.getVoyageId()); + + String voyage = decorator.toString(voyageEntity); + String importType = importTypes.get(importLog.getImportType().name()); + String result = t("echobase.common.importLogToDelete", + voyage, + importType, + importLog.getImportDate()); + importLogs.add(result); + + } - String voyage = decorator.toString(voyageEntity); - String importType = importTypes.get(importLog.getImportType().name()); - String result = t("echobase.common.importLogToDelete", - voyage, - importType, - importLog.getImportDate()); - importLogs.add(result); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.