branch develop updated (be369f2 -> f0bfb8a)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository echobase. See http://git.codelutin.com/echobase.git from be369f2 fixes #6509 new f0bfb8a fixes #6053: On peut importer plusieurs fois les mêmes résultats voyage pour un même voyage The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit f0bfb8ae4b2c5ea19a072a3f1df699ea6400cf3e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Jan 21 19:49:25 2015 +0100 fixes #6053: On peut importer plusieurs fois les mêmes résultats voyage pour un même voyage Summary of changes: .../services/service/UserDbPersistenceService.java | 7 ++++ .../ResultsVoyageImportAlreadyExistException.java | 16 ++++++++ .../importdata/ResultsVoyageImportService.java | 48 +++++++++++----------- .../i18n/echobase-services_en_GB.properties | 1 + .../i18n/echobase-services_fr_FR.properties | 1 + 5 files changed, 49 insertions(+), 24 deletions(-) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportAlreadyExistException.java -- 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 echobase. See http://git.codelutin.com/echobase.git commit f0bfb8ae4b2c5ea19a072a3f1df699ea6400cf3e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Jan 21 19:49:25 2015 +0100 fixes #6053: On peut importer plusieurs fois les mêmes résultats voyage pour un même voyage --- .../services/service/UserDbPersistenceService.java | 7 ++++ .../ResultsVoyageImportAlreadyExistException.java | 16 ++++++++ .../importdata/ResultsVoyageImportService.java | 48 +++++++++++----------- .../i18n/echobase-services_en_GB.properties | 1 + .../i18n/echobase-services_fr_FR.properties | 1 + 5 files changed, 49 insertions(+), 24 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 7e4939d..46c321c 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 @@ -33,6 +33,7 @@ import fr.ifremer.echobase.entities.EchoBaseUserPersistenceContext; import fr.ifremer.echobase.entities.EntityModificationLog; import fr.ifremer.echobase.entities.ImportFile; import fr.ifremer.echobase.entities.ImportLog; +import fr.ifremer.echobase.entities.ImportLogTopiaDao; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; @@ -77,6 +78,7 @@ 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; @@ -559,6 +561,11 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { } + public boolean isImportLogForVoyageExists(String voyageId) { + ImportLogTopiaDao importLogDao = persistenceContext.getImportLogDao(); + return importLogDao.forVoyageIdEquals(voyageId).addEquals(ImportLog.PROPERTY_IMPORT_TYPE, ImportType.RESULT_VOYAGE).exists(); + } + //------------------------------------------------------------------------// //--- LengthAgeKey -------------------------------------------------------// //------------------------------------------------------------------------// diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportAlreadyExistException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportAlreadyExistException.java new file mode 100644 index 0000000..ee1230a --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportAlreadyExistException.java @@ -0,0 +1,16 @@ +package fr.ifremer.echobase.services.service.importdata; + +/** + * Created on 1/21/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.9 + */ +public class ResultsVoyageImportAlreadyExistException extends ImportException { + + private static final long serialVersionUID = 1L; + + public ResultsVoyageImportAlreadyExistException(String message) { + super(message); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportService.java index d30c53f..95c90aa 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportService.java @@ -57,6 +57,8 @@ import java.util.Arrays; import java.util.Collection; import java.util.Map; +import static org.nuiton.i18n.I18n.l; + /** * To import results attached to a voyage (but not cells). * @@ -66,12 +68,10 @@ import java.util.Map; public class ResultsVoyageImportService extends AbstractImportDataService<ResultsImportConfiguration> { /** Logger. */ - private static final Log log = - LogFactory.getLog(ResultsVoyageImportService.class); + private static final Log log = LogFactory.getLog(ResultsVoyageImportService.class); @Override - public void startImport(ResultsImportConfiguration configuration, - EchoBaseUser user) throws ImportException { + public void startImport(ResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { Map<String, Species> speciesMap = persistenceService.getEntitiesMap( Species.class, @@ -81,23 +81,25 @@ public class ResultsVoyageImportService extends AbstractImportDataService<Result Strata.class, Stratas.STRATA_BY_NAME); // get selected voyage - Voyage voyage = persistenceService.getVoyage( - configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Arrays.asList( - voyage), Voyages.VOYAGE_NAME); + Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - InputFile inputFile; + // check if there is a such same import on this voyage + boolean importExists = persistenceService.isImportLogForVoyageExists(configuration.getVoyageId()); + if (importExists) { + if (log.isWarnEnabled()) { + log.warn("there is already a voyage result import for this voyage, won't import."); + } + throw new ResultsVoyageImportAlreadyExistException(l(getLocale(), "echobase.importError.voyageResultImport.alreadyDone")); + } - EchoBaseCsvFileImportResult importResult; + // authorize only the selected voyage to be imported + Map<String, Voyage> voyageMap = Maps.uniqueIndex(Arrays.asList(voyage), Voyages.VOYAGE_NAME); - inputFile = configuration.getLengthAgeKeyFile(); - if (inputFile.hasFile()) { + if (configuration.getLengthAgeKeyFile().hasFile()) { - importResult = importLenthAgeKey( + EchoBaseCsvFileImportResult importResult = importLenthAgeKey( configuration, - inputFile, + configuration.getLengthAgeKeyFile(), voyageMap, strataMap, speciesMap @@ -105,12 +107,11 @@ public class ResultsVoyageImportService extends AbstractImportDataService<Result configuration.addResult(importResult); } - inputFile = configuration.getLengthWeightKeyFile(); - if (inputFile.hasFile()) { + if (configuration.getLengthWeightKeyFile().hasFile()) { - importResult = importLenghtWeightKey( + EchoBaseCsvFileImportResult importResult = importLenghtWeightKey( configuration, - inputFile, + configuration.getLengthWeightKeyFile(), voyageMap, strataMap, speciesMap @@ -118,12 +119,11 @@ public class ResultsVoyageImportService extends AbstractImportDataService<Result configuration.addResult(importResult); } - inputFile = configuration.getEchotypeFile(); - if (inputFile.hasFile()) { + if (configuration.getEchotypeFile().hasFile()) { - importResult = importEchotypeFile( + EchoBaseCsvFileImportResult importResult = importEchotypeFile( configuration, - inputFile, + configuration.getEchotypeFile(), voyageMap, speciesMap ); diff --git a/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties b/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties index 86b2e28..184fa24 100644 --- a/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties +++ b/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties @@ -38,6 +38,7 @@ echobase.importError.no.transit.between.date=No transit associated to voyage %s echobase.importError.no.voyage.imported=No voyage imported echobase.importError.transect.notfound=No parent transit for date %s and vessel %s in cruise %s (line %s) echobase.importError.transit.notfound=No parent transit for date %s in cruise %s (line %s) +echobase.importError.voyageResultImport.alreadyDone=There is already a such import (Voyage result) for the given voyage. echobase.importLabel.withFile=%s with file %s echobase.info.modifiedProperty=Property '%s', old value\: '%s', new value\: '%s' echobase.info.newEntityCreated=A new entity was created (%s) diff --git a/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties b/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties index d7b28bb..63b83dd 100644 --- a/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties +++ b/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties @@ -38,6 +38,7 @@ echobase.importError.no.transit.between.date=Pas de transit attribué au voyage echobase.importError.no.voyage.imported=Aucun voyage importé echobase.importError.transect.notfound=Pas de transit auquel rattacher la date %s et le navire %s dans la campagne %s (ligne %s) echobase.importError.transit.notfound=Pas de transit auquel rattacher la date %s dans la campagne %s (ligne %s) +echobase.importError.voyageResultImport.alreadyDone=Il existe déjà un import de type Résultat voyage pour le voyage sélectionné. echobase.importLabel.withFile=%s avec le fichier %s echobase.info.modifiedProperty=Propriété '%s', ancienne valeur \: '%s', nouvelle valeur \: '%s' echobase.info.newEntityCreated=Une nouvelle entité a été créée (%s) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm