branch feature/8180 updated (edc70c3 -> bcee297)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git from edc70c3 Complete documentation on Ancillary instrumentation import new 0285289 Add echotype on mooring new b4c446f Add echotype on mooring new bcee297 Create service for echotype import for mooring The 3 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 bcee297b5fc53471266b1e913697baae16edaebb Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 15:19:17 2016 +0200 Create service for echotype import for mooring commit b4c446f940d74f791d79fcae8f4117d85b07873a Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 14:04:47 2016 +0200 Add echotype on mooring commit 0285289910217c42df27de383c34cd091f9058e0 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 14:03:59 2016 +0200 Add echotype on mooring Summary of changes: .../echobase/entities/data/MooringImpl.java | 15 ---- ...WorkingDbMigrationCallBackForVersion3_909.java} | 6 +- .../migration/workingDb/3.905-1-insert-ports.sql | 20 +++++ .../migration/workingDb/3.906-0-add-indexes.sql | 20 +++++ .../migration/workingDb/3.908-0-drop-indexes.sql | 20 +++++ ...engthClass.sql => 3.909-0-mooring-echotype.sql} | 3 +- .../workingDb/h2/3.905-0-update-model.sql | 21 +++++ .../workingDb/h2/3.905-2-migrate-voyage-ports.sql | 21 +++++ .../h2/3.907-0-update-importLog-entityId.sql | 20 +++++ .../workingDb/pg/3.905-0-update-model.sql | 21 +++++ .../workingDb/pg/3.905-2-migrate-voyage-ports.sql | 21 +++++ .../pg/3.907-0-update-importLog-entityId.sql | 21 +++++ echobase-domain/src/main/xmi/echobase.properties | 2 +- echobase-domain/src/main/xmi/echobase.zargo | Bin 99350 -> 99818 bytes .../service/importdata/ImportDataService.java | 22 ++++- .../MooringResultsEchotypeImportAction.java | 67 +++++++++++++++ .../VoyageResultsVoyageEchotypeImportAction.java | 2 +- .../MooringResultsImportConfiguration.java | 91 +++++++++++++++++++++ ...t.java => MooringResultsImportDataContext.java} | 24 ++++-- ...> MooringResultsEchotypeImportExportModel.java} | 36 ++++---- ...w.java => MooringResultsEchotypeImportRow.java} | 30 +++++-- .../importdata/csv/ResultsEchotypeImportRow.java | 4 +- ...yageResultsVoyageEchotypeImportExportModel.java | 5 +- .../service/removedata/RemoveDataService.java | 3 +- ....java => MooringResultsRemoveDataStrategy.java} | 61 ++++++++------ ...eIT.java => MooringResultsImportServiceIT.java} | 28 ++++--- .../removedata/AbstractRemoveDataServiceTest.java | 27 +++++- .../removedata/MooringRemoveDataServiceTest.java | 2 + ...va => MooringResultsRemoveDataServiceTest.java} | 18 ++-- .../import-data/result/mooring/echotype.csv.gz | Bin 0 -> 593 bytes src/site/en/resources/model/Transverse.png | Bin 7038 -> 9110 bytes src/site/en/resources/model/dataAcoustic.png | Bin 28647 -> 34954 bytes src/site/en/resources/model/dataCatches.png | Bin 22230 -> 22223 bytes src/site/en/resources/model/dataCategory.png | Bin 9109 -> 9122 bytes src/site/en/resources/model/dataCommon.png | Bin 29204 -> 35480 bytes src/site/en/resources/model/dataEchotype.png | Bin 6838 -> 6860 bytes src/site/en/resources/model/dataLengthAgeKey.png | Bin 6799 -> 6754 bytes .../en/resources/model/dataLengthWeightKey.png | Bin 6655 -> 5566 bytes src/site/en/resources/model/dataMooring.png | Bin 0 -> 11778 bytes .../model/referenceAcousticInstrument.png | Bin 8939 -> 11654 bytes src/site/en/resources/model/referenceAll.png | Bin 65060 -> 71173 bytes .../resources/model/referenceAreaOfOperation.png | Bin 2692 -> 2703 bytes src/site/en/resources/model/referenceCellType.png | Bin 3224 -> 3225 bytes .../en/resources/model/referenceDataMetadata.png | Bin 8701 -> 8723 bytes .../en/resources/model/referenceDataQuality.png | Bin 1808 -> 1817 bytes .../en/resources/model/referenceDepthStratum.png | Bin 1873 -> 1880 bytes src/site/en/resources/model/referenceGear.png | Bin 12643 -> 12676 bytes src/site/en/resources/model/referenceMission.png | Bin 7820 -> 7830 bytes src/site/en/resources/model/referenceOperation.png | Bin 5851 -> 5858 bytes src/site/en/resources/model/referencePort.png | Bin 0 -> 3465 bytes src/site/en/resources/model/referenceProtocole.png | Bin 6551 -> 6576 bytes .../en/resources/model/referenceReferenceDatum.png | Bin 3127 -> 3134 bytes src/site/en/resources/model/referenceSample.png | Bin 7617 -> 7631 bytes src/site/en/resources/model/referenceSpecies.png | Bin 14230 -> 14498 bytes src/site/en/resources/model/referenceStrata.png | Bin 7890 -> 7903 bytes .../en/resources/model/referenceTSParameter.png | Bin 9923 -> 9934 bytes src/site/en/resources/model/referenceVessel.png | Bin 6636 -> 7237 bytes src/site/en/rst/model.rst | 4 + src/site/resources/model/Transverse.png | Bin 5934 -> 9110 bytes src/site/resources/model/dataAcoustic.png | Bin 30243 -> 34954 bytes src/site/resources/model/dataCatches.png | Bin 22259 -> 22223 bytes src/site/resources/model/dataCategory.png | Bin 9107 -> 9122 bytes src/site/resources/model/dataCommon.png | Bin 29256 -> 35480 bytes src/site/resources/model/dataEchotype.png | Bin 6836 -> 6860 bytes src/site/resources/model/dataLengthAgeKey.png | Bin 6800 -> 6754 bytes src/site/resources/model/dataLengthWeightKey.png | Bin 6658 -> 5566 bytes src/site/resources/model/dataMooring.png | Bin 0 -> 11778 bytes .../model/referenceAcousticInstrument.png | Bin 8939 -> 11654 bytes src/site/resources/model/referenceAll.png | Bin 65068 -> 71173 bytes .../resources/model/referenceAreaOfOperation.png | Bin 2692 -> 2703 bytes src/site/resources/model/referenceCellType.png | Bin 3224 -> 3225 bytes src/site/resources/model/referenceDataMetadata.png | Bin 8701 -> 8723 bytes src/site/resources/model/referenceDataQuality.png | Bin 1808 -> 1817 bytes src/site/resources/model/referenceDepthStratum.png | Bin 1873 -> 1880 bytes src/site/resources/model/referenceGear.png | Bin 12657 -> 12676 bytes src/site/resources/model/referenceMission.png | Bin 7820 -> 7830 bytes src/site/resources/model/referenceOperation.png | Bin 5848 -> 5858 bytes src/site/resources/model/referencePort.png | Bin 0 -> 3465 bytes src/site/resources/model/referenceProtocole.png | Bin 6561 -> 6576 bytes .../resources/model/referenceReferenceDatum.png | Bin 3124 -> 3134 bytes src/site/resources/model/referenceSample.png | Bin 7617 -> 7631 bytes src/site/resources/model/referenceSpecies.png | Bin 14271 -> 14498 bytes src/site/resources/model/referenceStrata.png | Bin 7889 -> 7903 bytes src/site/resources/model/referenceTSParameter.png | Bin 9923 -> 9934 bytes src/site/resources/model/referenceVessel.png | Bin 6636 -> 7237 bytes src/site/rst/model.rst | 4 + 86 files changed, 534 insertions(+), 105 deletions(-) copy echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/{WorkingDbMigrationCallBackForVersion3_908.java => WorkingDbMigrationCallBackForVersion3_909.java} (83%) copy echobase-domain/src/main/resources/migration/workingDb/{3.902-0-add-SpeciesCategory_lengthClass.sql => 3.909-0-mooring-echotype.sql} (84%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringResultsEchotypeImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/MooringResultsImportConfiguration.java copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/{MooringCommonsAncillaryInstrumentationImportDataContext.java => MooringResultsImportDataContext.java} (67%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/{VoyageResultsVoyageEchotypeImportExportModel.java => MooringResultsEchotypeImportExportModel.java} (55%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/{MooringCommonsAncillaryInstrumentationImportRow.java => MooringResultsEchotypeImportRow.java} (59%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/{MooringRemoveDataStrategy.java => MooringResultsRemoveDataStrategy.java} (54%) copy echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/{VoyageResultsVoyageOnlyEchotypeImportServiceIT.java => MooringResultsImportServiceIT.java} (63%) copy echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/{ResultMapRemoveOtherDataServiceTest.java => MooringResultsRemoveDataServiceTest.java} (73%) create mode 100644 echobase-services/src/test/resources/import-data/result/mooring/echotype.csv.gz create mode 100644 src/site/en/resources/model/dataMooring.png create mode 100644 src/site/en/resources/model/referencePort.png create mode 100644 src/site/resources/model/dataMooring.png create mode 100644 src/site/resources/model/referencePort.png -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 0285289910217c42df27de383c34cd091f9058e0 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 14:03:59 2016 +0200 Add echotype on mooring --- .../WorkingDbMigrationCallBackForVersion3_909.java | 33 +++++++++++++++++++++ .../migration/workingDb/3.905-1-insert-ports.sql | 20 +++++++++++++ .../migration/workingDb/3.906-0-add-indexes.sql | 20 +++++++++++++ .../migration/workingDb/3.908-0-drop-indexes.sql | 20 +++++++++++++ .../workingDb/3.909-0-mooring-echotype.sql | 22 ++++++++++++++ .../workingDb/h2/3.905-0-update-model.sql | 21 +++++++++++++ .../workingDb/h2/3.905-2-migrate-voyage-ports.sql | 21 +++++++++++++ .../h2/3.907-0-update-importLog-entityId.sql | 20 +++++++++++++ .../workingDb/pg/3.905-0-update-model.sql | 21 +++++++++++++ .../workingDb/pg/3.905-2-migrate-voyage-ports.sql | 21 +++++++++++++ .../pg/3.907-0-update-importLog-entityId.sql | 21 +++++++++++++ echobase-domain/src/main/xmi/echobase.properties | 2 +- echobase-domain/src/main/xmi/echobase.zargo | Bin 99350 -> 99818 bytes src/site/en/resources/model/Transverse.png | Bin 7038 -> 9110 bytes src/site/en/resources/model/dataAcoustic.png | Bin 28647 -> 34954 bytes src/site/en/resources/model/dataCatches.png | Bin 22230 -> 22223 bytes src/site/en/resources/model/dataCategory.png | Bin 9109 -> 9122 bytes src/site/en/resources/model/dataCommon.png | Bin 29204 -> 35480 bytes src/site/en/resources/model/dataEchotype.png | Bin 6838 -> 6860 bytes src/site/en/resources/model/dataLengthAgeKey.png | Bin 6799 -> 6754 bytes .../en/resources/model/dataLengthWeightKey.png | Bin 6655 -> 5566 bytes src/site/en/resources/model/dataMooring.png | Bin 0 -> 11778 bytes .../model/referenceAcousticInstrument.png | Bin 8939 -> 11654 bytes src/site/en/resources/model/referenceAll.png | Bin 65060 -> 71173 bytes .../resources/model/referenceAreaOfOperation.png | Bin 2692 -> 2703 bytes src/site/en/resources/model/referenceCellType.png | Bin 3224 -> 3225 bytes .../en/resources/model/referenceDataMetadata.png | Bin 8701 -> 8723 bytes .../en/resources/model/referenceDataQuality.png | Bin 1808 -> 1817 bytes .../en/resources/model/referenceDepthStratum.png | Bin 1873 -> 1880 bytes src/site/en/resources/model/referenceGear.png | Bin 12643 -> 12676 bytes src/site/en/resources/model/referenceMission.png | Bin 7820 -> 7830 bytes src/site/en/resources/model/referenceOperation.png | Bin 5851 -> 5858 bytes src/site/en/resources/model/referencePort.png | Bin 0 -> 3465 bytes src/site/en/resources/model/referenceProtocole.png | Bin 6551 -> 6576 bytes .../en/resources/model/referenceReferenceDatum.png | Bin 3127 -> 3134 bytes src/site/en/resources/model/referenceSample.png | Bin 7617 -> 7631 bytes src/site/en/resources/model/referenceSpecies.png | Bin 14230 -> 14498 bytes src/site/en/resources/model/referenceStrata.png | Bin 7890 -> 7903 bytes .../en/resources/model/referenceTSParameter.png | Bin 9923 -> 9934 bytes src/site/en/resources/model/referenceVessel.png | Bin 6636 -> 7237 bytes src/site/en/rst/model.rst | 4 +++ src/site/resources/model/Transverse.png | Bin 5934 -> 9110 bytes src/site/resources/model/dataAcoustic.png | Bin 30243 -> 34954 bytes src/site/resources/model/dataCatches.png | Bin 22259 -> 22223 bytes src/site/resources/model/dataCategory.png | Bin 9107 -> 9122 bytes src/site/resources/model/dataCommon.png | Bin 29256 -> 35480 bytes src/site/resources/model/dataEchotype.png | Bin 6836 -> 6860 bytes src/site/resources/model/dataLengthAgeKey.png | Bin 6800 -> 6754 bytes src/site/resources/model/dataLengthWeightKey.png | Bin 6658 -> 5566 bytes src/site/resources/model/dataMooring.png | Bin 0 -> 11778 bytes .../model/referenceAcousticInstrument.png | Bin 8939 -> 11654 bytes src/site/resources/model/referenceAll.png | Bin 65068 -> 71173 bytes .../resources/model/referenceAreaOfOperation.png | Bin 2692 -> 2703 bytes src/site/resources/model/referenceCellType.png | Bin 3224 -> 3225 bytes src/site/resources/model/referenceDataMetadata.png | Bin 8701 -> 8723 bytes src/site/resources/model/referenceDataQuality.png | Bin 1808 -> 1817 bytes src/site/resources/model/referenceDepthStratum.png | Bin 1873 -> 1880 bytes src/site/resources/model/referenceGear.png | Bin 12657 -> 12676 bytes src/site/resources/model/referenceMission.png | Bin 7820 -> 7830 bytes src/site/resources/model/referenceOperation.png | Bin 5848 -> 5858 bytes src/site/resources/model/referencePort.png | Bin 0 -> 3465 bytes src/site/resources/model/referenceProtocole.png | Bin 6561 -> 6576 bytes .../resources/model/referenceReferenceDatum.png | Bin 3124 -> 3134 bytes src/site/resources/model/referenceSample.png | Bin 7617 -> 7631 bytes src/site/resources/model/referenceSpecies.png | Bin 14271 -> 14498 bytes src/site/resources/model/referenceStrata.png | Bin 7889 -> 7903 bytes src/site/resources/model/referenceTSParameter.png | Bin 9923 -> 9934 bytes src/site/resources/model/referenceVessel.png | Bin 6636 -> 7237 bytes src/site/rst/model.rst | 4 +++ 69 files changed, 249 insertions(+), 1 deletion(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/WorkingDbMigrationCallBackForVersion3_909.java b/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/WorkingDbMigrationCallBackForVersion3_909.java new file mode 100644 index 0000000..24b28e5 --- /dev/null +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/workingDb/WorkingDbMigrationCallBackForVersion3_909.java @@ -0,0 +1,33 @@ +package fr.ifremer.echobase.persistence.migration.workingDb; + +import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.support.TopiaSqlSupport; +import org.nuiton.version.Version; +import org.nuiton.version.Versions; + +import java.util.List; + +/** + * Created on 26/04/16. + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class WorkingDbMigrationCallBackForVersion3_909 extends WorkingDbMigrationCallBackForVersionSupport { + + @Override + public Version getVersion() { + return Versions.valueOf("3.909"); + } + + @Override + protected void prepareMigrationScript(TopiaSqlSupport sqlSupport, + List<String> queries, + boolean showSql, + boolean showProgression) throws TopiaException { + + // update the model structure + addScript("3.909-0-mooring-echotype.sql", queries); + } + +} diff --git a/echobase-domain/src/main/resources/migration/workingDb/3.905-1-insert-ports.sql b/echobase-domain/src/main/resources/migration/workingDb/3.905-1-insert-ports.sql index c25c534..b36a475 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/3.905-1-insert-ports.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/3.905-1-insert-ports.sql @@ -1,3 +1,23 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- -- =CONCATENER("insert into port (topiaId, topiaVersion, topiaCreateDate, code, name, shortName, lastModification) values ('fr.ifremer.echobase.entities.references.Port#5553610280597#0.9322615025"; E2; "', 0, '2016-04-29 00:00:00.000', '"; A2; "', '"; B2; "', '"; C2; "', '"; D2; " 00:00:00.000');") insert into port (topiaId, topiaVersion, topiaCreateDate, code, name, shortName, lastModification) values ('fr.ifremer.echobase.entities.references.Port#5553610280597#0.93226150250', 0, '2016-04-29 00:00:00.000', 'BSH10', 'Antofagasta', 'Antofagasta', '2007-08-02 00:00:00.000'); insert into port (topiaId, topiaVersion, topiaCreateDate, code, name, shortName, lastModification) values ('fr.ifremer.echobase.entities.references.Port#5553610280597#0.93226150251', 0, '2016-04-29 00:00:00.000', 'BSH100', 'Jakarta', 'Jakarta', '2007-08-02 00:00:00.000'); diff --git a/echobase-domain/src/main/resources/migration/workingDb/3.906-0-add-indexes.sql b/echobase-domain/src/main/resources/migration/workingDb/3.906-0-add-indexes.sql index e2ba3ad..89536bf 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/3.906-0-add-indexes.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/3.906-0-add-indexes.sql @@ -1 +1,21 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- CREATE INDEX IDX_CELL_NAME ON CELL (NAME); diff --git a/echobase-domain/src/main/resources/migration/workingDb/3.908-0-drop-indexes.sql b/echobase-domain/src/main/resources/migration/workingDb/3.908-0-drop-indexes.sql index 3a704d6..2ab95e7 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/3.908-0-drop-indexes.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/3.908-0-drop-indexes.sql @@ -1 +1,21 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- DROP INDEX IF EXISTS uk_importfileid; diff --git a/echobase-domain/src/main/resources/migration/workingDb/3.909-0-mooring-echotype.sql b/echobase-domain/src/main/resources/migration/workingDb/3.909-0-mooring-echotype.sql new file mode 100644 index 0000000..59f4ca9 --- /dev/null +++ b/echobase-domain/src/main/resources/migration/workingDb/3.909-0-mooring-echotype.sql @@ -0,0 +1,22 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- +ALTER TABLE ECHOTYPE ADD mooring VARCHAR(255); +ALTER TABLE ECHOTYPE ADD CONSTRAINT FK_ECHOTYPE_MOORING FOREIGN KEY (mooring) references MOORING; diff --git a/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-0-update-model.sql b/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-0-update-model.sql index 6ffe315..f212245 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-0-update-model.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-0-update-model.sql @@ -1,3 +1,24 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- + -- PORT create table port (topiaId varchar(255) not null, topiaVersion bigint not null, code varchar(255) not null, topiaCreateDate timestamp, name varchar(255) not null, shortName varchar(255), lastModification timestamp); diff --git a/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-2-migrate-voyage-ports.sql b/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-2-migrate-voyage-ports.sql index 4e24c39..e7ac51f 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-2-migrate-voyage-ports.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/h2/3.905-2-migrate-voyage-ports.sql @@ -1,3 +1,24 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- + -- Change ports name update voyage v SET startPort = (select p.topiaId from port p where upper(p.name) = upper(v.startPortName) limit 1); update voyage v SET endPort = (select p.topiaId from port p where upper(p.name) = upper(v.endPortName) limit 1); diff --git a/echobase-domain/src/main/resources/migration/workingDb/h2/3.907-0-update-importLog-entityId.sql b/echobase-domain/src/main/resources/migration/workingDb/h2/3.907-0-update-importLog-entityId.sql index 65f7962..33e707a 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/h2/3.907-0-update-importLog-entityId.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/h2/3.907-0-update-importLog-entityId.sql @@ -1 +1,21 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- alter table importlog alter column voyageId rename to entityId; diff --git a/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-0-update-model.sql b/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-0-update-model.sql index 9143615..295c3c3 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-0-update-model.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-0-update-model.sql @@ -1,3 +1,24 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- + -- PORT create table port (topiaId character varying(255) not null, topiaVersion bigint not null, code character varying(255) not null, topiaCreateDate timestamp, name character varying(255) not null, shortName character varying(255), lastModification timestamp); diff --git a/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-2-migrate-voyage-ports.sql b/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-2-migrate-voyage-ports.sql index a3e5e3d..cb3b35c 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-2-migrate-voyage-ports.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/pg/3.905-2-migrate-voyage-ports.sql @@ -1,3 +1,24 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- + -- Change ports name update voyage as v SET startPort = p.topiaid FROM ( select pp.topiaId, vv.topiaId as voyageId from port as pp, voyage as vv WHERE upper(pp.name) = upper(vv.startPortName) ) as p WHERE v.startPortName is not null and v.topiaId = p.voyageId; update voyage as v SET endPort = p.topiaid FROM ( select pp.topiaId, vv.topiaId as voyageId from port as pp, voyage as vv WHERE upper(pp.name) = upper(vv.endPortName) ) as p WHERE v.endPortName is not null and v.topiaId = p.voyageId; diff --git a/echobase-domain/src/main/resources/migration/workingDb/pg/3.907-0-update-importLog-entityId.sql b/echobase-domain/src/main/resources/migration/workingDb/pg/3.907-0-update-importLog-entityId.sql index a2cdb5d..b8a85bb 100644 --- a/echobase-domain/src/main/resources/migration/workingDb/pg/3.907-0-update-importLog-entityId.sql +++ b/echobase-domain/src/main/resources/migration/workingDb/pg/3.907-0-update-importLog-entityId.sql @@ -1 +1,22 @@ +--- +-- #%L +-- EchoBase :: Domain +-- %% +-- Copyright (C) 2011 - 2016 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% +--- + alter table importlog rename column voyageId to entityId; diff --git a/echobase-domain/src/main/xmi/echobase.properties b/echobase-domain/src/main/xmi/echobase.properties index 63ffcbc..843a83d 100644 --- a/echobase-domain/src/main/xmi/echobase.properties +++ b/echobase-domain/src/main/xmi/echobase.properties @@ -23,7 +23,7 @@ model.tagValue.notGenerateToString=true model.tagValue.generateOperatorForDAOHelper=true -model.tagValue.version=3.908 +model.tagValue.version=3.909 model.tagValue.generatePropertyChangeSupport=false model.tagValue.generateBooleanGetMethods=false model.tagValue.indexForeignKeys=true diff --git a/echobase-domain/src/main/xmi/echobase.zargo b/echobase-domain/src/main/xmi/echobase.zargo index b7abef0..e8cbf36 100644 Binary files a/echobase-domain/src/main/xmi/echobase.zargo and b/echobase-domain/src/main/xmi/echobase.zargo differ diff --git a/src/site/en/resources/model/Transverse.png b/src/site/en/resources/model/Transverse.png index f0a701c..e55d12a 100644 Binary files a/src/site/en/resources/model/Transverse.png and b/src/site/en/resources/model/Transverse.png differ diff --git a/src/site/en/resources/model/dataAcoustic.png b/src/site/en/resources/model/dataAcoustic.png index 0bf5f2d..6e63f5b 100644 Binary files a/src/site/en/resources/model/dataAcoustic.png and b/src/site/en/resources/model/dataAcoustic.png differ diff --git a/src/site/en/resources/model/dataCatches.png b/src/site/en/resources/model/dataCatches.png index 703ce8b..1cc5bc3 100644 Binary files a/src/site/en/resources/model/dataCatches.png and b/src/site/en/resources/model/dataCatches.png differ diff --git a/src/site/en/resources/model/dataCategory.png b/src/site/en/resources/model/dataCategory.png index 8d39e7f..3cca050 100644 Binary files a/src/site/en/resources/model/dataCategory.png and b/src/site/en/resources/model/dataCategory.png differ diff --git a/src/site/en/resources/model/dataCommon.png b/src/site/en/resources/model/dataCommon.png index af22a25..027b511 100644 Binary files a/src/site/en/resources/model/dataCommon.png and b/src/site/en/resources/model/dataCommon.png differ diff --git a/src/site/en/resources/model/dataEchotype.png b/src/site/en/resources/model/dataEchotype.png index a1ab31b..ad2eb5d 100644 Binary files a/src/site/en/resources/model/dataEchotype.png and b/src/site/en/resources/model/dataEchotype.png differ diff --git a/src/site/en/resources/model/dataLengthAgeKey.png b/src/site/en/resources/model/dataLengthAgeKey.png index 82956e0..a578e9b 100644 Binary files a/src/site/en/resources/model/dataLengthAgeKey.png and b/src/site/en/resources/model/dataLengthAgeKey.png differ diff --git a/src/site/en/resources/model/dataLengthWeightKey.png b/src/site/en/resources/model/dataLengthWeightKey.png index d91b9ff..a854245 100644 Binary files a/src/site/en/resources/model/dataLengthWeightKey.png and b/src/site/en/resources/model/dataLengthWeightKey.png differ diff --git a/src/site/en/resources/model/dataMooring.png b/src/site/en/resources/model/dataMooring.png new file mode 100644 index 0000000..7610920 Binary files /dev/null and b/src/site/en/resources/model/dataMooring.png differ diff --git a/src/site/en/resources/model/referenceAcousticInstrument.png b/src/site/en/resources/model/referenceAcousticInstrument.png index e11075d..9180473 100644 Binary files a/src/site/en/resources/model/referenceAcousticInstrument.png and b/src/site/en/resources/model/referenceAcousticInstrument.png differ diff --git a/src/site/en/resources/model/referenceAll.png b/src/site/en/resources/model/referenceAll.png index f9ee879..e42ec18 100644 Binary files a/src/site/en/resources/model/referenceAll.png and b/src/site/en/resources/model/referenceAll.png differ diff --git a/src/site/en/resources/model/referenceAreaOfOperation.png b/src/site/en/resources/model/referenceAreaOfOperation.png index bc51411..dc8ae94 100644 Binary files a/src/site/en/resources/model/referenceAreaOfOperation.png and b/src/site/en/resources/model/referenceAreaOfOperation.png differ diff --git a/src/site/en/resources/model/referenceCellType.png b/src/site/en/resources/model/referenceCellType.png index f50e3e1..68b6d54 100644 Binary files a/src/site/en/resources/model/referenceCellType.png and b/src/site/en/resources/model/referenceCellType.png differ diff --git a/src/site/en/resources/model/referenceDataMetadata.png b/src/site/en/resources/model/referenceDataMetadata.png index e2c5744..a65092f 100644 Binary files a/src/site/en/resources/model/referenceDataMetadata.png and b/src/site/en/resources/model/referenceDataMetadata.png differ diff --git a/src/site/en/resources/model/referenceDataQuality.png b/src/site/en/resources/model/referenceDataQuality.png index 82684d2..1ddda16 100644 Binary files a/src/site/en/resources/model/referenceDataQuality.png and b/src/site/en/resources/model/referenceDataQuality.png differ diff --git a/src/site/en/resources/model/referenceDepthStratum.png b/src/site/en/resources/model/referenceDepthStratum.png index b8927de..774aee7 100644 Binary files a/src/site/en/resources/model/referenceDepthStratum.png and b/src/site/en/resources/model/referenceDepthStratum.png differ diff --git a/src/site/en/resources/model/referenceGear.png b/src/site/en/resources/model/referenceGear.png index f00c19d..b5afcf0 100644 Binary files a/src/site/en/resources/model/referenceGear.png and b/src/site/en/resources/model/referenceGear.png differ diff --git a/src/site/en/resources/model/referenceMission.png b/src/site/en/resources/model/referenceMission.png index 5323104..a1bdcd3 100644 Binary files a/src/site/en/resources/model/referenceMission.png and b/src/site/en/resources/model/referenceMission.png differ diff --git a/src/site/en/resources/model/referenceOperation.png b/src/site/en/resources/model/referenceOperation.png index 7a3a785..55e42df 100644 Binary files a/src/site/en/resources/model/referenceOperation.png and b/src/site/en/resources/model/referenceOperation.png differ diff --git a/src/site/en/resources/model/referencePort.png b/src/site/en/resources/model/referencePort.png new file mode 100644 index 0000000..f350beb Binary files /dev/null and b/src/site/en/resources/model/referencePort.png differ diff --git a/src/site/en/resources/model/referenceProtocole.png b/src/site/en/resources/model/referenceProtocole.png index 4f177ee..4588127 100644 Binary files a/src/site/en/resources/model/referenceProtocole.png and b/src/site/en/resources/model/referenceProtocole.png differ diff --git a/src/site/en/resources/model/referenceReferenceDatum.png b/src/site/en/resources/model/referenceReferenceDatum.png index d72128e..b8ff01d 100644 Binary files a/src/site/en/resources/model/referenceReferenceDatum.png and b/src/site/en/resources/model/referenceReferenceDatum.png differ diff --git a/src/site/en/resources/model/referenceSample.png b/src/site/en/resources/model/referenceSample.png index c8af382..2282f68 100644 Binary files a/src/site/en/resources/model/referenceSample.png and b/src/site/en/resources/model/referenceSample.png differ diff --git a/src/site/en/resources/model/referenceSpecies.png b/src/site/en/resources/model/referenceSpecies.png index a6e8bd2..8a71191 100644 Binary files a/src/site/en/resources/model/referenceSpecies.png and b/src/site/en/resources/model/referenceSpecies.png differ diff --git a/src/site/en/resources/model/referenceStrata.png b/src/site/en/resources/model/referenceStrata.png index feec6d4..55f45a5 100644 Binary files a/src/site/en/resources/model/referenceStrata.png and b/src/site/en/resources/model/referenceStrata.png differ diff --git a/src/site/en/resources/model/referenceTSParameter.png b/src/site/en/resources/model/referenceTSParameter.png index 0838f9f..ee0c39d 100644 Binary files a/src/site/en/resources/model/referenceTSParameter.png and b/src/site/en/resources/model/referenceTSParameter.png differ diff --git a/src/site/en/resources/model/referenceVessel.png b/src/site/en/resources/model/referenceVessel.png index e1ffe72..c098e0b 100644 Binary files a/src/site/en/resources/model/referenceVessel.png and b/src/site/en/resources/model/referenceVessel.png differ diff --git a/src/site/en/rst/model.rst b/src/site/en/rst/model.rst index 4f9a308..ec83a73 100644 --- a/src/site/en/rst/model.rst +++ b/src/site/en/rst/model.rst @@ -58,6 +58,7 @@ Modèle du référentiel - `Référentiel ReferenceDatum`_ - `Référentiel TSParameter`_ - `Référentiel Vessel`_ +- `Référentiel Port`_ Modèle thématique ================= @@ -66,6 +67,7 @@ Partie commune ~~~~~~~~~~~~~~ - `Partie commune des données thématiques`_ +- `Partie commune des données bouées`_ Sous modèle acoustique @@ -91,7 +93,9 @@ Sous modèle pêcherie .. _Référentiel ReferenceDatum: model/referenceReferenceDatum.png .. _Référentiel TSParameter: model/referenceTSParameter.png .. _Référentiel Vessel: model/referenceVessel.png +.. _Référentiel Port: model/referencePort.png .. _Partie commune des données thématiques: model/dataCommon.png +.. _Partie commune des données bouées: model/dataMooring.png .. _Sous modèle acoustique: model/dataAcoustic.png .. _Sous modèle pêcherie: model/dataCatches.png diff --git a/src/site/resources/model/Transverse.png b/src/site/resources/model/Transverse.png index 3d690ae..e55d12a 100644 Binary files a/src/site/resources/model/Transverse.png and b/src/site/resources/model/Transverse.png differ diff --git a/src/site/resources/model/dataAcoustic.png b/src/site/resources/model/dataAcoustic.png index c8b38b1..6e63f5b 100644 Binary files a/src/site/resources/model/dataAcoustic.png and b/src/site/resources/model/dataAcoustic.png differ diff --git a/src/site/resources/model/dataCatches.png b/src/site/resources/model/dataCatches.png index c7bb87f..1cc5bc3 100644 Binary files a/src/site/resources/model/dataCatches.png and b/src/site/resources/model/dataCatches.png differ diff --git a/src/site/resources/model/dataCategory.png b/src/site/resources/model/dataCategory.png index 6199ad4..3cca050 100644 Binary files a/src/site/resources/model/dataCategory.png and b/src/site/resources/model/dataCategory.png differ diff --git a/src/site/resources/model/dataCommon.png b/src/site/resources/model/dataCommon.png index 24174e4..027b511 100644 Binary files a/src/site/resources/model/dataCommon.png and b/src/site/resources/model/dataCommon.png differ diff --git a/src/site/resources/model/dataEchotype.png b/src/site/resources/model/dataEchotype.png index 2182897..ad2eb5d 100644 Binary files a/src/site/resources/model/dataEchotype.png and b/src/site/resources/model/dataEchotype.png differ diff --git a/src/site/resources/model/dataLengthAgeKey.png b/src/site/resources/model/dataLengthAgeKey.png index a17643d..a578e9b 100644 Binary files a/src/site/resources/model/dataLengthAgeKey.png and b/src/site/resources/model/dataLengthAgeKey.png differ diff --git a/src/site/resources/model/dataLengthWeightKey.png b/src/site/resources/model/dataLengthWeightKey.png index aec92f3..a854245 100644 Binary files a/src/site/resources/model/dataLengthWeightKey.png and b/src/site/resources/model/dataLengthWeightKey.png differ diff --git a/src/site/resources/model/dataMooring.png b/src/site/resources/model/dataMooring.png new file mode 100644 index 0000000..7610920 Binary files /dev/null and b/src/site/resources/model/dataMooring.png differ diff --git a/src/site/resources/model/referenceAcousticInstrument.png b/src/site/resources/model/referenceAcousticInstrument.png index e11075d..9180473 100644 Binary files a/src/site/resources/model/referenceAcousticInstrument.png and b/src/site/resources/model/referenceAcousticInstrument.png differ diff --git a/src/site/resources/model/referenceAll.png b/src/site/resources/model/referenceAll.png index 161b3e5..e42ec18 100644 Binary files a/src/site/resources/model/referenceAll.png and b/src/site/resources/model/referenceAll.png differ diff --git a/src/site/resources/model/referenceAreaOfOperation.png b/src/site/resources/model/referenceAreaOfOperation.png index bc51411..dc8ae94 100644 Binary files a/src/site/resources/model/referenceAreaOfOperation.png and b/src/site/resources/model/referenceAreaOfOperation.png differ diff --git a/src/site/resources/model/referenceCellType.png b/src/site/resources/model/referenceCellType.png index f50e3e1..68b6d54 100644 Binary files a/src/site/resources/model/referenceCellType.png and b/src/site/resources/model/referenceCellType.png differ diff --git a/src/site/resources/model/referenceDataMetadata.png b/src/site/resources/model/referenceDataMetadata.png index 3f4cf54..a65092f 100644 Binary files a/src/site/resources/model/referenceDataMetadata.png and b/src/site/resources/model/referenceDataMetadata.png differ diff --git a/src/site/resources/model/referenceDataQuality.png b/src/site/resources/model/referenceDataQuality.png index 82684d2..1ddda16 100644 Binary files a/src/site/resources/model/referenceDataQuality.png and b/src/site/resources/model/referenceDataQuality.png differ diff --git a/src/site/resources/model/referenceDepthStratum.png b/src/site/resources/model/referenceDepthStratum.png index b8927de..774aee7 100644 Binary files a/src/site/resources/model/referenceDepthStratum.png and b/src/site/resources/model/referenceDepthStratum.png differ diff --git a/src/site/resources/model/referenceGear.png b/src/site/resources/model/referenceGear.png index 44af6df..b5afcf0 100644 Binary files a/src/site/resources/model/referenceGear.png and b/src/site/resources/model/referenceGear.png differ diff --git a/src/site/resources/model/referenceMission.png b/src/site/resources/model/referenceMission.png index 5323104..a1bdcd3 100644 Binary files a/src/site/resources/model/referenceMission.png and b/src/site/resources/model/referenceMission.png differ diff --git a/src/site/resources/model/referenceOperation.png b/src/site/resources/model/referenceOperation.png index 5f97014..55e42df 100644 Binary files a/src/site/resources/model/referenceOperation.png and b/src/site/resources/model/referenceOperation.png differ diff --git a/src/site/resources/model/referencePort.png b/src/site/resources/model/referencePort.png new file mode 100644 index 0000000..f350beb Binary files /dev/null and b/src/site/resources/model/referencePort.png differ diff --git a/src/site/resources/model/referenceProtocole.png b/src/site/resources/model/referenceProtocole.png index 1eef11e..4588127 100644 Binary files a/src/site/resources/model/referenceProtocole.png and b/src/site/resources/model/referenceProtocole.png differ diff --git a/src/site/resources/model/referenceReferenceDatum.png b/src/site/resources/model/referenceReferenceDatum.png index 66c94f0..b8ff01d 100644 Binary files a/src/site/resources/model/referenceReferenceDatum.png and b/src/site/resources/model/referenceReferenceDatum.png differ diff --git a/src/site/resources/model/referenceSample.png b/src/site/resources/model/referenceSample.png index c8af382..2282f68 100644 Binary files a/src/site/resources/model/referenceSample.png and b/src/site/resources/model/referenceSample.png differ diff --git a/src/site/resources/model/referenceSpecies.png b/src/site/resources/model/referenceSpecies.png index 5fec46d..8a71191 100644 Binary files a/src/site/resources/model/referenceSpecies.png and b/src/site/resources/model/referenceSpecies.png differ diff --git a/src/site/resources/model/referenceStrata.png b/src/site/resources/model/referenceStrata.png index 8d5e27b..55f45a5 100644 Binary files a/src/site/resources/model/referenceStrata.png and b/src/site/resources/model/referenceStrata.png differ diff --git a/src/site/resources/model/referenceTSParameter.png b/src/site/resources/model/referenceTSParameter.png index 0838f9f..ee0c39d 100644 Binary files a/src/site/resources/model/referenceTSParameter.png and b/src/site/resources/model/referenceTSParameter.png differ diff --git a/src/site/resources/model/referenceVessel.png b/src/site/resources/model/referenceVessel.png index 02d192f..c098e0b 100644 Binary files a/src/site/resources/model/referenceVessel.png and b/src/site/resources/model/referenceVessel.png differ diff --git a/src/site/rst/model.rst b/src/site/rst/model.rst index 6a91f34..46e3084 100644 --- a/src/site/rst/model.rst +++ b/src/site/rst/model.rst @@ -49,6 +49,7 @@ Modèle du référentiel - `Référentiel ReferenceDatum`_ - `Référentiel TSParameter`_ - `Référentiel Vessel`_ +- `Référentiel Port`_ Modèle thématique ================= @@ -57,6 +58,7 @@ Partie commune ~~~~~~~~~~~~~~ - `Partie commune des données thématiques`_ +- `Partie commune des données bouées`_ Sous modèle acoustique @@ -83,7 +85,9 @@ Sous modèle pêcherie .. _Référentiel ReferenceDatum: model/referenceReferenceDatum.png .. _Référentiel TSParameter: model/referenceTSParameter.png .. _Référentiel Vessel: model/referenceVessel.png +.. _Référentiel Port: model/referencePort.png .. _Partie commune des données thématiques: model/dataCommon.png +.. _Partie commune des données bouées: model/dataMooring.png .. _Sous modèle acoustique: model/dataAcoustic.png .. _Sous modèle pêcherie: model/dataCatches.png -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit b4c446f940d74f791d79fcae8f4117d85b07873a Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 14:04:47 2016 +0200 Add echotype on mooring --- .../fr/ifremer/echobase/entities/data/MooringImpl.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java index d355396..7a3949a 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java @@ -27,19 +27,4 @@ public class MooringImpl extends MooringAbstract { return this; } - @Override - public boolean isEchotypeEmpty() { - throw new UnsupportedOperationException(); - } - - @Override - public Collection<Echotype> getEchotype() { - throw new UnsupportedOperationException(); - } - - @Override - public void addEchotype(Echotype echotype) { - throw new UnsupportedOperationException(); - } - } //MooringImpl -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit bcee297b5fc53471266b1e913697baae16edaebb Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 15:19:17 2016 +0200 Create service for echotype import for mooring --- .../service/importdata/ImportDataService.java | 22 ++++- .../MooringResultsEchotypeImportAction.java | 67 +++++++++++++ .../VoyageResultsVoyageEchotypeImportAction.java | 2 +- .../MooringResultsImportConfiguration.java | 91 ++++++++++++++++++ .../contexts/MooringResultsImportDataContext.java | 81 ++++++++++++++++ ...> MooringResultsEchotypeImportExportModel.java} | 36 +++---- .../csv/MooringResultsEchotypeImportRow.java | 73 ++++++++++++++ .../importdata/csv/ResultsEchotypeImportRow.java | 4 +- ...yageResultsVoyageEchotypeImportExportModel.java | 5 +- .../service/removedata/RemoveDataService.java | 3 +- .../strategy/MooringResultsRemoveDataStrategy.java | 105 +++++++++++++++++++++ .../importdata/MooringResultsImportServiceIT.java | 72 ++++++++++++++ .../removedata/AbstractRemoveDataServiceTest.java | 27 +++++- .../removedata/MooringRemoveDataServiceTest.java | 2 + ...va => MooringResultsRemoveDataServiceTest.java} | 24 ++--- .../import-data/result/mooring/echotype.csv.gz | Bin 0 -> 593 bytes 16 files changed, 571 insertions(+), 43 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java index 7eeeb39..cda8fea 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java @@ -33,6 +33,7 @@ import fr.ifremer.echobase.services.service.importdata.actions.ImportDataActionS import fr.ifremer.echobase.services.service.importdata.actions.MooringAcousticsImportAction; import fr.ifremer.echobase.services.service.importdata.actions.MooringCommonsAncillaryInstrumentationImportAction; import fr.ifremer.echobase.services.service.importdata.actions.MooringCommonsMooringImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.MooringResultsEchotypeImportAction; import fr.ifremer.echobase.services.service.importdata.actions.VoyageAcousticsImportAction; import fr.ifremer.echobase.services.service.importdata.actions.VoyageCatchesBiometrySampleImportAction; import fr.ifremer.echobase.services.service.importdata.actions.VoyageCatchesSubSampleImportAction; @@ -60,6 +61,7 @@ import fr.ifremer.echobase.services.service.importdata.configurations.ImportData import fr.ifremer.echobase.services.service.importdata.configurations.MooringAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.MooringCommonsAncillaryInstrumentationImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.MooringCommonsMooringImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.MooringResultsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsAncillaryInstrumentationImportConfiguration; @@ -70,6 +72,7 @@ import fr.ifremer.echobase.services.service.importdata.contexts.ImportDataContex import fr.ifremer.echobase.services.service.importdata.contexts.MooringAcousticsImportDataContext; import fr.ifremer.echobase.services.service.importdata.contexts.MooringCommonsAncillaryInstrumentationImportDataContext; import fr.ifremer.echobase.services.service.importdata.contexts.MooringCommonsMooringImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.MooringResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsAncillaryInstrumentationImportDataContext; @@ -209,11 +212,15 @@ public class ImportDataService extends EchoBaseServiceSupport { } public ImportDataResult<MooringAcousticsImportConfiguration> doImportMooringAcoustics(MooringAcousticsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - MooringAcousticsImportDataContext importDataContext = newMooringAcousticsImportContext(configuration, user); Set<MooringAcousticsImportAction> importActions = Collections.singleton(new MooringAcousticsImportAction(importDataContext)); return doImport(importDataContext, importActions); - + } + + public ImportDataResult<MooringResultsImportConfiguration> doImportMooringResults(MooringResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + MooringResultsImportDataContext importDataContext = newMooringResultsImportContext(configuration, user); + Set<MooringResultsEchotypeImportAction> importActions = Collections.singleton(new MooringResultsEchotypeImportAction(importDataContext)); + return doImport(importDataContext, importActions); } public ImportDataResult<VoyageResultsImportConfiguration> doImportVoyageResults(VoyageResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { @@ -345,6 +352,10 @@ public class ImportDataService extends EchoBaseServiceSupport { return new MooringAcousticsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user, newDate()); } + private MooringResultsImportDataContext newMooringResultsImportContext(MooringResultsImportConfiguration configuration, EchoBaseUser user) { + return new MooringResultsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user, newDate()); + } + protected <M extends ImportDataConfigurationSupport, C extends ImportDataContextSupport<M>, A extends ImportDataActionSupport> ImportDataResult<M> doImport(C importDataContext, Collection<A> importActions) throws ImportException { long s0 = TimeLog.getTime(); @@ -482,4 +493,11 @@ public class ImportDataService extends EchoBaseServiceSupport { } } + public static class MooringResultsImportDataAction implements ImportDataAction<MooringResultsImportConfiguration> { + @Override + public ImportDataResult<MooringResultsImportConfiguration> doImport(ImportDataService service, MooringResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportMooringResults(configuration, user); + } + } + } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringResultsEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringResultsEchotypeImportAction.java new file mode 100644 index 0000000..092287b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringResultsEchotypeImportAction.java @@ -0,0 +1,67 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2016 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 fr.ifremer.echobase.entities.data.DataAcousticProvider; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.service.importdata.configurations.MooringResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.MooringResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.MooringResultsEchotypeImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.MooringResultsEchotypeImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringResultsEchotypeImportAction extends ImportResultsEchotypeActionSupport<MooringResultsImportConfiguration, MooringResultsImportDataContext, MooringResultsEchotypeImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(MooringResultsEchotypeImportAction.class); + + public MooringResultsEchotypeImportAction(MooringResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEchotypeFile()); + } + + @Override + protected MooringResultsEchotypeImportExportModel createCsvImportModel(MooringResultsImportDataContext importDataContext) { + return MooringResultsEchotypeImportExportModel.forImport(importDataContext); + } + + @Override + protected MooringResultsEchotypeImportExportModel createCsvExportModel(MooringResultsImportDataContext importDataContext) { + return MooringResultsEchotypeImportExportModel.forExport(importDataContext); + } + + @Override + protected DataAcousticProvider getDataProvider(MooringResultsImportDataContext importDataContext) { + return importDataContext.getMooring(); + } + + @Override + protected MooringResultsEchotypeImportRow newImportedRow(DataAcousticProvider mooring, Echotype echotype, Species species) { + return MooringResultsEchotypeImportRow.of(mooring, echotype, species); + } + +} 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 d890141..7704f59 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 @@ -58,7 +58,7 @@ public class VoyageResultsVoyageEchotypeImportAction extends ImportResultsEchoty @Override protected DataAcousticProvider getDataProvider(VoyageResultsImportDataContext importDataContext) { - return (DataAcousticProvider) importDataContext.getVoyage(); + return importDataContext.getVoyage(); } @Override diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/MooringResultsImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/MooringResultsImportConfiguration.java new file mode 100644 index 0000000..a1929b4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/MooringResultsImportConfiguration.java @@ -0,0 +1,91 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 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% + */ +package fr.ifremer.echobase.services.service.importdata.configurations; + +import fr.ifremer.echobase.io.InputFile; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Configuration of a "results" import for mooring. + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringResultsImportConfiguration extends ImportResultsConfigurationSupport { + + private static final long serialVersionUID = 1L; + /** Acoustic result by echotype import. */ + protected final InputFile esduByEchotypeFile; + /** Acoustic result by echotype and species category import. */ + protected final InputFile esduByEchotypeAndSpeciesCategoryFile; + /** Echotype file to import. */ + protected final InputFile echotypeFile; + /** Selected mooring id where to import datas. */ + protected String mooringId; + + public MooringResultsImportConfiguration(Locale locale) { + echotypeFile = InputFile.newFile(l(locale, "echobase.common.echotypeFile")); + esduByEchotypeFile = InputFile.newFile(l(locale, "echobase.common.esduByEchotypeFile")); + esduByEchotypeAndSpeciesCategoryFile = InputFile.newFile(l(locale, "echobase.common.esduByEchotypeAndSpeciesCategoryFile")); + } + + public String getMooringId() { + return mooringId; + } + + public void setMooringId(String mooringId) { + this.mooringId = mooringId; + } + public InputFile getEchotypeFile() { + return echotypeFile; + } + + public InputFile getEsduByEchotypeFile() { + return esduByEchotypeFile; + } + + public InputFile getEsduByEchotypeAndSpeciesCategoryFile() { + return esduByEchotypeAndSpeciesCategoryFile; + } + + public boolean isOneEsduImportFile() { + return esduByEchotypeFile.hasFile() + || esduByEchotypeAndSpeciesCategoryFile.hasFile(); + + } + + public boolean isOneMooringImportFile() { + return echotypeFile.hasFile(); + + } + + @Override + public InputFile[] getInputFiles() { + return new InputFile[]{ + echotypeFile, + esduByEchotypeFile, + esduByEchotypeAndSpeciesCategoryFile, + }; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringResultsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringResultsImportDataContext.java new file mode 100644 index 0000000..146483e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringResultsImportDataContext.java @@ -0,0 +1,81 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2016 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 com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Cells; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Echotypes; +import fr.ifremer.echobase.entities.data.Mooring; +import fr.ifremer.echobase.entities.data.Moorings; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.data.Voyages; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.MooringResultsImportConfiguration; +import java.util.Collections; + +import java.util.Date; +import java.util.Locale; +import java.util.Map; + +/** + * @author Julien Ruchaud - ruchaud@codelutin.com + */ +public class MooringResultsImportDataContext extends ImportResultsDataContext<MooringResultsImportConfiguration> { + + private Mooring mooring; + private Map<String, Mooring> mooringsByCode; + private Map<String, Echotype> mooringEchotypesByName; + + public MooringResultsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, MooringResultsImportConfiguration configuration, EchoBaseUser user, Date importDate) { + super(persistenceService, locale, csvSeparator, configuration, user, importDate); + } + + public final Mooring getMooring() { + if (mooring == null) { + mooring = persistenceService.getMooring(configuration.getMooringId()); + } + return mooring; + } + + @Override + public String getEntityId() { + return configuration.getMooringId(); + } + + public final Map<String, Echotype> getMooringEchotypesByName() { + if (mooringEchotypesByName == null) { + mooringEchotypesByName = Maps.uniqueIndex(getMooring().getEchotype(), Echotypes.ECHOTYPE_NAME); + } + return mooringEchotypesByName; + } + + public final Map<String, Mooring> getMooringsByCode() { + if (mooringsByCode == null) { + mooringsByCode = Maps.uniqueIndex(Collections.singletonList(getMooring()), Moorings.MOORING_CODE); + } + return mooringsByCode; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MooringResultsEchotypeImportExportModel.java similarity index 55% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MooringResultsEchotypeImportExportModel.java index 8689524..4ff8f67 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MooringResultsEchotypeImportExportModel.java @@ -21,45 +21,45 @@ package fr.ifremer.echobase.services.service.importdata.csv; import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Mooring; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.MooringResultsImportDataContext; +import static fr.ifremer.echobase.services.service.importdata.csv.ResultsEchotypeImportRow.HEADER_ECHOTYPE_NAME; +import static fr.ifremer.echobase.services.service.importdata.csv.ResultsEchotypeImportRow.HEADER_SPECIES; /** * Model to import echotypes. * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 */ -public class VoyageResultsVoyageEchotypeImportExportModel extends EchoBaseImportExportModelSupport<VoyageResultsVoyageEchotypeImportRow> { +public class MooringResultsEchotypeImportExportModel extends EchoBaseImportExportModelSupport<MooringResultsEchotypeImportRow> { - public static final String HEADER_ECHOTYPE_NAME = "echotypeName"; - protected static final String HEADER_SPECIES = "baracoudaCode"; - - private VoyageResultsVoyageEchotypeImportExportModel(char separator) { + private MooringResultsEchotypeImportExportModel(char separator) { super(separator); } - public static VoyageResultsVoyageEchotypeImportExportModel forImport(VoyageResultsImportDataContext importDataContext) { + public static MooringResultsEchotypeImportExportModel forImport(MooringResultsImportDataContext importDataContext) { - VoyageResultsVoyageEchotypeImportExportModel model = new VoyageResultsVoyageEchotypeImportExportModel(importDataContext.getCsvSeparator()); + MooringResultsEchotypeImportExportModel model = new MooringResultsEchotypeImportExportModel(importDataContext.getCsvSeparator()); model.newMandatoryColumn(HEADER_ECHOTYPE_NAME, Echotype.PROPERTY_NAME); - model.newMandatoryColumn(VoyageResultsVoyageEchotypeImportRow.PROPERTY_MEANING, Echotype.PROPERTY_MEANING); - model.newForeignKeyColumn(VoyageResultsVoyageEchotypeImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(MooringResultsEchotypeImportRow.PROPERTY_MEANING, Echotype.PROPERTY_MEANING); + model.newForeignKeyColumn(MooringResultsEchotypeImportRow.PROPERTY_MOORING, Mooring.class, Mooring.PROPERTY_CODE, importDataContext.getMooringsByCode()); model.newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, importDataContext.getDepthStratumsById()); model.newForeignKeyColumn(HEADER_SPECIES, Echotype.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); return model; } - public static VoyageResultsVoyageEchotypeImportExportModel forExport(VoyageResultsImportDataContext importDataContext) { + public static MooringResultsEchotypeImportExportModel forExport(MooringResultsImportDataContext importDataContext) { - VoyageResultsVoyageEchotypeImportExportModel model = new VoyageResultsVoyageEchotypeImportExportModel(importDataContext.getCsvSeparator()); + MooringResultsEchotypeImportExportModel model = new MooringResultsEchotypeImportExportModel(importDataContext.getCsvSeparator()); model.newColumnForExport(HEADER_ECHOTYPE_NAME, Echotype.PROPERTY_NAME); - model.newColumnForExport(VoyageResultsVoyageEchotypeImportRow.PROPERTY_MEANING, Echotype.PROPERTY_MEANING); - model.newColumnForExport(VoyageResultsVoyageEchotypeImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(MooringResultsEchotypeImportRow.PROPERTY_MEANING, Echotype.PROPERTY_MEANING); + model.newColumnForExport(MooringResultsEchotypeImportRow.PROPERTY_MOORING, EchoBaseCsvUtil.MOORING_FORMATTER); model.newColumnForExport(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, EchoBaseCsvUtil.DEPTH_STRATUM_FORMATTER); model.newColumnForExport(HEADER_SPECIES, Echotype.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); return model; @@ -67,7 +67,7 @@ public class VoyageResultsVoyageEchotypeImportExportModel extends EchoBaseImport } @Override - public VoyageResultsVoyageEchotypeImportRow newEmptyInstance() { - return new VoyageResultsVoyageEchotypeImportRow(); + public MooringResultsEchotypeImportRow newEmptyInstance() { + return new MooringResultsEchotypeImportRow(); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MooringResultsEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MooringResultsEchotypeImportRow.java new file mode 100644 index 0000000..16f7053 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MooringResultsEchotypeImportRow.java @@ -0,0 +1,73 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 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% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.DataAcousticProvider; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Mooring; +import fr.ifremer.echobase.entities.references.Species; + +/** + * Bean used as a row for import of {@link MooringResultsEchotypeImportExportModel}. + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringResultsEchotypeImportRow extends ResultsEchotypeImportRow<Mooring> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_MOORING = "mooring"; + protected Mooring mooring; + + public static MooringResultsEchotypeImportRow of(DataAcousticProvider provider, Echotype echotype, Species species) { + MooringResultsEchotypeImportRow row = new MooringResultsEchotypeImportRow(echotype); + row.setProvider(provider); + row.setSpecies(species); + return row; + } + + public MooringResultsEchotypeImportRow() { + super(); + } + + public MooringResultsEchotypeImportRow(Echotype echotype) { + super(echotype); + } + + public Mooring getMooring() { + return mooring; + } + + public void setMooring(Mooring mooring) { + this.mooring = mooring; + } + + @Override + public DataAcousticProvider<Mooring> getProvider() { + return mooring; + } + + @Override + public void setProvider(DataAcousticProvider<Mooring> provider) { + this.mooring = provider.getEntity(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java index d34999f..ec88750 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java @@ -38,7 +38,9 @@ public abstract class ResultsEchotypeImportRow<E extends TopiaEntity> implements private static final long serialVersionUID = 1L; public static final String PROPERTY_MEANING = Echotype.PROPERTY_MEANING; - + public static final String HEADER_ECHOTYPE_NAME = "echotypeName"; + protected static final String HEADER_SPECIES = "baracoudaCode"; + protected final Echotype echotype; protected Species species; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java index 8689524..dfde0c4 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java @@ -26,6 +26,8 @@ import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import static fr.ifremer.echobase.services.service.importdata.csv.ResultsEchotypeImportRow.HEADER_ECHOTYPE_NAME; +import static fr.ifremer.echobase.services.service.importdata.csv.ResultsEchotypeImportRow.HEADER_SPECIES; /** * Model to import echotypes. @@ -35,9 +37,6 @@ import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImp */ public class VoyageResultsVoyageEchotypeImportExportModel extends EchoBaseImportExportModelSupport<VoyageResultsVoyageEchotypeImportRow> { - public static final String HEADER_ECHOTYPE_NAME = "echotypeName"; - protected static final String HEADER_SPECIES = "baracoudaCode"; - private VoyageResultsVoyageEchotypeImportExportModel(char separator) { super(separator); } 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 7cb66df..99853a7 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 @@ -66,6 +66,7 @@ import java.util.Set; import fr.ifremer.echobase.entities.data.DataAcousticProvider; import fr.ifremer.echobase.services.service.removedata.strategy.CommonAncillaryInstrumentationRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.MooringAncillaryInstrumentationRemoveDataStrategy; +import fr.ifremer.echobase.services.service.removedata.strategy.MooringResultsRemoveDataStrategy; /** * Service to remove an import data. @@ -296,7 +297,7 @@ public class RemoveDataService extends EchoBaseServiceSupport { strategies.put(ImportType.MOORING_COMMONS, MooringRemoveDataStrategy.class); strategies.put(ImportType.MOORING_ANCILLARY_INSTRUMENTATION, MooringAncillaryInstrumentationRemoveDataStrategy.class); strategies.put(ImportType.MOORING_ACOUSTIC, MooringAcousticRemoveDataStrategy.class); - strategies.put(ImportType.RESULT_MOORING, DummyRemoveDataStrategy.class); + strategies.put(ImportType.RESULT_MOORING, MooringResultsRemoveDataStrategy.class); strategies.put(ImportType.RESULT_MOORING_ESDU, DummyRemoveDataStrategy.class); Preconditions.checkState( ImportType.values().length == strategies.size(), diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringResultsRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringResultsRemoveDataStrategy.java new file mode 100644 index 0000000..20485d6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringResultsRemoveDataStrategy.java @@ -0,0 +1,105 @@ +package fr.ifremer.echobase.services.service.removedata.strategy; + +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 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 com.google.common.collect.Sets; +import fr.ifremer.echobase.entities.ImportLog; +import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Echotype; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaException; + +import java.util.List; +import java.util.Set; +import fr.ifremer.echobase.entities.data.DataAcousticProvider; +import fr.ifremer.echobase.entities.data.Mooring; + +/** + * Remove a {@link ImportType#RESULT_MOORING} import. + * + * Can remove only {@link Echotype}. + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringResultsRemoveDataStrategy extends AbstractRemoveDataStrategy<Mooring> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(MooringResultsRemoveDataStrategy.class); + + @Override + public long computeNbSteps(DataAcousticProvider<Mooring> provider, ImportLog importLog) { + Mooring mooring = provider.getEntity(); + + long result = getImportFileIdsCount(importLog); + + // add all cell results + result += persistenceService.countMooringCellResults(mooring); + + return result; + } + + @Override + protected void removePreData(DataAcousticProvider<Mooring> provider) throws TopiaException { + Mooring mooring = provider.getEntity(); + removeMooringCellResults(mooring); + } + + @Override + protected void removeImportData(DataAcousticProvider<Mooring> provider, String id) throws TopiaException { + Mooring mooring = provider.getEntity(); + + if (id.startsWith(Echotype.class.getName())) { + + // remove echotype + Echotype echotype = persistenceService.getEchotype(id); + + // delete all categories using this echotype + List<Category> allByEchotype = persistenceService.getCategorysByEchotype(echotype); + persistenceService.deleteCategories(allByEchotype); + + if (mooring != null) { + // remove it from the voyage + mooring.removeEchotype(echotype); + } + + // delete echotype + persistenceService.deleteEchotype(echotype); + + incrementOp("Remove echotype " + echotype.getTopiaId()); + + if (log.isDebugEnabled()) { + log.debug(echotype.getTopiaId() + " was removed"); + } + } else { + canNotDealWithId(id); + } + } + + @Override + public Set<ImportType> getPossibleSubImportType() { + return Sets.newHashSet(ImportType.RESULT_MOORING_ESDU); + } +} diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/MooringResultsImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/MooringResultsImportServiceIT.java new file mode 100644 index 0000000..0999527 --- /dev/null +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/MooringResultsImportServiceIT.java @@ -0,0 +1,72 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 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% + */ +package fr.ifremer.echobase.services.service.importdata; + +import com.google.common.collect.Iterables; +import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.services.ImportDataFixtures; +import fr.ifremer.echobase.services.service.importdata.configurations.MooringResultsImportConfiguration; + +import java.io.IOException; + +/** + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringResultsImportServiceIT extends AbstractImportDataServiceIT<MooringResultsImportConfiguration> { + + public MooringResultsImportServiceIT() { + super(1); + } + + @Override + public ImportDataFixtures getImportDataFixture() { + return ImportDataFixtures.IMPORT_DATA_ECHOBASE_MOORING; + } + + protected String[] getImportPath(String filename) { + return new String[]{"/import-data", "result", "mooring", filename}; + } + + @Override + protected MooringResultsImportConfiguration createConfiguration() throws IOException { + MooringResultsImportConfiguration configuration = new MooringResultsImportConfiguration(getLocale()); + configuration.setImportType(ImportType.RESULT_MOORING); + configuration.setMooringId(getMooringId()); + prepareInputFile(configuration.getEchotypeFile(), getImportPath("echotype.csv.gz")); + return configuration; + } + + @Override + protected ImportDataService.MooringResultsImportDataAction newAction() throws IOException { + return new ImportDataService.MooringResultsImportDataAction(); + } + + @Override + protected void assertAfertImport(ImportDataResult<MooringResultsImportConfiguration> result) throws IOException { + int nbEchotype = fixtures.NB_ECHOTYPE(); + ImportDataFileResult importDataFileResult = Iterables.get(result.getImportResults(), 0); + assertCsvImportResultPerEntity(importDataFileResult, Echotype.class, nbEchotype, 0, nbEchotype); + assertCsvImportResult0(importDataFileResult, nbEchotype); + } + +} diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java index b48ecf2..fc94f50 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java @@ -89,6 +89,7 @@ import fr.ifremer.echobase.services.service.importdata.configurations.ImportData import fr.ifremer.echobase.services.service.importdata.configurations.MooringAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.MooringCommonsAncillaryInstrumentationImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.MooringCommonsMooringImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.MooringResultsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsAncillaryInstrumentationImportConfiguration; @@ -153,6 +154,8 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS protected String importMooringAncillaryInstrumentationId; + protected String importMooringResultsId; + protected static final String voyage1Id = "fr.ifremer.echobase.entities.data.Voyage#1#1"; protected static final String transit1Id = "fr.ifremer.echobase.entities.data.Transit#1#1"; @@ -194,6 +197,8 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS protected static final String resultEsdu1_2Id = "fr.ifremer.echobase.entities.data.Result#1#esdu2"; protected static final String echotype1Id = "fr.ifremer.echobase.entities.data.Echotype#1#1"; + + protected static final String echotype2Id = "fr.ifremer.echobase.entities.data.Echotype#1#2"; protected static final String lengthAgeKey1Id = "fr.ifremer.echobase.entities.data.LengthAgeKey#1#1"; @@ -331,6 +336,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS createMooringImport(); createMooringAcousticImport(); createMooringAncillaryInstrumentationImport(); + createMooringResultsImport(); } protected void removeImport(String importId, String... shoudDeleteIds) throws TopiaException { @@ -354,6 +360,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS importMooringAcousticId, importVoyageAncillaryInstrumentationId, importMooringAncillaryInstrumentationId, + importMooringResultsId, voyage1Id, transit1Id, transect1Id, transect1_2Id, operation1Id, totalSample1Id, subSample1Id, biometrySample1Id, @@ -364,7 +371,8 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id, voyage2Id, transit2Id, transect2Id, transect2_2Id, mooringId, - dataAcquisition2Id, cellEsdu2Id, cellElementary2Id + dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, + echotype2Id ); List<String> deletedId = Lists.newArrayList(); @@ -972,6 +980,23 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS mooringId, mooring); } + + private void createMooringResultsImport() throws TopiaException { + + Mooring mooring = getEntity(mooringId); + + // create echotype + Echotype echotype = echotypeDAO.create(TopiaEntity.PROPERTY_TOPIA_ID, echotype2Id, + Echotype.PROPERTY_NAME, "echotype2Name"); + mooring.addEchotype(echotype); + + importMooringResultsId = createImport( + new MooringResultsImportConfiguration(getLocale()), + ImportType.RESULT_MOORING, + "MooringResults", + mooringId, + echotype); + } private <C extends ImportDataConfigurationSupport> String createImport(C importConf, ImportType importType, diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java index 78dd901..ed54a25 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java @@ -43,9 +43,11 @@ public class MooringRemoveDataServiceTest extends AbstractRemoveDataServiceTest // data that should be removed mooringId, dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, + echotype2Id, // importLog that should be removed importMooringId, + importMooringResultsId, importMooringAcousticId, importMooringAncillaryInstrumentationId); } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java similarity index 66% copy from echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java copy to echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java index 78dd901..64e720d 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java @@ -4,7 +4,7 @@ package fr.ifremer.echobase.ui.actions.removedata; * #%L * EchoBase :: Services * %% - * Copyright (C) 2011 - 2013 Ifremer, Codelutin + * Copyright (C) 2011 - 2012 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 @@ -22,34 +22,26 @@ package fr.ifremer.echobase.ui.actions.removedata; */ import fr.ifremer.echobase.services.service.removedata.RemoveDataService; -import fr.ifremer.echobase.services.service.removedata.strategy.MooringRemoveDataStrategy; +import fr.ifremer.echobase.services.service.removedata.strategy.MooringResultsRemoveDataStrategy; import org.junit.Test; import org.nuiton.topia.persistence.TopiaException; /** - * Test{@link RemoveDataService} with {@link MooringRemoveDataStrategy}. + * Test{@link RemoveDataService} with {@link MooringResultsRemoveDataStrategy}. * * @author Julien Ruchaud - ruchaud@codelutin.com * @since 4.0 */ -public class MooringRemoveDataServiceTest extends AbstractRemoveDataServiceTest { +public class MooringResultsRemoveDataServiceTest extends AbstractRemoveDataServiceTest { @Test - public void removeImport() throws TopiaException { + public void removeEchotypeImport() throws TopiaException { removeImport(// import to remove - importMooringId, - + importMooringResultsId, // data that should be removed - mooringId, - dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, - + echotype2Id, // importLog that should be removed - importMooringId, - importMooringAcousticId, - importMooringAncillaryInstrumentationId); + importMooringResultsId); } } - - - diff --git a/echobase-services/src/test/resources/import-data/result/mooring/echotype.csv.gz b/echobase-services/src/test/resources/import-data/result/mooring/echotype.csv.gz new file mode 100644 index 0000000..9a2e327 Binary files /dev/null and b/echobase-services/src/test/resources/import-data/result/mooring/echotype.csv.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