branch develop updated (e9095b6 -> 7272ca2)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git from e9095b6 Livrable #8170 Merge branch 'feature/8170' into develop new 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) new b3b3fac Ne pas pouvoir éditer les entitées transverses new 3209872 Ne pas autoriser de réimporter des opérations déjà existantes (See #2246) new dec2182 Renommage i18n new e847db7 Ajout toString new fa0d99e Bine utiliser la bonne page de résultat new 045c9fc Gérer la nullité d'erreur sur un import new 8690ac9 Meilleure gestion de la suppression d'un ImportLog new 91a2107 Ajout toString new 7a78dc1 Nom de Zeus... ne jamais utiliser id comme nom de colonne car en hql ici c'est égale au TopiaId... new 42d9dbb Tester avant de supprimer lors de la suppression d'un import new 9f72d77 Ne pas autoriser de réimporter des meta sur les opérations et engins déjà existantes (See #2246) new 883d892 Ne pas pouvoir effectuer plusieurs imports du même type new ea54a1e Début de check pour les Sub-Sample mais il me manque des confirmations, à revoir avec Mathieu new 0896dd7 Catch more exception while importing + ajout meilleur TODO new 6bcfd28 i18n new a23905d Ne pas autoriser de réimporter les données acoustiques déjà existantes (See #2246) new 0b1e7ee Ajout du numéro de ligne dans les messages d'erreurs (See #2246) new 9867f8f Ne pas autoriser de réimporter les résultats sur les voyages déjà existants (See #2246) new 8cf674f Ne pas autoriser de réimporter les résultats sur les voyages déjà existants (See #2246) new 3800f29 Refs-60 #2246, il reste encore quelques petits ajustements à faire. Merge branch 'feature/2246' into develop new 7272ca2 Mise à jour des bases de test The 27 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 7272ca2e7f0f6f3a1e2181ab26a330e1bab559ce Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 13 08:50:11 2016 +0200 Mise à jour des bases de test commit 3800f292fed0f97dbd270cf1c80ae39e66434f77 Merge: e9095b6 8cf674f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 13 08:45:01 2016 +0200 Refs-60 #2246, il reste encore quelques petits ajustements à faire. Merge branch 'feature/2246' into develop commit 8cf674f1b633a46ba7f6006fedfbd14a3c173fe2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 13 08:43:10 2016 +0200 Ne pas autoriser de réimporter les résultats sur les voyages déjà existants (See #2246) commit 9867f8f7a6cca1411711b3e7debb5b26d9dba16b Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 16:28:46 2016 +0200 Ne pas autoriser de réimporter les résultats sur les voyages déjà existants (See #2246) commit 0b1e7eef684a101f9c325a898721ae91aadae88a Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 15:49:30 2016 +0200 Ajout du numéro de ligne dans les messages d'erreurs (See #2246) commit a23905dde41b2fbd383cb388072f791e13eedc01 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 15:39:59 2016 +0200 Ne pas autoriser de réimporter les données acoustiques déjà existantes (See #2246) commit 6bcfd28ac5a7a8547b4881f45a94f8015143e0d3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 09:10:22 2016 +0200 i18n commit 0896dd7e73ceaab18a32924bbe995f719a7d4956 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 09:09:06 2016 +0200 Catch more exception while importing + ajout meilleur TODO 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 commit 883d89247f05706f7705b3d865dea461a9780ca1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 10:03:34 2016 +0200 Ne pas pouvoir effectuer plusieurs imports du même type commit 9f72d77b3ef53ef5a390f1f9c790b541c3ae5e4b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 09:46:46 2016 +0200 Ne pas autoriser de réimporter des meta sur les opérations et engins déjà existantes (See #2246) commit 42d9dbba9a49a41ab7d08a151dfbecf0b1053ca6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 08:56:15 2016 +0200 Tester avant de supprimer lors de la suppression d'un import commit 7a78dc116fad15df2eb723e922cfb9cec2b216e2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 08:55:34 2016 +0200 Nom de Zeus... ne jamais utiliser id comme nom de colonne car en hql ici c'est égale au TopiaId... commit 91a2107e04ad9955ce6cde17e8efa332d36fa8c9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 08:54:44 2016 +0200 Ajout toString commit 8690ac9d3c8e864dbb6e13d085f1dcd9f246612f Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 19:20:48 2016 +0200 Meilleure gestion de la suppression d'un ImportLog commit 045c9fc487758a476e73a9a9a4fae09f070d1640 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 19:20:14 2016 +0200 Gérer la nullité d'erreur sur un import commit fa0d99e448c1bd5ecfb5b26b105f755c90db949c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 19:19:51 2016 +0200 Bine utiliser la bonne page de résultat commit e847db717f176fcec2da21cf4c64be64cf77c712 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 18:38:36 2016 +0200 Ajout toString commit dec218226fafb44f80dcc85e11ba2324f4c79119 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 18:37:56 2016 +0200 Renommage i18n commit 32098723e5d9346217d1be59713a9630832fe5c3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 18:37:39 2016 +0200 Ne pas autoriser de réimporter des opérations déjà existantes (See #2246) commit b3b3fac2a9ecde1f843db04c7e9a2ecca76c7d0f Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 9 18:36:32 2016 +0200 Ne pas pouvoir éditer les entitées transverses 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) 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) Summary of changes: .../echobase/entities/ImportFileIdTopiaDao.java | 2 +- .../echobase/entities/ImportFileTopiaDao.java | 15 +++- .../echobase/entities/ImportLogTopiaDao.java | 6 +- .../{DataImpl.java => GearMetadataValueImpl.java} | 8 +- ...taImpl.java => OperationMetadataValueImpl.java} | 9 +- .../java/fr/ifremer/echobase/io/InputFile.java | 20 +++++ .../echobase/persistence/EchoBaseDbMeta.java | 5 ++ ...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 | 93 +++++++++++++++++++++ .../DuplicatedEchotypeAssociationException.java | 20 +++++ ...java => DuplicatedElementaryCellException.java} | 8 +- ...ption.java => DuplicatedEsduCellException.java} | 8 +- ...a => DuplicatedGearMetadataValueException.java} | 19 +++-- ...eption.java => DuplicatedMapCellException.java} | 8 +- ...tion.java => DuplicatedOperationException.java} | 10 +-- ...DuplicatedOperationMetadataValueException.java} | 11 +-- ...ion.java => DuplicatedRegionCellException.java} | 9 +- ...plicatedResultsVoyageLengthAgeKeyException.java | 20 +++++ ...catedResultsVoyageLengthWeightKeyException.java | 20 +++++ .../importdata/DuplicatedSampleException.java | 4 +- ...tion.java => DuplicatedSubSampleException.java} | 15 ++-- ...ption.java => DuplicatedTransectException.java} | 10 +-- ...eption.java => DuplicatedTransitException.java} | 11 ++- ...ception.java => DuplicatedVoyageException.java} | 10 +-- .../importdata/MismatchVoyageException.java | 21 +++++ .../actions/ImportDataActionSupport.java | 8 +- .../actions/VoyageAcousticsImportAction.java | 18 +++- .../VoyageCatchesSubSampleImportAction.java | 12 +++ .../VoyageCatchesTotalSampleImportAction.java | 2 +- .../actions/VoyageCommonsTransectImportAction.java | 6 ++ .../actions/VoyageCommonsTransitImportAction.java | 8 +- .../actions/VoyageCommonsVoyageImportAction.java | 13 ++- .../VoyageOperationsGearMetadataImportAction.java | 24 ++++++ .../VoyageOperationsOperationImportAction.java | 6 ++ ...ageOperationsOperationMetadataImportAction.java | 13 ++- .../VoyageResultsMapFishCellImportAction.java | 15 +++- .../VoyageResultsMapOtherCellImportAction.java | 15 +++- .../actions/VoyageResultsRegionImportAction.java | 21 ++++- .../VoyageResultsVoyageEchotypeImportAction.java | 19 +++-- ...oyageResultsVoyageLengthAgeKeyImportAction.java | 31 +++++++ ...geResultsVoyageLengthWeightKeyImportAction.java | 38 ++++++++- .../service/removedata/RemoveDataService.java | 6 +- .../strategy/AbstractRemoveDataStrategy.java | 15 ++-- .../strategy/OperationRemoveDataStrategy.java | 25 +++++- .../i18n/echobase-services_en_GB.properties | 17 +++- .../i18n/echobase-services_fr_FR.properties | 15 ++++ .../removedata/AbstractRemoveDataServiceTest.java | 6 ++ .../echobase-catches-and-voyage-result.h2.db.gz | Bin 826644 -> 825254 bytes .../import-data/echobase-catches.h2.db.gz | Bin 754845 -> 755094 bytes .../import-data/echobase-commonData.h2.db.gz | Bin 184388 -> 184645 bytes .../resources/import-data/echobase-nodata.h2.db.gz | Bin 137434 -> 137582 bytes .../echobase-operation-total-samples.h2.db.gz | Bin 601307 -> 601537 bytes .../import-data/echobase-operation.h2.db.gz | Bin 327903 -> 328156 bytes .../actions/importData/ConfigureCommonImport.java | 2 +- .../jsp/importData/importDataActionResult.jsp | 2 +- .../jsp/importData/resultAcousticImport.jsp | 2 +- .../WEB-INF/jsp/importData/resultCatchesImport.jsp | 2 +- .../jsp/importData/resultOperationImport.jsp | 2 +- .../WEB-INF/jsp/importData/resultResultsImport.jsp | 2 +- 63 files changed, 615 insertions(+), 116 deletions(-) copy echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/{DataImpl.java => GearMetadataValueImpl.java} (61%) copy echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/{DataImpl.java => OperationMetadataValueImpl.java} (60%) 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 create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEchotypeAssociationException.java copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedElementaryCellException.java} (77%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedEsduCellException.java} (78%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{DataMetadataNotFoundException.java => DuplicatedGearMetadataValueException.java} (55%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedMapCellException.java} (78%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{MoreThanOnceVoyageToImportException.java => DuplicatedOperationException.java} (72%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{MoreThanOnceVoyageToImportException.java => DuplicatedOperationMetadataValueException.java} (67%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{DataMetadataNotFoundException.java => DuplicatedRegionCellException.java} (77%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthAgeKeyException.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthWeightKeyException.java copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{MoreThanOnceVoyageToImportException.java => DuplicatedSubSampleException.java} (67%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedTransectException.java} (77%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{TransitNotFoundException.java => DuplicatedTransitException.java} (74%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{NoVoyageToImportException.java => DuplicatedVoyageException.java} (79%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/MismatchVoyageException.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 https://gitlab.nuiton.org/codelutin/echobase.git commit 9f72d77b3ef53ef5a390f1f9c790b541c3ae5e4b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 09:46:46 2016 +0200 Ne pas autoriser de réimporter des meta sur les opérations et engins déjà existantes (See #2246) --- .../services/service/UserDbPersistenceService.java | 24 ++++++++++- .../DuplicatedGearMetadataValueException.java | 50 ++++++++++++++++++++++ .../DuplicatedOperationMetadataValueException.java | 44 +++++++++++++++++++ .../VoyageOperationsGearMetadataImportAction.java | 23 ++++++++++ ...ageOperationsOperationMetadataImportAction.java | 13 +++++- .../i18n/echobase-services_en_GB.properties | 2 + .../i18n/echobase-services_fr_FR.properties | 2 + 7 files changed, 155 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 2bd2ca8..9d160ba 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 @@ -67,7 +67,10 @@ import fr.ifremer.echobase.entities.references.CellTypes; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; import fr.ifremer.echobase.entities.references.Mission; +import fr.ifremer.echobase.entities.references.OperationMetadata; import fr.ifremer.echobase.entities.references.SampleDataType; import fr.ifremer.echobase.entities.references.SampleType; import fr.ifremer.echobase.entities.references.SexCategory; @@ -528,6 +531,17 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- GearMetadataValue --------------------------------------------------// //------------------------------------------------------------------------// + public boolean containsGearMetadataValue(Voyage voyage, Vessel vessel, DepthStratum depthStratum, String operationId, Gear gear, GearMetadata gearMetadata) { + return persistenceContext.getGearMetadataValueDao() + .forGearMetadataEquals(gearMetadata) + .addEquals(GearMetadataValue.PROPERTY_GEAR, gear) + .addEquals(GearMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_ID, operationId) + .addEquals(GearMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_DEPTH_STRATUM, depthStratum) + .addEquals(GearMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_TRANSECT + "." + Transect.PROPERTY_VESSEL, vessel) + .addEquals(GearMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_TRANSECT + "." + Transect.PROPERTY_TRANSIT + "." + Transit.PROPERTY_VOYAGE, voyage) + .exists(); + } + public GearMetadataValue createGearMetadataValue(GearMetadataValue gearMetadataValue) { return persistenceContext.getGearMetadataValueDao().create(gearMetadataValue); } @@ -722,8 +736,14 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- OperationMetadataValue ---------------------------------------------// //------------------------------------------------------------------------// - public OperationMetadataValue containsOperationOperationMetadataValue(OperationMetadataValue operationMetadataValue) { - return persistenceContext.getOperationMetadataValueDao().create(operationMetadataValue); + public boolean containsOperationMetadataValue(Voyage voyage, Vessel vessel, DepthStratum depthStratum, String operationId, OperationMetadata operationMetadata) { + return persistenceContext.getOperationMetadataValueDao() + .forOperationMetadataEquals(operationMetadata) + .addEquals(OperationMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_ID, operationId) + .addEquals(OperationMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_DEPTH_STRATUM, depthStratum) + .addEquals(OperationMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_TRANSECT + "." + Transect.PROPERTY_VESSEL, vessel) + .addEquals(OperationMetadataValue.PROPERTY_OPERATION + "." + Operation.PROPERTY_TRANSECT + "." + Transect.PROPERTY_TRANSIT + "." + Transit.PROPERTY_VOYAGE, voyage) + .exists(); } public OperationMetadataValue getOperationMetadataValue(String id) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java new file mode 100644 index 0000000..094318f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java @@ -0,0 +1,50 @@ +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 DuplicatedGearMetadataValueException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedGearMetadataValueException(Locale locale, + String voyageName, + String vesselName, + String depthStratumName, + String operationId, + String gearName, + String gearMetatadataName) { + super(l(locale, "echobase.importError.duplicate.gearMetataValue", gearMetatadataName, gearName, operationId, depthStratumName, vesselName, voyageName)); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.java new file mode 100644 index 0000000..f3b3e8e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.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.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 5/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class DuplicatedOperationMetadataValueException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedOperationMetadataValueException(Locale locale, String voyageName, String vesselName, String depthStratumName, String operationId, String operationMetatadataName) { + super(l(locale, "echobase.importError.duplicate.operationMetataValue", operationMetatadataName, operationId, depthStratumName, vesselName, voyageName)); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java index c8f7447..f2d95d0 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java @@ -3,7 +3,10 @@ package fr.ifremer.echobase.services.service.importdata.actions; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.GearMetadataValue; import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedGearMetadataValueException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageOperationsGearMetadataValueImportExportModel; @@ -44,6 +47,8 @@ public class VoyageOperationsGearMetadataImportAction extends VoyageOperationsIm log.info("Starts import of gear metadata values from file " + inputFile.getFileName()); } + Voyage voyage = importDataContext.getVoyage(); + try (Import<VoyageOperationsGearMetadataValueImportRow> importer = open()) { int rowNumber = 0; @@ -53,7 +58,25 @@ public class VoyageOperationsGearMetadataImportAction extends VoyageOperationsIm doFlushTransaction(++rowNumber); Operation operation = row.getOperation(); + Vessel vessel = operation.getTransect().getVessel(); GearMetadataValue gearMetadataValuetoCreate = row.getGearMetadataValue(); + + boolean exists = persistenceService.containsGearMetadataValue(voyage, + vessel, + operation.getDepthStratum(), + operation.getId(), + operation.getGear(), + gearMetadataValuetoCreate.getGearMetadata()); + if (exists) { + throw new DuplicatedGearMetadataValueException(getLocale(), + voyage.getName(), + vessel.getName(), + operation.getDepthStratum().getId(), + operation.getId(), + operation.getGear().getCasinoGearName(), + gearMetadataValuetoCreate.getGearMetadata().getName()); + } + GearMetadataValue gearMetadataValue = persistenceService.createGearMetadataValue(gearMetadataValuetoCreate); operation.addGearMetadataValue(gearMetadataValue); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java index d65576c..ea057f1 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java @@ -3,7 +3,10 @@ package fr.ifremer.echobase.services.service.importdata.actions; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedOperationMetadataValueException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageOperationsOperationMetadataValueImportExportModel; @@ -44,6 +47,8 @@ public class VoyageOperationsOperationMetadataImportAction extends VoyageOperati log.info("Starts import of operation metadata values from file " + inputFile.getFileName()); } + Voyage voyage = importDataContext.getVoyage(); + try (Import<VoyageOperationsOperationMetadataValueImportRow> importer = open()) { int rowNumber = 0; @@ -52,8 +57,14 @@ public class VoyageOperationsOperationMetadataImportAction extends VoyageOperati doFlushTransaction(++rowNumber); Operation operation = row.getOperation(); - + Vessel vessel = operation.getTransect().getVessel(); OperationMetadataValue operationMetadataValueToCreate = row.getOperationMetadataValue(); + + boolean exists = persistenceService.containsOperationMetadataValue(voyage, vessel, operation.getDepthStratum(), operation.getId(), operationMetadataValueToCreate.getOperationMetadata()); + if (exists) { + throw new DuplicatedOperationMetadataValueException(getLocale(), voyage.getName(), vessel.getName(), operation.getDepthStratum().getId(), operation.getId(), operationMetadataValueToCreate.getOperationMetadata().getName()); + } + OperationMetadataValue operationMetadataValue = persistenceService.createOperationMetadataValue(operationMetadataValueToCreate); operation.addOperationMetadataValue(operationMetadataValue); 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 63c6612..47c684c 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 @@ -32,7 +32,9 @@ echobase.common.voyageFile=Voyage data file 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.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.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 d898fff..9ab4be7 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 @@ -32,7 +32,9 @@ echobase.common.voyageFile=Fichier des données de voyages 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.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.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>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 883d89247f05706f7705b3d865dea461a9780ca1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue May 10 10:03:34 2016 +0200 Ne pas pouvoir effectuer plusieurs imports du même type --- .../echobase/services/service/removedata/RemoveDataService.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 21b09f1..64dbf15 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 @@ -82,8 +82,10 @@ public class RemoveDataService extends EchoBaseServiceSupport { public int compare(ImportLog o1, ImportLog o2) { int result = o1.getVoyageId().compareTo(o2.getVoyageId()); if (result == 0) { - result = o1.getImportType().ordinal() - - o2.getImportType().ordinal(); + result = o1.getImportType().ordinal() - o2.getImportType().ordinal(); + } + if (result == 0) { + result = o1.getImportDate().compareTo(o2.getImportDate()); } return result; } -- 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 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>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 0896dd7e73ceaab18a32924bbe995f719a7d4956 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 09:09:06 2016 +0200 Catch more exception while importing + ajout meilleur TODO --- .../service/importdata/actions/ImportDataActionSupport.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java index 8811fdd..f031028 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java @@ -25,7 +25,6 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ExportModel; import org.nuiton.csv.Import; import org.nuiton.csv.ImportModel; -import org.nuiton.csv.ImportRuntimeException; import org.nuiton.topia.persistence.TopiaEntity; import java.io.BufferedWriter; @@ -172,7 +171,7 @@ public abstract class ImportDataActionSupport<M extends ImportDataConfigurationS try { performImport(importDataContext, inputFile, result); - } catch (ImportRuntimeException e) { + } catch (Exception e) { throw new ImportException(importDataContext.getLocale(), inputFile, e); } finally { flushProcessedExport(result); @@ -314,11 +313,12 @@ public abstract class ImportDataActionSupport<M extends ImportDataConfigurationS } protected void checkImport(ImportDataFileResult result, InputFile processedExportFile, InputFile importedExportFile) { - //TODO checkt that processed and imported file are the same if (log.isInfoEnabled()) { log.info("Check processed export file: " + processedExportFile + " vs imported export file: " + importedExportFile); } try { + + //TODO Faire cela de manière moins brute : comparaison des fichiers ligne à ligne (n plus cela nous donnerait aussi le numéro de première ligne défaillante) File dataDirectory = persistenceService.getConfiguration().getDataDirectory(); String expectedContent = new String(Files.readAllBytes(processedExportFile.getFile().toPath()), StandardCharsets.UTF_8); String actualContent = new String(Files.readAllBytes(importedExportFile.getFile().toPath()), StandardCharsets.UTF_8); @@ -410,7 +410,7 @@ public abstract class ImportDataActionSupport<M extends ImportDataConfigurationS } - public <E extends TopiaEntity> void addId(ImportDataFileResult importResult, EchoBaseUserEntityEnum entityEnum, E entity, int lineNumber) { + public <EE extends TopiaEntity> void addId(ImportDataFileResult importResult, EchoBaseUserEntityEnum entityEnum, EE entity, int lineNumber) { int entityCount = importResult.addId(entityEnum); -- 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 https://gitlab.nuiton.org/codelutin/echobase.git commit 6bcfd28ac5a7a8547b4881f45a94f8015143e0d3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 09:10:22 2016 +0200 i18n --- .../src/main/resources/i18n/echobase-services_en_GB.properties | 2 +- .../src/main/resources/i18n/echobase-services_fr_FR.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 efdb096..81df9de 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,8 +35,8 @@ 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.subSamble=Subs-sample (length class %s, category %s, operation %s) already exists in database. 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. echobase.importError.duplicate.voyage=A voyage named «%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 5a09e87..049310c 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,8 +35,8 @@ 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.subSamble=Le subs-sample (classe de taille %s, catégorie %s, opération %s) existe déjà dans la base. 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. echobase.importError.duplicate.voyage=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>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit a23905dde41b2fbd383cb388072f791e13eedc01 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 15:39:59 2016 +0200 Ne pas autoriser de réimporter les données acoustiques déjà existantes (See #2246) --- .../services/service/UserDbPersistenceService.java | 4 ++ .../DuplicatedElementaryCellException.java | 43 ++++++++++++++++++++++ .../importdata/DuplicatedEsduCellException.java | 43 ++++++++++++++++++++++ .../actions/VoyageAcousticsImportAction.java | 18 ++++++++- .../i18n/echobase-services_en_GB.properties | 2 + .../i18n/echobase-services_fr_FR.properties | 2 + 6 files changed, 111 insertions(+), 1 deletion(-) 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 603c26a..cd6300d 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 @@ -217,6 +217,10 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Cell ---------------------------------------------------------------// //------------------------------------------------------------------------// + public boolean containsCellByName(String cellName) { + return persistenceContext.getCellDao().forNameEquals(cellName).exists(); + } + public Cell getCell(String id) { return persistenceContext.getCellDao().forTopiaIdEquals(id).findUnique(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java new file mode 100644 index 0000000..84037f2 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.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 4.0 + */ +public class DuplicatedElementaryCellException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedElementaryCellException(Locale locale, int rowNumber, String esduCellId) { + super(l(locale, "echobase.importError.duplicate.elementaryCell", rowNumber, esduCellId)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.java new file mode 100644 index 0000000..a37d5aa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.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 4.0 + */ +public class DuplicatedEsduCellException extends ImportRuntimeException { + + private static final long serialVersionUID = 1L; + + public DuplicatedEsduCellException(Locale locale, int rowNumber, String esduCellId) { + super(l(locale, "echobase.importError.duplicate.esduCell", rowNumber, esduCellId)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java index 5c3a5f4..8b9d3ac 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java @@ -23,6 +23,7 @@ import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.DuplicatedEsduCellException; import fr.ifremer.echobase.services.service.importdata.ElementaryCellWithoutDepthEndException; import fr.ifremer.echobase.services.service.importdata.EsduCellNotFoundException; import fr.ifremer.echobase.services.service.importdata.EsduCellWithDepthEndFilledException; @@ -259,6 +260,12 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction log.debug("[row " + rowNumber + "] Esdu cell (" + esduCellId + ")"); } + // check name does not exist + boolean exists = persistenceService.containsCellByName(esduCellId); + if (exists) { + throw new DuplicatedEsduCellException(getLocale(), rowNumber, esduCellId); + } + // this is a esdu cell row // create esdu cell @@ -294,6 +301,15 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction String elementaryCellId = cellNum + (surface ? "S" : "B"); + // check name does not exist + boolean exists = persistenceService.containsCellByName(elementaryCellId); + if (exists) { + //FIXME Revoir ça (See #2246) + if (log.isErrorEnabled()) { + log.error("Duplicated ElementaryCellException: " + rowNumber + " → " + elementaryCellId); + } +// throw new DuplicatedElementaryCellException(getLocale(), rowNumber, elementaryCellId); + } if (log.isTraceEnabled()) { log.trace("[row " + rowNumber + "] elementary cell (" + elementaryCellId + ")"); } @@ -791,7 +807,7 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction private final DataMetadata numberOfSamplesEchoIntegratedDataMetadata; private final DataMetadata depthRefSurfaceStartDataMetadata; private final DataMetadata depthRefSurfaceEndDataMetadata; -// private final DataMetadata depthRefBottomStartDataMetadata; + // private final DataMetadata depthRefBottomStartDataMetadata; private final DataMetadata depthRefBottomEndDataMetadata; public DataMetadataProvider(VoyageAcousticsImportDataContext importDataContext) { 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 81df9de..44c82be 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 @@ -32,6 +32,8 @@ echobase.common.voyageFile=Voyage data file 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.esduCell=ESDU cell named «%s» already exists in database. +echobase.importError.duplicate.elementaryCell=Elementary cell named «%s» already exists in database. 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. 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 049310c..6e8c3e9 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,8 @@ 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.esduCell=La cellule ESDU (ligne %s) d'identifiant «%s» existe déjà en base. +echobase.importError.duplicate.elementaryCell=La cellule élémentaire (ligne %s) d'identifiant «%s» existe déjà en 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.subSamble=Le subs-sample (classe de taille %s, catégorie %s, opération %s) existe déjà dans la base. echobase.importError.duplicate.transect=Le transect nommé «%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>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 0b1e7eef684a101f9c325a898721ae91aadae88a Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 15:49:30 2016 +0200 Ajout du numéro de ligne dans les messages d'erreurs (See #2246) --- .../DuplicatedGearMetadataValueException.java | 3 ++- .../importdata/DuplicatedOperationException.java | 4 ++-- .../DuplicatedOperationMetadataValueException.java | 4 ++-- .../importdata/DuplicatedSampleException.java | 4 ++-- .../importdata/DuplicatedSubSampleException.java | 3 ++- .../importdata/DuplicatedTransectException.java | 4 ++-- .../importdata/DuplicatedTransitException.java | 4 ++-- .../importdata/DuplicatedVoyageException.java | 4 ++-- .../actions/VoyageCatchesSubSampleImportAction.java | 1 + .../VoyageCatchesTotalSampleImportAction.java | 2 +- .../actions/VoyageCommonsTransectImportAction.java | 2 +- .../actions/VoyageCommonsTransitImportAction.java | 2 +- .../actions/VoyageCommonsVoyageImportAction.java | 2 +- .../VoyageOperationsGearMetadataImportAction.java | 1 + .../VoyageOperationsOperationImportAction.java | 2 +- ...oyageOperationsOperationMetadataImportAction.java | 2 +- .../i18n/echobase-services_en_GB.properties | 20 ++++++++++---------- .../i18n/echobase-services_fr_FR.properties | 18 +++++++++--------- 18 files changed, 43 insertions(+), 39 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java index 094318f..ef34147 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedGearMetadataValueException.java @@ -38,13 +38,14 @@ public class DuplicatedGearMetadataValueException extends ImportRuntimeException private static final long serialVersionUID = 1L; public DuplicatedGearMetadataValueException(Locale locale, + int rowNumber, String voyageName, String vesselName, String depthStratumName, String operationId, String gearName, String gearMetatadataName) { - super(l(locale, "echobase.importError.duplicate.gearMetataValue", gearMetatadataName, gearName, operationId, depthStratumName, vesselName, voyageName)); + super(l(locale, "echobase.importError.duplicate.gearMetataValue", rowNumber, gearMetatadataName, gearName, operationId, depthStratumName, vesselName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationException.java index abf984b..c5ef7ce 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationException.java @@ -37,7 +37,7 @@ public class DuplicatedOperationException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedOperationException(Locale locale, String voyageName, String vesselName, String depthStratumName, String operationId) { - super(l(locale, "echobase.importError.duplicate.operation", operationId, depthStratumName, vesselName, voyageName)); + public DuplicatedOperationException(Locale locale, int rowNumber, String voyageName, String vesselName, String depthStratumName, String operationId) { + super(l(locale, "echobase.importError.duplicate.operation", rowNumber, operationId, depthStratumName, vesselName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.java index f3b3e8e..bbe7fd7 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedOperationMetadataValueException.java @@ -37,8 +37,8 @@ public class DuplicatedOperationMetadataValueException extends ImportRuntimeExce private static final long serialVersionUID = 1L; - public DuplicatedOperationMetadataValueException(Locale locale, String voyageName, String vesselName, String depthStratumName, String operationId, String operationMetatadataName) { - super(l(locale, "echobase.importError.duplicate.operationMetataValue", operationMetatadataName, operationId, depthStratumName, vesselName, voyageName)); + public DuplicatedOperationMetadataValueException(Locale locale, int rowNumber, String voyageName, String vesselName, String depthStratumName, String operationId, String operationMetatadataName) { + super(l(locale, "echobase.importError.duplicate.operationMetataValue", rowNumber, operationMetatadataName, operationId, depthStratumName, vesselName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSampleException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSampleException.java index a5f69bf..72b44c1 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSampleException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedSampleException.java @@ -41,7 +41,7 @@ public class DuplicatedSampleException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedSampleException(Locale locale, Operation operation, SampleType sampleType, Species species, SizeCategory sizeCategory) { - super(l(locale, "echobase.importError.duplicate.sample", operation.getId(), sampleType.getName(), species.getBaracoudaCode(), sizeCategory.getName())); + public DuplicatedSampleException(Locale locale, int rowNumber, Operation operation, SampleType sampleType, Species species, SizeCategory sizeCategory) { + super(l(locale, "echobase.importError.duplicate.sample", rowNumber, operation.getId(), sampleType.getName(), species.getBaracoudaCode(), sizeCategory.getName())); } } 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 index 03a0543..d5ea49a 100644 --- 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 @@ -38,10 +38,11 @@ public class DuplicatedSubSampleException extends ImportRuntimeException { private static final long serialVersionUID = 1L; public DuplicatedSubSampleException(Locale locale, + int rowNumber, String operationId, String category, String lengthClass) { - super(l(locale, "echobase.importError.duplicate.subSamble", lengthClass, category, operationId)); + super(l(locale, "echobase.importError.duplicate.subSamble", rowNumber, lengthClass, category, operationId)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransectException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransectException.java index 831af80..519ef30 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransectException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedTransectException.java @@ -37,7 +37,7 @@ public class DuplicatedTransectException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedTransectException(Locale locale, String voyageName, String title) { - super(l(locale, "echobase.importError.duplicate.transect", title, voyageName)); + public DuplicatedTransectException(Locale locale, int rowNumber, String voyageName, String title) { + super(l(locale, "echobase.importError.duplicate.transect", rowNumber, title, voyageName)); } } 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 3c7a4a7..e25688f 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 @@ -38,7 +38,7 @@ 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", startTime, endTime, voyageName)); + public DuplicatedTransitException(Locale locale, int rowNumber, String voyageName, Date startTime, Date endTime) { + super(l(locale, "echobase.importError.duplicate.transit", rowNumber, startTime, endTime, voyageName)); } } 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 4ac4b03..f43d368 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 @@ -37,7 +37,7 @@ 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)); + public DuplicatedVoyageException(Locale locale, int rowNumber, String voyageName) { + super(l(locale, "echobase.importError.duplicate.voyage", rowNumber, voyageName)); } } 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 b0fe97d..d80318a 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 @@ -94,6 +94,7 @@ public class VoyageCatchesSubSampleImportAction extends VoyageCatchesImportDataA row.getLengthClass()); if (exists) { throw new DuplicatedSubSampleException(getLocale(), + rowNumber, operation.getId(), category.toString(), row.getLengthClass()); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java index b57c603..27e1ef1 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java @@ -100,7 +100,7 @@ public class VoyageCatchesTotalSampleImportAction extends VoyageCatchesImportDat if (sample != null) { // can not have twice same sample - throw new DuplicatedSampleException(getLocale(), operation, sampleType, species, sizeCategory); + throw new DuplicatedSampleException(getLocale(), rowNumber, operation, sampleType, species, sizeCategory); } 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 19e87a9..6255bb7 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 @@ -70,7 +70,7 @@ public class VoyageCommonsTransectImportAction extends VoyageCommonsImportDataAc boolean exists = persistenceService.containsTransect(voyage, transect.getTitle()); if (exists) { - throw new DuplicatedTransectException(getLocale(), voyage.getName(), transect.getTitle()); + throw new DuplicatedTransectException(getLocale(), rowNumber, voyage.getName(), transect.getTitle()); } Date timeCoverageStart = transect.getTimeCoverageStart(); 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 1ace01d..bf29dd2 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 @@ -65,7 +65,7 @@ public class VoyageCommonsTransitImportAction extends VoyageCommonsImportDataAct boolean exists = persistenceService.containsTransit(voyage, transit.getStartTime(), transit.getEndTime()); if (exists) { - throw new DuplicatedTransitException(getLocale(), voyage.getName(), transit.getStartTime(), transit.getEndTime()); + throw new DuplicatedTransitException(getLocale(), rowNumber, voyage.getName(), transit.getStartTime(), transit.getEndTime()); } Transit createdTransit = persistenceService.createTransit(transit); 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 1d6e4a4..15fab67 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 @@ -72,7 +72,7 @@ public class VoyageCommonsVoyageImportAction extends VoyageCommonsImportDataActi doFlushTransaction(++rowNumber); if (persistenceService.containsVoyageByName(voyage.getName())) { - throw new DuplicatedVoyageException(locale, voyage.getName()); + throw new DuplicatedVoyageException(locale, rowNumber, voyage.getName()); } voyage.setMission(mission); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java index f2d95d0..eccfb60 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java @@ -69,6 +69,7 @@ public class VoyageOperationsGearMetadataImportAction extends VoyageOperationsIm gearMetadataValuetoCreate.getGearMetadata()); if (exists) { throw new DuplicatedGearMetadataValueException(getLocale(), + rowNumber, voyage.getName(), vessel.getName(), operation.getDepthStratum().getId(), diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java index 275697d..4790f58 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java @@ -66,7 +66,7 @@ public class VoyageOperationsOperationImportAction extends VoyageOperationsImpor boolean exists = persistenceService.containsOperation(voyage, vessel, operation.getDepthStratum(), operation.getId()); if (exists) { - throw new DuplicatedOperationException(getLocale(), voyage.getName(), vessel.getName(), operation.getDepthStratum().getId(), operation.getId()); + throw new DuplicatedOperationException(getLocale(), rowNumber, voyage.getName(), vessel.getName(), operation.getDepthStratum().getId(), operation.getId()); } Date startTime = operation.getGearShootingStartTime(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java index ea057f1..f44868e 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java @@ -62,7 +62,7 @@ public class VoyageOperationsOperationMetadataImportAction extends VoyageOperati boolean exists = persistenceService.containsOperationMetadataValue(voyage, vessel, operation.getDepthStratum(), operation.getId(), operationMetadataValueToCreate.getOperationMetadata()); if (exists) { - throw new DuplicatedOperationMetadataValueException(getLocale(), voyage.getName(), vessel.getName(), operation.getDepthStratum().getId(), operation.getId(), operationMetadataValueToCreate.getOperationMetadata().getName()); + throw new DuplicatedOperationMetadataValueException(getLocale(), rowNumber, voyage.getName(), vessel.getName(), operation.getDepthStratum().getId(), operation.getId(), operationMetadataValueToCreate.getOperationMetadata().getName()); } OperationMetadataValue operationMetadataValue = persistenceService.createOperationMetadataValue(operationMetadataValueToCreate); 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 44c82be..22205ec 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 @@ -32,16 +32,16 @@ echobase.common.voyageFile=Voyage data file 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.esduCell=ESDU cell named «%s» already exists in database. -echobase.importError.duplicate.elementaryCell=Elementary cell named «%s» already exists in database. -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.sample=Operation %s cannot comprise several samples of same type, species and size category -echobase.importError.duplicate.subSamble=Subs-sample (length class %s, category %s, operation %s) already exists in database. -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. -echobase.importError.duplicate.voyage=A voyage named «%s» already exists in database. +echobase.importError.duplicate.elementaryCell=Line %s - Elementary cell named «%s» already exists in database. +echobase.importError.duplicate.esduCell=Line %s - ESDU cell named «%s» already exists in database. +echobase.importError.duplicate.gearMetataValue=Line %s - 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=Line %s - An operation with id «%s», on startum «%s» - vessel «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.operationMetataValue=Line %s - 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.sample=Line %s - Operation %s cannot comprise several samples of same type, species and size category +echobase.importError.duplicate.subSamble=Line %s - Subs-sample (length class %s, category %s, operation %s) already exists in database. +echobase.importError.duplicate.transect=Line %s - A transect titled «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.transit=Line %s - A transit start «%s» - end «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.voyage=Line %s - A voyage named «%s» already exists in 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 6e8c3e9..fb1f6ba 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 @@ -32,16 +32,16 @@ echobase.common.voyageFile=Fichier des données de voyages 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.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.esduCell=La cellule ESDU (ligne %s) d'identifiant «%s» existe déjà en base. -echobase.importError.duplicate.elementaryCell=La cellule élémentaire (ligne %s) d'identifiant «%s» existe déjà en base. +echobase.importError.duplicate.elementaryCell=Ligne %s - La cellule élémentaire (ligne %s) d'identifiant «%s» existe déjà en base. +echobase.importError.duplicate.esduCell=Ligne %s - La cellule ESDU (ligne %s) d'identifiant «%s» existe déjà en base. +echobase.importError.duplicate.gearMetataValue=Ligne %s - 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=Ligne %s - 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=Ligne %s - 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.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.subSamble=Le subs-sample (classe de taille %s, catégorie %s, opération %s) existe déjà dans la base. -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. -echobase.importError.duplicate.voyage=La marée nommée «%s» existe déjà dans la base. +echobase.importError.duplicate.subSamble=Ligne %s - Le sous-échantillon (classe de taille %s, catégorie %s, opération %s) existe déjà dans la base. +echobase.importError.duplicate.transect=Ligne %s - Le transect nommé «%s» sur la marée nommée «%s» existe déjà dans la base. +echobase.importError.duplicate.transit=Ligne %s - Le transit début «%s» - fin «%s» sur la marée nommée «%s» existe déjà dans la base. +echobase.importError.duplicate.voyage=Ligne %s - 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>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 9867f8f7a6cca1411711b3e7debb5b26d9dba16b Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 12 16:28:46 2016 +0200 Ne pas autoriser de réimporter les résultats sur les voyages déjà existants (See #2246) --- .../DuplicatedEchotypeAssociationException.java | 20 +++++++++++ ...plicatedResultsVoyageLengthAgeKeyException.java | 20 +++++++++++ ...catedResultsVoyageLengthWeightKeyException.java | 20 +++++++++++ .../importdata/MismatchVoyageException.java | 21 ++++++++++++ .../VoyageResultsVoyageEchotypeImportAction.java | 20 ++++++++--- ...oyageResultsVoyageLengthAgeKeyImportAction.java | 32 ++++++++++++++++++ ...geResultsVoyageLengthWeightKeyImportAction.java | 39 ++++++++++++++++++++-- .../i18n/echobase-services_en_GB.properties | 4 +++ .../i18n/echobase-services_fr_FR.properties | 4 +++ 9 files changed, 172 insertions(+), 8 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEchotypeAssociationException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEchotypeAssociationException.java new file mode 100644 index 0000000..35e6054 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEchotypeAssociationException.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata; + +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 12/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class DuplicatedEchotypeAssociationException extends ImportRuntimeException { + + public DuplicatedEchotypeAssociationException(Locale locale, int rowNumber, String voyageName, String echotypeName, String baracoudaCode) { + super(l(locale, "echobase.importError.duplicate.echotypeSpeciesAssociation", rowNumber, echotypeName, voyageName, baracoudaCode)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthAgeKeyException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthAgeKeyException.java new file mode 100644 index 0000000..678153b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthAgeKeyException.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata; + +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 12/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class DuplicatedResultsVoyageLengthAgeKeyException extends ImportRuntimeException { + + public DuplicatedResultsVoyageLengthAgeKeyException(Locale locale, int rowNumber, String voyageName, String baracoudaCode, float length, int age) { + super(l(locale, "echobase.importError.duplicate.voyageLengthAgeKey", rowNumber, baracoudaCode, length, age, voyageName)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthWeightKeyException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthWeightKeyException.java new file mode 100644 index 0000000..b101e6f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedResultsVoyageLengthWeightKeyException.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata; + +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 12/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class DuplicatedResultsVoyageLengthWeightKeyException extends ImportRuntimeException { + + public DuplicatedResultsVoyageLengthWeightKeyException(Locale locale, int rowNumber, String voyageName, String baracoudaCode, String sizeCategoryName) { + super(l(locale, "echobase.importError.duplicate.voyageLengthWeightKey", rowNumber, baracoudaCode, sizeCategoryName, voyageName)); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/MismatchVoyageException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/MismatchVoyageException.java new file mode 100644 index 0000000..a8f93a1 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/MismatchVoyageException.java @@ -0,0 +1,21 @@ +package fr.ifremer.echobase.services.service.importdata; + +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 12/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class MismatchVoyageException extends ImportRuntimeException { + + public MismatchVoyageException(Locale locale, int rowNumber, String voyageName) { + super(l(locale, "echobase.importError.mismatch.voyage", rowNumber, voyageName)); + } + +} \ No newline at end of file diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java index 707fa5c..9c8dfab 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java @@ -9,7 +9,9 @@ import fr.ifremer.echobase.entities.data.Echotypes; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedEchotypeAssociationException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageEchotypeImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageEchotypeImportRow; @@ -54,6 +56,9 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport log.info("Starts import of echotype from file " + inputFile.getFileName()); } + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage expectedVoyage = persistenceService.getVoyage(voyageId); + try (Import<VoyageResultsVoyageEchotypeImportRow> importer = open()) { incrementsProgress(); @@ -65,6 +70,10 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport Voyage voyage = row.getVoyage(); + if (!expectedVoyage.equals(voyage)) { + throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + } + Echotype rowEchotype = row.getEchotype(); String echotypeName = rowEchotype.getName(); @@ -99,14 +108,15 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport Species existingSpecies = echotype.getSpeciesByTopiaId(species.getTopiaId()); - if (existingSpecies == null) { + if (existingSpecies != null) { - // add this species - echotype.addSpecies(species); + throw new DuplicatedEchotypeAssociationException(getLocale(), rowNumber, voyage.getName(), echotypeName, species.getBaracoudaCode()); + } - speciesIdToEchotypeId.add(Pair.of(species.getTopiaId(), echotype.getTopiaId())); + // add this species + echotype.addSpecies(species); - } + speciesIdToEchotypeId.add(Pair.of(species.getTopiaId(), echotype.getTopiaId())); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java index 5afb54d..ae3101c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java @@ -4,7 +4,9 @@ import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.LengthAgeKey; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedResultsVoyageLengthAgeKeyException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageLengthAgeKeyImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageLengthAgeKeyImportRow; @@ -12,6 +14,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; +import java.util.Set; +import java.util.TreeSet; + /** * Created on 25/03/16. * @@ -44,6 +49,15 @@ public class VoyageResultsVoyageLengthAgeKeyImportAction extends VoyageResultsIm log.info("Starts import of lenthAgeKey from file " + inputFile.getFileName()); } + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage expectedVoyage = persistenceService.getVoyage(voyageId); + + Set<String> cacheKeys = new TreeSet<>(); + + for (LengthAgeKey lengthAgeKey : expectedVoyage.getLengthAgeKey()) { + cacheKeys.add(cacheKey(lengthAgeKey)); + } + try (Import<VoyageResultsVoyageLengthAgeKeyImportRow> importer = open()) { incrementsProgress(); @@ -55,7 +69,21 @@ public class VoyageResultsVoyageLengthAgeKeyImportAction extends VoyageResultsIm Voyage voyage = row.getVoyage(); + if (!expectedVoyage.equals(voyage)) { + throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + } + LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey(); + String cacheKey = cacheKey(lengthAgeKeyToCreate); + if (cacheKeys.contains(cacheKey)) { + throw new DuplicatedResultsVoyageLengthAgeKeyException(getLocale(), + rowNumber, + voyage.getName(), + lengthAgeKeyToCreate.getSpecies().getBaracoudaCode(), + lengthAgeKeyToCreate.getLength(), + lengthAgeKeyToCreate.getAge()); + } + LengthAgeKey lengthAgeKey = persistenceService.createLengthAgeKey(lengthAgeKeyToCreate); // attach it to voyage @@ -87,4 +115,8 @@ public class VoyageResultsVoyageLengthAgeKeyImportAction extends VoyageResultsIm } + private String cacheKey(LengthAgeKey lengthAgeKey) { + return lengthAgeKey.getSpecies().getTopiaId() + "~" + lengthAgeKey.getLength() + "~" + lengthAgeKey.getAge(); + } + } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java index 560fe2d..bb07100 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java @@ -5,7 +5,9 @@ import fr.ifremer.echobase.entities.data.LengthWeightKey; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedResultsVoyageLengthWeightKeyException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageLengthWeightKeyImportExportModel; @@ -14,6 +16,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; +import java.util.Set; +import java.util.TreeSet; + /** * Created on 25/03/16. * @@ -48,6 +53,15 @@ public class VoyageResultsVoyageLengthWeightKeyImportAction extends VoyageResult SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage expectedVoyage = persistenceService.getVoyage(voyageId); + + Set<String> cacheKeys = new TreeSet<>(); + + for (LengthWeightKey lengthWeightKey : expectedVoyage.getLengthWeightKey()) { + cacheKeys.add(cacheKey(lengthWeightKey)); + } + try (Import<VoyageResultsVoyageLengthWeightKeyImportRow> importer = open()) { incrementsProgress(); @@ -55,15 +69,29 @@ public class VoyageResultsVoyageLengthWeightKeyImportAction extends VoyageResult for (VoyageResultsVoyageLengthWeightKeyImportRow row : importer) { doFlushTransaction(++rowNumber); + Voyage voyage = row.getVoyage(); + if (!expectedVoyage.equals(voyage)) { + throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + } + // find speciesCategory SpeciesCategory speciesCategory = speciesCategoryCache.getSpeciesCategory(row.getSpecies(), null, row.getSizeCategory(), null, null, result); - LengthWeightKey toCreate = row.getLengthWeightKey(); - toCreate.setSpeciesCategory(speciesCategory); + LengthWeightKey lengthWeightKeyToCreate = row.getLengthWeightKey(); + lengthWeightKeyToCreate.setSpeciesCategory(speciesCategory); + + String cacheKey = cacheKey(lengthWeightKeyToCreate); + if (cacheKeys.contains(cacheKey)) { + throw new DuplicatedResultsVoyageLengthWeightKeyException(getLocale(), + rowNumber, + voyage.getName(), + lengthWeightKeyToCreate.getSpeciesCategory().getSpecies().getBaracoudaCode(), + lengthWeightKeyToCreate.getSpeciesCategory().getSizeCategory().getName()); + } - LengthWeightKey lengthWeightKey = persistenceService.createLengthWeightKey(toCreate); + LengthWeightKey lengthWeightKey = persistenceService.createLengthWeightKey(lengthWeightKeyToCreate); //TODO should we import it ? //lengthWeightKey.setMetadata(row.getMetadata()); @@ -96,4 +124,9 @@ public class VoyageResultsVoyageLengthWeightKeyImportAction extends VoyageResult } + private String cacheKey(LengthWeightKey lengthWeightKey) { + SpeciesCategory speciesCategory = lengthWeightKey.getSpeciesCategory(); + return speciesCategory.getSpecies().getTopiaId() + "~" + speciesCategory.getSizeCategory().getTopiaId(); + } + } 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 22205ec..80a1504 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 @@ -42,6 +42,10 @@ echobase.importError.duplicate.subSamble=Line %s - Subs-sample (length class %s, echobase.importError.duplicate.transect=Line %s - A transect titled «%s» on voyage «%s» already exists in database. echobase.importError.duplicate.transit=Line %s - A transit start «%s» - end «%s» on voyage «%s» already exists in database. echobase.importError.duplicate.voyage=Line %s - A voyage named «%s» already exists in database. +echobase.importError.mismatch.voyage=Line %s - Used voyage «%s» does not match with the voyage configured. +echobase.importError.duplicate.echotypeSpeciesAssociation=Line %s - Echotype «%s» on voyage named «%s» already contains the species «%s». +echobase.importError.duplicate.voyageLengthAgeKey=Line %s - Result on species «%s» (length class «%s» - age «%s») on voyage named «%s» already exists in database. +echobase.importError.duplicate.voyageLengthWeightKey=Line %s - Result on species «%s» (size category «%s») on voyage named «%s» already exists in 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 fb1f6ba..af28dff 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 @@ -41,7 +41,11 @@ echobase.importError.duplicate.sample=L'opération %s ne peut pas contenir deux echobase.importError.duplicate.subSamble=Ligne %s - Le sous-échantillon (classe de taille %s, catégorie %s, opération %s) existe déjà dans la base. echobase.importError.duplicate.transect=Ligne %s - Le transect nommé «%s» sur la marée nommée «%s» existe déjà dans la base. echobase.importError.duplicate.transit=Ligne %s - Le transit début «%s» - fin «%s» sur la marée nommée «%s» existe déjà dans la base. +echobase.importError.duplicate.echotypeSpeciesAssociation=Ligne %s - L'échotype «%s» sur la marée nommée «%s» contient déjà l'espèce «%s». +echobase.importError.duplicate.voyageLengthAgeKey=Ligne %s - Le résultat sur l'espèce «%s» (classe de taille «%s» - age «%s») sur la marée nommée «%s» existe déjà dans la base. +echobase.importError.duplicate.voyageLengthWeightKey=Ligne %s - Le résultat sur l'espèce «%s» (catégorie de taille «%s») sur la marée nommée «%s» existe déjà dans la base. echobase.importError.duplicate.voyage=Ligne %s - La marée nommée «%s» existe déjà dans la base. +echobase.importError.mismatch.voyage=Ligne %s - La marée «%s» ne correspond pas à celle configurée. 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>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 8cf674f1b633a46ba7f6006fedfbd14a3c173fe2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 13 08:43:10 2016 +0200 Ne pas autoriser de réimporter les résultats sur les voyages déjà existants (See #2246) --- .../services/service/UserDbPersistenceService.java | 15 +++++++++++++++ .../DuplicatedElementaryCellException.java | 4 ++-- .../importdata/DuplicatedEsduCellException.java | 4 ++-- ...ception.java => DuplicatedMapCellException.java} | 6 +++--- ...tion.java => DuplicatedRegionCellException.java} | 6 +++--- .../actions/VoyageAcousticsImportAction.java | 4 ++-- .../VoyageResultsMapFishCellImportAction.java | 15 ++++++++++++++- .../VoyageResultsMapOtherCellImportAction.java | 15 ++++++++++++++- .../actions/VoyageResultsRegionImportAction.java | 21 +++++++++++++++++++-- .../VoyageResultsVoyageEchotypeImportAction.java | 3 +-- ...VoyageResultsVoyageLengthAgeKeyImportAction.java | 3 +-- ...ageResultsVoyageLengthWeightKeyImportAction.java | 3 +-- .../i18n/echobase-services_en_GB.properties | 6 ++++-- .../i18n/echobase-services_fr_FR.properties | 6 ++++-- 14 files changed, 85 insertions(+), 26 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 cd6300d..2f78786 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 @@ -221,6 +221,21 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getCellDao().forNameEquals(cellName).exists(); } + public boolean containsPostVoyageCellByName(Voyage voyage, String cellName) { + return persistenceContext.getCellDao() + .forNameEquals(cellName) + .addEquals(Cell.PROPERTY_VOYAGE, voyage) + .exists(); + } + + public boolean containsPostVoyageCellByNameAndType(Voyage voyage, String cellName, CellType cellType) { + return persistenceContext.getCellDao() + .forNameEquals(cellName) + .addEquals(Cell.PROPERTY_VOYAGE, voyage) + .addEquals(Cell.PROPERTY_CELL_TYPE, cellType) + .exists(); + } + public Cell getCell(String id) { return persistenceContext.getCellDao().forTopiaIdEquals(id).findUnique(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java index 84037f2..8f2a1ac 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java @@ -37,7 +37,7 @@ public class DuplicatedElementaryCellException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedElementaryCellException(Locale locale, int rowNumber, String esduCellId) { - super(l(locale, "echobase.importError.duplicate.elementaryCell", rowNumber, esduCellId)); + public DuplicatedElementaryCellException(Locale locale, int rowNumber, String cellName,String voyageName) { + super(l(locale, "echobase.importError.duplicate.elementaryCell", rowNumber, cellName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.java index a37d5aa..391fb8d 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedEsduCellException.java @@ -37,7 +37,7 @@ public class DuplicatedEsduCellException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedEsduCellException(Locale locale, int rowNumber, String esduCellId) { - super(l(locale, "echobase.importError.duplicate.esduCell", rowNumber, esduCellId)); + public DuplicatedEsduCellException(Locale locale, int rowNumber, String cellName,String voyageName) { + super(l(locale, "echobase.importError.duplicate.esduCell", rowNumber, cellName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedMapCellException.java similarity index 79% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedMapCellException.java index 84037f2..40146a2 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedMapCellException.java @@ -33,11 +33,11 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class DuplicatedElementaryCellException extends ImportRuntimeException { +public class DuplicatedMapCellException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedElementaryCellException(Locale locale, int rowNumber, String esduCellId) { - super(l(locale, "echobase.importError.duplicate.elementaryCell", rowNumber, esduCellId)); + public DuplicatedMapCellException(Locale locale, int rowNumber, String cellName, String voyageName) { + super(l(locale, "echobase.importError.duplicate.mapCell", rowNumber, cellName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedRegionCellException.java similarity index 77% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedRegionCellException.java index 84037f2..f778fab 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedElementaryCellException.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/DuplicatedRegionCellException.java @@ -33,11 +33,11 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class DuplicatedElementaryCellException extends ImportRuntimeException { +public class DuplicatedRegionCellException extends ImportRuntimeException { private static final long serialVersionUID = 1L; - public DuplicatedElementaryCellException(Locale locale, int rowNumber, String esduCellId) { - super(l(locale, "echobase.importError.duplicate.elementaryCell", rowNumber, esduCellId)); + public DuplicatedRegionCellException(Locale locale, int rowNumber, String cellName, String cellTypeName, String voyageName) { + super(l(locale, "echobase.importError.duplicate.regionCell", rowNumber, cellName, cellTypeName, voyageName)); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java index 8b9d3ac..0618803 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java @@ -263,7 +263,7 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction // check name does not exist boolean exists = persistenceService.containsCellByName(esduCellId); if (exists) { - throw new DuplicatedEsduCellException(getLocale(), rowNumber, esduCellId); + throw new DuplicatedEsduCellException(getLocale(), rowNumber, esduCellId, voyage.getName()); } // this is a esdu cell row @@ -308,7 +308,7 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction if (log.isErrorEnabled()) { log.error("Duplicated ElementaryCellException: " + rowNumber + " → " + elementaryCellId); } -// throw new DuplicatedElementaryCellException(getLocale(), rowNumber, elementaryCellId); +// throw new DuplicatedElementaryCellException(getLocale(), rowNumber, elementaryCellId, voyage.getName()); } if (log.isTraceEnabled()) { log.trace("[row " + rowNumber + "] elementary cell (" + elementaryCellId + ")"); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java index ad10496..927a384 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java @@ -11,7 +11,9 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedMapCellException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsMapFishCellImportExportModel; @@ -72,7 +74,7 @@ public class VoyageResultsMapFishCellImportAction extends VoyageResultsImportDat log.info("Starts import of Map cells from file " + inputFile.getFileName()); } - Voyage voyage = importDataContext.getVoyage(); + Voyage expectedVoyage = importDataContext.getVoyage(); ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); String resultLabel = getConfiguration().getResultLabel(); @@ -86,6 +88,17 @@ public class VoyageResultsMapFishCellImportAction extends VoyageResultsImportDat doFlushTransaction(++rowNumber); + Voyage voyage = row.getVoyage(); + if (!expectedVoyage.equals(voyage)) { + throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + } + + String cellName = row.getCell().getName(); + boolean exists = persistenceService.containsPostVoyageCellByName(expectedVoyage, cellName); + if (exists) { + throw new DuplicatedMapCellException(getLocale(), rowNumber, cellName, voyage.getName()); + } + Cell cell = persistenceService.createCell(row.getCell()); voyage.addPostCell(cell); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java index d8ec2f0..3439745 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java @@ -9,7 +9,9 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedMapCellException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsMapOtherCellImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsMapOtherCellImportRow; @@ -66,7 +68,7 @@ public class VoyageResultsMapOtherCellImportAction extends VoyageResultsImportDa log.info("Starts import of Map Other cells from file " + inputFile.getFileName()); } - Voyage voyage = importDataContext.getVoyage(); + Voyage expectedVoyage = importDataContext.getVoyage(); String resultLabel = getConfiguration().getResultLabel(); @@ -79,6 +81,17 @@ public class VoyageResultsMapOtherCellImportAction extends VoyageResultsImportDa doFlushTransaction(++rowNumber); + Voyage voyage = row.getVoyage(); + if (!expectedVoyage.equals(voyage)) { + throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + } + + String cellName = row.getCell().getName(); + boolean exists = persistenceService.containsPostVoyageCellByName(expectedVoyage, cellName); + if (exists) { + throw new DuplicatedMapCellException(getLocale(), rowNumber, cellName, voyage.getName()); + } + Cell cell = persistenceService.createCell(row.getCell()); voyage.addPostCell(cell); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java index 57ea597..40021dd 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java @@ -9,10 +9,13 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Datas; import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.DuplicatedRegionCellException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsRegionCellImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsRegionCellImportRow; @@ -55,7 +58,7 @@ public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActi log.info("Starts import of Region cells from file " + inputFile.getFileName()); } - Voyage voyage = importDataContext.getVoyage(); + Voyage expectedVoyage = importDataContext.getVoyage(); try (Import<VoyageResultsRegionCellImportRow> importer = open()) { Cell cell = null; @@ -66,11 +69,25 @@ public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActi doFlushTransaction(++rowNumber); + Voyage voyage = row.getVoyage(); + + if (!expectedVoyage.equals(voyage)) { + throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + } + DataQuality dataQuality = row.getDataQuality(); if (cell == null || !row.getName().equals(cell.getName())) { - cell = persistenceService.createCell(row.getCellType(), row.getName(), dataQuality); + String cellName = row.getName(); + CellType cellType = row.getCellType(); + + boolean exists = persistenceService.containsPostVoyageCellByNameAndType(expectedVoyage, cellName, cellType); + if (exists) { + throw new DuplicatedRegionCellException(getLocale(), rowNumber, cellName, cellType.getName(), voyage.getName()); + } + + cell = persistenceService.createCell(cellType, cellName, dataQuality); voyage.addPostCell(cell); if (log.isInfoEnabled()) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java index 9c8dfab..05f9ea4 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java @@ -56,8 +56,7 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport log.info("Starts import of echotype from file " + inputFile.getFileName()); } - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage expectedVoyage = persistenceService.getVoyage(voyageId); + Voyage expectedVoyage = importDataContext.getVoyage(); try (Import<VoyageResultsVoyageEchotypeImportRow> importer = open()) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java index ae3101c..27c3497 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java @@ -49,8 +49,7 @@ public class VoyageResultsVoyageLengthAgeKeyImportAction extends VoyageResultsIm log.info("Starts import of lenthAgeKey from file " + inputFile.getFileName()); } - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage expectedVoyage = persistenceService.getVoyage(voyageId); + Voyage expectedVoyage = importDataContext.getVoyage(); Set<String> cacheKeys = new TreeSet<>(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java index bb07100..0b5ee6f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java @@ -53,8 +53,7 @@ public class VoyageResultsVoyageLengthWeightKeyImportAction extends VoyageResult SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage expectedVoyage = persistenceService.getVoyage(voyageId); + Voyage expectedVoyage = importDataContext.getVoyage(); Set<String> cacheKeys = new TreeSet<>(); 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 80a1504..5a90c8a 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 @@ -32,8 +32,10 @@ echobase.common.voyageFile=Voyage data file 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.elementaryCell=Line %s - Elementary cell named «%s» already exists in database. -echobase.importError.duplicate.esduCell=Line %s - ESDU cell named «%s» already exists in database. +echobase.importError.duplicate.elementaryCell=Line %s - Elementary cell named «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.esduCell=Line %s - ESDU cell named «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.mapCell=Line %s - Map cell named «%s» on voyage «%s» already exists in database. +echobase.importError.duplicate.regionCell=Line %s - Region cell named «%s» (of type «%s») on voyage «%s» already exists in database. echobase.importError.duplicate.gearMetataValue=Line %s - 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=Line %s - An operation with id «%s», on startum «%s» - vessel «%s» on voyage «%s» already exists in database. echobase.importError.duplicate.operationMetataValue=Line %s - An operation meta data (type «%s») value for operation with id «%s», on startum «%s» - vessel «%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 af28dff..8d7ae7e 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 @@ -32,8 +32,10 @@ echobase.common.voyageFile=Fichier des données de voyages 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.elementaryCell=Ligne %s - La cellule élémentaire (ligne %s) d'identifiant «%s» existe déjà en base. -echobase.importError.duplicate.esduCell=Ligne %s - La cellule ESDU (ligne %s) d'identifiant «%s» existe déjà en base. +echobase.importError.duplicate.elementaryCell=Ligne %s - La cellule élémentaire d'identifiant «%s» sur la marée nommée «%s» existe déjà en base. +echobase.importError.duplicate.mapCell=Ligne %s - La cellule de type Carte d'identifiant «%s» sur la marée nommée «%s» existe déjà en base. +echobase.importError.duplicate.regionCell=Ligne %s - La cellule de type Région d'identifiant «%s» et de type «%s» sur la marée nommée «%s» existe déjà en base. +echobase.importError.duplicate.esduCell=Ligne %s - La cellule ESDU d'identifiant «%s» sur la marée nommée «%s» existe déjà en base. echobase.importError.duplicate.gearMetataValue=Ligne %s - 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=Ligne %s - 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=Ligne %s - 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. -- 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 https://gitlab.nuiton.org/codelutin/echobase.git commit 3800f292fed0f97dbd270cf1c80ae39e66434f77 Merge: e9095b6 8cf674f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 13 08:45:01 2016 +0200 Refs-60 #2246, il reste encore quelques petits ajustements à faire. Merge branch 'feature/2246' into develop .../echobase/entities/ImportFileIdTopiaDao.java | 2 +- .../echobase/entities/ImportFileTopiaDao.java | 15 +++- .../echobase/entities/ImportLogTopiaDao.java | 6 +- .../entities/data/GearMetadataValueImpl.java | 18 ++++ .../entities/data/OperationMetadataValueImpl.java | 19 +++++ .../java/fr/ifremer/echobase/io/InputFile.java | 20 +++++ .../echobase/persistence/EchoBaseDbMeta.java | 5 ++ .../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 ++- echobase-domain/src/main/xmi/echobase.zargo | Bin 90458 -> 90445 bytes .../services/service/UserDbPersistenceService.java | 93 +++++++++++++++++++++ .../DuplicatedEchotypeAssociationException.java | 20 +++++ ...java => DuplicatedElementaryCellException.java} | 12 +-- ...ption.java => DuplicatedEsduCellException.java} | 12 +-- ...a => DuplicatedGearMetadataValueException.java} | 22 +++-- ...eption.java => DuplicatedMapCellException.java} | 12 +-- ...tion.java => DuplicatedOperationException.java} | 14 ++-- ...DuplicatedOperationMetadataValueException.java} | 15 ++-- ...ion.java => DuplicatedRegionCellException.java} | 12 +-- ...plicatedResultsVoyageLengthAgeKeyException.java | 20 +++++ ...catedResultsVoyageLengthWeightKeyException.java | 20 +++++ .../importdata/DuplicatedSampleException.java | 4 +- ...tion.java => DuplicatedSubSampleException.java} | 19 +++-- ...ption.java => DuplicatedTransectException.java} | 14 ++-- ...eption.java => DuplicatedTransitException.java} | 15 ++-- ...ception.java => DuplicatedVoyageException.java} | 14 ++-- .../importdata/MismatchVoyageException.java | 21 +++++ .../actions/ImportDataActionSupport.java | 8 +- .../actions/VoyageAcousticsImportAction.java | 18 +++- .../VoyageCatchesSubSampleImportAction.java | 12 +++ .../VoyageCatchesTotalSampleImportAction.java | 2 +- .../actions/VoyageCommonsTransectImportAction.java | 6 ++ .../actions/VoyageCommonsTransitImportAction.java | 8 +- .../actions/VoyageCommonsVoyageImportAction.java | 13 ++- .../VoyageOperationsGearMetadataImportAction.java | 24 ++++++ .../VoyageOperationsOperationImportAction.java | 6 ++ ...ageOperationsOperationMetadataImportAction.java | 13 ++- .../VoyageResultsMapFishCellImportAction.java | 15 +++- .../VoyageResultsMapOtherCellImportAction.java | 15 +++- .../actions/VoyageResultsRegionImportAction.java | 21 ++++- .../VoyageResultsVoyageEchotypeImportAction.java | 19 +++-- ...oyageResultsVoyageLengthAgeKeyImportAction.java | 31 +++++++ ...geResultsVoyageLengthWeightKeyImportAction.java | 38 ++++++++- .../service/removedata/RemoveDataService.java | 6 +- .../strategy/AbstractRemoveDataStrategy.java | 15 ++-- .../strategy/OperationRemoveDataStrategy.java | 25 +++++- .../i18n/echobase-services_en_GB.properties | 17 +++- .../i18n/echobase-services_fr_FR.properties | 15 ++++ .../removedata/AbstractRemoveDataServiceTest.java | 6 ++ .../actions/importData/ConfigureCommonImport.java | 2 +- .../jsp/importData/importDataActionResult.jsp | 2 +- .../jsp/importData/resultAcousticImport.jsp | 2 +- .../WEB-INF/jsp/importData/resultCatchesImport.jsp | 2 +- .../jsp/importData/resultOperationImport.jsp | 2 +- .../WEB-INF/jsp/importData/resultResultsImport.jsp | 2 +- 57 files changed, 672 insertions(+), 144 deletions(-) -- 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 https://gitlab.nuiton.org/codelutin/echobase.git commit 7272ca2e7f0f6f3a1e2181ab26a330e1bab559ce Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 13 08:50:11 2016 +0200 Mise à jour des bases de test --- .../echobase-catches-and-voyage-result.h2.db.gz | Bin 826644 -> 825254 bytes .../import-data/echobase-catches.h2.db.gz | Bin 754845 -> 755094 bytes .../import-data/echobase-commonData.h2.db.gz | Bin 184388 -> 184645 bytes .../resources/import-data/echobase-nodata.h2.db.gz | Bin 137434 -> 137582 bytes .../echobase-operation-total-samples.h2.db.gz | Bin 601307 -> 601537 bytes .../import-data/echobase-operation.h2.db.gz | Bin 327903 -> 328156 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/echobase-services/src/test/resources/import-data/echobase-catches-and-voyage-result.h2.db.gz b/echobase-services/src/test/resources/import-data/echobase-catches-and-voyage-result.h2.db.gz index 657b835..b04045f 100644 Binary files a/echobase-services/src/test/resources/import-data/echobase-catches-and-voyage-result.h2.db.gz and b/echobase-services/src/test/resources/import-data/echobase-catches-and-voyage-result.h2.db.gz differ diff --git a/echobase-services/src/test/resources/import-data/echobase-catches.h2.db.gz b/echobase-services/src/test/resources/import-data/echobase-catches.h2.db.gz index 4801029..713fae4 100644 Binary files a/echobase-services/src/test/resources/import-data/echobase-catches.h2.db.gz and b/echobase-services/src/test/resources/import-data/echobase-catches.h2.db.gz differ diff --git a/echobase-services/src/test/resources/import-data/echobase-commonData.h2.db.gz b/echobase-services/src/test/resources/import-data/echobase-commonData.h2.db.gz index 715de0b..e2780e6 100644 Binary files a/echobase-services/src/test/resources/import-data/echobase-commonData.h2.db.gz and b/echobase-services/src/test/resources/import-data/echobase-commonData.h2.db.gz differ diff --git a/echobase-services/src/test/resources/import-data/echobase-nodata.h2.db.gz b/echobase-services/src/test/resources/import-data/echobase-nodata.h2.db.gz index 9482734..48cec81 100644 Binary files a/echobase-services/src/test/resources/import-data/echobase-nodata.h2.db.gz and b/echobase-services/src/test/resources/import-data/echobase-nodata.h2.db.gz differ diff --git a/echobase-services/src/test/resources/import-data/echobase-operation-total-samples.h2.db.gz b/echobase-services/src/test/resources/import-data/echobase-operation-total-samples.h2.db.gz index f0bd751..6e2c87d 100644 Binary files a/echobase-services/src/test/resources/import-data/echobase-operation-total-samples.h2.db.gz and b/echobase-services/src/test/resources/import-data/echobase-operation-total-samples.h2.db.gz differ diff --git a/echobase-services/src/test/resources/import-data/echobase-operation.h2.db.gz b/echobase-services/src/test/resources/import-data/echobase-operation.h2.db.gz index 1b2d150..8e08ed1 100644 Binary files a/echobase-services/src/test/resources/import-data/echobase-operation.h2.db.gz and b/echobase-services/src/test/resources/import-data/echobase-operation.h2.db.gz differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm