branch feature/2246 created (now 1541342)
This is an automated email from the git hooks/post-receive script. New change to branch feature/2246 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git at 1541342 Ne pas autorisé un import d'un voyage déjà existant (clef unique name) (See #2246) This branch includes the following new commits: new 1541342 Ne pas autorisé un import d'un voyage déjà existant (clef unique name) (See #2246) 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 1541342e799e303c66794950deca07c828e724f0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 13:01:12 2016 +0200 Ne pas autorisé un import d'un voyage déjà existant (clef unique name) (See #2246) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/2246 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 1541342e799e303c66794950deca07c828e724f0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 13:01:12 2016 +0200 Ne pas autorisé un import d'un voyage déjà existant (clef unique name) (See #2246) --- .../services/service/UserDbPersistenceService.java | 6 +++ .../importdata/DuplicatedVoyageException.java | 43 ++++++++++++++++++++++ .../actions/VoyageCommonsVoyageImportAction.java | 13 +++++-- .../i18n/echobase-services_en_GB.properties | 1 + .../i18n/echobase-services_fr_FR.properties | 1 + 5 files changed, 61 insertions(+), 3 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 90524e7..7a69216 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 @@ -946,6 +946,12 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { persistenceContext.getVoyageDao().delete(voyage); } + public boolean containsVoyageByName(String voyageName) { + return persistenceContext.getVoyageDao() + .forNameEquals(voyageName) + .exists(); + } + //------------------------------------------------------------------------// //--- Transversal --------------------------------------------------------// //------------------------------------------------------------------------// diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedVoyageException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedVoyageException.java new file mode 100644 index 0000000..d6316a7 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedVoyageException.java @@ -0,0 +1,43 @@ +package fr.ifremer.echobase.services.service.importdata; + +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2015 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 1/21/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.9 + */ +public class DuplicatedVoyageException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedVoyageException(Locale locale, String voyageName) { + super(l(locale, "echobase.importError.duplicate.voyage", voyageName)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java index 619aa02..1d6e4a4 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java @@ -5,6 +5,8 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.DuplicatedVoyageException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.MoreThanOnceVoyageToImportException; import fr.ifremer.echobase.services.service.importdata.NoVoyageToImportException; @@ -49,8 +51,9 @@ public class VoyageCommonsVoyageImportAction extends VoyageCommonsImportDataActi log.info("Starts import of voyages from file " + inputFile.getFileName()); } - Mission mission = getPersistenceService().getMission(importDataContext.getConfiguration().getMissionId()); - AreaOfOperation areaOfOperation = getPersistenceService().getAreaOfOperation(importDataContext.getConfiguration().getAreaOfOperationId()); + UserDbPersistenceService persistenceService = getPersistenceService(); + Mission mission = persistenceService.getMission(importDataContext.getConfiguration().getMissionId()); + AreaOfOperation areaOfOperation = persistenceService.getAreaOfOperation(importDataContext.getConfiguration().getAreaOfOperationId()); String voyageDescription = getConfiguration().getVoyageDescription(); String datum = getConfiguration().getDatum(); @@ -68,12 +71,16 @@ public class VoyageCommonsVoyageImportAction extends VoyageCommonsImportDataActi doFlushTransaction(++rowNumber); + if (persistenceService.containsVoyageByName(voyage.getName())) { + throw new DuplicatedVoyageException(locale, voyage.getName()); + } + voyage.setMission(mission); voyage.setAreaOfOperation(areaOfOperation); voyage.setDescription(voyageDescription); voyage.setDatum(datum); - Voyage createdVoyage = getPersistenceService().createVoyage(voyage); + Voyage createdVoyage = persistenceService.createVoyage(voyage); if (newVoyage == null) { newVoyage = createdVoyage; } else { 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 b0141d5..67d54f5 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 @@ -33,6 +33,7 @@ echobase.exportError.toFile=An error occured while exporting file %s \:%s echobase.importError.can.only.import.one.voyage.atime=Impossible to import more that one voyage at a time echobase.importError.dataMetadata.notFound=Metadata column %s missing (existing values \:%s) echobase.importError.duplicate.sample=Operation %s cannot comprise several samples of same type, species and size category +echobase.importError.duplicate.voyage=A voyage named «%s» already exists un database. echobase.importError.elementaryCell.withMissingDepthEnd=Elementary Cell (id\: %s - name %s) does not contains data in column MOVIES_EILayer\\cellset\\depthend, this is not allowed echobase.importError.esduCell.notfound=A new « dataAquisition» entry must be created for survey %s, vessel %s, instrument %s, whereas some elementary cells are not associated to an ESDU cell (line %s) echobase.importError.esduCell.withDepthEndFilled=ESDU Cell (id\: %s - name %s) contains data in column MOVIES_EILayer\\cellset\\depthend, this is not allowed. 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 d958650..bb59c23 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 @@ -33,6 +33,7 @@ echobase.exportError.toFile=Erreur lors de l'extraction du fichier %s \: %s echobase.importError.can.only.import.one.voyage.atime=Vous ne pouvez pas importer plus d'un voyage à la fois echobase.importError.dataMetadata.notFound=Colonne de métadonnées nommée %s non trouvée (valeurs existantes \: %s) echobase.importError.duplicate.sample=L'opération %s ne peut pas contenir deux échantillons de même type %s, espèce %s et classe de taille %s +echobase.importError.duplicate.voyage=La marée nommée «%s» existe déjà dans la base. echobase.importError.elementaryCell.withMissingDepthEnd=La cellule de type élémentaire (id\: %s - nom %s) ne contient pas la colonne MOVIES_EILayer\\cellset\\depthend renseignée, ce qui n'est pas autorisé. echobase.importError.esduCell.notfound=Un nouvelle entrée « dataAquisition »doit être créée pour la campagne %s, navire %s, instrument %s, mais il reste des cellules élémentaires non rattachées à une cellule ESDU (ligne %s) echobase.importError.esduCell.withDepthEndFilled=La cellule de type ESDU (id\: %s - nom %s) contient la colonne MOVIES_EILayer\\cellset\\depthend renseignée, ce qui n'est pas autorisé. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm