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 ea54a1e9f532ce63c96c8b723871a609649c4e9a Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 10:50:51 2016 +0200 Début de check pour les Sub-Sample mais il me manque des confirmations, à revoir avec Mathieu --- .../services/service/UserDbPersistenceService.java | 9 +++++ .../importdata/DuplicatedSubSampleException.java | 47 ++++++++++++++++++++++ .../VoyageCatchesSubSampleImportAction.java | 11 +++++ .../i18n/echobase-services_en_GB.properties | 1 + .../i18n/echobase-services_fr_FR.properties | 1 + 5 files changed, 69 insertions(+) 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 9d160ba..603c26a 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 @@ -793,6 +793,15 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Sample -------------------------------------------------------------// //------------------------------------------------------------------------// + public boolean containsSubSample(Operation operation, SpeciesCategory category, String lengthClass) { + return false; + //FIXME +// return persistenceContext.getSampleDao() +// .forSpeciesCategoryEquals(category) +// .addEquals(Sample.PROPERTY_OPERATION, operation) +// .exists(); + } + public Sample getSample(String id) { return persistenceContext.getSampleDao().forTopiaIdEquals(id).findUnique(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSubSampleException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSubSampleException.java new file mode 100644 index 0000000..03a0543 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSubSampleException.java @@ -0,0 +1,47 @@ +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 5/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class DuplicatedSubSampleException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedSubSampleException(Locale locale, + String operationId, + String category, + String lengthClass) { + super(l(locale, "echobase.importError.duplicate.subSamble", lengthClass, category, operationId)); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java index be33c91..b0fe97d 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java @@ -12,6 +12,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedSubSampleException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; @@ -88,6 +89,16 @@ public class VoyageCatchesSubSampleImportAction extends VoyageCatchesImportDataA // find the sample with this category Sample sample = operation.getSample(category, sampleTypeSubsample); + boolean exists = sample != null && persistenceService.containsSubSample(operation, + category, + row.getLengthClass()); + if (exists) { + throw new DuplicatedSubSampleException(getLocale(), + operation.getId(), + category.toString(), + row.getLengthClass()); + } + if (sample == null || (sample.getSampleWeight() != null && !sample.getSampleWeight().equals(row.getSampleWeight()))) { // must create it 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 47c684c..efdb096 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 @@ -35,6 +35,7 @@ echobase.importError.dataMetadata.notFound=Metadata column %s missing (existing echobase.importError.duplicate.gearMetataValue=A gear meta data (type «%s») value on engin «%s» for operation with id «%s», on startum «%s» - vessel «%s» on voyage «%s» already exists in database. echobase.importError.duplicate.operation=An operation with id «%s», on startum «%s» - vessel «%s» on voyage «%s» already exists in database. echobase.importError.duplicate.operationMetataValue=An operation meta data (type «%s») value for operation with id «%s», on startum «%s» - vessel «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.subSamble=Subs-sample (length class %s, category %s, operation %s) already exists in database. echobase.importError.duplicate.sample=Operation %s cannot comprise several samples of same type, species and size category echobase.importError.duplicate.transect=A transect titled «%s» on voyage «%s» already exists in database. echobase.importError.duplicate.transit=A transit start «%s» - end «%s» on voyage «%s» already exists in database. 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 9ab4be7..5a09e87 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 @@ -35,6 +35,7 @@ echobase.importError.dataMetadata.notFound=Colonne de métadonnées nommée %s n echobase.importError.duplicate.gearMetataValue=La mise en œuvre (type %s) de l'engin «%s» (opération d'identifiant «%s» sur la strate «%s» - navire «%s» et sur la marée nommée «%s») existe déjà dans la base. echobase.importError.duplicate.operation=L'opération d'identifiant «%s» sur la strate «%s» - navire «%s» et sur la marée nommée «%s» existe déjà dans la base. echobase.importError.duplicate.operationMetataValue=La donnée (type %s) (opération d'identifiant «%s» sur la strate «%s» - navire «%s» et sur la marée nommée «%s») existe déjà dans la base. +echobase.importError.duplicate.subSamble=Le subs-sample (classe de taille %s, catégorie %s, opération %s) existe déjà dans la base. 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.transect=Le transect nommé «%s» sur la marée nommée «%s» existe déjà dans la base. echobase.importError.duplicate.transit=Le transit début «%s» - fin «%s» sur la marée nommée «%s» existe déjà dans la base. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.