branch feature/2246 updated (1541342 -> 31e9b45)
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 from 1541342 Ne pas autorisé un import d'un voyage déjà existant (clef unique name) (See #2246) new 2d6139e Ajout bidirection sur le modèle (A reverter quand import branche Atlantos) new 262c51e Début ajout migration pour les clef naturelles + traitement pour import transit (See #2246) new cda7281 Typo sur le nom d'une méthode new 73ff899 Ne pas autoriser de réimporter des transits déjà existants (See #2246) new 31e9b45 Ne pas autoriser de réimporter des transects déjà existants (See #2246) The 5 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 31e9b4548532e513bc3563f6f9e283f526d5e091 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 15:08:46 2016 +0200 Ne pas autoriser de réimporter des transects déjà existants (See #2246) commit 73ff8998bbea1e78b5e9f802361b1289bb973868 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:49:36 2016 +0200 Ne pas autoriser de réimporter des transits déjà existants (See #2246) commit cda728120f5ebdb2c5e0cacecd3aa7a1077966e3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:49:09 2016 +0200 Typo sur le nom d'une méthode commit 262c51e3583f2b496b87c78615a1f8cd4ba0c252 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:14:33 2016 +0200 Début ajout migration pour les clef naturelles + traitement pour import transit (See #2246) commit 2d6139eea45b74df2404f6f025c1b334cf57066c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:12:27 2016 +0200 Ajout bidirection sur le modèle (A reverter quand import branche Atlantos) Summary of changes: ... WorkingDbMigrationCallBackForVersion3_903.java} | 10 +++++----- .../workingDb/h2/3.903-0-add-naturalIds.sql | 2 ++ .../workingDb/pg/3.903-0-add-naturalIds.sql | 2 ++ echobase-domain/src/main/xmi/echobase.properties | 10 +++++++++- echobase-domain/src/main/xmi/echobase.zargo | Bin 90458 -> 90445 bytes .../services/service/UserDbPersistenceService.java | 17 +++++++++++++++++ ...eption.java => DuplicatedTransectException.java} | 10 +++++----- ...ception.java => DuplicatedTransitException.java} | 11 ++++++----- .../importdata/DuplicatedVoyageException.java | 4 ++-- .../actions/VoyageCommonsTransectImportAction.java | 6 ++++++ .../actions/VoyageCommonsTransitImportAction.java | 8 +++++++- .../i18n/echobase-services_en_GB.properties | 2 ++ .../i18n/echobase-services_fr_FR.properties | 2 ++ .../removedata/AbstractRemoveDataServiceTest.java | 6 ++++++ .../actions/importData/ConfigureCommonImport.java | 2 +- 15 files changed, 72 insertions(+), 20 deletions(-) copy echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/{WorkingDbMigrationCallBackForVersion3_902.java => WorkingDbMigrationCallBackForVersion3_903.java} (73%) create mode 100644 echobase-domain/src/main/resources/migration/workingDb/h2/3.903-0-add-naturalIds.sql create mode 100644 echobase-domain/src/main/resources/migration/workingDb/pg/3.903-0-add-naturalIds.sql copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedTransectException.java} (78%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedTransitException.java} (75%) -- 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 2d6139eea45b74df2404f6f025c1b334cf57066c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:12:27 2016 +0200 Ajout bidirection sur le modèle (A reverter quand import branche Atlantos) --- echobase-domain/src/main/xmi/echobase.zargo | Bin 90458 -> 90445 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/echobase-domain/src/main/xmi/echobase.zargo b/echobase-domain/src/main/xmi/echobase.zargo index 9b4f1f6..8a6228a 100644 Binary files a/echobase-domain/src/main/xmi/echobase.zargo and b/echobase-domain/src/main/xmi/echobase.zargo differ -- 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 262c51e3583f2b496b87c78615a1f8cd4ba0c252 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:14:33 2016 +0200 Début ajout migration pour les clef naturelles + traitement pour import transit (See #2246) --- .../WorkingDbMigrationCallBackForVersion3_903.java | 33 ++++++++++++++++++++++ .../workingDb/h2/3.903-0-add-naturalIds.sql | 2 ++ .../workingDb/pg/3.903-0-add-naturalIds.sql | 2 ++ echobase-domain/src/main/xmi/echobase.properties | 10 ++++++- .../actions/VoyageCommonsTransitImportAction.java | 2 +- .../removedata/AbstractRemoveDataServiceTest.java | 6 ++++ 6 files changed, 53 insertions(+), 2 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/WorkingDbMigrationCallBackForVersion3_903.java b/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/WorkingDbMigrationCallBackForVersion3_903.java new file mode 100644 index 0000000..7aa3288 --- /dev/null +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/WorkingDbMigrationCallBackForVersion3_903.java @@ -0,0 +1,33 @@ +package fr.ifremer.echobase.persistence.migration.workingDb; + +import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.support.TopiaSqlSupport; +import org.nuiton.version.Version; +import org.nuiton.version.Versions; + +import java.util.List; + +/** + * Created on 09/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class WorkingDbMigrationCallBackForVersion3_903 extends WorkingDbMigrationCallBackForVersionSupport { + + @Override + public Version getVersion() { + return Versions.valueOf("3.903"); + } + + @Override + protected void prepareMigrationScript(TopiaSqlSupport sqlSupport, + List<String> queries, + boolean showSql, + boolean showProgression) throws TopiaException { + + // See https://forge.codelutin.com/issues/2246 + addSpecificScript("3.903-0-add-naturalIds.sql", queries); + + } + +} diff --git a/echobase-domain/src/main/resources/migration/workingDb/h2/3.903-0-add-naturalIds.sql b/echobase-domain/src/main/resources/migration/workingDb/h2/3.903-0-add-naturalIds.sql new file mode 100644 index 0000000..f1c2d3b --- /dev/null +++ b/echobase-domain/src/main/resources/migration/workingDb/h2/3.903-0-add-naturalIds.sql @@ -0,0 +1,2 @@ +ALTER TABLE TRANSIT ADD CONSTRAINT UK_TRANSIT UNIQUE (Voyage, startTime, endTime ); +CREATE UNIQUE INDEX UK_TRANSIT_IDX ON TRANSIT (Voyage, startTime, endTime ); \ No newline at end of file diff --git a/echobase-domain/src/main/resources/migration/workingDb/pg/3.903-0-add-naturalIds.sql b/echobase-domain/src/main/resources/migration/workingDb/pg/3.903-0-add-naturalIds.sql new file mode 100644 index 0000000..f1c2d3b --- /dev/null +++ b/echobase-domain/src/main/resources/migration/workingDb/pg/3.903-0-add-naturalIds.sql @@ -0,0 +1,2 @@ +ALTER TABLE TRANSIT ADD CONSTRAINT UK_TRANSIT UNIQUE (Voyage, startTime, endTime ); +CREATE UNIQUE INDEX UK_TRANSIT_IDX ON TRANSIT (Voyage, startTime, endTime ); \ No newline at end of file diff --git a/echobase-domain/src/main/xmi/echobase.properties b/echobase-domain/src/main/xmi/echobase.properties index 833b963..18fd0ac 100644 --- a/echobase-domain/src/main/xmi/echobase.properties +++ b/echobase-domain/src/main/xmi/echobase.properties @@ -23,7 +23,7 @@ model.tagValue.notGenerateToString=true model.tagValue.generateOperatorForDAOHelper=true -model.tagValue.version=3.902 +model.tagValue.version=3.903 model.tagValue.generatePropertyChangeSupport=false model.tagValue.generateBooleanGetMethods=false model.tagValue.indexForeignKeys=true @@ -65,6 +65,7 @@ fr.ifremer.echobase.entities.ImportLog.attribute.importType.tagValue.notNull=tru fr.ifremer.echobase.entities.ImportFileId.attribute.entityId.tagValue.notNull=true fr.ifremer.echobase.entities.ImportFileId.attribute.lineNumber.tagValue.notNull=true + fr.ifremer.echobase.entities.ImportFileId.attribute.importOrder.tagValue.notNull=true ############################################################################### @@ -284,6 +285,13 @@ fr.ifremer.echobase.entities.data.Category.attribute.speciesCategory.tagValue.na fr.ifremer.echobase.entities.data.Voyage.class.tagValue.naturalIdMutable=true fr.ifremer.echobase.entities.data.Voyage.attribute.name.tagValue.naturalId=true +fr.ifremer.echobase.entities.data.Transit.class.tagValue.naturalIdMutable=true +fr.ifremer.echobase.entities.data.Transit.attribute.voyage.tagValue.naturalId=true +fr.ifremer.echobase.entities.data.Transit.attribute.startTime.tagValue.naturalId=true +fr.ifremer.echobase.entities.data.Transit.attribute.endTime.tagValue.naturalId=true + +fr.ifremer.echobase.entities.data.Transit.attribute.voyage.tagValue.notNull=false + ############################################################################### ### Not null for data ######################################################### ############################################################################### diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java index 2065371..28539a8 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java @@ -59,7 +59,7 @@ public class VoyageCommonsTransitImportAction extends VoyageCommonsImportDataAct doFlushTransaction(++rowNumber); Transit transit = row.getTransit(); - + transit.setVoyage(voyage); transit.setRelatedActivity(relatedActivity); Transit createdTransit = persistenceService.createTransit(transit); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java index 0dfee1b..f50bd82 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java @@ -428,6 +428,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS // create transit Transit transit = transitDAO.create( TopiaEntity.PROPERTY_TOPIA_ID, transit1Id, + Transit.PROPERTY_VOYAGE, voyage, Transit.PROPERTY_START_TIME, newDate(), Transit.PROPERTY_END_TIME, newDate(), Transit.PROPERTY_START_LOCALITY, "transit1tartLocality", @@ -455,6 +456,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS // create transit Transit transit = transitDAO.create( TopiaEntity.PROPERTY_TOPIA_ID, transit2Id, + Transit.PROPERTY_VOYAGE, voyage, Transit.PROPERTY_START_TIME, newDate(), Transit.PROPERTY_END_TIME, newDate(), Transit.PROPERTY_START_LOCALITY, "transit2StartLocality", @@ -484,6 +486,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS // create transect Transect transect = transectDAO.create( TopiaEntity.PROPERTY_TOPIA_ID, transect1Id, + Transect.PROPERTY_TRANSIT, transit, Transect.PROPERTY_TITLE, "transect1Title", Transect.PROPERTY_VESSEL, getFirstEntity(Vessel.class), Transect.PROPERTY_STRATUM, "transect1Stratum" @@ -493,6 +496,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS // create transect2 Transect transect2 = transectDAO.create( TopiaEntity.PROPERTY_TOPIA_ID, transect1_2Id, + Transect.PROPERTY_TRANSIT, transit, Transect.PROPERTY_TITLE, "transect12Title", Transect.PROPERTY_VESSEL, getFirstEntity(Vessel.class), Transect.PROPERTY_STRATUM, "transect12Stratum" @@ -518,6 +522,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS // create transect Transect transect = transectDAO.create( TopiaEntity.PROPERTY_TOPIA_ID, transect2Id, + Transect.PROPERTY_TRANSIT, transit, Transect.PROPERTY_TITLE, "transect2Title", Transect.PROPERTY_VESSEL, getFirstEntity(Vessel.class), Transect.PROPERTY_STRATUM, "transect22tratum" @@ -527,6 +532,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS // create transect2 Transect transect2 = transectDAO.create( TopiaEntity.PROPERTY_TOPIA_ID, transect2_2Id, + Transect.PROPERTY_TRANSIT, transit, Transect.PROPERTY_TITLE, "transect22Title", Transect.PROPERTY_VESSEL, getFirstEntity(Vessel.class), Transect.PROPERTY_STRATUM, "transect22Stratum" -- 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 cda728120f5ebdb2c5e0cacecd3aa7a1077966e3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:49:09 2016 +0200 Typo sur le nom d'une méthode --- .../ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java index 73cf6b4..263abc9 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java @@ -151,7 +151,7 @@ public class ConfigureCommonImport extends AbstractConfigureImport<VoyageCommons getModel().getTransitFile().setContentType(contentType); } - public void setModelTransitFileFileName(String fileName) { + public void setModelTransitTransitFileFileName(String fileName) { getModel().getTransitFile().setFileName(fileName); } -- 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 73ff8998bbea1e78b5e9f802361b1289bb973868 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 14:49:36 2016 +0200 Ne pas autoriser de réimporter des transits déjà existants (See #2246) --- .../services/service/UserDbPersistenceService.java | 10 +++++ .../importdata/DuplicatedTransitException.java | 44 ++++++++++++++++++++++ .../actions/VoyageCommonsTransitImportAction.java | 6 +++ .../i18n/echobase-services_en_GB.properties | 1 + .../i18n/echobase-services_fr_FR.properties | 1 + 5 files changed, 62 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 7a69216..435c166 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 @@ -898,6 +898,16 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getTransitDao().forTopiaIdEquals(id).findUnique(); } + public boolean containsTransit(Voyage voyage, Date startTime, Date endTime) { + + return persistenceContext.getTransitDao() + .forVoyageEquals(voyage) + .addEquals(Transit.PROPERTY_START_TIME, startTime) + .addEquals(Transit.PROPERTY_END_TIME, endTime) + .exists(); + + } + public Transit getTransitContainsTransect(Transect transect) { return persistenceContext.getTransitDao().forTransectContains(transect).findAnyOrNull(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java new file mode 100644 index 0000000..faa1111 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java @@ -0,0 +1,44 @@ +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.Date; +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 DuplicatedTransitException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedTransitException(Locale locale, String voyageName, Date startTime, Date endTime) { + super(l(locale, "echobase.importError.duplicate.transit", voyageName, startTime, endTime)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java index 28539a8..1ace01d 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java @@ -4,6 +4,7 @@ import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedTransitException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageCommonsTransitImportExportModel; @@ -62,6 +63,11 @@ public class VoyageCommonsTransitImportAction extends VoyageCommonsImportDataAct transit.setVoyage(voyage); transit.setRelatedActivity(relatedActivity); + boolean exists = persistenceService.containsTransit(voyage, transit.getStartTime(), transit.getEndTime()); + if (exists) { + throw new DuplicatedTransitException(getLocale(), voyage.getName(), transit.getStartTime(), transit.getEndTime()); + } + Transit createdTransit = persistenceService.createTransit(transit); voyage.addTransit(createdTransit); 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 67d54f5..b4759c4 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.transit=A transit with voyage named «%s», start «%s» - end «%s» already exists un database. 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) 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 bb59c23..c69df8c 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.transit=Le transit de marée nommée «%s», début «%s» - fin «%s» existe déjà dans la base. 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) -- 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 31e9b4548532e513bc3563f6f9e283f526d5e091 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 15:08:46 2016 +0200 Ne pas autoriser de réimporter des transects déjà existants (See #2246) --- .../echobase/services/service/UserDbPersistenceService.java | 7 +++++++ ...edVoyageException.java => DuplicatedTransectException.java} | 10 +++++----- .../service/importdata/DuplicatedTransitException.java | 4 ++-- .../services/service/importdata/DuplicatedVoyageException.java | 4 ++-- .../importdata/actions/VoyageCommonsTransectImportAction.java | 6 ++++++ .../src/main/resources/i18n/echobase-services_en_GB.properties | 3 ++- .../src/main/resources/i18n/echobase-services_fr_FR.properties | 1 + 7 files changed, 25 insertions(+), 10 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 435c166..a1f09a4 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 @@ -870,6 +870,13 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Transect -----------------------------------------------------------// //------------------------------------------------------------------------// + public boolean containsTransect(Voyage voyage, String title) { + return persistenceContext.getTransectDao() + .forTitleEquals(title) + .addEquals(Transect.PROPERTY_TRANSIT + "." + Transit.PROPERTY_VOYAGE, voyage) + .exists(); + } + public Transect getTransect(String id) { return persistenceContext.getTransectDao().forTopiaIdEquals(id).findUnique(); } 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/DuplicatedTransectException.java similarity index 78% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedVoyageException.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransectException.java index d6316a7..531c595 100644 --- 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/DuplicatedTransectException.java @@ -28,16 +28,16 @@ import java.util.Locale; import static org.nuiton.i18n.I18n.l; /** - * Created on 1/21/15. + * Created on 5/09/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 2.9 + * @since 4.0 */ -public class DuplicatedVoyageException extends ImportRuntimeException { +public class DuplicatedTransectException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedVoyageException(Locale locale, String voyageName) { - super(l(locale, "echobase.importError.duplicate.voyage", voyageName)); + public DuplicatedTransectException(Locale locale, String voyageName, String title) { + super(l(locale, "echobase.importError.duplicate.transect", voyageName, title)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java index faa1111..74fbb18 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransitException.java @@ -29,10 +29,10 @@ import java.util.Locale; import static org.nuiton.i18n.I18n.l; /** - * Created on 1/21/15. + * Created on 5/09/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 2.9 + * @since 4.0 */ public class DuplicatedTransitException extends ImportRuntimeException { 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 index d6316a7..4ac4b03 100644 --- 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 @@ -28,10 +28,10 @@ import java.util.Locale; import static org.nuiton.i18n.I18n.l; /** - * Created on 1/21/15. + * Created on 5/09/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 2.9 + * @since 4.0 */ public class DuplicatedVoyageException extends ImportRuntimeException { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java index fddf006..19e87a9 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java @@ -5,6 +5,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedTransectException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.NoTransitFoundBetweenDateException; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; @@ -67,6 +68,11 @@ public class VoyageCommonsTransectImportAction extends VoyageCommonsImportDataAc Transect transect = row.getTransect(); + boolean exists = persistenceService.containsTransect(voyage, transect.getTitle()); + if (exists) { + throw new DuplicatedTransectException(getLocale(), voyage.getName(), transect.getTitle()); + } + Date timeCoverageStart = transect.getTimeCoverageStart(); Date timeCoverageEnd = transect.getTimeCoverageEnd(); 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 b4759c4..6275397 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,7 +33,8 @@ 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.transit=A transit with voyage named «%s», start «%s» - end «%s» already exists un database. +echobase.importError.duplicate.transect=A transect titled «%s» on voyage «%s» already exists un database. +echobase.importError.duplicate.transit=A transit start «%s» - end «%s» on voyage «%s» already exists un database. 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) 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 c69df8c..4b2fbdf 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.transect=Le transect de marée nommée «%s» - nom «%s» existe déjà dans la base. echobase.importError.duplicate.transit=Le transit de marée nommée «%s», début «%s» - fin «%s» existe déjà dans la base. 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é. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm