branch feature/8170 updated (d4471e6 -> 520575f)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git from d4471e6 Suppression des anciens services et code d'import de données + ajout de nouveaux tests d'import new cec5c70 Debut de mise en place d'un export lors de l'import new de7958c Suppression du domaine de tout ce qui concerne les csv (on retrouve ça partie service) new 13653b7 Optimisation des dépendances new de077c8 Renommages, mise en place context d'import new 520575f Renommages, mise en place context d'import (impacts dans les actions d'ui) The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 520575f87bffda480c1de0c15e12850647f9e337 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:45 2016 +0200 Renommages, mise en place context d'import (impacts dans les actions d'ui) commit de077c867a7955258a7f2cbc224bdd6e0546b6d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:30 2016 +0200 Renommages, mise en place context d'import commit 13653b7ace19faff5afdbc128443fb76a8b6d926 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:02 2016 +0200 Optimisation des dépendances commit de7958cef8bb6a5698fc52dc7e128e7d08905fcd Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:45:43 2016 +0200 Suppression du domaine de tout ce qui concerne les csv (on retrouve ça partie service) commit cec5c7058ae40a11058b4f4430d61dcc9ef8f434 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 28 08:56:53 2016 +0200 Debut de mise en place d'un export lors de l'import Summary of changes: echobase-domain/pom.xml | 10 +- .../fr/ifremer/echobase/csv/EchoBaseCsvUtil.java | 175 ---------- .../echobase/entities/data/CellTopiaDao.java | 6 - .../EchoBaseMigrationCallBackResolver.java | 2 +- .../echobase/persistence/EchoBaseDbMetaTest.java | 2 +- .../echobase/services/csv/CellValueFormatter.java | 115 +++++++ .../echobase/services}/csv/CellValueParser.java | 29 +- .../echobase/services}/csv/ChainValueParser.java | 13 +- .../echobase/services/csv/EchoBaseCsvUtil.java | 337 ++++++++++++++++++++ .../ifremer/echobase/services/csv/ResultAble.java | 23 ++ .../services/csv/ResultValueFormatter.java | 33 +- .../echobase/services/csv/ResultValueGetter.java | 29 ++ .../echobase/services}/csv/ResultValueParser.java | 9 +- .../echobase/services/csv/ResultValueSetter.java | 17 + .../services/csv/ValueFormatterByFunction.java | 24 ++ .../echobase/services/service/DbEditorService.java | 2 +- .../services/service/UserDbPersistenceService.java | 101 +++--- .../service/exportCoser/IndicatorExportModel.java | 2 +- .../exportCoser/RawDataCatchExportModel.java | 2 +- .../exportCoser/RawDataSizeExportModel.java | 4 +- .../exportCoser/RawDataStrataExportModel.java | 2 +- .../service/exportCoser/SpeciesExportModel.java | 2 +- .../service/exportquery/ExportQueryCsvModel.java | 2 +- .../service/importdata/ImportDataFileResult.java | 32 +- .../service/importdata/ImportDataResult.java | 3 +- .../service/importdata/ImportDataService.java | 278 ++++++++-------- .../service/importdata/ResultCategoryCache.java | 93 ++++++ .../service/importdata/SpeciesCategoryCache.java | 82 +++++ .../importdata/actions/AbstractImportAction.java | 352 --------------------- .../actions/BiometrySampleImportAction.java | 136 -------- .../actions/GearMetadataImportAction.java | 100 ------ .../actions/ImportDataActionSupport.java | 167 ++++++++++ .../importdata/actions/OperationImportAction.java | 104 ------ .../actions/OperationMetadataImportAction.java | 94 ------ .../actions/RegionAssociationImportAction.java | 84 ----- .../importdata/actions/RegionImportAction.java | 118 ------- ...EchotypeAndSpeciesCategoryCellImportAction.java | 134 -------- .../ResultsEsduByEchotypeCellImportAction.java | 118 ------- ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 138 -------- ...EsduSpeciesAndSizeCategoryCellImportAction.java | 140 -------- .../actions/ResultsMapFishCellImportAction.java | 194 ------------ .../actions/ResultsMapOtherCellImportAction.java | 168 ---------- .../actions/ResultsRegionImportAction.java | 126 -------- .../ResultsVoyageLengthAgeKeyImportAction.java | 95 ------ .../ResultsVoyageLengthWeightKeyImportAction.java | 109 ------- .../importdata/actions/SubSampleImportAction.java | 151 --------- ...ction.java => VoyageAcousticsImportAction.java} | 64 ++-- .../VoyageAcousticsImportDataActionSupport.java | 18 ++ .../VoyageCatchesBiometrySampleImportAction.java | 109 +++++++ .../VoyageCatchesImportDataActionSupport.java | 57 ++++ .../VoyageCatchesSubSampleImportAction.java | 121 +++++++ ...a => VoyageCatchesTotalSampleImportAction.java} | 70 ++-- .../VoyageCommonsImportDataActionSupport.java | 18 ++ ...java => VoyageCommonsTransectImportAction.java} | 47 +-- ....java => VoyageCommonsTransitImportAction.java} | 43 +-- ...n.java => VoyageCommonsVoyageImportAction.java} | 38 +-- .../VoyageOperationsGearMetadataImportAction.java | 68 ++++ .../VoyageOperationsImportDataActionSupport.java | 18 ++ .../VoyageOperationsOperationImportAction.java | 86 +++++ ...ageOperationsOperationMetadataImportAction.java | 68 ++++ ...EchotypeAndSpeciesCategoryCellImportAction.java | 80 +++++ ...oyageResultsEsduByEchotypeCellImportAction.java | 77 +++++ ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 98 ++++++ ...EsduSpeciesAndSizeCategoryCellImportAction.java | 100 ++++++ .../VoyageResultsImportDataActionSupport.java | 64 ++++ .../VoyageResultsMapFishCellImportAction.java | 141 +++++++++ .../VoyageResultsMapOtherCellImportAction.java | 132 ++++++++ ...VoyageResultsRegionAssociationImportAction.java | 65 ++++ .../actions/VoyageResultsRegionImportAction.java | 89 ++++++ .../VoyageResultsRegionResultsImportAction.java | 81 +++++ ...> VoyageResultsVoyageEchotypeImportAction.java} | 46 +-- ...oyageResultsVoyageLengthAgeKeyImportAction.java | 73 +++++ ...geResultsVoyageLengthWeightKeyImportAction.java | 82 +++++ .../ImportDataConfigurationSupport.java} | 15 +- .../VoyageAcousticsImportConfiguration.java} | 31 +- .../VoyageCatchesImportConfiguration.java} | 6 +- .../VoyageCommonsImportConfiguration.java} | 29 +- .../VoyageImportDataConfigurationSupport.java} | 18 +- .../VoyageOperationsImportConfiguration.java} | 6 +- .../VoyageResultsImportConfiguration.java} | 32 +- .../contexts/ImportDataContextSupport.java | 234 ++++++++++++++ .../contexts/VoyageAcousticsImportDataContext.java | 20 ++ .../contexts/VoyageCatchesImportDataContext.java | 121 +++++++ .../contexts/VoyageCommonsImportDataContext.java | 20 ++ .../contexts/VoyageImportDataContext.java | 112 +++++++ .../VoyageOperationsImportDataContext.java | 20 ++ .../contexts/VoyageResultsImportDataContext.java | 194 ++++++++++++ .../importdata/csv/AcousticImportExportModel.java | 223 +++++++++++++ .../importdata/csv/AcousticImportModel.java | 136 -------- .../service/importdata/csv/AcousticImportRow.java | 2 +- .../csv/BiometrySampleImportExportModel.java | 72 +++++ .../importdata/csv/BiometrySampleImportModel.java | 60 ---- .../importdata/csv/BiometrySampleImportRow.java | 2 +- .../csv/EchoBaseImportExportModelSupport.java | 41 +++ .../importdata/csv/EchotypeImportExportModel.java | 71 +++++ .../importdata/csv/EchotypeImportModel.java | 58 ---- .../service/importdata/csv/EchotypeImportRow.java | 9 +- ...chotypeAndSpeciesCategoryImportExportModel.java | 99 ++++++ ...ultByEchotypeAndSpeciesCategoryImportModel.java | 88 ------ ...esultByEchotypeAndSpeciesCategoryImportRow.java | 11 +- .../csv/EsduResultByEchotypeImportExportModel.java | 91 ++++++ .../csv/EsduResultByEchotypeImportModel.java | 79 ----- .../csv/EsduResultByEchotypeImportRow.java | 6 +- ...ltBySpeciesAndAgeCategoryImportExportModel.java | 97 ++++++ ...duResultBySpeciesAndAgeCategoryImportModel.java | 83 ----- ...EsduResultBySpeciesAndAgeCategoryImportRow.java | 11 +- ...tBySpeciesAndSizeCategoryImportExportModel.java | 97 ++++++ ...uResultBySpeciesAndSizeCategoryImportModel.java | 83 ----- ...sduResultBySpeciesAndSizeCategoryImportRow.java | 11 +- .../csv/GearMetadataValueImportExportModel.java | 72 +++++ .../csv/GearMetadataValueImportModel.java | 62 ---- .../importdata/csv/GearMetadataValueImportRow.java | 7 +- .../csv/LengthAgeKeyImportExportModel.java | 75 +++++ .../importdata/csv/LengthAgeKeyImportModel.java | 60 ---- .../importdata/csv/LengthAgeKeyImportRow.java | 9 +- .../csv/LengthWeightKeyImportExportModel.java | 74 +++++ .../importdata/csv/LengthWeightKeyImportModel.java | 60 ---- .../importdata/csv/LengthWeightKeyImportRow.java | 13 +- .../importdata/csv/MapCellImportExportModel.java | 109 +++++++ .../service/importdata/csv/MapCellImportModel.java | 125 -------- .../service/importdata/csv/MapCellImportRow.java | 91 +++--- .../importdata/csv/OperationImportExportModel.java | 84 +++++ .../importdata/csv/OperationImportModel.java | 65 ---- .../service/importdata/csv/OperationImportRow.java | 6 +- .../OperationMetadataValueImportExportModel.java | 68 ++++ .../csv/OperationMetadataValueImportModel.java | 57 ---- .../csv/OperationMetadataValueImportRow.java | 7 +- .../RegionCellAssociationImportExportModel.java | 64 ++++ .../csv/RegionCellAssociationImportModel.java | 53 ---- .../csv/RegionCellAssociationImportRow.java | 18 +- .../csv/RegionCellImportExportModel.java | 71 +++++ .../importdata/csv/RegionCellImportModel.java | 58 ---- .../importdata/csv/RegionCellImportRow.java | 30 +- .../csv/RegionCellResultImportExportModel.java | 96 ++++++ .../csv/RegionCellResultImportModel.java | 84 ----- .../importdata/csv/RegionCellResultImportRow.java | 6 +- .../importdata/csv/SubSampleImportExportModel.java | 87 +++++ .../importdata/csv/SubSampleImportModel.java | 70 ---- .../service/importdata/csv/SubSampleImportRow.java | 10 +- .../csv/TotalSampleImportExportModel.java | 79 +++++ .../importdata/csv/TotalSampleImportModel.java | 63 ---- .../importdata/csv/TotalSampleImportRow.java | 12 +- .../importdata/csv/TransectImportExportModel.java | 93 ++++++ .../importdata/csv/TransectImportModel.java | 74 ----- .../service/importdata/csv/TransectImportRow.java | 6 +- .../importdata/csv/TransitImportExportModel.java | 71 +++++ .../service/importdata/csv/TransitImportModel.java | 53 ---- .../service/importdata/csv/TransitImportRow.java | 7 +- .../importdata/csv/VoyageImportExportModel.java | 69 ++++ .../service/importdata/csv/VoyageImportModel.java | 49 --- .../fr/ifremer/echobase/services/FixCellsIT.java | 10 +- .../importdata/AbstractImportDataServiceIT.java | 5 +- .../importdata/AcousticImportServiceIT.java | 5 +- .../service/importdata/CatchesImportServiceIT.java | 5 +- .../CatchesImportServiceOnlyBiometrySampleIT.java | 5 +- .../CatchesImportServiceOnlySubSampleIT.java | 5 +- .../CatchesImportServiceOnlyTotalSampleIT.java | 5 +- .../importdata/CommonAllImportServiceIT.java | 5 +- .../importdata/CommonTransectImportServiceIT.java | 5 +- .../importdata/CommonTransitImportServiceIT.java | 5 +- .../importdata/CommonVoyageImportServiceIT.java | 5 +- .../importdata/OperationImportServiceIT.java | 5 +- .../importdata/ResultsEsduCellImportServiceIT.java | 19 +- .../ResultsMapFishCellImportServiceIT.java | 5 +- .../ResultsMapOtherCellImportServiceIT.java | 5 +- .../ResultsRegionCellImportServiceIT.java | 5 +- .../importdata/ResultsVoyageImportServiceIT.java | 5 +- .../ResultsVoyageImportServiceOnlyEchotypeIT.java | 5 +- ...sultsVoyageImportServiceOnlyLengthAgeKeyIT.java | 5 +- ...tsVoyageImportServiceOnlyLengthWeightKeyIT.java | 5 +- .../removedata/AbstractRemoveDataServiceTest.java | 50 +-- echobase-ui/pom.xml | 15 +- .../fr/ifremer/echobase/ui/EchoBaseSession.java | 2 +- .../importData/AbstractConfigureImport.java | 4 +- .../actions/importData/AbstractLaunchImport.java | 4 +- .../importData/ConfigureAcousticImport.java | 12 +- .../actions/importData/ConfigureCatchesImport.java | 12 +- .../actions/importData/ConfigureCommonImport.java | 20 +- .../importData/ConfigureOperationImport.java | 12 +- .../actions/importData/ConfigureResultsImport.java | 12 +- .../actions/importData/LaunchAcousticImport.java | 10 +- .../ui/actions/importData/LaunchCatchesImport.java | 10 +- .../ui/actions/importData/LaunchCommonImport.java | 10 +- .../actions/importData/LaunchOperationImport.java | 10 +- .../ui/actions/importData/LaunchResultsImport.java | 10 +- pom.xml | 14 +- 186 files changed, 5870 insertions(+), 4921 deletions(-) delete mode 100644 echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java rename {echobase-domain/src/main/java/fr/ifremer/echobase => echobase-services/src/main/java/fr/ifremer/echobase/services}/csv/CellValueParser.java (76%) rename {echobase-domain/src/main/java/fr/ifremer/echobase => echobase-services/src/main/java/fr/ifremer/echobase/services}/csv/ChainValueParser.java (86%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java copy echobase-domain/src/main/java/fr/ifremer/echobase/csv/ResultValueParser.java => echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java (57%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java rename {echobase-domain/src/main/java/fr/ifremer/echobase => echobase-services/src/main/java/fr/ifremer/echobase/services}/csv/ResultValueParser.java (90%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{AcousticImportAction.java => VoyageAcousticsImportAction.java} (90%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{TotalSampleImportAction.java => VoyageCatchesTotalSampleImportAction.java} (54%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{CommonTransectImportAction.java => VoyageCommonsTransectImportAction.java} (58%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{CommonTransitImportAction.java => VoyageCommonsTransitImportAction.java} (50%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{CommonVoyageImportAction.java => VoyageCommonsVoyageImportAction.java} (62%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{ResultsVoyageEchotypeImportAction.java => VoyageResultsVoyageEchotypeImportAction.java} (55%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{AbstractImportConfiguration.java => configurations/ImportDataConfigurationSupport.java} (86%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{AcousticImportConfiguration.java => configurations/VoyageAcousticsImportConfiguration.java} (95%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{CatchesImportConfiguration.java => configurations/VoyageCatchesImportConfiguration.java} (90%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{CommonImportConfiguration.java => configurations/VoyageCommonsImportConfiguration.java} (95%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/{exportquery/ExportQueryNameAlreadyExistException.java => importdata/configurations/VoyageImportDataConfigurationSupport.java} (66%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{OperationImportConfiguration.java => configurations/VoyageOperationsImportConfiguration.java} (90%) rename echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/{ResultsImportConfiguration.java => configurations/VoyageResultsImportConfiguration.java} (96%) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java delete mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit cec5c7058ae40a11058b4f4430d61dcc9ef8f434 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 28 08:56:53 2016 +0200 Debut de mise en place d'un export lors de l'import --- .../ifremer/echobase/csv/CellValueFormatter.java | 126 +++++++++++++++++++++ .../csv/EchoBaseImportExportModelSupport.java | 9 ++ 2 files changed, 135 insertions(+) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueFormatter.java b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueFormatter.java new file mode 100644 index 0000000..1605189 --- /dev/null +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueFormatter.java @@ -0,0 +1,126 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * 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.csv; + +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; +import fr.ifremer.echobase.entities.data.Voyage; +import org.apache.commons.collections4.CollectionUtils; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ValueParser; +import org.nuiton.topia.persistence.TopiaException; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +public class CellValueFormatter implements ValueParser<Cell> { + + final Voyage voyage; + + private final Map<String, Cell> esduCellMap; + + private CellTopiaDao cellDAO; + + public CellValueFormatter(Voyage voyage, CellTopiaDao cellDAO) { + this.voyage = voyage; + this.esduCellMap = Maps.newTreeMap(); + this.cellDAO = cellDAO; + } + + protected CellValueFormatter(Voyage voyage, Map<String, Cell> esduCellMap) { + this.voyage = voyage; + this.esduCellMap = esduCellMap; + } + + @Override + public Cell parse(String value) throws ParseException { + + int separatorIndex = value.indexOf("_"); + + String esduCellId; + String elementaryCellId; + + if (separatorIndex == -1) { + + // just esdu cell in value + + esduCellId = value; + elementaryCellId = null; + } else { + + // esdu and elementary cell in value + + esduCellId = value.substring(0, separatorIndex); + elementaryCellId = value.substring(separatorIndex + 1); + } + + // get esdu cell + Cell result = getEsduCell(esduCellId); + + if (result == null) { + throw new ImportRuntimeException( + "Can not found esdu cell [" + esduCellId + "]"); + } + + if (elementaryCellId != null) { + + // using a elementary cell + + result = result.getChildByName(elementaryCellId); + if (result == null) { + throw new ImportRuntimeException( + "Can not found elementary cell [" + + elementaryCellId + "] for esdu cell [" + + esduCellId + "]"); + } + } + return result; + } + + protected Cell getEsduCell(String esduCellId) throws ParseException { + + Cell result = esduCellMap.get(esduCellId); + + if (result == null && cellDAO != null) { + try { + List<Cell> cells = cellDAO.forNameEquals(esduCellId).findAll(); + + if (CollectionUtils.isEmpty(cells)) { + throw new ImportRuntimeException( + "Can not find esdu cell with name " + esduCellId); + } + + //TODO Should check this cell is in voyage ? + result = cells.get(0); + + // store it in cache + esduCellMap.put(esduCellId, result); + + } catch (TopiaException e) { + throw new ImportRuntimeException( + "Can not find esdu cell with name " + esduCellId); + } + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java new file mode 100644 index 0000000..3e7478e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java @@ -0,0 +1,9 @@ +package fr.ifremer.echobase.services.service.importdata.csv; + +/** + * Created on 27/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EchoBaseImportExportModelSupport { +} -- 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/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit de7958cef8bb6a5698fc52dc7e128e7d08905fcd Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:45:43 2016 +0200 Suppression du domaine de tout ce qui concerne les csv (on retrouve ça partie service) --- echobase-domain/pom.xml | 10 +- .../ifremer/echobase/csv/CellValueFormatter.java | 126 --------------- .../fr/ifremer/echobase/csv/CellValueParser.java | 126 --------------- .../fr/ifremer/echobase/csv/ChainValueParser.java | 75 --------- .../fr/ifremer/echobase/csv/EchoBaseCsvUtil.java | 175 --------------------- .../fr/ifremer/echobase/csv/ResultValueParser.java | 60 ------- .../echobase/entities/data/CellTopiaDao.java | 6 - .../EchoBaseMigrationCallBackResolver.java | 2 +- .../echobase/persistence/EchoBaseDbMetaTest.java | 2 +- 9 files changed, 9 insertions(+), 573 deletions(-) diff --git a/echobase-domain/pom.xml b/echobase-domain/pom.xml index e12787a..c530866 100644 --- a/echobase-domain/pom.xml +++ b/echobase-domain/pom.xml @@ -126,7 +126,11 @@ </dependency> <dependency> <groupId>org.nuiton</groupId> - <artifactId>nuiton-csv</artifactId> + <artifactId>nuiton-converter</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-version</artifactId> </dependency> <!-- comons dependencies --> @@ -171,10 +175,10 @@ <groupId>org.nuiton.topia</groupId> <artifactId>topia-service-migration</artifactId> </dependency> - <dependency> + <!--dependency> <groupId>org.nuiton.topia</groupId> <artifactId>topia-service-csv</artifactId> - </dependency> + </dependency--> <dependency> <groupId>org.hibernate</groupId> diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueFormatter.java b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueFormatter.java deleted file mode 100644 index 1605189..0000000 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueFormatter.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * #%L - * EchoBase :: Domain - * %% - * 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.csv; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.CellTopiaDao; -import fr.ifremer.echobase.entities.data.Voyage; -import org.apache.commons.collections4.CollectionUtils; -import org.nuiton.csv.ImportRuntimeException; -import org.nuiton.csv.ValueParser; -import org.nuiton.topia.persistence.TopiaException; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -public class CellValueFormatter implements ValueParser<Cell> { - - final Voyage voyage; - - private final Map<String, Cell> esduCellMap; - - private CellTopiaDao cellDAO; - - public CellValueFormatter(Voyage voyage, CellTopiaDao cellDAO) { - this.voyage = voyage; - this.esduCellMap = Maps.newTreeMap(); - this.cellDAO = cellDAO; - } - - protected CellValueFormatter(Voyage voyage, Map<String, Cell> esduCellMap) { - this.voyage = voyage; - this.esduCellMap = esduCellMap; - } - - @Override - public Cell parse(String value) throws ParseException { - - int separatorIndex = value.indexOf("_"); - - String esduCellId; - String elementaryCellId; - - if (separatorIndex == -1) { - - // just esdu cell in value - - esduCellId = value; - elementaryCellId = null; - } else { - - // esdu and elementary cell in value - - esduCellId = value.substring(0, separatorIndex); - elementaryCellId = value.substring(separatorIndex + 1); - } - - // get esdu cell - Cell result = getEsduCell(esduCellId); - - if (result == null) { - throw new ImportRuntimeException( - "Can not found esdu cell [" + esduCellId + "]"); - } - - if (elementaryCellId != null) { - - // using a elementary cell - - result = result.getChildByName(elementaryCellId); - if (result == null) { - throw new ImportRuntimeException( - "Can not found elementary cell [" + - elementaryCellId + "] for esdu cell [" + - esduCellId + "]"); - } - } - return result; - } - - protected Cell getEsduCell(String esduCellId) throws ParseException { - - Cell result = esduCellMap.get(esduCellId); - - if (result == null && cellDAO != null) { - try { - List<Cell> cells = cellDAO.forNameEquals(esduCellId).findAll(); - - if (CollectionUtils.isEmpty(cells)) { - throw new ImportRuntimeException( - "Can not find esdu cell with name " + esduCellId); - } - - //TODO Should check this cell is in voyage ? - result = cells.get(0); - - // store it in cache - esduCellMap.put(esduCellId, result); - - } catch (TopiaException e) { - throw new ImportRuntimeException( - "Can not find esdu cell with name " + esduCellId); - } - } - return result; - } -} diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueParser.java b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueParser.java deleted file mode 100644 index 2f91d9b..0000000 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/CellValueParser.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * #%L - * EchoBase :: Domain - * %% - * 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.csv; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.CellTopiaDao; -import fr.ifremer.echobase.entities.data.Voyage; -import org.apache.commons.collections4.CollectionUtils; -import org.nuiton.csv.ImportRuntimeException; -import org.nuiton.csv.ValueParser; -import org.nuiton.topia.persistence.TopiaException; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -public class CellValueParser implements ValueParser<Cell> { - - final Voyage voyage; - - private final Map<String, Cell> esduCellMap; - - private CellTopiaDao cellDAO; - - public CellValueParser(Voyage voyage, CellTopiaDao cellDAO) { - this.voyage = voyage; - this.esduCellMap = Maps.newTreeMap(); - this.cellDAO = cellDAO; - } - - protected CellValueParser(Voyage voyage, Map<String, Cell> esduCellMap) { - this.voyage = voyage; - this.esduCellMap = esduCellMap; - } - - @Override - public Cell parse(String value) throws ParseException { - - int separatorIndex = value.indexOf("_"); - - String esduCellId; - String elementaryCellId; - - if (separatorIndex == -1) { - - // just esdu cell in value - - esduCellId = value; - elementaryCellId = null; - } else { - - // esdu and elementary cell in value - - esduCellId = value.substring(0, separatorIndex); - elementaryCellId = value.substring(separatorIndex + 1); - } - - // get esdu cell - Cell result = getEsduCell(esduCellId); - - if (result == null) { - throw new ImportRuntimeException( - "Can not found esdu cell [" + esduCellId + "]"); - } - - if (elementaryCellId != null) { - - // using a elementary cell - - result = result.getChildByName(elementaryCellId); - if (result == null) { - throw new ImportRuntimeException( - "Can not found elementary cell [" + - elementaryCellId + "] for esdu cell [" + - esduCellId + "]"); - } - } - return result; - } - - protected Cell getEsduCell(String esduCellId) throws ParseException { - - Cell result = esduCellMap.get(esduCellId); - - if (result == null && cellDAO != null) { - try { - List<Cell> cells = cellDAO.forNameEquals(esduCellId).findAll(); - - if (CollectionUtils.isEmpty(cells)) { - throw new ImportRuntimeException( - "Can not find esdu cell with name " + esduCellId); - } - - //TODO Should check this cell is in voyage ? - result = cells.get(0); - - // store it in cache - esduCellMap.put(esduCellId, result); - - } catch (TopiaException e) { - throw new ImportRuntimeException( - "Can not find esdu cell with name " + esduCellId); - } - } - return result; - } -} diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java deleted file mode 100644 index 8f36a97..0000000 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ChainValueParser.java +++ /dev/null @@ -1,75 +0,0 @@ -package fr.ifremer.echobase.csv; - -/* - * #%L - * EchoBase :: Domain - * %% - * 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.Lists; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.Iterator; -import java.util.List; - -/** - * To chain some {@link ValueParser} (different format supported). - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.3 - */ -public class ChainValueParser<E> implements ValueParser<E> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ChainValueParser.class); - - final List<ValueParser<E>> parsers = Lists.newArrayList(); - - public ChainValueParser<E> addParser(ValueParser<E> parser) { - this.parsers.add(parser); - return this; - } - - @Override - public E parse(String value) throws ParseException { - E result = null; - Iterator<ValueParser<E>> iterator = parsers.iterator(); - while (iterator.hasNext()) { - ValueParser<E> parser = iterator.next(); - try { - result = parser.parse(value); - break; - } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Could not parse value " + value, e); - } - } - } - - if (result == null && !iterator.hasNext()) { - - // all parsers were used and no one gives a good result - throw new ParseException( - "Could not parse value " + value + " with any parsers", 0); - } - return result; - } -} diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java deleted file mode 100644 index 1976ce7..0000000 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/EchoBaseCsvUtil.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * #%L - * EchoBase :: Domain - * %% - * Copyright (C) 2011 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.csv; - -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.csv.ValueParser; -import org.nuiton.csv.ValueParserFormatter; -import org.nuiton.csv.ValueSetter; -import org.nuiton.topia.service.csv.TopiaCsvCommons; - -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * Usefull class to build csv import-export models. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.2 - */ -public class EchoBaseCsvUtil extends TopiaCsvCommons { - - public static final String CELLULE_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSS"; - - public static final ValueParser<Date> IMPORT_DAY_TIME_ECHOBASE = new DateValue(CELLULE_DATE_FORMAT); - - public static final ValueParser<Date> IMPORT_DAY_TIME_ECHOBASE2 = new DateValue("dd/MM/yyyy HH:mm:ss.SSSS"); - - public static final ValueFormatter<Species> SPECIES_TO_COSER_CODE = new ValueFormatter<Species>() { - @Override - public String format(Species value) { - return value.getBaracoudaCode().replaceAll("-", ""); - } - }; - - public static final ValueParser<Boolean> INT_TO_BOOLEAN_PARSER = new ValueParser<Boolean>() { - - @Override - public Boolean parse(String value) { - return "1".equals(value); - } - }; - - public static final ValueParserFormatter<Float> NA_TO_FLOAT_PARSER_FORMATTER = new FloatParserFormatter(null, true) { - - @Override - public String format(Float value) { - return value == null ? NA : super.format(value); - } - - @Override - protected Float parseNoneEmptyValue(String value) { - Float result = null; - if (!NA.equals(value)) { - result = super.parseNoneEmptyValue(value); - } - return result; - } - - }; - - public static final ValueParser<Float> NA_TO_PRIMITIVE_FLOAT_PARSER = new FloatParserFormatter(0f, false) { - - @Override - protected Float parseNoneEmptyValue(String value) { - Float result; - if (!NA.equals(value)) { - result = super.parseNoneEmptyValue(value); - } else { - result = defaultValue; - } - return result; - } - - }; - - public static final ValueParserFormatter<Integer> NA_TO_INTEGER_PARSER_FORMATTER = new IntegerParserFormatter(null, true) { - - @Override - public String format(Integer value) { - return value == null ? NA : super.format(value); - } - - @Override - protected Integer parseNoneEmptyValue(String value) { - Integer result = null; - if (!NA.equals(value)) { - result = super.parseNoneEmptyValue(value); - } - return result; - } - - }; - - public static final ValueParser<Date> DATE_TIME_VALUE_PARSER = new ChainValueParser<Date>(). - addParser(TopiaCsvCommons.DAY_TIME_SECOND_WITH_TIMESTAMP). - addParser(TopiaCsvCommons.DAY_TIME_SECOND). - addParser(TopiaCsvCommons.DAY_TIME). - addParser(TopiaCsvCommons.DAY); - - public static final String CELL_NAME = "name"; - - public static final String OPERATION_ID = "operationId"; - - public static final String VESSEL_NAME = "vesselName"; - - public static final String GEAR_CODE = "gearCode"; - - public static final String DEPTH_STRATUM_ID = "depthStratumId"; - - public static final String NA = "NA"; - - protected EchoBaseCsvUtil() { - // avoid instanciation on helper class - } - - public static ValueParser<Cell> newCellValueParser(Voyage voyage, - Map<String, Cell> esduCellMap) { - return new CellValueParser(voyage, esduCellMap); - } - - public static interface ResultAble { - - void addResult(Result value); - - List<Result> getResult(); - - DataQuality getDataQuality(); - - void setDataQuality(DataQuality dataQuality); - - } - - public static <B extends ResultAble> ValueSetter<B, Result> newResultValueSetter() { - return new ResultValueSetter<B>(); - } - - private static class ResultValueSetter<B extends ResultAble> implements ValueSetter<B, Result> { - - @Override - public void set(B object, Result value) throws Exception { - object.addResult(value); - } - } - - public static ValueParser<Result> newResultValueParser( - DataMetadata metadata, boolean useFillValue) { - return new ResultValueParser(metadata, useFillValue); - } - -} diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ResultValueParser.java b/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ResultValueParser.java deleted file mode 100644 index 53e17a9..0000000 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/csv/ResultValueParser.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%L - * EchoBase :: Domain - * %% - * 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.csv; - -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.ResultImpl; -import fr.ifremer.echobase.entities.references.DataMetadata; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; - -/** - * TODO - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class ResultValueParser implements ValueParser<Result> { - - final DataMetadata metadata; - - final boolean useFillValue; - - public ResultValueParser(DataMetadata metadata, boolean useFillValue) { - this.metadata = metadata; - this.useFillValue = useFillValue; - } - - @Override - public Result parse(String value) throws ParseException { - - Result result = new ResultImpl(); - result.setDataMetadata(metadata); - result.setResultValue(value); - if (EchoBaseCsvUtil.NA.equals(value) && useFillValue) { - - // use metadata fillValue - result.setResultValue(String.valueOf(metadata.getFillValue())); - } - return result; - } -} diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java index 5ebf017..87f1d39 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java @@ -21,8 +21,6 @@ package fr.ifremer.echobase.entities.data; * #L% */ -import fr.ifremer.echobase.csv.CellValueParser; -import org.nuiton.csv.ValueParser; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.support.TopiaSqlQuery; @@ -55,10 +53,6 @@ public class CellTopiaDao extends AbstractCellTopiaDao<Cell> { return topiaSqlSupport.findMultipleResult(query); } - public ValueParser<Cell> newCellValueParser(Voyage voyage) { - return new CellValueParser(voyage, this); - } - protected TopiaSqlQuery<Long> newCountVoyageOrphanCellsQuery(final Voyage voyage) { return new TopiaSqlQuery<Long>() { @Override diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/EchoBaseMigrationCallBackResolver.java b/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/EchoBaseMigrationCallBackResolver.java index 47d42c2..ba5f91c 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/EchoBaseMigrationCallBackResolver.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/persistence/migration/EchoBaseMigrationCallBackResolver.java @@ -46,7 +46,7 @@ public class EchoBaseMigrationCallBackResolver<C extends TopiaMigrationCallbackB LogFactory.getLog(EchoBaseMigrationCallBackResolver.class); public static <C extends TopiaMigrationCallbackByClassNG.MigrationCallBackForVersion<?>> EchoBaseMigrationCallBackResolver<C> newResolver(Class<C> resolverType) { - return new EchoBaseMigrationCallBackResolver<C>(resolverType); + return new EchoBaseMigrationCallBackResolver<>(resolverType); } protected final Map<Version, C> versionMigrationMapping; diff --git a/echobase-domain/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java b/echobase-domain/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java index 65f08d2..3397721 100644 --- a/echobase-domain/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java +++ b/echobase-domain/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java @@ -91,7 +91,7 @@ public class EchoBaseDbMetaTest { */ public static EchoBaseUserEntityEnum[] getContractsOf(Package entitiesPackage) { EchoBaseUserEntityEnum[] echoBaseEntityEnums = EchoBaseUserEntityEnum.values(); - List<EchoBaseUserEntityEnum> refClasses = new ArrayList<EchoBaseUserEntityEnum>(); + List<EchoBaseUserEntityEnum> refClasses = new ArrayList<>(); for (EchoBaseUserEntityEnum echoBaseEntityEnum : echoBaseEntityEnums) { // Get all entities in package fr.ifremer.echobase.entities.references -- 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/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 13653b7ace19faff5afdbc128443fb76a8b6d926 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:02 2016 +0200 Optimisation des dépendances --- echobase-ui/pom.xml | 15 ++++++++------- pom.xml | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/echobase-ui/pom.xml b/echobase-ui/pom.xml index 2838914..ce24db1 100644 --- a/echobase-ui/pom.xml +++ b/echobase-ui/pom.xml @@ -205,16 +205,22 @@ <groupId>org.nuiton.web</groupId> <artifactId>nuiton-web</artifactId> </dependency> - <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-validator</artifactId> </dependency> - <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-decorator</artifactId> </dependency> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-converter</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-version</artifactId> + </dependency> <!-- struts 2 --> @@ -222,29 +228,24 @@ <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> </dependency> - <dependency> <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> </dependency> - <dependency> <groupId>com.jgeppert.struts2.jquery</groupId> <artifactId>struts2-jquery-plugin</artifactId> <scope>runtime</scope> </dependency> - <dependency> <groupId>com.jgeppert.struts2.jquery</groupId> <artifactId>struts2-jquery-grid-plugin</artifactId> <scope>runtime</scope> </dependency> - <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> </dependency> - <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-sitemesh-plugin</artifactId> diff --git a/pom.xml b/pom.xml index bce842b..566d78b 100644 --- a/pom.xml +++ b/pom.xml @@ -121,8 +121,8 @@ <projectId>echobase</projectId> <ciViewId>EchoBase</ciViewId> - <javaVersion>1.8</javaVersion> - <signatureArtifactId>java18</signatureArtifactId> + <javaVersion>1.7</javaVersion> + <signatureArtifactId>java17</signatureArtifactId> <signatureVersion>1.0</signatureVersion> <!-- libraries version --> @@ -271,6 +271,16 @@ <version>3.0-rc-5</version> </dependency> <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-converter</artifactId> + <version>1.0</version> + </dependency> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-version</artifactId> + <version>1.0-rc-1</version> + </dependency> + <dependency> <groupId>org.nuiton.web</groupId> <artifactId>nuiton-struts2</artifactId> <version>${nuitonWebVersion}</version> -- 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/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit de077c867a7955258a7f2cbc224bdd6e0546b6d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:30 2016 +0200 Renommages, mise en place context d'import --- .../echobase/services/csv/CellValueFormatter.java | 115 +++++++ .../echobase/services/csv/CellValueParser.java | 119 +++++++ .../echobase/services/csv/ChainValueParser.java | 74 +++++ .../echobase/services/csv/EchoBaseCsvUtil.java | 337 ++++++++++++++++++++ .../ifremer/echobase/services/csv/ResultAble.java | 23 ++ .../services/csv/ResultValueFormatter.java | 53 ++++ .../echobase/services/csv/ResultValueGetter.java | 29 ++ .../echobase/services/csv/ResultValueParser.java | 59 ++++ .../echobase/services/csv/ResultValueSetter.java | 17 + .../services/csv/ValueFormatterByFunction.java | 24 ++ .../echobase/services/service/DbEditorService.java | 2 +- .../services/service/UserDbPersistenceService.java | 101 +++--- .../service/exportCoser/IndicatorExportModel.java | 2 +- .../exportCoser/RawDataCatchExportModel.java | 2 +- .../exportCoser/RawDataSizeExportModel.java | 4 +- .../exportCoser/RawDataStrataExportModel.java | 2 +- .../service/exportCoser/SpeciesExportModel.java | 2 +- .../service/exportquery/ExportQueryCsvModel.java | 2 +- .../service/importdata/ImportDataFileResult.java | 32 +- .../service/importdata/ImportDataResult.java | 3 +- .../service/importdata/ImportDataService.java | 278 ++++++++-------- .../service/importdata/ResultCategoryCache.java | 93 ++++++ .../service/importdata/SpeciesCategoryCache.java | 82 +++++ .../importdata/actions/AbstractImportAction.java | 352 --------------------- .../actions/BiometrySampleImportAction.java | 136 -------- .../actions/GearMetadataImportAction.java | 100 ------ .../actions/ImportDataActionSupport.java | 167 ++++++++++ .../importdata/actions/OperationImportAction.java | 104 ------ .../actions/OperationMetadataImportAction.java | 94 ------ .../actions/RegionAssociationImportAction.java | 84 ----- .../importdata/actions/RegionImportAction.java | 118 ------- ...EchotypeAndSpeciesCategoryCellImportAction.java | 134 -------- .../ResultsEsduByEchotypeCellImportAction.java | 118 ------- ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 138 -------- ...EsduSpeciesAndSizeCategoryCellImportAction.java | 140 -------- .../actions/ResultsMapFishCellImportAction.java | 194 ------------ .../actions/ResultsMapOtherCellImportAction.java | 168 ---------- .../actions/ResultsRegionImportAction.java | 126 -------- .../ResultsVoyageLengthAgeKeyImportAction.java | 95 ------ .../ResultsVoyageLengthWeightKeyImportAction.java | 109 ------- .../importdata/actions/SubSampleImportAction.java | 151 --------- ...ction.java => VoyageAcousticsImportAction.java} | 64 ++-- .../VoyageAcousticsImportDataActionSupport.java | 18 ++ .../VoyageCatchesBiometrySampleImportAction.java | 109 +++++++ .../VoyageCatchesImportDataActionSupport.java | 57 ++++ .../VoyageCatchesSubSampleImportAction.java | 121 +++++++ ...a => VoyageCatchesTotalSampleImportAction.java} | 70 ++-- .../VoyageCommonsImportDataActionSupport.java | 18 ++ ...java => VoyageCommonsTransectImportAction.java} | 47 +-- ....java => VoyageCommonsTransitImportAction.java} | 43 +-- ...n.java => VoyageCommonsVoyageImportAction.java} | 38 +-- .../VoyageOperationsGearMetadataImportAction.java | 68 ++++ .../VoyageOperationsImportDataActionSupport.java | 18 ++ .../VoyageOperationsOperationImportAction.java | 86 +++++ ...ageOperationsOperationMetadataImportAction.java | 68 ++++ ...EchotypeAndSpeciesCategoryCellImportAction.java | 80 +++++ ...oyageResultsEsduByEchotypeCellImportAction.java | 77 +++++ ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 98 ++++++ ...EsduSpeciesAndSizeCategoryCellImportAction.java | 100 ++++++ .../VoyageResultsImportDataActionSupport.java | 64 ++++ .../VoyageResultsMapFishCellImportAction.java | 141 +++++++++ .../VoyageResultsMapOtherCellImportAction.java | 132 ++++++++ ...VoyageResultsRegionAssociationImportAction.java | 65 ++++ .../actions/VoyageResultsRegionImportAction.java | 89 ++++++ .../VoyageResultsRegionResultsImportAction.java | 81 +++++ ...> VoyageResultsVoyageEchotypeImportAction.java} | 46 +-- ...oyageResultsVoyageLengthAgeKeyImportAction.java | 73 +++++ ...geResultsVoyageLengthWeightKeyImportAction.java | 82 +++++ .../ImportDataConfigurationSupport.java} | 15 +- .../VoyageAcousticsImportConfiguration.java} | 31 +- .../VoyageCatchesImportConfiguration.java} | 6 +- .../VoyageCommonsImportConfiguration.java} | 29 +- .../VoyageImportDataConfigurationSupport.java} | 33 +- .../VoyageOperationsImportConfiguration.java} | 6 +- .../VoyageResultsImportConfiguration.java} | 32 +- .../contexts/ImportDataContextSupport.java | 234 ++++++++++++++ .../contexts/VoyageAcousticsImportDataContext.java | 20 ++ .../contexts/VoyageCatchesImportDataContext.java | 121 +++++++ .../contexts/VoyageCommonsImportDataContext.java | 20 ++ .../contexts/VoyageImportDataContext.java | 112 +++++++ .../VoyageOperationsImportDataContext.java | 20 ++ .../contexts/VoyageResultsImportDataContext.java | 194 ++++++++++++ .../importdata/csv/AcousticImportExportModel.java | 223 +++++++++++++ .../importdata/csv/AcousticImportModel.java | 136 -------- .../service/importdata/csv/AcousticImportRow.java | 2 +- .../csv/BiometrySampleImportExportModel.java | 72 +++++ .../importdata/csv/BiometrySampleImportModel.java | 60 ---- .../importdata/csv/BiometrySampleImportRow.java | 2 +- .../csv/EchoBaseImportExportModelSupport.java | 34 +- .../importdata/csv/EchotypeImportExportModel.java | 71 +++++ .../importdata/csv/EchotypeImportModel.java | 58 ---- .../service/importdata/csv/EchotypeImportRow.java | 9 +- ...chotypeAndSpeciesCategoryImportExportModel.java | 99 ++++++ ...ultByEchotypeAndSpeciesCategoryImportModel.java | 88 ------ ...esultByEchotypeAndSpeciesCategoryImportRow.java | 11 +- .../csv/EsduResultByEchotypeImportExportModel.java | 91 ++++++ .../csv/EsduResultByEchotypeImportModel.java | 79 ----- .../csv/EsduResultByEchotypeImportRow.java | 6 +- ...ltBySpeciesAndAgeCategoryImportExportModel.java | 97 ++++++ ...duResultBySpeciesAndAgeCategoryImportModel.java | 83 ----- ...EsduResultBySpeciesAndAgeCategoryImportRow.java | 11 +- ...tBySpeciesAndSizeCategoryImportExportModel.java | 97 ++++++ ...uResultBySpeciesAndSizeCategoryImportModel.java | 83 ----- ...sduResultBySpeciesAndSizeCategoryImportRow.java | 11 +- .../csv/GearMetadataValueImportExportModel.java | 72 +++++ .../csv/GearMetadataValueImportModel.java | 62 ---- .../importdata/csv/GearMetadataValueImportRow.java | 7 +- .../csv/LengthAgeKeyImportExportModel.java | 75 +++++ .../importdata/csv/LengthAgeKeyImportModel.java | 60 ---- .../importdata/csv/LengthAgeKeyImportRow.java | 9 +- .../csv/LengthWeightKeyImportExportModel.java | 74 +++++ .../importdata/csv/LengthWeightKeyImportModel.java | 60 ---- .../importdata/csv/LengthWeightKeyImportRow.java | 13 +- .../importdata/csv/MapCellImportExportModel.java | 109 +++++++ .../service/importdata/csv/MapCellImportModel.java | 125 -------- .../service/importdata/csv/MapCellImportRow.java | 91 +++--- .../importdata/csv/OperationImportExportModel.java | 84 +++++ .../importdata/csv/OperationImportModel.java | 65 ---- .../service/importdata/csv/OperationImportRow.java | 6 +- .../OperationMetadataValueImportExportModel.java | 68 ++++ .../csv/OperationMetadataValueImportModel.java | 57 ---- .../csv/OperationMetadataValueImportRow.java | 7 +- .../RegionCellAssociationImportExportModel.java | 64 ++++ .../csv/RegionCellAssociationImportModel.java | 53 ---- .../csv/RegionCellAssociationImportRow.java | 18 +- .../csv/RegionCellImportExportModel.java | 71 +++++ .../importdata/csv/RegionCellImportModel.java | 58 ---- .../importdata/csv/RegionCellImportRow.java | 30 +- .../csv/RegionCellResultImportExportModel.java | 96 ++++++ .../csv/RegionCellResultImportModel.java | 84 ----- .../importdata/csv/RegionCellResultImportRow.java | 6 +- .../importdata/csv/SubSampleImportExportModel.java | 87 +++++ .../importdata/csv/SubSampleImportModel.java | 70 ---- .../service/importdata/csv/SubSampleImportRow.java | 10 +- .../csv/TotalSampleImportExportModel.java | 79 +++++ .../importdata/csv/TotalSampleImportModel.java | 63 ---- .../importdata/csv/TotalSampleImportRow.java | 12 +- .../importdata/csv/TransectImportExportModel.java | 93 ++++++ .../importdata/csv/TransectImportModel.java | 74 ----- .../service/importdata/csv/TransectImportRow.java | 6 +- .../importdata/csv/TransitImportExportModel.java | 71 +++++ .../service/importdata/csv/TransitImportModel.java | 53 ---- .../service/importdata/csv/TransitImportRow.java | 7 +- .../importdata/csv/VoyageImportExportModel.java | 69 ++++ .../service/importdata/csv/VoyageImportModel.java | 49 --- .../fr/ifremer/echobase/services/FixCellsIT.java | 10 +- .../importdata/AbstractImportDataServiceIT.java | 5 +- .../importdata/AcousticImportServiceIT.java | 5 +- .../service/importdata/CatchesImportServiceIT.java | 5 +- .../CatchesImportServiceOnlyBiometrySampleIT.java | 5 +- .../CatchesImportServiceOnlySubSampleIT.java | 5 +- .../CatchesImportServiceOnlyTotalSampleIT.java | 5 +- .../importdata/CommonAllImportServiceIT.java | 5 +- .../importdata/CommonTransectImportServiceIT.java | 5 +- .../importdata/CommonTransitImportServiceIT.java | 5 +- .../importdata/CommonVoyageImportServiceIT.java | 5 +- .../importdata/OperationImportServiceIT.java | 5 +- .../importdata/ResultsEsduCellImportServiceIT.java | 19 +- .../ResultsMapFishCellImportServiceIT.java | 5 +- .../ResultsMapOtherCellImportServiceIT.java | 5 +- .../ResultsRegionCellImportServiceIT.java | 5 +- .../importdata/ResultsVoyageImportServiceIT.java | 5 +- .../ResultsVoyageImportServiceOnlyEchotypeIT.java | 5 +- ...sultsVoyageImportServiceOnlyLengthAgeKeyIT.java | 5 +- ...tsVoyageImportServiceOnlyLengthWeightKeyIT.java | 5 +- .../removedata/AbstractRemoveDataServiceTest.java | 50 +-- 166 files changed, 6040 insertions(+), 4628 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java new file mode 100644 index 0000000..ba50519 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java @@ -0,0 +1,115 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * 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.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; +import fr.ifremer.echobase.entities.references.CellType; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ValueFormatter; + +import java.util.LinkedHashSet; +import java.util.Set; + +public class CellValueFormatter implements ValueFormatter<Cell> { + + private final Set<Cell> esduCells; + private final CellTopiaDao cellDAO; + private final CellType esduCellType; + private final CellType elementaryCellType; + + public CellValueFormatter(CellTopiaDao cellDAO, CellType esduCellType, CellType elementaryCellType) { + this.cellDAO = cellDAO; + this.esduCellType = esduCellType; + this.elementaryCellType = elementaryCellType; + this.esduCells = new LinkedHashSet<>(); + } + + protected CellValueFormatter(Set<Cell> esduCells, CellType esduCellType, CellType elementaryCellType) { + this.esduCells = esduCells; + this.esduCellType = esduCellType; + this.elementaryCellType = elementaryCellType; + this.cellDAO = null; + } + + @Override + public String format(Cell value) { + CellType cellType = value.getCellType(); + + if (esduCellType.equals(cellType)) { + + // cellule de type esdu + return value.getName(); + + } + + if (elementaryCellType.equals(cellType)) { + + // cellule de type élémentaire + + // récupération de la cellule de type esdu qui la contient + + Cell esduCell = getEsduCell(value); + + return esduCell + "_" + value.getName(); + } + + //FIXME Use a real exception + return null; + } + + protected Cell getEsduCell(Cell elementaryCell) { + + Cell result = getEsduCellFromCache(elementaryCell); + + if (result == null && cellDAO != null) { + + result = cellDAO.forChildsContains(elementaryCell).findAnyOrNull(); + + if (result != null) { + esduCells.add(result); + } + + } + + if (result == null) { + //FIXME USe a real exception + throw new ImportRuntimeException( + "Can not find esdu cell for elementary cell " + elementaryCell.getName()); + } + + return result; + } + + protected Cell getEsduCellFromCache(Cell elementaryCell) { + + for (Cell cell : esduCells) { + + if (cell.getChildsByTopiaId(elementaryCell.getTopiaId()) != null) { + + return cell; + } + } + + return null; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueParser.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueParser.java new file mode 100644 index 0000000..b3d5347 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueParser.java @@ -0,0 +1,119 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * 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.csv; + +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; +import org.apache.commons.collections4.CollectionUtils; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ValueParser; +import org.nuiton.topia.persistence.TopiaException; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +public class CellValueParser implements ValueParser<Cell> { + + private final Map<String, Cell> esduCellMap; + + private CellTopiaDao cellDAO; + + public CellValueParser(CellTopiaDao cellDAO) { + this.esduCellMap = Maps.newTreeMap(); + this.cellDAO = cellDAO; + } + + protected CellValueParser(Map<String, Cell> esduCellMap) { + this.esduCellMap = esduCellMap; + } + + @Override + public Cell parse(String value) throws ParseException { + + int separatorIndex = value.indexOf("_"); + + String esduCellId; + String elementaryCellId; + + if (separatorIndex == -1) { + + // just esdu cell in value + + esduCellId = value; + elementaryCellId = null; + } else { + + // esdu and elementary cell in value + + esduCellId = value.substring(0, separatorIndex); + elementaryCellId = value.substring(separatorIndex + 1); + } + + // get esdu cell + Cell result = getEsduCell(esduCellId); + + if (result == null) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not found esdu cell [" + esduCellId + "]"); + } + + if (elementaryCellId != null) { + + // using a elementary cell + + result = result.getChildByName(elementaryCellId); + if (result == null) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not found elementary cell [" + elementaryCellId + "] for esdu cell [" + esduCellId + "]"); + } + } + return result; + } + + protected Cell getEsduCell(String esduCellId) throws ParseException { + + Cell result = esduCellMap.get(esduCellId); + + if (result == null && cellDAO != null) { + try { + List<Cell> cells = cellDAO.forNameEquals(esduCellId).findAll(); + + if (CollectionUtils.isEmpty(cells)) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not find esdu cell with name " + esduCellId); + } + + //TODO Should check this cell is in voyage ? + result = cells.get(0); + + // store it in cache + esduCellMap.put(esduCellId, result); + + } catch (TopiaException e) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not find esdu cell with name " + esduCellId); + } + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ChainValueParser.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ChainValueParser.java new file mode 100644 index 0000000..2829e9f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ChainValueParser.java @@ -0,0 +1,74 @@ +package fr.ifremer.echobase.services.csv; + +/* + * #%L + * EchoBase :: Domain + * %% + * 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 org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ValueParser; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * To chain some {@link ValueParser} (different format supported). + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.3 + */ +class ChainValueParser<E> implements ValueParser<E> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ChainValueParser.class); + + private final List<ValueParser<E>> parsers; + + protected ChainValueParser(List<ValueParser<E>> parsers) { + this.parsers = new ArrayList<>(parsers); + } + + @Override + public E parse(String value) throws ParseException { + E result = null; + Iterator<ValueParser<E>> iterator = parsers.iterator(); + while (iterator.hasNext()) { + ValueParser<E> parser = iterator.next(); + try { + result = parser.parse(value); + break; + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not parse value " + value, e); + } + } + } + + if (result == null && !iterator.hasNext()) { + + // all parsers were used and no one gives a good result + throw new ParseException( + "Could not parse value " + value + " with any parsers", 0); + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java new file mode 100644 index 0000000..f317b96 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java @@ -0,0 +1,337 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 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.csv; + +import com.google.common.base.Function; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.entities.references.Vessel; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.csv.ValueGetter; +import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.csv.ValueSetter; +import org.nuiton.topia.service.csv.TopiaCsvCommons; + +import java.util.Arrays; +import java.util.Date; +import java.util.Map; +import java.util.Set; + +/** + * Usefull class to build csv import-export models. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.2 + */ +public class EchoBaseCsvUtil extends TopiaCsvCommons { + + public static final String CELLULE_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSS"; + + public static final ValueParserFormatter<Date> IMPORT_DAY_TIME_ECHOBASE = new DateValue(CELLULE_DATE_FORMAT); + +// public static final ValueParser<Date> IMPORT_DAY_TIME_ECHOBASE2 = new DateValue("dd/MM/yyyy HH:mm:ss.SSSS"); + + public static final ValueFormatter<Species> SPECIES_TO_COSER_CODE = new ValueFormatter<Species>() { + @Override + public String format(Species value) { + return value.getBaracoudaCode().replaceAll("-", ""); + } + }; + + public static final ValueFormatter<DataQuality> DATA_QUALITY_FORMATTER = newValueFormatterByFunction(new Function<DataQuality, String>() { + @Override + public String apply(DataQuality input) { + return "" + input.getQualityDataFlagValues(); + } + }); + + public static final ValueFormatter<AcousticInstrument> ACOUSTIC_INSTRUMENT_FORMATTER = newValueFormatterByFunction( + new Function<AcousticInstrument, String>() { + + @Override + public String apply(AcousticInstrument input) { + return input.getId(); + } + } + ); + public static final ValueFormatter<Voyage> VOYAGE_FORMATTER = newValueFormatterByFunction( + new Function<Voyage, String>() { + + @Override + public String apply(Voyage input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Vessel> VESSEL_FORMATTER = newValueFormatterByFunction( + new Function<Vessel, String>() { + + @Override + public String apply(Vessel input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Gear> GEAR_FORMATTER = newValueFormatterByFunction( + new Function<Gear, String>() { + + @Override + public String apply(Gear input) { + return input.getCasinoGearName(); + } + } + ); + public static final ValueFormatter<GearMetadata> GEAR_METADATA_FORMATTER = newValueFormatterByFunction( + new Function<GearMetadata, String>() { + + @Override + public String apply(GearMetadata input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<DepthStratum> DEPTH_STRATUM_FORMATTER = newValueFormatterByFunction( + new Function<DepthStratum, String>() { + + @Override + public String apply(DepthStratum input) { + return input.getId(); + } + } + ); + public static final ValueFormatter<Species> SPECIES_FORMATTER = newValueFormatterByFunction( + new Function<Species, String>() { + + @Override + public String apply(Species input) { + return input.getBaracoudaCode(); + } + } + ); + public static final ValueFormatter<SampleDataType> SAMPLE_DATA_TYPE_FORMATTER = newValueFormatterByFunction( + new Function<SampleDataType, String>() { + + @Override + public String apply(SampleDataType input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Strata> STRATA_FORMATTER = newValueFormatterByFunction( + new Function<Strata, String>() { + + @Override + public String apply(Strata input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Operation> OPERATION_FORMATTER = newValueFormatterByFunction( + new Function<Operation, String>() { + + @Override + public String apply(Operation input) { + return input.getId(); + } + } + ); + public static final ValueFormatter<OperationMetadata> OPERATION_FMETADATA_ORMATTER = newValueFormatterByFunction( + new Function<OperationMetadata, String>() { + + @Override + public String apply(OperationMetadata input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<SizeCategory> SIZE_CATEGORY_FORMATTER = newValueFormatterByFunction( + new Function<SizeCategory, String>() { + + @Override + public String apply(SizeCategory input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<SexCategory> SEX_CATEGORY_FORMATTER = newValueFormatterByFunction( + new Function<SexCategory, String>() { + + @Override + public String apply(SexCategory input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Cell> CELL_FORMATTER = newValueFormatterByFunction( + new Function<Cell, String>() { + + @Override + public String apply(Cell input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Echotype> ECHOTYPE_FORMATTER = newValueFormatterByFunction( + new Function<Echotype, String>() { + + @Override + public String apply(Echotype input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<CellType> CELL_TYPE_FORMATTER = newValueFormatterByFunction( + new Function<CellType, String>() { + + @Override + public String apply(CellType input) { + return input.getId(); + } + } + ); + + public static <E> ValueFormatter<E> newValueFormatterByFunction(Function<E, String> function) { + return new ValueFormatterByFunction<>(function); + } + + public static ValueParser<Cell> newCellValueParser(Map<String, Cell> esduCellMap) { + return new CellValueParser(esduCellMap); + } + + public static ValueFormatter<Cell> newCellValueFormatter(Set<Cell> esduCells, CellType esduCellType, CellType elementaryCellType) { + return new CellValueFormatter(esduCells, esduCellType, elementaryCellType); + } + + public static <B extends ResultAble> ValueSetter<B, Result> newResultValueSetter() { + return new ResultValueSetter<>(); + } + + public static <B extends ResultAble> ValueGetter<B, Result> newResultValueGetter(DataMetadata metadata) { + return new ResultValueGetter<>(metadata); + } + + public static ValueParser<Result> newResultValueParser(DataMetadata metadata, boolean useFillValue) { + return new ResultValueParser(metadata, useFillValue); + } + + public static ValueFormatter<Result> newResultValueFormatter(DataMetadata metadata, boolean useFillValue) { + return new ResultValueFormatter(metadata, useFillValue); + } + + +// public static final ValueParser<Boolean> INT_TO_BOOLEAN_PARSER = new ValueParser<Boolean>() { +// +// @Override +// public Boolean parse(String value) { +// return "1".equals(value); +// } +// }; + + public static final ValueParserFormatter<Float> NA_TO_FLOAT_PARSER_FORMATTER = new FloatParserFormatter(null, true) { + + @Override + public String format(Float value) { + return value == null ? NA : super.format(value); + } + + @Override + protected Float parseNoneEmptyValue(String value) { + Float result = null; + if (!NA.equals(value)) { + result = super.parseNoneEmptyValue(value); + } + return result; + } + + }; + +// public static final ValueParser<Float> NA_TO_PRIMITIVE_FLOAT_PARSER = new FloatParserFormatter(0f, false) { +// +// @Override +// protected Float parseNoneEmptyValue(String value) { +// Float result; +// if (!NA.equals(value)) { +// result = super.parseNoneEmptyValue(value); +// } else { +// result = defaultValue; +// } +// return result; +// } +// +// }; + + public static final ValueParserFormatter<Integer> NA_TO_INTEGER_PARSER_FORMATTER = new IntegerParserFormatter(null, true) { + + @Override + public String format(Integer value) { + return value == null ? NA : super.format(value); + } + + @Override + protected Integer parseNoneEmptyValue(String value) { + Integer result = null; + if (!NA.equals(value)) { + result = super.parseNoneEmptyValue(value); + } + return result; + } + + }; + + public static final ValueParser<Date> DATE_TIME_VALUE_PARSER = new ChainValueParser<>(Arrays.<ValueParser<Date>>asList(TopiaCsvCommons.DAY_TIME_SECOND_WITH_TIMESTAMP, + TopiaCsvCommons.DAY_TIME_SECOND, + TopiaCsvCommons.DAY_TIME, + TopiaCsvCommons.DAY)); + + public static final String CELL_NAME = "name"; + + public static final String OPERATION_ID = "operationId"; + + public static final String VESSEL_NAME = "vesselName"; + + public static final String GEAR_CODE = "gearCode"; + + public static final String DEPTH_STRATUM_ID = "depthStratumId"; + + public static final String NA = "NA"; + + protected EchoBaseCsvUtil() { + // avoid instanciation on helper class + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java new file mode 100644 index 0000000..bf8caae --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java @@ -0,0 +1,23 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.references.DataQuality; + +import java.util.List; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface ResultAble { + + void addResult(Result value); + + List<Result> getResult(); + + DataQuality getDataQuality(); + + void setDataQuality(DataQuality dataQuality); + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java new file mode 100644 index 0000000..85c9b92 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java @@ -0,0 +1,53 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * 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.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.references.DataMetadata; +import org.nuiton.csv.ValueFormatter; + +/** + * TODO + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +class ResultValueFormatter implements ValueFormatter<Result> { + + private final String fillValue; + private final boolean useFillValue; + + public ResultValueFormatter(DataMetadata metadata, boolean useFillValue) { + this.useFillValue = useFillValue; + this.fillValue = String.valueOf(metadata.getFillValue()); + } + + @Override + public String format(Result value) { + String resultValue = value.getResultValue(); + + if ((fillValue.equals(resultValue) || resultValue == null) && useFillValue) { + resultValue = EchoBaseCsvUtil.NA; + } + return resultValue; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java new file mode 100644 index 0000000..b83c593 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java @@ -0,0 +1,29 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.references.DataMetadata; +import org.nuiton.csv.ValueGetter; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +class ResultValueGetter<B extends ResultAble> implements ValueGetter<B, Result> { + + private final DataMetadata metadata; + + ResultValueGetter(DataMetadata metadata) { + this.metadata = metadata; + } + + @Override + public Result get(B object) throws Exception { + for (Result result : object.getResult()) { + if (metadata.equals(result.getDataMetadata())) { + return result; + } + } + return null; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueParser.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueParser.java new file mode 100644 index 0000000..20d31c6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueParser.java @@ -0,0 +1,59 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * 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.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.ResultImpl; +import fr.ifremer.echobase.entities.references.DataMetadata; +import org.nuiton.csv.ValueParser; + +import java.text.ParseException; + +/** + * TODO + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +class ResultValueParser implements ValueParser<Result> { + + private final DataMetadata metadata; + private final boolean useFillValue; + + public ResultValueParser(DataMetadata metadata, boolean useFillValue) { + this.metadata = metadata; + this.useFillValue = useFillValue; + } + + @Override + public Result parse(String value) throws ParseException { + + Result result = new ResultImpl(); + result.setDataMetadata(metadata); + result.setResultValue(value); + if (EchoBaseCsvUtil.NA.equals(value) && useFillValue) { + + // use metadata fillValue + result.setResultValue(String.valueOf(metadata.getFillValue())); + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java new file mode 100644 index 0000000..b34ec12 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java @@ -0,0 +1,17 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import org.nuiton.csv.ValueSetter; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +class ResultValueSetter<B extends ResultAble> implements ValueSetter<B, Result> { + + @Override + public void set(B object, Result value) throws Exception { + object.addResult(value); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java new file mode 100644 index 0000000..5ca6340 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java @@ -0,0 +1,24 @@ +package fr.ifremer.echobase.services.csv; + +import com.google.common.base.Function; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +class ValueFormatterByFunction<E> implements ValueFormatter<E> { + + private final Function<E, String> function; + + protected ValueFormatterByFunction(Function<E, String> function) { + this.function = function; + } + + @Override + public String format(E value) { + return function.apply(value); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java index 0fcab32..632de4d 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java @@ -25,7 +25,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.AbstractEchoBaseDao; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java index a040188..709e10c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java @@ -37,6 +37,7 @@ import fr.ifremer.echobase.entities.ImportLogTopiaDao; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataProcessing; @@ -56,6 +57,7 @@ import fr.ifremer.echobase.entities.references.AcousticInstrument; import fr.ifremer.echobase.entities.references.AgeCategory; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.CellTypeImpl; import fr.ifremer.echobase.entities.references.CellTypes; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.Mission; @@ -69,9 +71,12 @@ import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseServiceSupport; +import fr.ifremer.echobase.services.csv.CellValueFormatter; +import fr.ifremer.echobase.services.csv.CellValueParser; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParser; import org.nuiton.decorator.Decorator; import org.nuiton.topia.persistence.TopiaDao; @@ -169,11 +174,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getCategoryDao().forEchotypeEquals(echotype).findAll(); } - public Iterable<Category> getCategories(Predicate<Category> acceptPredicate) { - return Iterables.filter( - persistenceContext.getCategoryDao(), - acceptPredicate); - } +// public Iterable<Category> getCategories(Predicate<Category> acceptPredicate) { +// return Iterables.filter(persistenceContext.getCategoryDao(), acceptPredicate); +// } public long countCategoryUsingEchotype(Voyage voyage) throws TopiaException { @@ -225,12 +228,20 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getCellDao().getVoyageCellIds(voyage); } - public ValueParser<Cell> newCellValueParser(Voyage voyage) { - return persistenceContext.getCellDao().newCellValueParser(voyage); + public ValueParser<Cell> newCellValueParser() { + + CellTopiaDao cellDao = persistenceContext.getCellDao(); + return new CellValueParser(cellDao); + } + + public ValueFormatter<Cell> newCellValueFormatter() { + CellTopiaDao cellDao = persistenceContext.getCellDao(); + CellType esduCellType = getEsduCellType(); + CellType elementaryCellType = getElementaryCellType(); + return new CellValueFormatter(cellDao, esduCellType, elementaryCellType); } - public Cell createCell(CellType cellType, - String cellName) { + public Cell createCell(CellType cellType, String cellName) { return persistenceContext.getCellDao().create( Cell.PROPERTY_CELL_TYPE, cellType, Cell.PROPERTY_NAME, cellName); @@ -253,8 +264,20 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return Sets.newHashSet(Iterables.filter(cellTypes, CellTypes.IS_REGION_CELL_TYPE)); } - public CellType getCellType(String id) { - return persistenceContext.getCellTypeDao().findByTopiaId(id); +// public CellType getCellType(String id) { +// return persistenceContext.getCellTypeDao().findByTopiaId(id); +// } + + public CellType getEsduCellType() { + return getCellTypeById(CellTypeImpl.ESDU); + } + + public CellType getElementaryCellType() { + return getCellTypeById(CellTypeImpl.ELEMENTARY); + } + + public CellType getMapCellType() { + return getCellTypeById(CellTypeImpl.MAP); } public CellType getCellTypeById(String id) { @@ -453,9 +476,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Echotype -----------------------------------------------------------// //------------------------------------------------------------------------// - public Optional<Echotype> getOptionalEchotype(String id) { - return Optional.fromNullable(persistenceContext.getEchotypeDao().forTopiaIdEquals(id).findAnyOrNull()); - } +// public Optional<Echotype> getOptionalEchotype(String id) { +// return Optional.fromNullable(persistenceContext.getEchotypeDao().forTopiaIdEquals(id).findAnyOrNull()); +// } public Echotype getEchotype(String id) { return persistenceContext.getEchotypeDao().findByTopiaId(id); @@ -526,10 +549,10 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { persistenceContext.getImportLogDao().delete(importLog); } - @Deprecated - public ImportFile createImportFile(InputFile importFile) { - throw new IllegalStateException("No!"); - } +// @Deprecated +// public ImportFile createImportFile(InputFile importFile) { +// throw new IllegalStateException("No!"); +// } public ImportFile createImportFile(InputFile importFile, InputFile checkFile) { @@ -674,16 +697,16 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Result -------------------------------------------------------------// //------------------------------------------------------------------------// - public List<Result> getAllWithCategoryCellAndDataMetadata(Set<String> cellIds, - DataMetadata requiredDataMetadata, - List<String> categoryIds) { - return persistenceContext.getResultDao().findAllWithCategoryCellAndDataMetadata(cellIds, requiredDataMetadata, categoryIds); - } - - public List<Result> getAllWithNoCategoryCellAndDataMetadata(Set<String> cellIds, - DataMetadata requiredDataMetadata) { - return persistenceContext.getResultDao().findAllWithNoCategoryCellAndDataMetadata(cellIds, requiredDataMetadata); - } +// public List<Result> getAllWithCategoryCellAndDataMetadata(Set<String> cellIds, +// DataMetadata requiredDataMetadata, +// List<String> categoryIds) { +// return persistenceContext.getResultDao().findAllWithCategoryCellAndDataMetadata(cellIds, requiredDataMetadata, categoryIds); +// } +// +// public List<Result> getAllWithNoCategoryCellAndDataMetadata(Set<String> cellIds, +// DataMetadata requiredDataMetadata) { +// return persistenceContext.getResultDao().findAllWithNoCategoryCellAndDataMetadata(cellIds, requiredDataMetadata); +// } public Result getResult(String id) { return persistenceContext.getResultDao().findByTopiaId(id); @@ -781,11 +804,10 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getSpeciesDao().findAll(); } - public Optional<Species> getOptionalSpecies(String id) { - Species species = persistenceContext.getSpeciesDao().findByTopiaId( - id); - return Optional.fromNullable(species); - } +// public Optional<Species> getOptionalSpecies(String id) { +// Species species = persistenceContext.getSpeciesDao().findByTopiaId(id); +// return Optional.fromNullable(species); +// } //------------------------------------------------------------------------// //--- SpeciesCategory ----------------------------------------------------// @@ -879,9 +901,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getVoyageDao().forMissionEquals(mission).findAll(); } - public List<Voyage> getAllVoyages() { - return persistenceContext.getVoyageDao().findAll(); - } +// public List<Voyage> getAllVoyages() { +// return persistenceContext.getVoyageDao().findAll(); +// } public long countVoyage() { return persistenceContext.getVoyageDao().count(); @@ -905,12 +927,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return decoratorService.sortAndDecorate(beans, null); } - public <E extends TopiaEntity, K> Map<K, E> getEntitiesMap( - Class<E> entityType, - Function<E, K> function) { + public <E extends TopiaEntity, K> Map<K, E> getEntitiesMap(Class<E> entityType, Function<E, K> function) { List<E> allVoyages = persistenceContext.getDao(entityType).findAll(); - return Maps.uniqueIndex( - allVoyages, function); + return Maps.uniqueIndex(allVoyages, function); } public void executeSQL(String sqlScript) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java index 949a930..2969e68 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.services.service.exportCoser; * #L% */ -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import org.nuiton.csv.ext.AbstractExportModel; /** diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java index 21bee94..ba0ca25 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java @@ -23,7 +23,7 @@ package fr.ifremer.echobase.services.service.exportCoser; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.Transect; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java index 9099deb..b327ab0 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.services.service.exportCoser; */ import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; @@ -150,7 +150,7 @@ et "Annee", mais j'y arrive pas... if (operation.isSampleNotEmpty()) { // compute sum of number and weight per species and lengthStep - MultiKeyMap<Object, LengthStepContext> map = new MultiKeyMap<Object, LengthStepContext>(); + MultiKeyMap<Object, LengthStepContext> map = new MultiKeyMap<>(); for (Sample sample : operation.getSample()) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java index 3997a55..debf47f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.services.service.exportCoser; */ import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Voyage; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java index 99152ba..5a83dc6 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.services.service.exportCoser; */ import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.references.Species; import org.nuiton.csv.ext.AbstractExportModel; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java index a6fe12e..5f9f6cb 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.services.service.exportquery; * #L% */ -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import org.nuiton.csv.ext.AbstractExportModel; import java.util.Map; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java index 40c93a7..aa29567 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java @@ -21,11 +21,22 @@ import java.util.TreeMap; */ public class ImportDataFileResult { + /** Entity types to import csv datas. */ + protected final Set<EchoBaseUserEntityEnum> entityTypes; + /** Count of created entities. */ + protected final Map<EchoBaseUserEntityEnum, MutableInt> numberCreated; + /** Count of updated entities. */ + protected final Map<EchoBaseUserEntityEnum, MutableInt> numberUpdated; + /** Count of updated entities. */ + protected final Map<EchoBaseUserEntityEnum, MutableInt> numberNotImported; + /** Ids of created entities. */ + protected final LinkedHashSet<String> ids; + /** Ids of not imported entities. */ + protected final LinkedHashSet<String> notImportedIds; /** * Import file. */ private final InputFile importFile; - /** * Processed Import file (used to compare with result file). * @@ -33,7 +44,6 @@ public class ImportDataFileResult { * remove ignored columns. */ private final InputFile processedImportile; - /** * Export file. * @@ -41,24 +51,6 @@ public class ImportDataFileResult { */ private final InputFile exportFile; - /** Entity types to import csv datas. */ - protected final Set<EchoBaseUserEntityEnum> entityTypes; - - /** Count of created entities. */ - protected final Map<EchoBaseUserEntityEnum, MutableInt> numberCreated; - - /** Count of updated entities. */ - protected final Map<EchoBaseUserEntityEnum, MutableInt> numberUpdated; - - /** Count of updated entities. */ - protected final Map<EchoBaseUserEntityEnum, MutableInt> numberNotImported; - - /** Ids of created entities. */ - protected final LinkedHashSet<String> ids; - - /** Ids of not imported entities. */ - protected final LinkedHashSet<String> notImportedIds; - public ImportDataFileResult(InputFile importFile) { this.importFile = importFile; this.processedImportile = InputFile.newFile(importFile.getLabel() + " - " + importFile.getFileName() + ".processed"); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java index 98274e4..2a85863 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java @@ -1,6 +1,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; import java.util.Collections; import java.util.Set; @@ -10,7 +11,7 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public class ImportDataResult<C extends AbstractImportConfiguration> { +public class ImportDataResult<C extends VoyageImportDataConfigurationSupport> { private final C configuration; 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 d16f1ba..641a78a 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 @@ -10,29 +10,40 @@ import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.actions.AbstractImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.AcousticImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.BiometrySampleImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.CommonTransectImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.CommonTransitImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.CommonVoyageImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.GearMetadataImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.OperationImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.OperationMetadataImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.RegionAssociationImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.RegionImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduByEchotypeCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduSpeciesAndAgeCategoryCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduSpeciesAndSizeCategoryCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsMapFishCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsMapOtherCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsRegionImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsVoyageEchotypeImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsVoyageLengthAgeKeyImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsVoyageLengthWeightKeyImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.SubSampleImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.TotalSampleImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.ImportDataActionSupport; +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; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCatchesTotalSampleImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCommonsTransectImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCommonsTransitImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCommonsVoyageImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageOperationsGearMetadataImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageOperationsOperationImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageOperationsOperationMetadataImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduByEchotypeCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsMapFishCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsMapOtherCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsRegionAssociationImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsRegionImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsRegionResultsImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsVoyageEchotypeImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsVoyageLengthAgeKeyImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsVoyageLengthWeightKeyImportAction; +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.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +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.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,53 +70,40 @@ import static org.nuiton.i18n.I18n.l; public class ImportDataService extends EchoBaseServiceSupport { public static final Pattern REMOVE_DOUBLE_QUOTES_PATTERN = Pattern.compile("\"(.+)\""); - + public static final TimeLog TIME_LOG = new TimeLog(ImportDataService.class); /** Logger. */ private static final Log log = LogFactory.getLog(ImportDataService.class); - public static final TimeLog TIME_LOG = new TimeLog(ImportDataService.class); - @Inject protected UserDbPersistenceService persistenceService; + public ImportDataResult<VoyageCommonsImportConfiguration> doImportVoyageCommons(VoyageCommonsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - public ImportDataResult<CommonImportConfiguration> doImportCommons(CommonImportConfiguration configuration, EchoBaseUser user) throws ImportException { + VoyageCommonsImportDataContext importDataContext = newVoyageCommonsImportContext(configuration, user); + + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); ImportType importMode = configuration.getImportType(); switch (importMode) { - case COMMON_ALL: { - CommonVoyageImportAction importAction = new CommonVoyageImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - { - CommonTransitImportAction importAction = new CommonTransitImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, false); - importActions.add(importAction); - } - { - CommonTransectImportAction importAction = new CommonTransectImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, false); - importActions.add(importAction); - } - break; + case COMMON_ALL: + importActions.add(new VoyageCommonsVoyageImportAction(importDataContext)); + importActions.add(new VoyageCommonsTransitImportAction(importDataContext, false)); + importActions.add(new VoyageCommonsTransectImportAction(importDataContext, false)); + break; - case COMMON_VOYAGE: { - CommonVoyageImportAction importAction = new CommonVoyageImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; + case COMMON_VOYAGE: + importActions.add(new VoyageCommonsVoyageImportAction(importDataContext)); + break; - case COMMON_TRANSIT: { - CommonTransitImportAction importAction = new CommonTransitImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, true); - importActions.add(importAction); - } - break; + case COMMON_TRANSIT: + importActions.add(new VoyageCommonsTransitImportAction(importDataContext, true)); + break; - case COMMON_TRANSECT: { - CommonTransectImportAction importAction = new CommonTransectImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, true); - importActions.add(importAction); - } - break; + case COMMON_TRANSECT: + importActions.add(new VoyageCommonsTransectImportAction(importDataContext, true)); + + break; default: throw new EchoBaseTechnicalException("Can not treate import result of type " + importMode); @@ -116,62 +114,60 @@ public class ImportDataService extends EchoBaseServiceSupport { } - public ImportDataResult<OperationImportConfiguration> doImportOperations(OperationImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageOperationsImportConfiguration> doImportVoyageOperations(VoyageOperationsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); - OperationImportAction operationImportAction = new OperationImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - importActions.add(operationImportAction); + VoyageOperationsImportDataContext importDataContext = newVoyageOperationsImportContext(configuration, user); - OperationMetadataImportAction operationMetadataImportAction = new OperationMetadataImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - importActions.add(operationMetadataImportAction); - - GearMetadataImportAction gearMetadataImportAction = new GearMetadataImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - importActions.add(gearMetadataImportAction); + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); + importActions.add(new VoyageOperationsOperationImportAction(importDataContext)); + importActions.add(new VoyageOperationsOperationMetadataImportAction(importDataContext)); + importActions.add(new VoyageOperationsGearMetadataImportAction(importDataContext)); return doImport(configuration, user, importActions); } - public ImportDataResult<CatchesImportConfiguration> doImportCatches(CatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageCatchesImportConfiguration> doImportVoyageCatches(VoyageCatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { + + VoyageCatchesImportDataContext importDataContext = newVoyageCatchesImportContext(configuration, user); - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); InputFile totalSampleFile = configuration.getTotalSampleFile(); if (totalSampleFile.hasFile()) { - TotalSampleImportAction importAction = new TotalSampleImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageCatchesTotalSampleImportAction(importDataContext)); } InputFile subSampleFile = configuration.getSubSampleFile(); if (subSampleFile.hasFile()) { - SubSampleImportAction importAction = new SubSampleImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageCatchesSubSampleImportAction(importDataContext)); } InputFile biometrySampleFile = configuration.getBiometrySampleFile(); if (biometrySampleFile.hasFile()) { - BiometrySampleImportAction importAction = new BiometrySampleImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageCatchesBiometrySampleImportAction(importDataContext)); } return doImport(configuration, user, importActions); } - public ImportDataResult<AcousticImportConfiguration> doImportAcoustics(AcousticImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageAcousticsImportConfiguration> doImportVoyageAcoustics(VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - AcousticImportAction acousticImportAction = new AcousticImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - Set<AcousticImportAction> importActions = Collections.singleton(acousticImportAction); + VoyageAcousticsImportDataContext importDataContext = newVoyageAcousticsImportContext(configuration, user); + Set<VoyageAcousticsImportAction> importActions = Collections.singleton(new VoyageAcousticsImportAction(importDataContext)); return doImport(configuration, user, importActions); } - public ImportDataResult<ResultsImportConfiguration> doImportResults(ResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageResultsImportConfiguration> doImportVoyageResults(VoyageResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + + VoyageResultsImportDataContext importDataContext = newVoyageResultsImportContext(configuration, user); - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); ImportType importMode = configuration.getImportType(); @@ -189,22 +185,19 @@ public class ImportDataService extends EchoBaseServiceSupport { if (configuration.getLengthAgeKeyFile().hasFile()) { - ResultsVoyageLengthAgeKeyImportAction importAction = new ResultsVoyageLengthAgeKeyImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsVoyageLengthAgeKeyImportAction(importDataContext)); } if (configuration.getLengthWeightKeyFile().hasFile()) { - ResultsVoyageLengthWeightKeyImportAction importAction = new ResultsVoyageLengthWeightKeyImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsVoyageLengthWeightKeyImportAction(importDataContext)); } if (configuration.getEchotypeFile().hasFile()) { - ResultsVoyageEchotypeImportAction importAction = new ResultsVoyageEchotypeImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsVoyageEchotypeImportAction(importDataContext)); } @@ -214,70 +207,76 @@ public class ImportDataService extends EchoBaseServiceSupport { case RESULT_ESDU: if (configuration.getEsduByEchotypeFile().hasFile()) { - ResultsEsduByEchotypeCellImportAction importAction = new ResultsEsduByEchotypeCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduByEchotypeCellImportAction(importDataContext)); } if (configuration.getEsduByEchotypeAndSpeciesCategoryFile().hasFile()) { - ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction importAction = new ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(importDataContext)); } if (configuration.getEsduBySpeciesAndSizeCategoryFile().hasFile()) { - ResultsEsduSpeciesAndSizeCategoryCellImportAction importAction = new ResultsEsduSpeciesAndSizeCategoryCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction(importDataContext)); } if (configuration.getEsduBySpeciesAndAgeCategoryFile().hasFile()) { - ResultsEsduSpeciesAndAgeCategoryCellImportAction importAction = new ResultsEsduSpeciesAndAgeCategoryCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction(importDataContext)); } break; - case RESULT_REGION: { - RegionImportAction importAction = new RegionImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - { - RegionAssociationImportAction importAction = new RegionAssociationImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - { - ResultsRegionImportAction importAction = new ResultsRegionImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; + case RESULT_REGION: + importActions.add(new VoyageResultsRegionImportAction(importDataContext)); + importActions.add(new VoyageResultsRegionAssociationImportAction(importDataContext)); + importActions.add(new VoyageResultsRegionResultsImportAction(importDataContext)); - case RESULT_MAP_FISH: { - ResultsMapFishCellImportAction importAction = new ResultsMapFishCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; + break; + + case RESULT_MAP_FISH: + importActions.add(new VoyageResultsMapFishCellImportAction(importDataContext)); + + break; + + case RESULT_MAP_OTHER: + importActions.add(new VoyageResultsMapOtherCellImportAction(importDataContext)); + break; - case RESULT_MAP_OTHER: { - ResultsMapOtherCellImportAction importAction = new ResultsMapOtherCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; default: - throw new EchoBaseTechnicalException( - "Can not treate import result of type " + importMode); + throw new EchoBaseTechnicalException("Can not treate import result of type " + importMode); } return doImport(configuration, user, importActions); } + private VoyageCommonsImportDataContext newVoyageCommonsImportContext(VoyageCommonsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageCommonsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } - protected <M extends AbstractImportConfiguration, A extends AbstractImportAction> ImportDataResult<M> doImport(M configuration, EchoBaseUser user, Collection<A> importActions) throws ImportException { + private VoyageResultsImportDataContext newVoyageResultsImportContext(VoyageResultsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageResultsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + private VoyageOperationsImportDataContext newVoyageOperationsImportContext(VoyageOperationsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageOperationsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + private VoyageCatchesImportDataContext newVoyageCatchesImportContext(VoyageCatchesImportConfiguration configuration, EchoBaseUser user) { + return new VoyageCatchesImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + private VoyageAcousticsImportDataContext newVoyageAcousticsImportContext(VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageAcousticsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + + protected <M extends VoyageImportDataConfigurationSupport, A extends ImportDataActionSupport> ImportDataResult<M> doImport(M configuration, EchoBaseUser user, Collection<A> importActions) throws ImportException { long s0 = TimeLog.getTime(); @@ -318,7 +317,7 @@ public class ImportDataService extends EchoBaseServiceSupport { } } - protected <M extends AbstractImportConfiguration> String computeResultAndLogBookEntry(M configuration, EchoBaseUser user, Set<ImportDataFileResult> importDataFileResults) { + protected <M extends VoyageImportDataConfigurationSupport> String computeResultAndLogBookEntry(M configuration, EchoBaseUser user, Set<ImportDataFileResult> importDataFileResults) { Date importDate = newDate(); String importUser = user.getEmail(); @@ -389,7 +388,7 @@ public class ImportDataService extends EchoBaseServiceSupport { } - public <M extends AbstractImportConfiguration> ImportLog computeImportLogEntry(M configuration, EchoBaseUser user) { + public <M extends VoyageImportDataConfigurationSupport> ImportLog computeImportLogEntry(M configuration, EchoBaseUser user) { Date importDate = newDate(); String importUser = user.getEmail(); @@ -407,7 +406,7 @@ public class ImportDataService extends EchoBaseServiceSupport { importUser, importDate, importText, - new ArrayList<>()); + new ArrayList<String>()); } @@ -427,52 +426,51 @@ public class ImportDataService extends EchoBaseServiceSupport { throw new EchoBaseTechnicalException("Can't get length of checkFile " + result.getName()); } } + return result; } - protected <M extends AbstractImportConfiguration> String getImportLabel(M configuration) { + protected <M extends VoyageImportDataConfigurationSupport> String getImportLabel(M configuration) { return l(getLocale(), configuration.getImportType().getI18nKey()); } - public interface ImportDataAction<M extends AbstractImportConfiguration> { - + public interface ImportDataAction<M extends VoyageImportDataConfigurationSupport> { ImportDataResult<M> doImport(ImportDataService service, M configuration, EchoBaseUser user) throws ImportException; - } - public static class AcousticImportDataAction implements ImportDataAction<AcousticImportConfiguration> { + public static class VoyageAcousticsImportDataAction implements ImportDataAction<VoyageAcousticsImportConfiguration> { @Override - public ImportDataResult<AcousticImportConfiguration> doImport(ImportDataService service, AcousticImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportAcoustics(configuration, user); + public ImportDataResult<VoyageAcousticsImportConfiguration> doImport(ImportDataService service, VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageAcoustics(configuration, user); } } - public static class CommonImportDataAction implements ImportDataAction<CommonImportConfiguration> { + public static class VoyageCommonsImportDataAction implements ImportDataAction<VoyageCommonsImportConfiguration> { @Override - public ImportDataResult<CommonImportConfiguration> doImport(ImportDataService service, CommonImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportCommons(configuration, user); + public ImportDataResult<VoyageCommonsImportConfiguration> doImport(ImportDataService service, VoyageCommonsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageCommons(configuration, user); } } - public static class OperationsImportDataAction implements ImportDataAction<OperationImportConfiguration> { + public static class VoyageOperationsImportDataAction implements ImportDataAction<VoyageOperationsImportConfiguration> { @Override - public ImportDataResult<OperationImportConfiguration> doImport(ImportDataService service, OperationImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportOperations(configuration, user); + public ImportDataResult<VoyageOperationsImportConfiguration> doImport(ImportDataService service, VoyageOperationsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageOperations(configuration, user); } } - public static class ResultsImportDataAction implements ImportDataAction<ResultsImportConfiguration> { + public static class VoyageResultsImportDataAction implements ImportDataAction<VoyageResultsImportConfiguration> { @Override - public ImportDataResult<ResultsImportConfiguration> doImport(ImportDataService service, ResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportResults(configuration, user); + public ImportDataResult<VoyageResultsImportConfiguration> doImport(ImportDataService service, VoyageResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageResults(configuration, user); } } - public static class CatchesImportDataAction implements ImportDataAction<CatchesImportConfiguration> { + public static class VoyageCatchesImportDataAction implements ImportDataAction<VoyageCatchesImportConfiguration> { @Override - public ImportDataResult<CatchesImportConfiguration> doImport(ImportDataService service, CatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportCatches(configuration, user); + public ImportDataResult<VoyageCatchesImportConfiguration> doImport(ImportDataService service, VoyageCatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageCatches(configuration, user); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java new file mode 100644 index 0000000..035e90d --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java @@ -0,0 +1,93 @@ +package fr.ifremer.echobase.services.service.importdata; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 29/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ResultCategoryCache { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ResultCategoryCache.class); + + private final Map<String, Category> cache; + private final UserDbPersistenceService persistenceService; + private final SpeciesCategoryCache speciesCategoryCache; + + public ResultCategoryCache(UserDbPersistenceService persistenceService, SpeciesCategoryCache speciesCategoryCache) { + this.persistenceService = persistenceService; + this.speciesCategoryCache = speciesCategoryCache; + this.cache = new TreeMap<>(); + } + + public Category getResultCategory(Echotype echotype, + Species species, + SizeCategory sizeCategory, + AgeCategory ageCategory, + ImportDataFileResult importResult) { + + SpeciesCategory speciesCategory = speciesCategoryCache.getSpeciesCategory(species, + sizeCategory, + ageCategory, + null, + importResult); + return getResultCategory(echotype, speciesCategory, importResult); + + } + + public Category getResultCategory(Echotype echotype, SpeciesCategory speciesCategory, ImportDataFileResult importResult) { + + String key + = speciesCategory == null ? "" : speciesCategory.getTopiaId() + + "#" + (echotype == null ? "" : echotype.getName()); + + Category category = cache.get(key); + + if (category == null) { + + // try to find it in db + if (log.isInfoEnabled()) { + log.info("Result category (" + key + ") not found in cache."); + } + + category = persistenceService.getCategoryByEchotypeAndSpeciesCategory(echotype, speciesCategory); + + if (category == null) { + + // not found in db, create it + if (log.isInfoEnabled()) { + log.info("Result category (" + key + ") not found in database, create it."); + } + category = persistenceService.createCategory(echotype, speciesCategory); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Category); + } else { + + if (log.isInfoEnabled()) { + log.info("Result category (" + key + ") found in database, add it to cache."); + } + } + + cache.put(key, category); + + } + + return category; + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java new file mode 100644 index 0000000..b83df5b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java @@ -0,0 +1,82 @@ +package fr.ifremer.echobase.services.service.importdata; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 29/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SpeciesCategoryCache { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SpeciesCategoryCache.class); + + private final Map<String, SpeciesCategory> cache; + private final UserDbPersistenceService persistenceService; + + public SpeciesCategoryCache(UserDbPersistenceService persistenceService) { + this.persistenceService = persistenceService; + this.cache = new TreeMap<>(); + } + + public SpeciesCategory getSpeciesCategory(Species species, + SizeCategory sizeCategory, + AgeCategory ageCategory, + SexCategory sexCategory, + ImportDataFileResult importResult) { + + String key + = species == null ? "" : species.getBaracoudaCode() + + "#" + (ageCategory == null ? "" : ageCategory.getName()) + + "#" + (sizeCategory == null ? "" : sizeCategory.getName()) + + "#" + (sexCategory == null ? "" : sexCategory.getName()); + + SpeciesCategory category = cache.get(key); + + if (category == null) { + + // try to find it in db + if (log.isInfoEnabled()) { + log.info("Species category (" + key + ") not found in cache."); + } + + category = persistenceService.getSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); + + if (category == null) { + + // not found in db, create it + if (log.isInfoEnabled()) { + log.info("Species category (" + key + ") not found in database, create it."); + } + category = persistenceService.createSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SpeciesCategory); + } else { + + if (log.isInfoEnabled()) { + log.info("Species category (" + key + ") found in database, add it to cache."); + } + + } + + cache.put(key, category); + + } + + return category; + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java deleted file mode 100644 index 832c51f..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java +++ /dev/null @@ -1,352 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.base.Charsets; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Data; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.AbstractImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.DataMetadataNotFoundException; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ImportException; -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportModel; -import org.nuiton.csv.ImportRuntimeException; - -import java.io.BufferedReader; -import java.io.Closeable; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.Collection; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.regex.Matcher; - -import static fr.ifremer.echobase.services.service.importdata.ImportDataService.REMOVE_DOUBLE_QUOTES_PATTERN; -import static org.nuiton.i18n.I18n.l; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public abstract class AbstractImportAction<M extends AbstractImportConfiguration, E, C extends ImportModel<E>> implements Closeable { - - /** Logger. */ - private static final Log log = LogFactory.getLog(AbstractImportAction.class); - protected final UserDbPersistenceService persistenceService; - private final Locale locale; - private final M configuration; - private final EchoBaseUser user; - private final InputFile inputFile; - private final C importModel; - //FIXME Use a real cache - protected Map<String, SpeciesCategory> speciesCategories = Maps.newTreeMap(); - //FIXME Use a real cache - protected Map<String, Category> categories = Maps.newTreeMap(); - private Reader reader; - private Import<E> csvImport; - - protected AbstractImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - M configuration, - EchoBaseUser user, - InputFile inputFile) { - this.persistenceService = persistenceService; - this.locale = locale; - this.configuration = configuration; - this.user = user; - this.inputFile = inputFile; - this.importModel = createCsvImportModel(csvSeparator, configuration); - } - - public ImportDataFileResult run() throws ImportException { - - ImportDataFileResult result = new ImportDataFileResult(inputFile); - try { - performImport(getConfiguration(), inputFile, result); - } catch (ImportRuntimeException e) { - throw new ImportException(locale, inputFile, e); - } - return result; - - } - - protected abstract void performImport(M configuration, InputFile inputFile, ImportDataFileResult result); - - protected abstract C createCsvImportModel(char csvSeparator, M configuration); - - public final Locale getLocale() { - return locale; - } - - public final M getConfiguration() { - return configuration; - } - - public final EchoBaseUser getUser() { - return user; - } - - public InputFile getInputFile() { - return inputFile; - } - - protected final Import<E> open() { - if (reader != null) { - throw new IllegalStateException("Reader was already opened"); - } - if (csvImport != null) { - throw new IllegalStateException("csvImport was already opened"); - } - try { - reader = new BufferedReader(new InputStreamReader(new FileInputStream(inputFile.getFile()), Charsets.UTF_8)); - } catch (FileNotFoundException e) { - throw new EchoBaseTechnicalException("Could not find import file " + inputFile.getFile(), e); - } - return csvImport = Import.newImport(importModel, reader); - } - - @Override - public void close() throws IOException { - if (reader != null) { - IOUtils.closeQuietly(reader); - } - if (csvImport != null) { - IOUtils.closeQuietly(csvImport); - } - } - - public final String getImportLabel() { - return l(getLocale(), configuration.getImportType().getI18nKey()); - } - - public final String getImportMessage() { - return l(getLocale(), "echobase.importLabel.withFile", getImportLabel(), inputFile.getFileName()); - } - - protected void incrementsProgress() { - configuration.incrementsProgress(); - } - - protected final void doFlushTransaction(int rowNumber) { - configuration.incrementsProgress(); - if (rowNumber % 1000 == 0) { - // flush each 1000 imported rows - String message = getImportMessage(); - if (log.isDebugEnabled()) { - log.debug(message); - } - persistenceService.flush(); - } - } - - protected SpeciesCategory getSpeciesCategory(Species species, - SizeCategory sizeCategory, - AgeCategory ageCategory, - SexCategory sexCategory, - ImportDataFileResult importResult) { - - String key = species == null ? "" : species.getBaracoudaCode(); - key += "#" + (ageCategory == null ? "" : ageCategory.getName()); - key += "#" + (sizeCategory == null ? "" : sizeCategory.getName()); - key += "#" + (sexCategory == null ? "" : sexCategory.getName()); - - SpeciesCategory category = speciesCategories.get(key); - - if (category == null) { - - // try to find it in db - - category = persistenceService.getSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); - - if (category == null) { - - // not found in db, create it - - category = persistenceService.createSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SpeciesCategory); - } - - speciesCategories.put(key, category); - } - return category; - } - - protected Category getResultCategory(Echotype echotype, - Species species, - SizeCategory sizeCategory, - AgeCategory ageCategory, - ImportDataFileResult importResult) { - - // get species categorie first - - SpeciesCategory speciesCategory = getSpeciesCategory(species, sizeCategory, ageCategory, null, importResult); - - return getResultCategory(echotype, speciesCategory, importResult); - } - - protected Category getResultCategory(Echotype echotype, SpeciesCategory speciesCategory, ImportDataFileResult importResult) { - - String key = speciesCategory == null ? "" : speciesCategory.getTopiaId(); - key += "#" + (echotype == null ? "" : echotype.getName()); - - Category category = categories.get(key); - - if (category == null) { - - // try to find it in db - - category = persistenceService.getCategoryByEchotypeAndSpeciesCategory(echotype, speciesCategory); - - if (category == null) { - - // not found in db, create it - category = persistenceService.createCategory(echotype, speciesCategory); - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Category); - } - - categories.put(key, category); - } - - return category; - } - - protected void createCellData(Cell cell, - DataMetadata dataMetaData, - String dataValue, - DataQuality dataQuality, - ImportDataFileResult importResult) { - - Data data = persistenceService.createData(dataMetaData, dataValue); - cell.addData(data); - cell.setDataQuality(dataQuality); - - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Data); - - } - - protected List<DataMetadata> getMetas(String[] columnNamesToExclude, Map<String, DataMetadata> dataMetadataMap, String... headers) { - - List<String> metadataNames = Lists.newArrayList(headers); - for (String columnToExclude : columnNamesToExclude) { - metadataNames.remove(columnToExclude); - metadataNames.remove("\"" + columnToExclude + "\""); - } - - List<DataMetadata> result = Lists.newArrayList(); - - Locale locale = getLocale(); - - for (String metadataName : metadataNames) { - - Matcher matcher = REMOVE_DOUBLE_QUOTES_PATTERN.matcher(metadataName); - if (matcher.matches()) { - metadataName = matcher.group(1); - } - DataMetadata dataMetadata = dataMetadataMap.get(metadataName); - if (dataMetadata == null) { - throw new DataMetadataNotFoundException(locale, metadataName, dataMetadataMap.keySet()); - } - result.add(dataMetadata); - } - return result; - - } - - protected void addResults(EchoBaseCsvUtil.ResultAble row, - Cell cell, - Category category, - String resultLabel, - ImportDataFileResult importResult, - boolean collecIds, - boolean importNAResults) { - - List<Result> results = row.getResult(); - - for (Result result : results) { - - if (!importNAResults && EchoBaseCsvUtil.NA.equals(result.getResultValue())) { - - // Do not import NA results - continue; - } - result.setDataQuality(row.getDataQuality()); - result.setCategory(category); - result.setResultLabel(resultLabel); - - Result resultCreated = persistenceService.createResult(result); - cell.addResult(resultCreated); - - if (collecIds) { - - importResult.addId(EchoBaseUserEntityEnum.Result, resultCreated); - - } else { - - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Result); - } - - } - - } - - protected Sample addSample(Operation operation, Sample sample, ImportDataFileResult importResult) { - - Preconditions.checkNotNull(operation); - Preconditions.checkNotNull(sample); - Sample result = persistenceService.createSample(sample); - operation.addSample(result); - importResult.addId(EchoBaseUserEntityEnum.Sample, sample); - return result; - - } - - protected SampleData addSampleData(SampleDataType sampleDataType, String label, float value, Sample sample, ImportDataFileResult importResult) { - - SampleData sampleData = persistenceService.createSampleData(sampleDataType, label, value); - sample.addSampleData(sampleData); - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); - return sampleData; - - } - - //FIXME Define a real exception - protected void checkOperationWithTotalOrUnsortedSample(int rowNumber, Collection<Operation> operationWithTotalOrUnsortedSample, Operation operation) { - if (!operationWithTotalOrUnsortedSample.contains(operation)) { - - // can not accept this import - throw new ImportRuntimeException("At line " + rowNumber + ", wants to add a subsample sample but operation " + operation.getId() + " has no sample of type *Total*, nor *Unsorted*"); - } - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java deleted file mode 100644 index 6b6b850..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java +++ /dev/null @@ -1,136 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Collections2; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleDataTypes; -import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SampleTypeImpl; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class BiometrySampleImportAction extends AbstractImportAction<CatchesImportConfiguration, BiometrySampleImportRow, BiometrySampleImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(BiometrySampleImportAction.class); - - public BiometrySampleImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CatchesImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getSubSampleFile()); - } - - @Override - protected BiometrySampleImportModel createCsvImportModel(char csvSeparator, CatchesImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - Map<String, SampleDataType> sampleDataTypeMap = persistenceService.getEntitiesMap(SampleDataType.class, SampleDataTypes.SAMPLE_DATA_TYPE_NAME); - - return new BiometrySampleImportModel(csvSeparator, operationMap, speciesMap, sampleDataTypeMap); - - } - - @Override - protected void performImport(CatchesImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of subSample from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Collection<Operation> operationWithTotalOrUnsortedSample = Collections2.filter(operations, Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); - - SampleType sampleTypeIndividual = persistenceService.getSampleTypeByName(SampleTypeImpl.INDIVIDUAL_SAMPLE_TYPE); - Map<String, Sample> samples = Maps.newTreeMap(); - - try (Import<BiometrySampleImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (BiometrySampleImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Operation operation = row.getOperation(); - - checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); - - Species species = row.getSpecies(); - - int numFish = row.getNumFish(); - - String sampleKey = operation.getId() + "_" + species.getBaracoudaCode() + "_" + numFish; - - Sample sample = samples.get(sampleKey); - - if (sample == null) { - - // create a new sample - sample = persistenceService.newSample(); - - sample.setSampleType(sampleTypeIndividual); - - SpeciesCategory category = getSpeciesCategory(species, null, null, null, result); - - sample.setSpeciesCategory(category); - - sample = addSample(operation, sample, result); - - samples.put(sampleKey, sample); - } - - SampleData sampleData = row.getSampleData(); - - SampleData sampleDataCreated = persistenceService.createSampleData(sampleData); - sample.addSampleData(sampleDataCreated); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java deleted file mode 100644 index 10391be..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java +++ /dev/null @@ -1,100 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.GearMetadataValue; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.GearMetadata; -import fr.ifremer.echobase.entities.references.GearMetadatas; -import fr.ifremer.echobase.entities.references.Gears; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class GearMetadataImportAction extends AbstractImportAction<OperationImportConfiguration, GearMetadataValueImportRow, GearMetadataValueImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(GearMetadataImportAction.class); - - public GearMetadataImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - OperationImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getOperationMetadataFile()); - - } - - @Override - protected GearMetadataValueImportModel createCsvImportModel(char csvSeparator, OperationImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get usable vessels from the voyage by their name - Map<String, Vessel> vesselMap = Maps.uniqueIndex(voyage.getAllVessels(), Vessels.VESSEL_NAME); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - // get usable gears by their casino gear name - Map<String, Gear> gearMap = persistenceService.getEntitiesMap(Gear.class, Gears.GEAR_CASINO_GEAR_NAME); - - // split them by operation Id - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, GearMetadata> gearMetadatasMap = persistenceService.getEntitiesMap(GearMetadata.class, GearMetadatas.GEAR_METADATA_NAME); - return new GearMetadataValueImportModel(csvSeparator, vesselMap, gearMetadatasMap, gearMap, operationMap); - } - - @Override - protected void performImport(OperationImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of gear metadata values from file " + inputFile.getFileName()); - } - - try (Import<GearMetadataValueImportRow> importer = open()) { - - int rowNumber = 0; - incrementsProgress(); - for (GearMetadataValueImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Operation operation = row.getOperation(); - - GearMetadataValue gearMetadataValuetoCreate = row.getGearMetadataValue(); - GearMetadataValue gearMetadataValue = persistenceService.createGearMetadataValue(gearMetadataValuetoCreate); - - operation.addGearMetadataValue(gearMetadataValue); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.GearMetadataValue); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java new file mode 100644 index 0000000..15f276b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java @@ -0,0 +1,167 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import com.google.common.base.Charsets; +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Data; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ImportException; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.contexts.ImportDataContextSupport; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.ExportModel; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportRuntimeException; + +import java.io.BufferedReader; +import java.io.Closeable; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ImportDataActionSupport<M extends ImportDataConfigurationSupport, C extends ImportDataContextSupport<M>, E> implements Closeable { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportDataActionSupport.class); + + private final C importDataContext; + private final InputFile inputFile; + + private ImportModel<E> importModel; + private ExportModel<E> exportModel; + private Reader reader; + private Import<E> csvImport; + private Export<E> csvExport; + protected final UserDbPersistenceService persistenceService; + + protected ImportDataActionSupport(C importDataContext, InputFile inputFile) { + this.importDataContext = importDataContext; + this.inputFile = inputFile; + this.persistenceService = importDataContext.getPersistenceService(); + } + + public ImportDataFileResult run() throws ImportException { + + this.importModel = createCsvImportModel(importDataContext); + this.exportModel = createCsvExportModel(importDataContext); + + ImportDataFileResult result = new ImportDataFileResult(inputFile); + try { + performImport(importDataContext, inputFile, result); + } catch (ImportRuntimeException e) { + throw new ImportException(importDataContext.getLocale(), inputFile, e); + } + return result; + + } + + protected abstract void performImport(C importDataContext, InputFile inputFile, ImportDataFileResult result); + + protected abstract ImportModel<E> createCsvImportModel(C importDataContext); + + protected abstract ExportModel<E> createCsvExportModel(C importDataContext); + + public final Locale getLocale() { + return importDataContext.getLocale(); + } + + public final M getConfiguration() { + return importDataContext.getConfiguration(); + } + + public final EchoBaseUser getUser() { + return importDataContext.getUser(); + } + + public InputFile getInputFile() { + return inputFile; + } + + protected final Import<E> open() { + if (reader != null) { + throw new IllegalStateException("Reader was already opened"); + } + if (csvImport != null) { + throw new IllegalStateException("csvImport was already opened"); + } + try { + reader = new BufferedReader(new InputStreamReader(new FileInputStream(getInputFile().getFile()), Charsets.UTF_8)); + } catch (FileNotFoundException e) { + throw new EchoBaseTechnicalException("Could not find import file " + getInputFile().getFile(), e); + } + return csvImport = Import.newImport(importModel, reader); + } + + @Override + public void close() throws IOException { + if (reader != null) { + IOUtils.closeQuietly(reader); + } + if (csvImport != null) { + IOUtils.closeQuietly(csvImport); + } + } + + public final String getImportLabel() { + return l(getLocale(), getConfiguration().getImportType().getI18nKey()); + } + + public final String getImportMessage() { + return l(getLocale(), "echobase.importLabel.withFile", getImportLabel(), getInputFile().getFileName()); + } + + protected void incrementsProgress() { + getConfiguration().incrementsProgress(); + } + + protected final void doFlushTransaction(int rowNumber) { + getConfiguration().incrementsProgress(); + if (rowNumber % 1000 == 0) { + // flush each 1000 imported rows + String message = getImportMessage(); + if (log.isDebugEnabled()) { + log.debug(message); + } + getPersistenceService().flush(); + } + } + + protected final UserDbPersistenceService getPersistenceService() { + return importDataContext.getPersistenceService(); + } + + protected void createCellData(Cell cell, + DataMetadata dataMetaData, + String dataValue, + DataQuality dataQuality, + ImportDataFileResult importResult) { + + Data data = getPersistenceService().createData(dataMetaData, dataValue); + cell.addData(data); + cell.setDataQuality(dataQuality); + + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Data); + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java deleted file mode 100644 index 62e9770..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java +++ /dev/null @@ -1,104 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Transect; -import fr.ifremer.echobase.entities.data.Transit; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.DepthStratums; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.Gears; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.OperationImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.OperationImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Date; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class OperationImportAction extends AbstractImportAction<OperationImportConfiguration, OperationImportRow, OperationImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(OperationImportAction.class); - - public OperationImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - OperationImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getOperationFile()); - } - - @Override - protected OperationImportModel createCsvImportModel(char csvSeparator, OperationImportConfiguration configuration) { - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get usable vessels from the voyage by their name - Map<String, Vessel> vesselMap = Maps.uniqueIndex(voyage.getAllVessels(), Vessels.VESSEL_NAME); - - // get usable gears by their casino gear name - Map<String, Gear> gearMap = persistenceService.getEntitiesMap(Gear.class, Gears.GEAR_CASINO_GEAR_NAME); - - Map<String, DepthStratum> depthStratumMap = persistenceService.getEntitiesMap(DepthStratum.class, DepthStratums.DEPTH_STRATUM_ID); - return new OperationImportModel(csvSeparator, vesselMap, gearMap, depthStratumMap); - } - - @Override - protected void performImport(OperationImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of operation from file " + inputFile.getFileName()); - } - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - try (Import<OperationImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (OperationImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Vessel vessel = row.getVessel(); - - Operation operation = row.getOperation(); - - Date startTime = operation.getGearShootingStartTime(); - Date endTime = operation.getGearShootingEndTime(); - - Transit transit = voyage.getTransit(startTime, endTime); - - Transect transect = transit.getTransect(vessel); - - Operation createdOperation = persistenceService.createOperation(operation); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Operation, createdOperation); - - transect.addOperation(createdOperation); - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java deleted file mode 100644 index 24e63eb..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java +++ /dev/null @@ -1,94 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.OperationMetadataValue; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.OperationMetadata; -import fr.ifremer.echobase.entities.references.OperationMetadatas; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class OperationMetadataImportAction extends AbstractImportAction<OperationImportConfiguration, OperationMetadataValueImportRow, OperationMetadataValueImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(OperationMetadataImportAction.class); - - public OperationMetadataImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - OperationImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getOperationMetadataFile()); - } - - @Override - protected OperationMetadataValueImportModel createCsvImportModel(char csvSeparator, OperationImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(getConfiguration().getVoyageId()); - - // get usable vessels from the voyage by their name - Map<String, Vessel> vesselMap = Maps.uniqueIndex(voyage.getAllVessels(), Vessels.VESSEL_NAME); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - // split them by operation Id - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, OperationMetadata> operationMetadatasMap = persistenceService.getEntitiesMap(OperationMetadata.class, OperationMetadatas.OPERATION_METADATA_NAME); - return new OperationMetadataValueImportModel(csvSeparator, vesselMap, operationMetadatasMap, operationMap); - } - - @Override - protected void performImport(OperationImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of operation metadata values from file " + inputFile.getFileName()); - } - - try (Import<OperationMetadataValueImportRow> importer = open()) { - - int rowNumber = 0; - incrementsProgress(); - for (OperationMetadataValueImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Operation operation = row.getOperation(); - - OperationMetadataValue operationMetadataValueToCreate = row.getOperationMetadataValue(); - OperationMetadataValue operationMetadataValue = persistenceService.createOperationMetadataValue(operationMetadataValueToCreate); - - operation.addOperationMetadataValue(operationMetadataValue); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.OperationMetadataValue); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java deleted file mode 100644 index 9485b33..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class RegionAssociationImportAction extends AbstractImportAction<ResultsImportConfiguration, RegionCellAssociationImportRow, RegionCellAssociationImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(RegionAssociationImportAction.class); - - public RegionAssociationImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getRegionAssociationFile()); - } - - @Override - protected RegionCellAssociationImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, Cell> regionsMap = Maps.uniqueIndex(voyage.getRegionCells(), Cells.CELL_BY_NAME); - return new RegionCellAssociationImportModel(csvSeparator, - voyageMap, - regionsMap, - persistenceService.newCellValueParser(voyage)); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Region cells association from file " + inputFile.getFileName()); - } - - try (Import<RegionCellAssociationImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (RegionCellAssociationImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell regionCell = row.getRegionCell(); - Cell esduCell = row.getEsduCell(); - regionCell.addChilds(esduCell); - result.incrementsNumberUpdated(EchoBaseUserEntityEnum.Cell); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java deleted file mode 100644 index 87ba05e..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java +++ /dev/null @@ -1,118 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypes; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class RegionImportAction extends AbstractImportAction<ResultsImportConfiguration, RegionCellImportRow, RegionCellImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(RegionImportAction.class); - - public RegionImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getRegionsFile()); - } - - @Override - protected RegionCellImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Set<CellType> allCellTypes = persistenceService.getRegionCellTypes(); - - // authorize only to use region* cell types - Map<String, CellType> cellTypeMap = Maps.uniqueIndex(allCellTypes, CellTypes.CELL_TYPE_ID); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - return new RegionCellImportModel(csvSeparator, voyageMap, cellTypeMap, dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - DataMetadata dataCoordinateMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.REGION_ENV_COORDINATES); - - DataMetadata dataSurfaceMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.SURFACE); - - if (log.isInfoEnabled()) { - log.info("Starts import of Region cells from file " + inputFile.getFileName()); - } - - try (Import<RegionCellImportRow> importer = open()) { - - Cell cell = null; - - incrementsProgress(); - int rowNumber = 0; - for (RegionCellImportRow row : importer) { - - doFlushTransaction(++rowNumber); - if (cell == null || !row.getName().equals(cell.getName())) { - - cell = persistenceService.createCell(row.getCellType(), row.getName()); - voyage.addPostCell(cell); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Cell, cell); - - // add surface data - createCellData(cell, - dataSurfaceMeta, - String.valueOf(row.getDataSurface()), - row.getDataQuality(), - result); - } - - // add coordinate data - createCellData(cell, - dataCoordinateMeta, - row.getDataCoordinate(), - row.getDataQuality(), - result); - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java deleted file mode 100644 index 0430e84..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java +++ /dev/null @@ -1,134 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Echotypes; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultByEchotypeAndSpeciesCategoryImportRow, EsduResultByEchotypeAndSpeciesCategoryImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.class); - - public ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduByEchotypeAndSpeciesCategoryFile()); - - } - - @Override - protected EsduResultByEchotypeAndSpeciesCategoryImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - // index all echotypes of this voyage - Map<String, Echotype> echotypeMap = Maps.uniqueIndex(voyage.getEchotype(), Echotypes.ECHOTYPE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - return new EsduResultByEchotypeAndSpeciesCategoryImportModel(csvSeparator, - voyageMap, - echotypeMap, - speciesMap, - sizeCategoryMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - - } - - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of acoustic result by echotype and species category from file " + inputFile.getFileName()); - } - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultByEchotypeAndSpeciesCategoryImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (EsduResultByEchotypeAndSpeciesCategoryImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - Category category = getResultCategory(row.getEchotype(), - row.getSpecies(), - row.getSizeCategory(), - null, - result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java deleted file mode 100644 index 9d4e2e2..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java +++ /dev/null @@ -1,118 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Echotypes; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduByEchotypeCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultByEchotypeImportRow, EsduResultByEchotypeImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduByEchotypeCellImportAction.class); - - public ResultsEsduByEchotypeCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduByEchotypeFile()); - } - - @Override - protected EsduResultByEchotypeImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - // index all echotypes of this voyage - Map<String, Echotype> echotypeMap = Maps.uniqueIndex(voyage.getEchotype(), Echotypes.ECHOTYPE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - return new EsduResultByEchotypeImportModel(csvSeparator, - voyageMap, - echotypeMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - } - - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of esdu result by echotype from file " + inputFile.getFileName()); - } - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultByEchotypeImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - - for (EsduResultByEchotypeImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - Category category = getResultCategory(row.getEchotype(), null, result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java deleted file mode 100644 index 1fee2a7..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java +++ /dev/null @@ -1,138 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.AgeCategories; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduSpeciesAndAgeCategoryCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultBySpeciesAndAgeCategoryImportRow, EsduResultBySpeciesAndAgeCategoryImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduSpeciesAndAgeCategoryCellImportAction.class); - - public ResultsEsduSpeciesAndAgeCategoryCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduBySpeciesAndAgeCategoryFile()); - } - - @Override - protected EsduResultBySpeciesAndAgeCategoryImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - return new EsduResultBySpeciesAndAgeCategoryImportModel(csvSeparator, - voyageMap, - speciesMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of acoustic result by speices and size category from file " + inputFile.getFileName()); - } - - Map<String, AgeCategory> ageCategoryMap = Maps.newTreeMap(); - ageCategoryMap.putAll(persistenceService.getEntitiesMap(AgeCategory.class, AgeCategories.AGE_CATEGORY_NAME)); - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultBySpeciesAndAgeCategoryImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - - for (EsduResultBySpeciesAndAgeCategoryImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - String ageCategoryName = row.getAgeCategory(); - - AgeCategory ageCategory = ageCategoryMap.get(ageCategoryName); - - if (ageCategory == null) { - - // create a new sizeCategory - ageCategory = persistenceService.createAgeCategory(ageCategoryName, row.getAgeCategoryMeaning()); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.AgeCategory); - if (log.isInfoEnabled()) { - log.info("Creates a new AgeCategory " + ageCategoryName); - } - ageCategoryMap.put(ageCategoryName, ageCategory); - } - - Category category = getResultCategory(null, row.getSpecies(), null, ageCategory, result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java deleted file mode 100644 index 2a4f307..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java +++ /dev/null @@ -1,140 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduSpeciesAndSizeCategoryCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultBySpeciesAndSizeCategoryImportRow, EsduResultBySpeciesAndSizeCategoryImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduSpeciesAndSizeCategoryCellImportAction.class); - - public ResultsEsduSpeciesAndSizeCategoryCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduBySpeciesAndSizeCategoryFile()); - } - - @Override - protected EsduResultBySpeciesAndSizeCategoryImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - return new EsduResultBySpeciesAndSizeCategoryImportModel(csvSeparator, - voyageMap, - speciesMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of acoustic result by speices and size category from file " + inputFile.getFileName()); - } - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultBySpeciesAndSizeCategoryImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (EsduResultBySpeciesAndSizeCategoryImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - String sizeCategoryName = row.getSizeCategory(); - - SizeCategory sizeCategory = sizeCategoryMap.get(sizeCategoryName); - - if (sizeCategory == null) { - - // create a new sizeCategory - sizeCategory = persistenceService.createSizeCategory(sizeCategoryName, row.getSizeCategoryMeaning()); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.SizeCategory); - if (log.isInfoEnabled()) { - log.info("Creates a new SizeCategory " + sizeCategoryName); - } - sizeCategoryMap.put(sizeCategoryName, sizeCategory); - } - - Category category = getResultCategory(null, - row.getSpecies(), - sizeCategory, - null, - result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java deleted file mode 100644 index 0652502..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java +++ /dev/null @@ -1,194 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.AgeCategories; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypeImpl; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsMapFishCellImportAction extends AbstractImportAction<ResultsImportConfiguration, MapCellImportRow, MapCellImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsMapFishCellImportAction.class); - - public ResultsMapFishCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getMapsFile()); - } - - @Override - protected MapCellImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - CellType cellType = persistenceService.getCellTypeById(CellTypeImpl.MAP); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - Map<String, AgeCategory> ageCategoryMap = Maps.newTreeMap(); - ageCategoryMap.putAll(persistenceService.getEntitiesMap(AgeCategory.class, AgeCategories.AGE_CATEGORY_NAME)); - - return new MapCellImportModel(csvSeparator, - cellType, - voyageMap, - speciesMap, - sizeCategoryMap, - ageCategoryMap, - metas, - dataQualityMap); - - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Map cells from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - String resultLabel = getConfiguration().getResultLabel(); - - DataMetadata dataLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); - - DataMetadata dataLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); - - DataMetadata dataDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); - - DataMetadata dataLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); - - DataMetadata dataLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); - - DataMetadata dataDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); - - - try (Import<MapCellImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (MapCellImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = persistenceService.createCell(row.getCell()); - voyage.addPostCell(cell); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Cell, cell); - - DataQuality dataQuality = row.getDataQuality(); - - // add gridCellLongitude data - createCellData(cell, - dataLongitudeMeta, - String.valueOf(row.getGridCellLongitude()), - dataQuality, - result); - - // add gridCellLatitude data - createCellData(cell, - dataLatitudeMeta, - String.valueOf(row.getGridCellLatitude()), - dataQuality, - result); - - // add gridCellDepth data - createCellData(cell, - dataDepthMeta, - String.valueOf(row.getGridCellDepth()), - dataQuality, - result); - - // add gridLongitudeLag data - createCellData(cell, - dataLongitudeLagMeta, - String.valueOf(row.getGridLongitudeLag()), - dataQuality, - result); - - // add gridLatitudeLag data - createCellData(cell, - dataLatitudeLagMeta, - String.valueOf(row.getGridLatitudeLag()), - dataQuality, - result); - - // add gridDepthLag data - createCellData(cell, - dataDepthLagMeta, - String.valueOf(row.getGridDepthLag()), - dataQuality, - result); - - Category category = getResultCategory(null, - row.getSpecies(), - row.getSizeCategory(), - row.getAgeCategory(), - result); - - addResults(row, cell, category, resultLabel, result, false, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java deleted file mode 100644 index 9409251..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java +++ /dev/null @@ -1,168 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypeImpl; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsMapOtherCellImportAction extends AbstractImportAction<ResultsImportConfiguration, MapCellImportRow, MapCellImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsMapOtherCellImportAction.class); - - public ResultsMapOtherCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getMapsFile()); - } - - @Override - protected MapCellImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - CellType cellType = persistenceService.getCellTypeById(CellTypeImpl.MAP); - - return new MapCellImportModel(csvSeparator, - cellType, - voyageMap, - metas, - dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Map Other cells from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - String resultLabel = getConfiguration().getResultLabel(); - - DataMetadata dataLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); - - DataMetadata dataLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); - - DataMetadata dataDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); - - DataMetadata dataLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); - - DataMetadata dataLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); - - DataMetadata dataDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); - - try (Import<MapCellImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (MapCellImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = persistenceService.createCell(row.getCell()); - voyage.addPostCell(cell); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Cell, cell); - - DataQuality dataQuality = row.getDataQuality(); - - // add gridCellLongitude data - createCellData(cell, - dataLongitudeMeta, - String.valueOf(row.getGridCellLongitude()), - dataQuality, - result); - - // add gridCellLatitude data - createCellData(cell, - dataLatitudeMeta, - String.valueOf(row.getGridCellLatitude()), - dataQuality, - result); - - // add gridCellDepth data - createCellData(cell, - dataDepthMeta, - String.valueOf(row.getGridCellDepth()), - dataQuality, - result); - - // add gridLongitudeLag data - createCellData(cell, - dataLongitudeLagMeta, - String.valueOf(row.getGridLongitudeLag()), - dataQuality, - result); - - // add gridLatitudeLag data - createCellData(cell, - dataLatitudeLagMeta, - String.valueOf(row.getGridLatitudeLag()), - dataQuality, - result); - - // add gridDepthLag data - createCellData(cell, - dataDepthLagMeta, - String.valueOf(row.getGridDepthLag()), - dataQuality, - result); - - addResults(row, cell, null, resultLabel, result, false, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java deleted file mode 100644 index 276faf8..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java +++ /dev/null @@ -1,126 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Category; -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.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsRegionImportAction extends AbstractImportAction<ResultsImportConfiguration, RegionCellResultImportRow, RegionCellResultImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsRegionImportAction.class); - - public ResultsRegionImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getRegionResultFile()); - } - - @Override - protected RegionCellResultImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, Cell> regionsMap = Maps.uniqueIndex(voyage.getRegionCells(), Cells.CELL_BY_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - // index all echotypes of thi voyage - Map<String, Echotype> echotypeMap = Maps.uniqueIndex(voyage.getEchotype(), Echotypes.ECHOTYPE_NAME); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - - List<DataMetadata> metas = getMetas(RegionCellResultImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - return new RegionCellResultImportModel(csvSeparator, - voyageMap, - regionsMap, - echotypeMap, - speciesMap, - sizeCategoryMap, - metas, - dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Region cell results from file " + inputFile.getFileName()); - } - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<RegionCellResultImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (RegionCellResultImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - Category category = getResultCategory(row.getEchotype(), - row.getSpecies(), - row.getSizeCategory(), - null, - result); - - addResults(row, cell, category, resultLabel, result, false, false); - - } - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java deleted file mode 100644 index 853b973..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java +++ /dev/null @@ -1,95 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.LengthAgeKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.Strata; -import fr.ifremer.echobase.entities.references.Stratas; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsVoyageLengthAgeKeyImportAction extends AbstractImportAction<ResultsImportConfiguration, LengthAgeKeyImportRow, LengthAgeKeyImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsVoyageLengthAgeKeyImportAction.class); - - public ResultsVoyageLengthAgeKeyImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getLengthAgeKeyFile()); - } - - @Override - protected LengthAgeKeyImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, Strata> strataMap = persistenceService.getEntitiesMap(Strata.class, Stratas.STRATA_BY_NAME); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - return new LengthAgeKeyImportModel(csvSeparator, voyageMap, strataMap, speciesMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of lenthAgeKey from file " + inputFile.getFileName()); - } - - try (Import<LengthAgeKeyImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (LengthAgeKeyImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Voyage voyage = row.getVoyage(); - - LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey(); - LengthAgeKey lengthAgeKey = persistenceService.createLengthAgeKey(lengthAgeKeyToCreate); - - // attach it to voyage - voyage.addLengthAgeKey(lengthAgeKey); - - // collect ids - result.addId(EchoBaseUserEntityEnum.LengthAgeKey, lengthAgeKey); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java deleted file mode 100644 index 456efa8..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java +++ /dev/null @@ -1,109 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.LengthWeightKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.entities.references.Strata; -import fr.ifremer.echobase.entities.references.Stratas; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsVoyageLengthWeightKeyImportAction extends AbstractImportAction<ResultsImportConfiguration, LengthWeightKeyImportRow, LengthWeightKeyImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsVoyageLengthWeightKeyImportAction.class); - - public ResultsVoyageLengthWeightKeyImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getLengthWeightKeyFile()); - } - - @Override - protected LengthWeightKeyImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, Strata> strataMap = persistenceService.getEntitiesMap(Strata.class, Stratas.STRATA_BY_NAME); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, SizeCategory> sizeCategoryMap = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); - - return new LengthWeightKeyImportModel(csvSeparator, - voyageMap, - strataMap, - sizeCategoryMap, - speciesMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of lenthWeightKey from file " + inputFile.getFileName()); - } - - try (Import<LengthWeightKeyImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (LengthWeightKeyImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Voyage voyage = row.getVoyage(); - - // find speciesCategory - SpeciesCategory speciesCategory = getSpeciesCategory(row.getSpecies(), row.getSizeCategory(), null, null, result); - - LengthWeightKey toCreate = row.getLengthWeightKey(); - toCreate.setSpeciesCategory(speciesCategory); - - LengthWeightKey lengthWeightKey = persistenceService.createLengthWeightKey(toCreate); - - //TODO should we import it ? - //lengthWeightKey.setMetadata(row.getMetadata()); - - // attach it to voyage - voyage.addLengthWeightKey(lengthWeightKey); - - // collect ids - result.addId(EchoBaseUserEntityEnum.LengthWeightKey, lengthWeightKey); - - } - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java deleted file mode 100644 index bca73d2..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java +++ /dev/null @@ -1,151 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Collections2; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleDataTypeImpl; -import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SampleTypeImpl; -import fr.ifremer.echobase.entities.references.SexCategories; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class SubSampleImportAction extends AbstractImportAction<CatchesImportConfiguration, SubSampleImportRow, SubSampleImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(SubSampleImportAction.class); - - public SubSampleImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CatchesImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getSubSampleFile()); - } - - @Override - protected SubSampleImportModel createCsvImportModel(char csvSeparator, CatchesImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); - - Map<String, SexCategory> sexCategoryMap = persistenceService.getEntitiesMap(SexCategory.class, SexCategories.SEX_CATEGORY_NAME); - return new SubSampleImportModel(csvSeparator, operationMap, speciesMap, sizeCategoryMap, sexCategoryMap); - } - - @Override - protected void performImport(CatchesImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of subSample from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Collection<Operation> operationWithTotalOrUnsortedSample = Collections2.filter(operations, Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); - - SampleType sampleTypeSubsample = persistenceService.getSampleTypeByName(SampleTypeImpl.SUB_SAMPLE_TYPE); - SampleDataType sampleDataTypeNumberAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NUMBER_AT_LENGTH); - SampleDataType sampleDataTypeNumberAtLength05cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.LTCM0_5); - SampleDataType sampleDataTypeNumberAtLength1cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.L_TCM_1); - SampleDataType sampleDataTypeWeightAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.WEIGHT_AT_LENGTHKG); - - try (Import<SubSampleImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (SubSampleImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Operation operation = row.getOperation(); - - checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); - - Species species = row.getSpecies(); - SizeCategory sizeCategory = row.getSizeCategory(); - SexCategory sexCategory = row.getSexCategory(); - - SpeciesCategory category = getSpeciesCategory(species, sizeCategory, null, sexCategory, result); - - // find the sample with this category - Sample sample = operation.getSample(category, sampleTypeSubsample); - - if (sample == null) { - - // must create it - sample = row.getSample(); - - sample.setSpeciesCategory(category); - sample.setSampleType(sampleTypeSubsample); - - sample = addSample(operation, sample, result); - } - - Integer round = row.getRound(); - SampleDataType dataType = sampleDataTypeNumberAtLength; - - if (round == null) { - dataType = sampleDataTypeNumberAtLength; - } else if (round == 5) { - dataType = sampleDataTypeNumberAtLength05cm; - } else if (round == 1) { - dataType = sampleDataTypeNumberAtLength1cm; - } - - //create numberAtLength data - addSampleData(dataType, "" + row.getLengthClass(), row.getNumberAtLength(), sample, result); - - if (row.getWeightAtLength() != null) { - - //create weightAtLength data - addSampleData(sampleDataTypeWeightAtLength, "" + row.getLengthClass(), row.getWeightAtLength(), sample, result); - } - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AcousticImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java similarity index 90% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AcousticImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java index eadc34e..d34992b 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AcousticImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java @@ -3,8 +3,6 @@ package fr.ifremer.echobase.services.service.importdata.actions; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.DataAcquisition; @@ -15,20 +13,18 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.AcousticInstrument; import fr.ifremer.echobase.entities.references.AcousticInstruments; import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypeImpl; import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.services.service.importdata.EsduCellNotFoundException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.TransectNotFoundException; import fr.ifremer.echobase.services.service.importdata.TransitNotFoundException; -import fr.ifremer.echobase.services.service.importdata.csv.AcousticImportModel; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.AcousticImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.AcousticImportRow; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; @@ -49,51 +45,47 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class AcousticImportAction extends AbstractImportAction<AcousticImportConfiguration, AcousticImportRow, AcousticImportModel> { +public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataActionSupport<AcousticImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(AcousticImportAction.class); + private static final Log log = LogFactory.getLog(VoyageAcousticsImportAction.class); private final DateFormat cellDateFormat; private final Map<String, DataMetadata> dataMetadatasByName; - private String lastEsduId; - - public AcousticImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - AcousticImportConfiguration configuration, - EchoBaseUser user) { - - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getMoviesFile()); - dataMetadatasByName = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); + private String lastEsduId; + public VoyageAcousticsImportAction(VoyageAcousticsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getMoviesFile()); cellDateFormat = new SimpleDateFormat(EchoBaseCsvUtil.CELLULE_DATE_FORMAT); + dataMetadatasByName = importDataContext.getDataMetadatasByName(); + } + @Override + protected AcousticImportExportModel createCsvImportModel(VoyageAcousticsImportDataContext importDataContext) { + return AcousticImportExportModel.forImport(importDataContext); } @Override - protected AcousticImportModel createCsvImportModel(char csvSeparator, AcousticImportConfiguration configuration) { - Map<String, AcousticInstrument> instrumentsById = persistenceService.getEntitiesMap(AcousticInstrument.class, AcousticInstruments.ACOUSTIC_INSTRUMENT_ID); - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - return new AcousticImportModel(csvSeparator, instrumentsById, dataQualityMap); + protected AcousticImportExportModel createCsvExportModel(VoyageAcousticsImportDataContext importDataContext) { + return AcousticImportExportModel.forExport(importDataContext); } @Override - protected void performImport(AcousticImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageAcousticsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts " + getImportMessage()); } // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); + Voyage voyage = importDataContext.getVoyage(); // get selected vessel - Vessel vessel = persistenceService.getVessel(configuration.getVesselId()); + Vessel vessel = persistenceService.getVessel(importDataContext.getConfiguration().getVesselId()); - CellType esduCellType = persistenceService.getCellTypeById(CellTypeImpl.ESDU); - CellType elementaryCellType = persistenceService.getCellTypeById(CellTypeImpl.ELEMENTARY); + CellType esduCellType = importDataContext.getEsduCellType(); + CellType elementaryCellType = importDataContext.getElementaryCellType(); boolean addDataAcquisition = getConfiguration().isAddDataAcquisition(); @@ -104,7 +96,6 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon Locale locale = getLocale(); String dataProcessingId = null; - String processingTemplate = getConfiguration().getProcessingTemplate(); try (Import<AcousticImportRow> importer = open()) { @@ -322,7 +313,9 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon // create datas of the elementary cell createElementaryCellData(suffix, elementaryCell, surface, row, dataQuality, result); + } + } } @@ -346,7 +339,9 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon } } } + return result; + } private void createEsduCellData(String suffix, @@ -403,6 +398,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon dataValue = String.valueOf(row.getCellNumberOfSamplesEchoIntegrated()); createCellData(cell, "NumberOfSamplesEchoIntegrated", dataValue, dataQuality, importResult); } + } private void createElementaryCellData(String suffix, @@ -487,7 +483,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String soundSpeedCalculations, AcousticImportRow row) { - AcousticImportConfiguration configuration = getConfiguration(); + VoyageAcousticsImportConfiguration configuration = getConfiguration(); String transceiverAcquisitionAbsorptionDescription = configuration.getTransceiverAcquisitionAbsorptionDescription(); @@ -495,7 +491,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String loggedDataDatatype = configuration.getLoggedDataDatatype(); String pingDutyCycle = configuration.getPingDutyCycle(); - DataAcquisition dataAcquisition = persistenceService.createDataAcquisition(instrument); + DataAcquisition dataAcquisition = getPersistenceService().createDataAcquisition(instrument); // fill from manual configuration dataAcquisition.setTransceiverAcquisitionAbsorptionDescription(transceiverAcquisitionAbsorptionDescription); @@ -533,7 +529,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String soundSpeedCalculations, AcousticImportRow row) { - AcousticImportConfiguration configuration = getConfiguration(); + VoyageAcousticsImportConfiguration configuration = getConfiguration(); String transceiverAcquisitionAbsorptionDescription = configuration.getTransceiverAcquisitionAbsorptionDescription(); @@ -544,7 +540,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String acousticDensityUnit = configuration.getAcousticDensityUnit(); String notes = configuration.getNotes(); - DataProcessing dataProcessing = persistenceService.createDataProcessing(id, processingTemplate); + DataProcessing dataProcessing = getPersistenceService().createDataProcessing(id, processingTemplate); // fill from manual configuration dataProcessing.setProcessingDescription(processingDescription); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java new file mode 100644 index 0000000..42661e4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java @@ -0,0 +1,18 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageAcousticsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageAcousticsImportConfiguration, VoyageAcousticsImportDataContext, E> { + + protected VoyageAcousticsImportDataActionSupport(VoyageAcousticsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java new file mode 100644 index 0000000..370adb1 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java @@ -0,0 +1,109 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.Collection; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageCatchesBiometrySampleImportAction extends VoyageCatchesImportDataActionSupport<BiometrySampleImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageCatchesBiometrySampleImportAction.class); + + public VoyageCatchesBiometrySampleImportAction(VoyageCatchesImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getBiometrySampleFile()); + } + + @Override + protected BiometrySampleImportExportModel createCsvImportModel(VoyageCatchesImportDataContext importDataContext) { + return BiometrySampleImportExportModel.forImport(importDataContext); + } + + @Override + protected BiometrySampleImportExportModel createCsvExportModel(VoyageCatchesImportDataContext importDataContext) { + return BiometrySampleImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of subSample from file " + inputFile.getFileName()); + } + + SampleType sampleTypeIndividual = importDataContext.getSampleTypeIndividualType(); + Collection<Operation> operationWithTotalOrUnsortedSample = importDataContext.getVoyageOperationsWithTotalOrUnsortedSample(); + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + Map<String, Sample> samples = new TreeMap<>(); + + try (Import<BiometrySampleImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (BiometrySampleImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Operation operation = row.getOperation(); + + checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); + + Species species = row.getSpecies(); + + int numFish = row.getNumFish(); + + String sampleKey = operation.getId() + "_" + species.getBaracoudaCode() + "_" + numFish; + + Sample sample = samples.get(sampleKey); + + if (sample == null) { + + // create a new sample + sample = persistenceService.newSample(); + + sample.setSampleType(sampleTypeIndividual); + + SpeciesCategory category = speciesCategoryCache.getSpeciesCategory(species, null, null, null, result); + + sample.setSpeciesCategory(category); + + sample = addSample(operation, sample, result); + + samples.put(sampleKey, sample); + } + + SampleData sampleData = row.getSampleData(); + + SampleData sampleDataCreated = persistenceService.createSampleData(sampleData); + sample.addSampleData(sampleDataCreated); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java new file mode 100644 index 0000000..cf6c2a0 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java @@ -0,0 +1,57 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import com.google.common.base.Preconditions; +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Collection; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageCatchesImportDataActionSupport<E> extends ImportDataActionSupport<VoyageCatchesImportConfiguration, VoyageCatchesImportDataContext, E> { + + protected VoyageCatchesImportDataActionSupport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + + protected Sample addSample(Operation operation, Sample sample, ImportDataFileResult importResult) { + + Preconditions.checkNotNull(operation); + Preconditions.checkNotNull(sample); + Sample result = getPersistenceService().createSample(sample); + operation.addSample(result); + importResult.addId(EchoBaseUserEntityEnum.Sample, sample); + return result; + + } + + protected SampleData addSampleData(SampleDataType sampleDataType, String label, float value, Sample sample, ImportDataFileResult importResult) { + + SampleData sampleData = getPersistenceService().createSampleData(sampleDataType, label, value); + sample.addSampleData(sampleData); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); + return sampleData; + + } + + //FIXME Define a real exception + protected void checkOperationWithTotalOrUnsortedSample(int rowNumber, Collection<Operation> operationWithTotalOrUnsortedSample, Operation operation) { + if (!operationWithTotalOrUnsortedSample.contains(operation)) { + + // can not accept this import + throw new ImportRuntimeException("At line " + rowNumber + ", wants to add a subsample sample but operation " + operation.getId() + " has no sample of type *Total*, nor *Unsorted*"); + } + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java new file mode 100644 index 0000000..03b6515 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java @@ -0,0 +1,121 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.Collection; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageCatchesSubSampleImportAction extends VoyageCatchesImportDataActionSupport<SubSampleImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageCatchesSubSampleImportAction.class); + + public VoyageCatchesSubSampleImportAction(VoyageCatchesImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getSubSampleFile()); + } + + @Override + protected SubSampleImportExportModel createCsvImportModel(VoyageCatchesImportDataContext importDataContext) { + return SubSampleImportExportModel.forImport(importDataContext); + } + + @Override + protected SubSampleImportExportModel createCsvExportModel(VoyageCatchesImportDataContext importDataContext) { + return SubSampleImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of subSample from file " + inputFile.getFileName()); + } + + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + Collection<Operation> operationWithTotalOrUnsortedSample = importDataContext.getVoyageOperationsWithTotalOrUnsortedSample(); + + SampleType sampleTypeSubsample = importDataContext.getSampleTypeSubsample(); + SampleDataType sampleDataTypeNumberAtLength = importDataContext.getSampleDataTypeNumberAtLength(); + SampleDataType sampleDataTypeNumberAtLength05cm = importDataContext.getSampleDataTypeNumberAtLength05cm(); + SampleDataType sampleDataTypeNumberAtLength1cm = importDataContext.getSampleDataTypeNumberAtLength1cm(); + SampleDataType sampleDataTypeWeightAtLength = importDataContext.getSampleDataTypeWeightAtLength(); + + try (Import<SubSampleImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (SubSampleImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Operation operation = row.getOperation(); + + checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); + + Species species = row.getSpecies(); + SizeCategory sizeCategory = row.getSizeCategory(); + SexCategory sexCategory = row.getSexCategory(); + + SpeciesCategory category = speciesCategoryCache.getSpeciesCategory(species, sizeCategory, null, sexCategory, result); + + // find the sample with this category + Sample sample = operation.getSample(category, sampleTypeSubsample); + + if (sample == null) { + + // must create it + sample = row.getSample(); + + sample.setSpeciesCategory(category); + sample.setSampleType(sampleTypeSubsample); + + sample = addSample(operation, sample, result); + } + + Integer round = row.getRound(); + SampleDataType dataType = sampleDataTypeNumberAtLength; + + if (round == null) { + dataType = sampleDataTypeNumberAtLength; + } else if (round == 5) { + dataType = sampleDataTypeNumberAtLength05cm; + } else if (round == 1) { + dataType = sampleDataTypeNumberAtLength1cm; + } + + //create numberAtLength data + addSampleData(dataType, "" + row.getLengthClass(), row.getNumberAtLength(), sample, result); + + if (row.getWeightAtLength() != null) { + + //create weightAtLength data + addSampleData(sampleDataTypeWeightAtLength, "" + row.getLengthClass(), row.getWeightAtLength(), sample, result); + } + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/TotalSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java similarity index 54% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/TotalSampleImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java index f38d7c3..c9f7580 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/TotalSampleImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java @@ -1,89 +1,65 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleDataTypeImpl; import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SampleTypeImpl; import fr.ifremer.echobase.entities.references.SizeCategories; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; import fr.ifremer.echobase.services.service.importdata.DuplicatedSampleException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.TotalSampleImportModel; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.TotalSampleImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.TotalSampleImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - /** * Created on 25/03/16. * * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class TotalSampleImportAction extends AbstractImportAction<CatchesImportConfiguration, TotalSampleImportRow, TotalSampleImportModel> { +public class VoyageCatchesTotalSampleImportAction extends VoyageCatchesImportDataActionSupport<TotalSampleImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(TotalSampleImportAction.class); - - public TotalSampleImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CatchesImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getTotalSampleFile()); + private static final Log log = LogFactory.getLog(VoyageCatchesTotalSampleImportAction.class); + + public VoyageCatchesTotalSampleImportAction(VoyageCatchesImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getTotalSampleFile()); } @Override - protected TotalSampleImportModel createCsvImportModel(char csvSeparator, CatchesImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - // split them by operation Id - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); - - return new TotalSampleImportModel(csvSeparator, operationMap, speciesMap, sizeCategoryMap); + protected TotalSampleImportExportModel createCsvImportModel(VoyageCatchesImportDataContext importDataContext) { + return TotalSampleImportExportModel.forImport(importDataContext); } + @Override + protected TotalSampleImportExportModel createCsvExportModel(VoyageCatchesImportDataContext importDataContext) { + return TotalSampleImportExportModel.forExport(importDataContext); + } @Override - protected void performImport(CatchesImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of totalSample from file " + inputFile.getFileName()); } + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); - SampleType sampleTypeTotal = persistenceService.getSampleTypeByName(SampleTypeImpl.TOTAL_SAMPLE_TYPE); - SampleType sampleTypeUnsorted = persistenceService.getSampleTypeByName(SampleTypeImpl.UNSORTED_SAMPLE_TYPE); - SampleType sampleTypeSorted = persistenceService.getSampleTypeByName(SampleTypeImpl.SORTED_SAMPLE_TYPE); + SampleType sampleTypeTotal = importDataContext.getSampleTypeTotal(); + SampleType sampleTypeUnsorted = importDataContext.getSampleTypeUnsorted(); + SampleType sampleTypeSorted = importDataContext.getSampleTypeSorted(); - SampleDataType sampleDataTypeMeanLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_LENGTHCM); - SampleDataType sampleDataTypeMeanWeight = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_WEIGHTG); - SampleDataType sampleDataTypeNoPerKg = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NO_PER_KG); + SampleDataType sampleDataTypeMeanLength = importDataContext.getSampleDataTypeMeanLength(); + SampleDataType sampleDataTypeMeanWeight = importDataContext.getSampleDataTypeMeanWeight(); + SampleDataType sampleDataTypeNoPerKg = importDataContext.getSampleDataTypeNoPerKg(); try (Import<TotalSampleImportRow> importer = open()) { @@ -97,7 +73,7 @@ public class TotalSampleImportAction extends AbstractImportAction<CatchesImportC Species species = row.getSpecies(); SizeCategory sizeCategory = row.getSizeCategory(); - SpeciesCategory category = getSpeciesCategory(species, sizeCategory, null, null, result); + SpeciesCategory category = speciesCategoryCache.getSpeciesCategory(species, sizeCategory, null, null, result); SampleType sampleType; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java new file mode 100644 index 0000000..a169a54 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java @@ -0,0 +1,18 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageCommonsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageCommonsImportConfiguration, VoyageCommonsImportDataContext, E> { + + protected VoyageCommonsImportDataActionSupport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransectImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java similarity index 58% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransectImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java index 08e4022..d27157a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransectImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java @@ -1,29 +1,20 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.NoTransitFoundBetweenDateException; -import fr.ifremer.echobase.services.service.importdata.csv.TransectImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.TransectImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.TransectImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; -import java.util.Collections; import java.util.Date; -import java.util.Locale; -import java.util.Map; /** * Created on 25/03/16. @@ -31,47 +22,37 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class CommonTransectImportAction extends AbstractImportAction<CommonImportConfiguration, TransectImportRow, TransectImportModel> { +public class VoyageCommonsTransectImportAction extends VoyageCommonsImportDataActionSupport<TransectImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(CommonTransectImportAction.class); + private static final Log log = LogFactory.getLog(VoyageCommonsTransectImportAction.class); private final boolean collectIds; - public CommonTransectImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CommonImportConfiguration configuration, - EchoBaseUser user, - boolean collectIds) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getTransectFile()); + public VoyageCommonsTransectImportAction(VoyageCommonsImportDataContext importDataContext, boolean collectIds) { + super(importDataContext, importDataContext.getConfiguration().getTransectFile()); this.collectIds = collectIds; } @Override - protected TransectImportModel createCsvImportModel(char csvSeparator, CommonImportConfiguration configuration) { + protected TransectImportExportModel createCsvImportModel(VoyageCommonsImportDataContext importDataContext) { + return TransectImportExportModel.forImport(importDataContext); - // get usable vessels - Map<String, Vessel> vesselMap = persistenceService.getEntitiesMap(Vessel.class, Vessels.VESSEL_NAME); - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // restrict voyage to use to this voyage - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - return new TransectImportModel(csvSeparator, voyageMap, vesselMap); + } + @Override + protected TransectImportExportModel createCsvExportModel(VoyageCommonsImportDataContext importDataContext) { + return TransectImportExportModel.forExport(importDataContext); } @Override - protected void performImport(CommonImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of transects from file " + inputFile.getFileName()); } - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - + Voyage voyage = importDataContext.getVoyage(); String datum = getConfiguration().getDatum(); String license = getConfiguration().getTransectLicence(); String geospatialVerticalPositive = getConfiguration().getTransectGeospatialVerticalPositive(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransitImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java similarity index 50% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransitImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java index 2d2d800..e3b647f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransitImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java @@ -1,68 +1,53 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.TransitImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.TransitImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.TransitImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - /** * Created on 25/03/16. * * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class CommonTransitImportAction extends AbstractImportAction<CommonImportConfiguration, TransitImportRow, TransitImportModel> { +public class VoyageCommonsTransitImportAction extends VoyageCommonsImportDataActionSupport< TransitImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(CommonTransitImportAction.class); + private static final Log log = LogFactory.getLog(VoyageCommonsTransitImportAction.class); private final boolean collectIds; - public CommonTransitImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CommonImportConfiguration configuration, - EchoBaseUser user, - boolean collectIds) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getTransitFile()); + public VoyageCommonsTransitImportAction(VoyageCommonsImportDataContext importDataContext, boolean collectIds) { + super(importDataContext, importDataContext.getConfiguration().getTransitFile()); this.collectIds = collectIds; } @Override - protected TransitImportModel createCsvImportModel(char csvSeparator, CommonImportConfiguration configuration) { - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // restrict voyage to use to this voyage - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - return new TransitImportModel(csvSeparator, voyageMap); + protected TransitImportExportModel createCsvImportModel(VoyageCommonsImportDataContext importDataContext) { + return TransitImportExportModel.forImport(importDataContext); + } + @Override + protected TransitImportExportModel createCsvExportModel(VoyageCommonsImportDataContext importDataContext) { + return TransitImportExportModel.forExport(importDataContext); } @Override - protected void performImport(CommonImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of transits from file " + inputFile.getFileName()); } - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); + Voyage voyage = importDataContext.getVoyage(); String relatedActivity = getConfiguration().getTransitRelatedActivity(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonVoyageImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java similarity index 62% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonVoyageImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java index a5328fb..b4db779 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonVoyageImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java @@ -1,17 +1,15 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.MoreThanOnceVoyageToImportException; import fr.ifremer.echobase.services.service.importdata.NoVoyageToImportException; -import fr.ifremer.echobase.services.service.importdata.csv.VoyageImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.VoyageImportExportModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; @@ -24,34 +22,36 @@ import java.util.Locale; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class CommonVoyageImportAction extends AbstractImportAction<CommonImportConfiguration, Voyage, VoyageImportModel> { +public class VoyageCommonsVoyageImportAction extends VoyageCommonsImportDataActionSupport<Voyage> { /** Logger. */ - private static final Log log = LogFactory.getLog(CommonVoyageImportAction.class); - - public CommonVoyageImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CommonImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getVoyageFile()); + private static final Log log = LogFactory.getLog(VoyageCommonsVoyageImportAction.class); + + + public VoyageCommonsVoyageImportAction(VoyageCommonsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getVoyageFile()); + } + + @Override + protected VoyageImportExportModel createCsvImportModel(VoyageCommonsImportDataContext importDataContext) { + return VoyageImportExportModel.forImport(importDataContext); } @Override - protected VoyageImportModel createCsvImportModel(char csvSeparator, CommonImportConfiguration configuration) { - return new VoyageImportModel(csvSeparator); + protected VoyageImportExportModel createCsvExportModel(VoyageCommonsImportDataContext importDataContext) { + return VoyageImportExportModel.forExport(importDataContext); } @Override - public void performImport(CommonImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + public void performImport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of voyages from file " + inputFile.getFileName()); } - Mission mission = persistenceService.getMission(configuration.getMissionId()); - AreaOfOperation areaOfOperation = persistenceService.getAreaOfOperation(configuration.getAreaOfOperationId()); + Mission mission = getPersistenceService().getMission(importDataContext.getConfiguration().getMissionId()); + AreaOfOperation areaOfOperation = getPersistenceService().getAreaOfOperation(importDataContext.getConfiguration().getAreaOfOperationId()); String voyageDescription = getConfiguration().getVoyageDescription(); String datum = getConfiguration().getDatum(); @@ -72,7 +72,7 @@ public class CommonVoyageImportAction extends AbstractImportAction<CommonImportC voyage.setDescription(voyageDescription); voyage.setDatum(datum); - Voyage createdVoyage = persistenceService.createVoyage(voyage); + Voyage createdVoyage = getPersistenceService().createVoyage(voyage); if (newVoyage == null) { newVoyage = createdVoyage; } else { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java new file mode 100644 index 0000000..8523a64 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java @@ -0,0 +1,68 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageOperationsGearMetadataImportAction extends VoyageOperationsImportDataActionSupport<GearMetadataValueImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageOperationsGearMetadataImportAction.class); + + public VoyageOperationsGearMetadataImportAction(VoyageOperationsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getGearMetadataFile()); + } + + @Override + protected GearMetadataValueImportExportModel createCsvImportModel(VoyageOperationsImportDataContext importDataContext) { + return GearMetadataValueImportExportModel.forImport(importDataContext); + } + + @Override + protected GearMetadataValueImportExportModel createCsvExportModel(VoyageOperationsImportDataContext importDataContext) { + return GearMetadataValueImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of gear metadata values from file " + inputFile.getFileName()); + } + + try (Import<GearMetadataValueImportRow> importer = open()) { + + int rowNumber = 0; + incrementsProgress(); + for (GearMetadataValueImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Operation operation = row.getOperation(); + + GearMetadataValue gearMetadataValuetoCreate = row.getGearMetadataValue(); + GearMetadataValue gearMetadataValue = persistenceService.createGearMetadataValue(gearMetadataValuetoCreate); + + operation.addGearMetadataValue(gearMetadataValue); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.GearMetadataValue); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java new file mode 100644 index 0000000..641c3aa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java @@ -0,0 +1,18 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageOperationsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageOperationsImportConfiguration, VoyageOperationsImportDataContext, E> { + + protected VoyageOperationsImportDataActionSupport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java new file mode 100644 index 0000000..bc8d8c0 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java @@ -0,0 +1,86 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Transect; +import fr.ifremer.echobase.entities.data.Transit; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.OperationImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.OperationImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.Date; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageOperationsOperationImportAction extends VoyageOperationsImportDataActionSupport<OperationImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageOperationsOperationImportAction.class); + + public VoyageOperationsOperationImportAction(VoyageOperationsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getOperationFile()); + } + + @Override + protected OperationImportExportModel createCsvImportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationImportExportModel.forImport(importDataContext); + } + + @Override + protected OperationImportExportModel createCsvExportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of operation from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + + try (Import<OperationImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (OperationImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Vessel vessel = row.getVessel(); + + Operation operation = row.getOperation(); + + Date startTime = operation.getGearShootingStartTime(); + Date endTime = operation.getGearShootingEndTime(); + + Transit transit = voyage.getTransit(startTime, endTime); + + Transect transect = transit.getTransect(vessel); + + Operation createdOperation = persistenceService.createOperation(operation); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Operation, createdOperation); + + transect.addOperation(createdOperation); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java new file mode 100644 index 0000000..c52e613 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java @@ -0,0 +1,68 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageOperationsOperationMetadataImportAction extends VoyageOperationsImportDataActionSupport<OperationMetadataValueImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageOperationsOperationMetadataImportAction.class); + + public VoyageOperationsOperationMetadataImportAction(VoyageOperationsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getOperationMetadataFile()); + } + + @Override + protected OperationMetadataValueImportExportModel createCsvImportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationMetadataValueImportExportModel.forImport(importDataContext); + } + + @Override + protected OperationMetadataValueImportExportModel createCsvExportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationMetadataValueImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of operation metadata values from file " + inputFile.getFileName()); + } + + try (Import<OperationMetadataValueImportRow> importer = open()) { + + int rowNumber = 0; + incrementsProgress(); + for (OperationMetadataValueImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Operation operation = row.getOperation(); + + OperationMetadataValue operationMetadataValueToCreate = row.getOperationMetadataValue(); + OperationMetadataValue operationMetadataValue = persistenceService.createOperationMetadataValue(operationMetadataValueToCreate); + + operation.addOperationMetadataValue(operationMetadataValue); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.OperationMetadataValue); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java new file mode 100644 index 0000000..1a83ea1 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java @@ -0,0 +1,80 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultByEchotypeAndSpeciesCategoryImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduByEchotypeAndSpeciesCategoryFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultByEchotypeAndSpeciesCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultByEchotypeAndSpeciesCategoryImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeAndSpeciesCategoryImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultByEchotypeAndSpeciesCategoryImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeAndSpeciesCategoryImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of acoustic result by echotype and species category from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultByEchotypeAndSpeciesCategoryImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (EsduResultByEchotypeAndSpeciesCategoryImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + Category category = resultCategoryCache.getResultCategory(row.getEchotype(), + row.getSpecies(), + row.getSizeCategory(), + null, + result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java new file mode 100644 index 0000000..b97e17c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java @@ -0,0 +1,77 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduByEchotypeCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultByEchotypeImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduByEchotypeCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduByEchotypeCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduByEchotypeFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultByEchotypeImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultByEchotypeImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultByEchotypeImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of esdu result by echotype from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultByEchotypeImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + + for (EsduResultByEchotypeImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + Category category = resultCategoryCache.getResultCategory(row.getEchotype(), null, result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java new file mode 100644 index 0000000..50b7290 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java @@ -0,0 +1,98 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; +import java.util.Map; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndAgeCategoryFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultBySpeciesAndAgeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultBySpeciesAndAgeCategoryImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndAgeCategoryImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultBySpeciesAndAgeCategoryImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndAgeCategoryImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of acoustic result by species and size category from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + + Map<String, AgeCategory> ageCategoryMap = importDataContext.getAgeCategoriesByName(); + + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultBySpeciesAndAgeCategoryImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + + for (EsduResultBySpeciesAndAgeCategoryImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + String ageCategoryName = row.getAgeCategory(); + + AgeCategory ageCategory = ageCategoryMap.get(ageCategoryName); + + if (ageCategory == null) { + + // create a new sizeCategory + ageCategory = persistenceService.createAgeCategory(ageCategoryName, row.getAgeCategoryMeaning()); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.AgeCategory); + if (log.isInfoEnabled()) { + log.info("Creates a new AgeCategory " + ageCategoryName); + } + ageCategoryMap.put(ageCategoryName, ageCategory); + } + + Category category = resultCategoryCache.getResultCategory(null, row.getSpecies(), null, ageCategory, result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java new file mode 100644 index 0000000..7adaa66 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java @@ -0,0 +1,100 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; +import java.util.Map; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndSizeCategoryFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultBySpeciesAndSizeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultBySpeciesAndSizeCategoryImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndSizeCategoryImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultBySpeciesAndSizeCategoryImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndSizeCategoryImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of acoustic result by speices and size category from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + Map<String, SizeCategory> sizeCategoryMap = importDataContext.getSizeCategoriesByName(); + + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultBySpeciesAndSizeCategoryImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (EsduResultBySpeciesAndSizeCategoryImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + String sizeCategoryName = row.getSizeCategory(); + + SizeCategory sizeCategory = sizeCategoryMap.get(sizeCategoryName); + + if (sizeCategory == null) { + + // create a new sizeCategory + sizeCategory = persistenceService.createSizeCategory(sizeCategoryName, row.getSizeCategoryMeaning()); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.SizeCategory); + if (log.isInfoEnabled()) { + log.info("Creates a new SizeCategory " + sizeCategoryName); + } + sizeCategoryMap.put(sizeCategoryName, sizeCategory); + } + + Category category = resultCategoryCache.getResultCategory(null, + row.getSpecies(), + sizeCategory, + null, + result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java new file mode 100644 index 0000000..3477b5b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java @@ -0,0 +1,64 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.ResultAble; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; + +import java.util.List; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageResultsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, E> { + + protected VoyageResultsImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + + protected void addResults(ResultAble row, + Cell cell, + Category category, + String resultLabel, + ImportDataFileResult importResult, + boolean collecIds, + boolean importNAResults) { + + List<Result> results = row.getResult(); + + for (Result result : results) { + + if (!importNAResults && EchoBaseCsvUtil.NA.equals(result.getResultValue())) { + + // Do not import NA results + continue; + } + result.setDataQuality(row.getDataQuality()); + result.setCategory(category); + result.setResultLabel(resultLabel); + + Result resultCreated = getPersistenceService().createResult(result); + cell.addResult(resultCreated); + + if (collecIds) { + + importResult.addId(EchoBaseUserEntityEnum.Result, resultCreated); + + } else { + + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Result); + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java new file mode 100644 index 0000000..0001b90 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java @@ -0,0 +1,141 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsMapFishCellImportAction extends VoyageResultsImportDataActionSupport<MapCellImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsMapFishCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsMapFishCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getMapsFile()); + metas = importDataContext.getMetas(getInputFile(), MapCellImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected MapCellImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected MapCellImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Map cells from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + + String resultLabel = getConfiguration().getResultLabel(); + + DataMetadata dataLongitudeMeta = importDataContext.getGridCellLongitudeMeta(); + DataMetadata dataLatitudeMeta = importDataContext.getGridCellLatitudeMeta(); + DataMetadata dataDepthMeta = importDataContext.getGridCellDepthMeta(); + DataMetadata dataLongitudeLagMeta = importDataContext.getGridLongitudeLagMeta(); + DataMetadata dataLatitudeLagMeta = importDataContext.getGridLatitudeLagMeta(); + DataMetadata dataDepthLagMeta = importDataContext.getGridDepthLagMeta(); + + try (Import<MapCellImportRow> importer = open()) { + + incrementsProgress(); + + int rowNumber = 0; + for (MapCellImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = persistenceService.createCell(row.getCell()); + voyage.addPostCell(cell); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Cell, cell); + + DataQuality dataQuality = row.getDataQuality(); + + // add gridCellLongitude data + createCellData(cell, + dataLongitudeMeta, + String.valueOf(row.getGridCellLongitude()), + dataQuality, + result); + + // add gridCellLatitude data + createCellData(cell, + dataLatitudeMeta, + String.valueOf(row.getGridCellLatitude()), + dataQuality, + result); + + // add gridCellDepth data + createCellData(cell, + dataDepthMeta, + String.valueOf(row.getGridCellDepth()), + dataQuality, + result); + + // add gridLongitudeLag data + createCellData(cell, + dataLongitudeLagMeta, + String.valueOf(row.getGridLongitudeLag()), + dataQuality, + result); + + // add gridLatitudeLag data + createCellData(cell, + dataLatitudeLagMeta, + String.valueOf(row.getGridLatitudeLag()), + dataQuality, + result); + + // add gridDepthLag data + createCellData(cell, + dataDepthLagMeta, + String.valueOf(row.getGridDepthLag()), + dataQuality, + result); + + Category category = resultCategoryCache.getResultCategory(null, + row.getSpecies(), + row.getSizeCategory(), + row.getAgeCategory(), + result); + + addResults(row, cell, category, resultLabel, result, false, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java new file mode 100644 index 0000000..97f64f6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java @@ -0,0 +1,132 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsMapOtherCellImportAction extends VoyageResultsImportDataActionSupport<MapCellImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsMapOtherCellImportAction.class); + + protected final List<DataMetadata> metas; + + public VoyageResultsMapOtherCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getMapsFile()); + metas = importDataContext.getMetas(getInputFile(), MapCellImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected MapCellImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected MapCellImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Map Other cells from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + + String resultLabel = getConfiguration().getResultLabel(); + + DataMetadata dataLongitudeMeta = importDataContext.getGridCellLongitudeMeta(); + DataMetadata dataLatitudeMeta = importDataContext.getGridCellLatitudeMeta(); + DataMetadata dataDepthMeta = importDataContext.getGridCellDepthMeta(); + DataMetadata dataLongitudeLagMeta = importDataContext.getGridLongitudeLagMeta(); + DataMetadata dataLatitudeLagMeta = importDataContext.getGridLatitudeLagMeta(); + DataMetadata dataDepthLagMeta = importDataContext.getGridDepthLagMeta(); + + try (Import<MapCellImportRow> importer = open()) { + + incrementsProgress(); + + int rowNumber = 0; + for (MapCellImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = persistenceService.createCell(row.getCell()); + voyage.addPostCell(cell); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Cell, cell); + + DataQuality dataQuality = row.getDataQuality(); + + // add gridCellLongitude data + createCellData(cell, + dataLongitudeMeta, + String.valueOf(row.getGridCellLongitude()), + dataQuality, + result); + + // add gridCellLatitude data + createCellData(cell, + dataLatitudeMeta, + String.valueOf(row.getGridCellLatitude()), + dataQuality, + result); + + // add gridCellDepth data + createCellData(cell, + dataDepthMeta, + String.valueOf(row.getGridCellDepth()), + dataQuality, + result); + + // add gridLongitudeLag data + createCellData(cell, + dataLongitudeLagMeta, + String.valueOf(row.getGridLongitudeLag()), + dataQuality, + result); + + // add gridLatitudeLag data + createCellData(cell, + dataLatitudeLagMeta, + String.valueOf(row.getGridLatitudeLag()), + dataQuality, + result); + + // add gridDepthLag data + createCellData(cell, + dataDepthLagMeta, + String.valueOf(row.getGridDepthLag()), + dataQuality, + result); + + addResults(row, cell, null, resultLabel, result, false, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java new file mode 100644 index 0000000..3bdd735 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java @@ -0,0 +1,65 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsRegionAssociationImportAction extends VoyageResultsImportDataActionSupport<RegionCellAssociationImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsRegionAssociationImportAction.class); + + public VoyageResultsRegionAssociationImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getRegionAssociationFile()); + } + + @Override + protected RegionCellAssociationImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellAssociationImportExportModel.forImport(importDataContext); + } + + @Override + protected RegionCellAssociationImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellAssociationImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Region cells association from file " + inputFile.getFileName()); + } + + try (Import<RegionCellAssociationImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (RegionCellAssociationImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell regionCell = row.getRegionCell(); + Cell esduCell = row.getEsduCell(); + regionCell.addChilds(esduCell); + result.incrementsNumberUpdated(EchoBaseUserEntityEnum.Cell); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java new file mode 100644 index 0000000..406a92d --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java @@ -0,0 +1,89 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActionSupport<RegionCellImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsRegionImportAction.class); + + public VoyageResultsRegionImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getRegionsFile()); + } + + @Override + protected RegionCellImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellImportExportModel.forImport(importDataContext); + } + + @Override + protected RegionCellImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + DataMetadata dataCoordinateMeta = importDataContext.getRegionEnvCoordinateMeta(); + DataMetadata dataSurfaceMeta = importDataContext.getSurfaceMeta(); + + if (log.isInfoEnabled()) { + log.info("Starts import of Region cells from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + try (Import<RegionCellImportRow> importer = open()) { + + Cell cell = null; + + incrementsProgress(); + int rowNumber = 0; + for (RegionCellImportRow row : importer) { + + doFlushTransaction(++rowNumber); + if (cell == null || !row.getName().equals(cell.getName())) { + + cell = persistenceService.createCell(row.getCellType(), row.getName()); + voyage.addPostCell(cell); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Cell, cell); + + // add surface data + createCellData(cell, + dataSurfaceMeta, + String.valueOf(row.getDataSurface()), + row.getDataQuality(), + result); + } + + // add coordinate data + createCellData(cell, + dataCoordinateMeta, + row.getDataCoordinate(), + row.getDataQuality(), + result); + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java new file mode 100644 index 0000000..2991dee --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java @@ -0,0 +1,81 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsRegionResultsImportAction extends VoyageResultsImportDataActionSupport<RegionCellResultImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsRegionResultsImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsRegionResultsImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getRegionResultFile()); + metas = importDataContext.getMetas(getInputFile(), RegionCellResultImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected RegionCellResultImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellResultImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected RegionCellResultImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellResultImportExportModel.forExport(importDataContext, metas); + + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Region cell results from file " + inputFile.getFileName()); + } + + String resultLabel = getConfiguration().getResultLabel(); + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + + try (Import<RegionCellResultImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (RegionCellResultImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + Category category = resultCategoryCache.getResultCategory(row.getEchotype(), + row.getSpecies(), + row.getSizeCategory(), + null, + result); + + addResults(row, cell, category, resultLabel, result, false, false); + + } + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java similarity index 55% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageEchotypeImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java index c4b1b01..2d3bc37 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageEchotypeImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java @@ -2,31 +2,21 @@ package fr.ifremer.echobase.services.service.importdata.actions; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Echotypes; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.DepthStratums; import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EchotypeImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EchotypeImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.EchotypeImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; import java.util.Collection; -import java.util.Collections; -import java.util.Locale; -import java.util.Map; /** * Created on 25/03/16. @@ -34,35 +24,27 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class ResultsVoyageEchotypeImportAction extends AbstractImportAction<ResultsImportConfiguration, EchotypeImportRow, EchotypeImportModel> { +public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImportDataActionSupport<EchotypeImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsVoyageEchotypeImportAction.class); - - public ResultsVoyageEchotypeImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEchotypeFile()); + private static final Log log = LogFactory.getLog(VoyageResultsVoyageEchotypeImportAction.class); + + public VoyageResultsVoyageEchotypeImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEchotypeFile()); } @Override - protected EchotypeImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); + protected EchotypeImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EchotypeImportExportModel.forImport(importDataContext); + } - Map<String, DepthStratum> depthStratumMap = persistenceService.getEntitiesMap(DepthStratum.class, DepthStratums.DEPTH_STRATUM_ID); - return new EchotypeImportModel(csvSeparator, voyageMap, depthStratumMap, speciesMap); + @Override + protected EchotypeImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EchotypeImportExportModel.forExport(importDataContext); } @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of echotype from file " + inputFile.getFileName()); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java new file mode 100644 index 0000000..1493ce7 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java @@ -0,0 +1,73 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.LengthAgeKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsVoyageLengthAgeKeyImportAction extends VoyageResultsImportDataActionSupport<LengthAgeKeyImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsVoyageLengthAgeKeyImportAction.class); + + public VoyageResultsVoyageLengthAgeKeyImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getLengthAgeKeyFile()); + } + + @Override + protected LengthAgeKeyImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return LengthAgeKeyImportExportModel.forImport(importDataContext); + } + + @Override + protected LengthAgeKeyImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return LengthAgeKeyImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of lenthAgeKey from file " + inputFile.getFileName()); + } + + try (Import<LengthAgeKeyImportRow> importer = open()) { + + incrementsProgress(); + + int rowNumber = 0; + for (LengthAgeKeyImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Voyage voyage = row.getVoyage(); + + LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey(); + LengthAgeKey lengthAgeKey = persistenceService.createLengthAgeKey(lengthAgeKeyToCreate); + + // attach it to voyage + voyage.addLengthAgeKey(lengthAgeKey); + + // collect ids + result.addId(EchoBaseUserEntityEnum.LengthAgeKey, lengthAgeKey); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java new file mode 100644 index 0000000..eca495c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java @@ -0,0 +1,82 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.LengthWeightKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsVoyageLengthWeightKeyImportAction extends VoyageResultsImportDataActionSupport<LengthWeightKeyImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsVoyageLengthWeightKeyImportAction.class); + + public VoyageResultsVoyageLengthWeightKeyImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getLengthWeightKeyFile()); + } + + @Override + protected LengthWeightKeyImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return LengthWeightKeyImportExportModel.forImport(importDataContext); + } + + @Override + protected LengthWeightKeyImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return LengthWeightKeyImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of lenthWeightKey from file " + inputFile.getFileName()); + } + + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + + try (Import<LengthWeightKeyImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (LengthWeightKeyImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Voyage voyage = row.getVoyage(); + + // find speciesCategory + SpeciesCategory speciesCategory = speciesCategoryCache.getSpeciesCategory(row.getSpecies(), row.getSizeCategory(), null, null, result); + + LengthWeightKey toCreate = row.getLengthWeightKey(); + toCreate.setSpeciesCategory(speciesCategory); + + LengthWeightKey lengthWeightKey = persistenceService.createLengthWeightKey(toCreate); + + //TODO should we import it ? + //lengthWeightKey.setMetadata(row.getMetadata()); + + // attach it to voyage + voyage.addLengthWeightKey(lengthWeightKey); + + // collect ids + result.addId(EchoBaseUserEntityEnum.LengthWeightKey, lengthWeightKey); + + } + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportDataConfigurationSupport.java similarity index 86% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportDataConfigurationSupport.java index bffeff6..818e589 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportDataConfigurationSupport.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.EchoBaseIOUtil; @@ -33,13 +33,10 @@ import java.io.File; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public abstract class AbstractImportConfiguration extends AbstractEchobaseActionConfiguration { +public abstract class ImportDataConfigurationSupport extends AbstractEchobaseActionConfiguration { private static final long serialVersionUID = 1L; - /** Selected voyage id where to import datas. */ - protected String voyageId; - /** Directory where to store temporary files. */ protected File workingDirectory; @@ -55,14 +52,6 @@ public abstract class AbstractImportConfiguration extends AbstractEchobaseAction */ protected ImportType importType; - public final String getVoyageId() { - return voyageId; - } - - public final void setVoyageId(String voyageId) { - this.voyageId = voyageId; - } - public File getWorkingDirectory() { return workingDirectory; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AcousticImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageAcousticsImportConfiguration.java similarity index 95% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AcousticImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageAcousticsImportConfiguration.java index e1247ed..2be11af 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AcousticImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageAcousticsImportConfiguration.java @@ -18,11 +18,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.CellPositionReference; import java.util.Locale; @@ -34,66 +35,48 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class AcousticImportConfiguration extends AbstractImportConfiguration { +public class VoyageAcousticsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; - + /** Movies file to import. */ + protected final InputFile moviesFile; /** Selected vessel id to find out transect where to import datas. */ protected String vesselId; - /** Flag to always add new dataAcquisition when a new instrument is found in movies file. */ protected boolean addDataAcquisition = true; - /** Manual transceiverAcquisitionAbsorptionDescription. */ protected String transceiverAcquisitionAbsorptionDescription = "(i) Equation: Francois and garrison 1982,(ii) CTD, (iii) nominal value for entire data set"; - /** Manual acquisitionSoftwareVersion (ER60 instrument). */ protected String acquisitionSoftwareVersionER60; - /** Manual acquisitionSoftwareVersion (ME70 instrument). */ protected String acquisitionSoftwareVersionME70; - /** Manual loggedDataFormat. */ protected String loggedDataFormat = ".hac and .raw formats"; - /** Manual loggedDataDatatype. */ protected String loggedDataDatatype = "‘raw’ digitisation samples"; - /** Manual pingDutyCycle. */ protected String pingDutyCycle = "Ifremer's standard ping duty cycle"; - /** Manual soundSpeedCalculations (ER60 instrument). */ protected String soundSpeedCalculationsER60 = "(i) Equation: Mackenzie (1980), (ii) CTD, (iii) nominal value for entire data set"; - /** Manual soundSpeedCalculations (ME70 instrument). */ protected String soundSpeedCalculationsME70 = "(i) Equation: Mackenzie (1980), (ii) Hull-mounted thermosalinometer, (iii) surface absorption value recomputed every 30s and applied to the entire data set"; - /** Manual sounderConstant. */ protected String sounderConstant = EchoBaseCsvUtil.NA; - /** Manual processingTemplate. */ protected String processingTemplate; - /** Manual processingDescription. */ protected String processingDescription; - /** Manual digitThreshold. */ protected float digitThreshold = -100f; - /** Manual acousticDensityUnit. */ protected String acousticDensityUnit = "sA"; - /** Manual notes. */ protected String notes; - /** Cell position reference for esdu cell datas. */ protected CellPositionReference cellPositionReference; - /** Movies file to import. */ - protected final InputFile moviesFile; - - public AcousticImportConfiguration(Locale locale) { + public VoyageAcousticsImportConfiguration(Locale locale) { moviesFile = InputFile.newFile(l(locale, "echobase.common.moviesFile")); importType = ImportType.ACOUSTIC; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CatchesImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCatchesImportConfiguration.java similarity index 90% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CatchesImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCatchesImportConfiguration.java index 4878cbc..e61dd7a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CatchesImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCatchesImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class CatchesImportConfiguration extends AbstractImportConfiguration { +public class VoyageCatchesImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; @@ -46,7 +46,7 @@ public class CatchesImportConfiguration extends AbstractImportConfiguration { /** Biometry sample file to import. */ protected final InputFile biometrySampleFile; - public CatchesImportConfiguration(Locale locale) { + public VoyageCatchesImportConfiguration(Locale locale) { totalSampleFile = InputFile.newFile(l(locale, "echobase.common.totalSampleFile")); subSampleFile = InputFile.newFile(l(locale, "echobase.common.subSampleFile")); biometrySampleFile = InputFile.newFile(l(locale, "echobase.common.biometrySampleFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CommonImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCommonsImportConfiguration.java similarity index 95% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CommonImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCommonsImportConfiguration.java index c252fe2..e435853 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CommonImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCommonsImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.io.InputFile; @@ -32,44 +32,33 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class CommonImportConfiguration extends AbstractImportConfiguration { +public class VoyageCommonsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; - + /** Voyage file to import. */ + protected final InputFile voyageFile; + /** Transit file to import. */ + protected final InputFile transitFile; + /** Transect file to import. */ + protected final InputFile transectFile; /** Selected mission id to use in voyage. */ protected String missionId; - /** Selected area of operation to use for voyage. */ protected String areaOfOperationId; - /** Manual description of voyage. */ protected String voyageDescription; - /** transit related activity. */ protected String transitRelatedActivity; - /** transect license. */ protected String transectLicence; - /** transect geospatialVerticalPositive. */ protected String transectGeospatialVerticalPositive = "down"; - /** transect binUnitsPingAxis. */ protected String transectBinUnitsPingAxis = "1 nautical mile"; - /** Manual datum to use in voyage. */ protected String datum = "WGS84"; - /** Voyage file to import. */ - protected final InputFile voyageFile; - - /** Transit file to import. */ - protected final InputFile transitFile; - - /** Transect file to import. */ - protected final InputFile transectFile; - - public CommonImportConfiguration(Locale locale) { + public VoyageCommonsImportConfiguration(Locale locale) { voyageFile = InputFile.newFile(l(locale, "echobase.common.voyageFile")); transitFile = InputFile.newFile(l(locale, "echobase.common.transitFile")); transectFile = InputFile.newFile(l(locale, "echobase.common.transectFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageImportDataConfigurationSupport.java similarity index 57% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageImportDataConfigurationSupport.java index a6fe12e..b89c157 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageImportDataConfigurationSupport.java @@ -1,5 +1,3 @@ -package fr.ifremer.echobase.services.service.exportquery; - /* * #%L * EchoBase :: Services @@ -20,28 +18,27 @@ package fr.ifremer.echobase.services.service.exportquery; * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import org.nuiton.csv.ext.AbstractExportModel; - -import java.util.Map; +package fr.ifremer.echobase.services.service.importdata.configurations; /** - * Csv model to export sql in {@link ExportQueryService}. + * Common import data configuration. * * @author Tony Chemit - chemit@codelutin.com - * @since 0.2 + * @since 0.3 */ -public class ExportQueryCsvModel extends AbstractExportModel<Map<String, Object>> { +public abstract class VoyageImportDataConfigurationSupport extends ImportDataConfigurationSupport { + + private static final long serialVersionUID = 1L; + + /** Selected voyage id where to import datas. */ + protected String voyageId; + + public final String getVoyageId() { + return voyageId; + } - public ExportQueryCsvModel(char separator, String[] columnHeaders) { - super(separator); - for (String columnHeader : columnHeaders) { - newColumnForExport( - columnHeader, - EchoBaseCsvUtil.TO_STRING_FORMATTER - ); - } + public final void setVoyageId(String voyageId) { + this.voyageId = voyageId; } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/OperationImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageOperationsImportConfiguration.java similarity index 90% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/OperationImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageOperationsImportConfiguration.java index 341c938..1dc0c2e 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/OperationImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageOperationsImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class OperationImportConfiguration extends AbstractImportConfiguration { +public class VoyageOperationsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; @@ -46,7 +46,7 @@ public class OperationImportConfiguration extends AbstractImportConfiguration { /** gear metadatas file to import. */ protected final InputFile gearMetadataFile; - public OperationImportConfiguration(Locale locale) { + public VoyageOperationsImportConfiguration(Locale locale) { operationFile = InputFile.newFile(l(locale, "echobase.common.operationFile")); operationMetadataFile = InputFile.newFile(l(locale, "echobase.common.operationMetadataFile")); gearMetadataFile = InputFile.newFile(l(locale, "echobase.common.gearMetadataFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java similarity index 96% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java index f73ef83..6dfd8d7 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.io.InputFile; @@ -32,53 +32,39 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ResultsImportConfiguration extends AbstractImportConfiguration { +public class VoyageResultsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; - - /** Selected dataProcessing id where to search esdu or elementary cells. */ - protected String dataProcessingId; - - /** Selected vessel id to find out transect where to import datas. */ - protected String vesselId; - - /** resultLabel to store while importing acoustic result. */ - protected String resultLabel; - /** Acoustic result by echotype import. */ protected final InputFile esduByEchotypeFile; - /** Acoustic result by echotype and species category import. */ protected final InputFile esduByEchotypeAndSpeciesCategoryFile; - /** Acoustic result by species and size category import. */ protected final InputFile esduBySpeciesAndSizeCategoryFile; - /** Acoustic result by species and age category import. */ protected final InputFile esduBySpeciesAndAgeCategoryFile; - /** Region file to import. */ protected final InputFile regionsFile; - /** Region cell associations file to import. */ protected final InputFile regionAssociationFile; - /** Region cell results file to import. */ protected final InputFile regionResultFile; - /** Map cells file to import. */ protected final InputFile mapsFile; - /** Echotype file to import. */ protected final InputFile echotypeFile; - /** LengthAgeKey file to import. */ protected final InputFile lengthAgeKeyFile; - /** LengthWeightKey file to import. */ protected final InputFile lengthWeightKeyFile; + /** Selected dataProcessing id where to search esdu or elementary cells. */ + protected String dataProcessingId; + /** Selected vessel id to find out transect where to import datas. */ + protected String vesselId; + /** resultLabel to store while importing acoustic result. */ + protected String resultLabel; - public ResultsImportConfiguration(Locale locale) { + public VoyageResultsImportConfiguration(Locale locale) { regionsFile = InputFile.newFile(l(locale, "echobase.common.cellRegionsFile")); regionAssociationFile = InputFile.newFile(l(locale, "echobase.common.cellRegionAssociationFile")); regionResultFile = InputFile.newFile(l(locale, "echobase.common.cellRegionResultFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java new file mode 100644 index 0000000..3d0c2ab --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java @@ -0,0 +1,234 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.AcousticInstruments; +import fr.ifremer.echobase.entities.references.AgeCategories; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.CellTypes; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataMetadatas; +import fr.ifremer.echobase.entities.references.DataQualities; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.DepthStratums; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.GearMetadatas; +import fr.ifremer.echobase.entities.references.Gears; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.OperationMetadatas; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleDataTypes; +import fr.ifremer.echobase.entities.references.SexCategories; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategories; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Species2; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.entities.references.Stratas; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.entities.references.Vessels; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportDataConfigurationSupport; + +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ImportDataContextSupport<C extends ImportDataConfigurationSupport> { + + protected final UserDbPersistenceService persistenceService; + protected final char csvSeparator; + protected final C configuration; + private final Locale locale; + private final EchoBaseUser user; + + private Map<String, Vessel> vesselsByName; + private Map<String, Gear> gearsByCasinoGearName; + private Map<String, DepthStratum> depthStratumsById; + private Map<String, OperationMetadata> operationMetadatasByName; + private Map<String, GearMetadata> gearMetadatasByName; + private Map<String, DataMetadata> dataMetadatasByName; + private Map<String, Species> speciesByBaracoudaCode; + private Map<String, SampleDataType> sampleDataTypesByName; + private Map<String, SizeCategory> sizeCategoriesByName; + private Map<String, SexCategory> sexCategoriesByName; + private Map<String, AcousticInstrument> instrumentsById; + private Map<String, DataQuality> dataQualitiesByName; + private Map<String, Strata> stratasByName; + private Map<String, CellType> regionCellTypesById; + private Map<String, AgeCategory> ageCategoriesByName; + + private CellType esduCellType; + private CellType elementaryCellType; + private CellType mapCellType; + + ImportDataContextSupport(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, C configuration, EchoBaseUser user) { + this.persistenceService = persistenceService; + this.locale = locale; + this.csvSeparator = csvSeparator; + this.configuration = configuration; + this.user = user; + } + + public final Map<String, AgeCategory> getAgeCategoriesByName() { + if (ageCategoriesByName == null) { + ageCategoriesByName = new TreeMap<>(); + ageCategoriesByName.putAll(persistenceService.getEntitiesMap(AgeCategory.class, AgeCategories.AGE_CATEGORY_NAME)); + } + return ageCategoriesByName; + } + + public final Map<String, CellType> getRegionCellTypesById() { + if (regionCellTypesById == null) { + Set<CellType> allCellTypes = persistenceService.getRegionCellTypes(); + + // authorize only to use region* cell types + regionCellTypesById = Maps.uniqueIndex(allCellTypes, CellTypes.CELL_TYPE_ID); + } + return regionCellTypesById; + } + + public final CellType getEsduCellType() { + if (esduCellType == null) { + esduCellType = persistenceService.getEsduCellType(); + } + return esduCellType; + } + + public final CellType getElementaryCellType() { + if (elementaryCellType == null) { + elementaryCellType = persistenceService.getElementaryCellType(); + } + return elementaryCellType; + } + + public final CellType getMapCellType() { + if (mapCellType == null) { + mapCellType = persistenceService.getMapCellType(); + } + return mapCellType; + } + + public final Map<String, Strata> getStratasByName() { + if (stratasByName == null) { + stratasByName = persistenceService.getEntitiesMap(Strata.class, Stratas.STRATA_BY_NAME); + } + return stratasByName; + } + + public final Map<String, AcousticInstrument> getInstrumentsById() { + if (instrumentsById == null) { + instrumentsById = persistenceService.getEntitiesMap(AcousticInstrument.class, AcousticInstruments.ACOUSTIC_INSTRUMENT_ID); + } + return instrumentsById; + } + + public final Map<String, DataQuality> getDataQualitiesByName() { + if (dataQualitiesByName == null) { + dataQualitiesByName = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); + } + return dataQualitiesByName; + } + + public final Map<String, SexCategory> getSexCategoriesByName() { + if (sexCategoriesByName == null) { + sexCategoriesByName = persistenceService.getEntitiesMap(SexCategory.class, SexCategories.SEX_CATEGORY_NAME); + } + return sexCategoriesByName; + } + + public final Map<String, SizeCategory> getSizeCategoriesByName() { + if (sizeCategoriesByName == null) { + sizeCategoriesByName = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); + } + return sizeCategoriesByName; + } + + public final Map<String, Species> getSpeciesByBaracoudaCode() { + if (speciesByBaracoudaCode == null) { + speciesByBaracoudaCode = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); + } + return speciesByBaracoudaCode; + } + + public final Map<String, SampleDataType> getSampleDataTypesByName() { + if (sampleDataTypesByName == null) { + sampleDataTypesByName = persistenceService.getEntitiesMap(SampleDataType.class, SampleDataTypes.SAMPLE_DATA_TYPE_NAME); + } + return sampleDataTypesByName; + } + + public final Map<String, GearMetadata> getGearMetadatasByName() { + if (gearMetadatasByName == null) { + gearMetadatasByName = persistenceService.getEntitiesMap(GearMetadata.class, GearMetadatas.GEAR_METADATA_NAME); + } + return gearMetadatasByName; + } + + public final Map<String, OperationMetadata> getOperationMetadatasByName() { + if (operationMetadatasByName == null) { + operationMetadatasByName = persistenceService.getEntitiesMap(OperationMetadata.class, OperationMetadatas.OPERATION_METADATA_NAME); + } + return operationMetadatasByName; + } + + public final Map<String, Gear> getGearsByCasinoGearName() { + if (gearsByCasinoGearName == null) { + gearsByCasinoGearName = persistenceService.getEntitiesMap(Gear.class, Gears.GEAR_CASINO_GEAR_NAME); + } + return gearsByCasinoGearName; + } + + public final Map<String, DepthStratum> getDepthStratumsById() { + if (depthStratumsById == null) { + depthStratumsById = persistenceService.getEntitiesMap(DepthStratum.class, DepthStratums.DEPTH_STRATUM_ID); + } + return depthStratumsById; + } + + public final Map<String, Vessel> getVesselsByName() { + if (vesselsByName == null) { + vesselsByName = persistenceService.getEntitiesMap(Vessel.class, Vessels.VESSEL_NAME); + } + return vesselsByName; + } + + public final Map<String, DataMetadata> getDataMetadatasByName() { + if (dataMetadatasByName == null) { + dataMetadatasByName = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); + } + return dataMetadatasByName; + } + + public final Locale getLocale() { + return locale; + } + + public final char getCsvSeparator() { + return csvSeparator; + } + + public final C getConfiguration() { + return configuration; + } + + public final EchoBaseUser getUser() { + return user; + } + + public final UserDbPersistenceService getPersistenceService() { + return persistenceService; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java new file mode 100644 index 0000000..8435c0a --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageAcousticsImportDataContext extends VoyageImportDataContext<VoyageAcousticsImportConfiguration> { + + public VoyageAcousticsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java new file mode 100644 index 0000000..412dbd7 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java @@ -0,0 +1,121 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleDataTypeImpl; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.SampleTypeImpl; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageCatchesImportDataContext extends VoyageImportDataContext<VoyageCatchesImportConfiguration> { + + private SampleType sampleTypeIndividualType; + private SampleType sampleTypeTotal; + private SampleType sampleTypeUnsorted; + private SampleType sampleTypeSorted; + private SampleDataType sampleDataTypeMeanLength; + private SampleDataType sampleDataTypeMeanWeight; + private SampleDataType sampleDataTypeNoPerKg; + private SampleType sampleTypeSubsample; + private SampleDataType sampleDataTypeNumberAtLength; + private SampleDataType sampleDataTypeNumberAtLength05cm; + private SampleDataType sampleDataTypeNumberAtLength1cm; + private SampleDataType sampleDataTypeWeightAtLength; + + public VoyageCatchesImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageCatchesImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + + public final SampleType getSampleTypeSubsample() { + if (sampleTypeSubsample == null) { + sampleTypeSubsample = persistenceService.getSampleTypeByName(SampleTypeImpl.SUB_SAMPLE_TYPE); + } + return sampleTypeSubsample; + } + + public final SampleDataType getSampleDataTypeNumberAtLength() { + if (sampleDataTypeNumberAtLength == null) { + sampleDataTypeNumberAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NUMBER_AT_LENGTH); + } + return sampleDataTypeNumberAtLength; + } + + public final SampleDataType getSampleDataTypeNumberAtLength05cm() { + if (sampleDataTypeNumberAtLength05cm == null) { + sampleDataTypeNumberAtLength05cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.LTCM0_5); + } + return sampleDataTypeNumberAtLength05cm; + } + + public final SampleDataType getSampleDataTypeNumberAtLength1cm() { + if (sampleDataTypeNumberAtLength1cm == null) { + sampleDataTypeNumberAtLength1cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.L_TCM_1); + } + return sampleDataTypeNumberAtLength1cm; + } + + public final SampleDataType getSampleDataTypeWeightAtLength() { + if (sampleDataTypeWeightAtLength == null) { + sampleDataTypeWeightAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.WEIGHT_AT_LENGTHKG); + } + return sampleDataTypeWeightAtLength; + } + + public final SampleType getSampleTypeTotal() { + if (sampleTypeTotal == null) { + sampleTypeTotal = persistenceService.getSampleTypeByName(SampleTypeImpl.TOTAL_SAMPLE_TYPE); + } + return sampleTypeTotal; + } + + public final SampleType getSampleTypeUnsorted() { + if (sampleTypeUnsorted == null) { + sampleTypeUnsorted = persistenceService.getSampleTypeByName(SampleTypeImpl.UNSORTED_SAMPLE_TYPE); + } + return sampleTypeUnsorted; + } + + public final SampleType getSampleTypeSorted() { + if (sampleTypeSorted == null) { + sampleTypeSorted = persistenceService.getSampleTypeByName(SampleTypeImpl.SORTED_SAMPLE_TYPE); + } + return sampleTypeSorted; + } + + public final SampleDataType getSampleDataTypeMeanLength() { + if (sampleDataTypeMeanLength == null) { + sampleDataTypeMeanLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_LENGTHCM); + } + return sampleDataTypeMeanLength; + } + + public final SampleDataType getSampleDataTypeMeanWeight() { + if (sampleDataTypeMeanWeight == null) { + sampleDataTypeMeanWeight = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_WEIGHTG); + } + return sampleDataTypeMeanWeight; + } + + public final SampleDataType getSampleDataTypeNoPerKg() { + if (sampleDataTypeNoPerKg == null) { + sampleDataTypeNoPerKg = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NO_PER_KG); + } + return sampleDataTypeNoPerKg; + } + + public final SampleType getSampleTypeIndividualType() { + if (sampleTypeIndividualType == null) { + sampleTypeIndividualType = persistenceService.getSampleTypeByName(SampleTypeImpl.INDIVIDUAL_SAMPLE_TYPE); + } + return sampleTypeIndividualType; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java new file mode 100644 index 0000000..f643c0f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageCommonsImportDataContext extends VoyageImportDataContext<VoyageCommonsImportConfiguration> { + + public VoyageCommonsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageCommonsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java new file mode 100644 index 0000000..4852544 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java @@ -0,0 +1,112 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import com.google.common.collect.Collections2; +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.Operation; +import fr.ifremer.echobase.entities.data.Operations; +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.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; + +import java.util.Collection; +import java.util.Collections; +import java.util.Locale; +import java.util.Map; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageImportDataContext<C extends VoyageImportDataConfigurationSupport> extends ImportDataContextSupport<C> { + + private SpeciesCategoryCache speciesCategoryCache; + private ResultCategoryCache resultCategoryCache; + + private Voyage voyage; + private Collection<Operation> voyageOperations; + private Collection<Operation> voyageOperationsWithTotalOrUnsortedSample; + + private Map<String, Voyage> voyagesByName; + private Map<String, Operation> voyageOperationsById; + + + private Map<String, Cell> voyageRegionsByName; + private Map<String, Echotype> voyageEchotypesByName; + + public VoyageImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, C configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + + public final Map<String, Cell> getVoyageRegionsByName() { + if (voyageRegionsByName == null) { + voyageRegionsByName = Maps.uniqueIndex(getVoyage().getRegionCells(), Cells.CELL_BY_NAME); + } + return voyageRegionsByName; + } + + public final Map<String, Echotype> getVoyageEchotypesByName() { + if (voyageEchotypesByName == null) { + voyageEchotypesByName = Maps.uniqueIndex(getVoyage().getEchotype(), Echotypes.ECHOTYPE_NAME); + } + return voyageEchotypesByName; + } + + public final Collection<Operation> getVoyageOperationsWithTotalOrUnsortedSample() { + if (voyageOperationsWithTotalOrUnsortedSample == null) { + voyageOperationsWithTotalOrUnsortedSample = Collections2.filter(getVoyageOperations(), Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); + } + return voyageOperationsWithTotalOrUnsortedSample; + } + + public final Collection<Operation> getVoyageOperations() { + if (voyageOperations == null) { + voyageOperations = getVoyage().getAllOperations(); + } + return voyageOperations; + } + + public final Map<String, Operation> getVoyageOperationsById() { + if (voyageOperationsById == null) { + voyageOperationsById = Maps.uniqueIndex(getVoyageOperations(), Operations.OPERATION_ID); + } + return voyageOperationsById; + } + + public final Map<String, Voyage> getVoyagesByName() { + if (voyagesByName == null) { + voyagesByName = Maps.uniqueIndex(Collections.singletonList(getVoyage()), Voyages.VOYAGE_NAME); + } + return voyagesByName; + } + + public final Voyage getVoyage() { + if (voyage == null) { + voyage = persistenceService.getVoyage(configuration.getVoyageId()); + } + return voyage; + } + + public final SpeciesCategoryCache getSpeciesCategoryCache() { + if (speciesCategoryCache == null) { + speciesCategoryCache = new SpeciesCategoryCache(persistenceService); + } + return speciesCategoryCache; + } + + public final ResultCategoryCache getResultCategoryCache() { + if (resultCategoryCache == null) { + resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); + } + return resultCategoryCache; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java new file mode 100644 index 0000000..a0074c3 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageOperationsImportDataContext extends VoyageImportDataContext<VoyageOperationsImportConfiguration> { + + public VoyageOperationsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageOperationsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java new file mode 100644 index 0000000..2ab868a --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java @@ -0,0 +1,194 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import com.google.common.collect.Lists; +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.DataProcessing; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataMetadataImpl; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.DataMetadataNotFoundException; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ext.CsvReaders; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; + +import static fr.ifremer.echobase.services.service.importdata.ImportDataService.REMOVE_DOUBLE_QUOTES_PATTERN; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageResultsImportDataContext extends VoyageImportDataContext<VoyageResultsImportConfiguration> { + +// private SpeciesCategoryCache speciesCategoryCache; +// private ResultCategoryCache resultCategoryCache; + + private DataMetadata gridCellLongitudeMeta; + private DataMetadata gridCellLatitudeMeta; + private DataMetadata gridCellDepthMeta; + private DataMetadata gridLongitudeLagMeta; + private DataMetadata gridLatitudeLagMeta; + private DataMetadata gridDepthLagMeta; + private DataMetadata regionEnvCoordinateMeta; + private DataMetadata surfaceMeta; + + private Set<Cell> esduCells; + + private Map<String, Cell> esduCellsByName; + + public VoyageResultsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageResultsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + + public ValueParser<Cell> getCellValueParser() { + return EchoBaseCsvUtil.newCellValueParser(getEsduCellsByName()); + } + + public ValueFormatter<Cell> getCellValueFormatter() { + return EchoBaseCsvUtil.newCellValueFormatter(getEsduCells(), getEsduCellType(), getElementaryCellType()); + } + + public ValueParser<Cell> newCellValueParser() { + return persistenceService.newCellValueParser(); + } + + public ValueFormatter<Cell> newCellValueFormatter() { + return persistenceService.newCellValueFormatter(); + } + + public Map<String, Cell> getEsduCellsByName() { + if (esduCellsByName == null) { + esduCellsByName = Maps.uniqueIndex(getEsduCells(), Cells.CELL_BY_NAME); + } + return esduCellsByName; + } + + public Set<Cell> getEsduCells() { + if (esduCells == null) { + + // get selected dataProcessing + DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); + + // get esdu cells usables + esduCells = new LinkedHashSet<>(dataProcessing.getCell()); + + } + return esduCells; + } + + public List<DataMetadata> getMetas(InputFile inputFile, String... columnNamesToExclude) { + + Map<String, DataMetadata> dataMetadatasByName = getDataMetadatasByName(); + + String[] headers = CsvReaders.getHeader(inputFile.getFile(), csvSeparator); + + List<String> metadataNames = Lists.newArrayList(headers); + for (String columnToExclude : columnNamesToExclude) { + metadataNames.remove(columnToExclude); + metadataNames.remove("\"" + columnToExclude + "\""); + } + + List<DataMetadata> result = Lists.newArrayList(); + + for (String metadataName : metadataNames) { + + Matcher matcher = REMOVE_DOUBLE_QUOTES_PATTERN.matcher(metadataName); + if (matcher.matches()) { + metadataName = matcher.group(1); + } + DataMetadata dataMetadata = dataMetadatasByName.get(metadataName); + if (dataMetadata == null) { + throw new DataMetadataNotFoundException(getLocale(), metadataName, dataMetadatasByName.keySet()); + } + result.add(dataMetadata); + + } + + return result; + + } + + public DataMetadata getRegionEnvCoordinateMeta() { + if (regionEnvCoordinateMeta == null) { + regionEnvCoordinateMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.REGION_ENV_COORDINATES); + } + return regionEnvCoordinateMeta; + } + + public DataMetadata getSurfaceMeta() { + if (surfaceMeta == null) { + surfaceMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.SURFACE); + } + return surfaceMeta; + } + + public final DataMetadata getGridCellLongitudeMeta() { + if (gridCellLongitudeMeta == null) { + gridCellLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); + } + return gridCellLongitudeMeta; + } + + public final DataMetadata getGridCellLatitudeMeta() { + if (gridCellLatitudeMeta == null) { + gridCellLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); + } + return gridCellLatitudeMeta; + } + + public final DataMetadata getGridCellDepthMeta() { + if (gridCellDepthMeta == null) { + gridCellDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); + } + return gridCellDepthMeta; + } + + public final DataMetadata getGridLongitudeLagMeta() { + if (gridLongitudeLagMeta == null) { + gridLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); + } + return gridLongitudeLagMeta; + } + + public final DataMetadata getGridLatitudeLagMeta() { + if (gridLatitudeLagMeta == null) { + gridLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); + } + return gridLatitudeLagMeta; + } + + public final DataMetadata getGridDepthLagMeta() { + if (gridDepthLagMeta == null) { + gridDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); + } + return gridDepthLagMeta; + } + +// public SpeciesCategoryCache getSpeciesCategoryCache() { +// if (speciesCategoryCache == null) { +// speciesCategoryCache = new SpeciesCategoryCache(persistenceService); +// } +// return speciesCategoryCache; +// } +// +// public ResultCategoryCache getResultCategoryCache() { +// if (resultCategoryCache == null) { +// resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); +// } +// return resultCategoryCache; +// } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java new file mode 100644 index 0000000..c17bf2e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java @@ -0,0 +1,223 @@ +/* + * #%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.Cell; +import fr.ifremer.echobase.entities.data.Data; +import fr.ifremer.echobase.entities.data.DataAcquisition; +import fr.ifremer.echobase.entities.data.DataProcessing; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; + +/** + * To import acoustic datas (says {@link DataAcquisition}, + * {@link DataProcessing}, {@link Cell} and {@link Data}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class AcousticImportExportModel extends EchoBaseImportExportModelSupport<AcousticImportRow> { + + private AcousticImportExportModel(char separator) { + super(separator); + } + + public static AcousticImportExportModel forImport(VoyageAcousticsImportDataContext importDataContext) { + + AcousticImportExportModel model = new AcousticImportExportModel(importDataContext.getCsvSeparator()); + + model.newMandatoryColumn("MOVIES_EILayer", AcousticImportRow.PROPERTY_EI_LAYER);//A + model.newIgnoredColumn("MOVIES_EILayer\\sndset");//B + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndname");//C + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndident");//D + model.newForeignKeyColumn("MOVIES_EILayer\\sndset\\softChannelId", AcousticImportRow.PROPERTY_ACOUSTIC_INSTRUMENT, AcousticInstrument.class, AcousticInstrument.PROPERTY_ID, importDataContext.getInstrumentsById()); //E + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\channelName");//F + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\dataType");//G + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beamType");//H + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\acousticFrequency");//I + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\startSample");//J + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAlongSteeringAngle");//K + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAthwartSteeringAngle");//L + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\absorptionCoef", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_ABSORPTION, EchoBaseCsvUtil.FLOAT);//M + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\transmissionPower", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_POWER, EchoBaseCsvUtil.INTEGER);//N + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAlongAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ALONGSHIP, EchoBaseCsvUtil.FLOAT);//O + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAthwartAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ATHWARTSHIP, EchoBaseCsvUtil.FLOAT);//P + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAlong");//Q + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAthwart");//R + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamEquTwoWayAngle", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_PSI, EchoBaseCsvUtil.FLOAT);//S + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamGain", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_GAIN, EchoBaseCsvUtil.FLOAT);//T + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamSACorrection", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_SACORRECTION, EchoBaseCsvUtil.FLOAT);//U + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinDepth");//V + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMaxDepth");//W + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinLevel");//X + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AlongTXRXWeightId");//Y + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AthwartTXRXWeightId");//Z + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAlongTXRXWeightId");//AA + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAthwartTXRXWeightId");//AB + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bandWidth");//AC + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgminrange");//AD + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgmaxrange");//AE + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\pulseduration", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_PULSE_LENGTH, EchoBaseCsvUtil.FLOAT);//AF + model.newIgnoredColumn("MOVIES_EILayer\\shipnav");//AG + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\lat");//AH + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\long");//AI + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\alt");//AJ + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndspeed");//AK + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndcourse");//AL + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfspeed");//AM + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfcourse");//AN + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftspeed");//AO + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftcourse");//AP + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heading");//AQ + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\roll");//AR + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\pitch");//AS + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heave");//AT + model.newMandatoryColumn("MOVIES_EILayer\\shipnav\\depth", AcousticImportRow.PROPERTY_ESDU_CELL_DATA_DEPTH);//AU + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\draught");//AV + + // Cell elementary Datas + model.newIgnoredColumn("MOVIES_EILayer\\cellset");//AW + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\cellnum", AcousticImportRow.PROPERTY_CELL_NUM, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AX + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\celltype", AcousticImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AY + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\depthstart", AcousticImportRow.PROPERTY_CELL_DEPTH_START, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//AZ + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\depthend", AcousticImportRow.PROPERTY_CELL_DEPTH_END, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BA + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexstart");//BB + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexend");//BC + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\datestart", AcousticImportRow.PROPERTY_CELL_DATE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BD + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\dateend", AcousticImportRow.PROPERTY_CELL_DATE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BE + + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\lat", AcousticImportRow.PROPERTY_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BF + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\long", AcousticImportRow.PROPERTY_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BG + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\volume", AcousticImportRow.PROPERTY_CELL_VOLUME, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BH + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\area", AcousticImportRow.PROPERTY_CELL_SURFACE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BI + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\diststart");//BJ + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\distend");//BK + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdup", AcousticImportRow.PROPERTY_E_ITHRESHOLD_HIGH, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BL + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdlow", AcousticImportRow.PROPERTY_E_ITHRESHOLD_LOW, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BM + model.newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN + model.newMandatoryColumn("MOVIES_EILayer\\eilayer\\sa", AcousticImportRow.PROPERTY_CELL_NASC, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BO + model.newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP + model.newMandatoryColumn("MOVIES_EILayer\\eilayer\\ni", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BQ + model.newMandatoryColumn("MOVIES_EILayer\\eilayer\\nt", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BR + model.newIgnoredColumn("MOVIES_EILayer\\boterr");//BR + model.newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT + model.newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\soundcelerity", AcousticImportRow.PROPERTY_SOUND_CELERITY);//BV + + model.newForeignKeyColumn(AcousticImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); //E + + return model; + } + + public static AcousticImportExportModel forExport(VoyageAcousticsImportDataContext importDataContext) { + + AcousticImportExportModel model = new AcousticImportExportModel(importDataContext.getCsvSeparator()); + + model.newColumnForExport("MOVIES_EILayer", AcousticImportRow.PROPERTY_EI_LAYER);//A +// model.newIgnoredColumn("MOVIES_EILayer\\sndset");//B +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndname");//C +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndident");//D + model.newColumnForExport("MOVIES_EILayer\\sndset\\softChannelId", AcousticImportRow.PROPERTY_ACOUSTIC_INSTRUMENT, EchoBaseCsvUtil.ACOUSTIC_INSTRUMENT_FORMATTER); //E +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\channelName");//F +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\dataType");//G +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beamType");//H +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\acousticFrequency");//I +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\startSample");//J +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAlongSteeringAngle");//K +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAthwartSteeringAngle");//L + model.newColumnForExport("MOVIES_EILayer\\sndset\\absorptionCoef", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_ABSORPTION, EchoBaseCsvUtil.FLOAT);//M + model.newColumnForExport("MOVIES_EILayer\\sndset\\transmissionPower", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_POWER, EchoBaseCsvUtil.INTEGER);//N + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamAlongAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ALONGSHIP, EchoBaseCsvUtil.FLOAT);//O + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamAthwartAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ATHWARTSHIP, EchoBaseCsvUtil.FLOAT);//P +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAlong");//Q +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAthwart");//R + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamEquTwoWayAngle", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_PSI, EchoBaseCsvUtil.FLOAT);//S + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamGain", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_GAIN, EchoBaseCsvUtil.FLOAT);//T + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamSACorrection", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_SACORRECTION, EchoBaseCsvUtil.FLOAT);//U +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinDepth");//V +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMaxDepth");//W +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinLevel");//X +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AlongTXRXWeightId");//Y +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AthwartTXRXWeightId");//Z +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAlongTXRXWeightId");//AA +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAthwartTXRXWeightId");//AB +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bandWidth");//AC +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgminrange");//AD +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgmaxrange");//AE + model.newColumnForExport("MOVIES_EILayer\\sndset\\pulseduration", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_PULSE_LENGTH, EchoBaseCsvUtil.FLOAT);//AF +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav");//AG +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\lat");//AH +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\long");//AI +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\alt");//AJ +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndspeed");//AK +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndcourse");//AL +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfspeed");//AM +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfcourse");//AN +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftspeed");//AO +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftcourse");//AP +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heading");//AQ +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\roll");//AR +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\pitch");//AS +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heave");//AT + model.newColumnForExport("MOVIES_EILayer\\shipnav\\depth", AcousticImportRow.PROPERTY_ESDU_CELL_DATA_DEPTH);//AU +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\draught");//AV + + // Cell elementary Datas +// model.newIgnoredColumn("MOVIES_EILayer\\cellset");//AW + model.newColumnForExport("MOVIES_EILayer\\cellset\\cellnum", AcousticImportRow.PROPERTY_CELL_NUM, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AX + model.newColumnForExport("MOVIES_EILayer\\cellset\\celltype", AcousticImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AY + model.newColumnForExport("MOVIES_EILayer\\cellset\\depthstart", AcousticImportRow.PROPERTY_CELL_DEPTH_START, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//AZ + model.newColumnForExport("MOVIES_EILayer\\cellset\\depthend", AcousticImportRow.PROPERTY_CELL_DEPTH_END, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BA +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexstart");//BB +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexend");//BC + model.newColumnForExport("MOVIES_EILayer\\cellset\\datestart", AcousticImportRow.PROPERTY_CELL_DATE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BD + model.newColumnForExport("MOVIES_EILayer\\cellset\\dateend", AcousticImportRow.PROPERTY_CELL_DATE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BE + + model.newColumnForExport("MOVIES_EILayer\\cellset\\lat", AcousticImportRow.PROPERTY_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BF + model.newColumnForExport("MOVIES_EILayer\\cellset\\long", AcousticImportRow.PROPERTY_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BG + model.newColumnForExport("MOVIES_EILayer\\cellset\\volume", AcousticImportRow.PROPERTY_CELL_VOLUME, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BH + model.newColumnForExport("MOVIES_EILayer\\cellset\\area", AcousticImportRow.PROPERTY_CELL_SURFACE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BI +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\diststart");//BJ +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\distend");//BK + model.newColumnForExport("MOVIES_EILayer\\cellset\\thresholdup", AcousticImportRow.PROPERTY_E_ITHRESHOLD_HIGH, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BL + model.newColumnForExport("MOVIES_EILayer\\cellset\\thresholdlow", AcousticImportRow.PROPERTY_E_ITHRESHOLD_LOW, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BM +// model.newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN + model.newColumnForExport("MOVIES_EILayer\\eilayer\\sa", AcousticImportRow.PROPERTY_CELL_NASC, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BO +// model.newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP + model.newColumnForExport("MOVIES_EILayer\\eilayer\\ni", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BQ + model.newColumnForExport("MOVIES_EILayer\\eilayer\\nt", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BR +// model.newIgnoredColumn("MOVIES_EILayer\\boterr");//BR +// model.newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT +// model.newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU + model.newColumnForExport("MOVIES_EILayer\\sndset\\soundcelerity", AcousticImportRow.PROPERTY_SOUND_CELERITY);//BV + + model.newColumnForExport(AcousticImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); //E + + return model; + } + + @Override + public AcousticImportRow newEmptyInstance() { + return new AcousticImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java deleted file mode 100644 index 943a35e..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Data; -import fr.ifremer.echobase.entities.data.DataAcquisition; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.references.AcousticInstrument; -import fr.ifremer.echobase.entities.references.DataQuality; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * To import acoustic datas (says {@link DataAcquisition}, - * {@link DataProcessing}, {@link Cell} and {@link Data}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class AcousticImportModel extends AbstractImportModel<AcousticImportRow> { - - public AcousticImportModel(char separator, - Map<String, AcousticInstrument> instrumentsById, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newMandatoryColumn("MOVIES_EILayer", AcousticImportRow.PROPERTY_EI_LAYER);//A - newIgnoredColumn("MOVIES_EILayer\\sndset");//B - newIgnoredColumn("MOVIES_EILayer\\sndset\\sndname");//C - newIgnoredColumn("MOVIES_EILayer\\sndset\\sndident");//D - newForeignKeyColumn("MOVIES_EILayer\\sndset\\softChannelId", AcousticImportRow.PROPERTY_ACOUSTIC_INSTRUMENT, AcousticInstrument.class, AcousticInstrument.PROPERTY_ID, instrumentsById); //E - newIgnoredColumn("MOVIES_EILayer\\sndset\\channelName");//F - newIgnoredColumn("MOVIES_EILayer\\sndset\\dataType");//G - newIgnoredColumn("MOVIES_EILayer\\sndset\\beamType");//H - newIgnoredColumn("MOVIES_EILayer\\sndset\\acousticFrequency");//I - newIgnoredColumn("MOVIES_EILayer\\sndset\\startSample");//J - newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAlongSteeringAngle");//K - newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAthwartSteeringAngle");//L - newMandatoryColumn("MOVIES_EILayer\\sndset\\absorptionCoef", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_ABSORPTION, EchoBaseCsvUtil.FLOAT);//M - newMandatoryColumn("MOVIES_EILayer\\sndset\\transmissionPower", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_POWER, EchoBaseCsvUtil.INTEGER);//N - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAlongAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ALONGSHIP, EchoBaseCsvUtil.FLOAT);//O - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAthwartAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ATHWARTSHIP, EchoBaseCsvUtil.FLOAT);//P - newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAlong");//Q - newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAthwart");//R - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamEquTwoWayAngle", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_PSI, EchoBaseCsvUtil.FLOAT);//S - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamGain", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_GAIN, EchoBaseCsvUtil.FLOAT);//T - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamSACorrection", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_SACORRECTION, EchoBaseCsvUtil.FLOAT);//U - newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinDepth");//V - newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMaxDepth");//W - newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinLevel");//X - newIgnoredColumn("MOVIES_EILayer\\sndset\\AlongTXRXWeightId");//Y - newIgnoredColumn("MOVIES_EILayer\\sndset\\AthwartTXRXWeightId");//Z - newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAlongTXRXWeightId");//AA - newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAthwartTXRXWeightId");//AB - newIgnoredColumn("MOVIES_EILayer\\sndset\\bandWidth");//AC - newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgminrange");//AD - newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgmaxrange");//AE - newMandatoryColumn("MOVIES_EILayer\\sndset\\pulseduration", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_PULSE_LENGTH, EchoBaseCsvUtil.FLOAT);//AF - newIgnoredColumn("MOVIES_EILayer\\shipnav");//AG - newIgnoredColumn("MOVIES_EILayer\\shipnav\\lat");//AH - newIgnoredColumn("MOVIES_EILayer\\shipnav\\long");//AI - newIgnoredColumn("MOVIES_EILayer\\shipnav\\alt");//AJ - newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndspeed");//AK - newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndcourse");//AL - newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfspeed");//AM - newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfcourse");//AN - newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftspeed");//AO - newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftcourse");//AP - newIgnoredColumn("MOVIES_EILayer\\shipnav\\heading");//AQ - newIgnoredColumn("MOVIES_EILayer\\shipnav\\roll");//AR - newIgnoredColumn("MOVIES_EILayer\\shipnav\\pitch");//AS - newIgnoredColumn("MOVIES_EILayer\\shipnav\\heave");//AT - newMandatoryColumn("MOVIES_EILayer\\shipnav\\depth", AcousticImportRow.PROPERTY_ESDU_CELL_DATA_DEPTH);//AU - newIgnoredColumn("MOVIES_EILayer\\shipnav\\draught");//AV - - // Cell elementary Datas - newIgnoredColumn("MOVIES_EILayer\\cellset");//AW - newMandatoryColumn("MOVIES_EILayer\\cellset\\cellnum", AcousticImportRow.PROPERTY_CELL_NUM, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AX - newMandatoryColumn("MOVIES_EILayer\\cellset\\celltype", AcousticImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AY - newMandatoryColumn("MOVIES_EILayer\\cellset\\depthstart", AcousticImportRow.PROPERTY_CELL_DEPTH_START, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//AZ - newMandatoryColumn("MOVIES_EILayer\\cellset\\depthend", AcousticImportRow.PROPERTY_CELL_DEPTH_END, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BA - newIgnoredColumn("MOVIES_EILayer\\cellset\\indexstart");//BB - newIgnoredColumn("MOVIES_EILayer\\cellset\\indexend");//BC - newMandatoryColumn("MOVIES_EILayer\\cellset\\datestart", AcousticImportRow.PROPERTY_CELL_DATE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BD - newMandatoryColumn("MOVIES_EILayer\\cellset\\dateend", AcousticImportRow.PROPERTY_CELL_DATE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BE - - newMandatoryColumn("MOVIES_EILayer\\cellset\\lat", AcousticImportRow.PROPERTY_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BF - newMandatoryColumn("MOVIES_EILayer\\cellset\\long", AcousticImportRow.PROPERTY_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BG - newMandatoryColumn("MOVIES_EILayer\\cellset\\volume", AcousticImportRow.PROPERTY_CELL_VOLUME, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BH - newMandatoryColumn("MOVIES_EILayer\\cellset\\area", AcousticImportRow.PROPERTY_CELL_SURFACE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BI - newIgnoredColumn("MOVIES_EILayer\\cellset\\diststart");//BJ - newIgnoredColumn("MOVIES_EILayer\\cellset\\distend");//BK - newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdup", AcousticImportRow.PROPERTY_E_ITHRESHOLD_HIGH, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BL - newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdlow", AcousticImportRow.PROPERTY_E_ITHRESHOLD_LOW, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BM - newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN - newMandatoryColumn("MOVIES_EILayer\\eilayer\\sa", AcousticImportRow.PROPERTY_CELL_NASC, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BO - newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP - newMandatoryColumn("MOVIES_EILayer\\eilayer\\ni", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BQ - newMandatoryColumn("MOVIES_EILayer\\eilayer\\nt", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BR - newIgnoredColumn("MOVIES_EILayer\\boterr");//BR - newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT - newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU - newMandatoryColumn("MOVIES_EILayer\\sndset\\soundcelerity", AcousticImportRow.PROPERTY_SOUND_CELERITY);//BV - - newForeignKeyColumn(AcousticImportRow.PROPERTY_DATA_QUALITY, - DataQuality.class, - DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, - dataQualityMap); //E - } - - @Override - public AcousticImportRow newEmptyInstance() { - return new AcousticImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java index 7187740..fa78d6c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java @@ -26,7 +26,7 @@ import fr.ifremer.echobase.entities.references.DataQuality; import java.util.Date; /** - * Bean of a row for {@link AcousticImportModel} import. + * Bean of a row for {@link AcousticImportExportModel} import. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.java new file mode 100644 index 0000000..52e81c4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.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.csv; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link Sample} of total biometry. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class BiometrySampleImportExportModel extends EchoBaseImportExportModelSupport<BiometrySampleImportRow> { + + private BiometrySampleImportExportModel(char separator) { + super(separator); + } + + public static BiometrySampleImportExportModel forImport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + BiometrySampleImportExportModel model = new BiometrySampleImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, BiometrySampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, BiometrySampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + + model.newMandatoryColumn(BiometrySampleImportRow.PROPERTY_NUM_FISH, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + + model.newForeignKeyColumn("name", SampleData.PROPERTY_SAMPLE_DATA_TYPE, SampleDataType.class, SampleDataType.PROPERTY_NAME, importDataContext.getSampleDataTypesByName()); + model.newMandatoryColumn(SampleData.PROPERTY_DATA_LABEL); + model.newMandatoryColumn(SampleData.PROPERTY_DATA_VALUE, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + return model; + } + + public static BiometrySampleImportExportModel forExport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + BiometrySampleImportExportModel model = new BiometrySampleImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, BiometrySampleImportRow.PROPERTY_OPERATION, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, BiometrySampleImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(BiometrySampleImportRow.PROPERTY_NUM_FISH, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newColumnForExport("name", SampleData.PROPERTY_SAMPLE_DATA_TYPE, EchoBaseCsvUtil.SAMPLE_DATA_TYPE_FORMATTER); + model.newColumnForExport(SampleData.PROPERTY_DATA_LABEL); + model.newColumnForExport(SampleData.PROPERTY_DATA_VALUE, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + return model; + } + + @Override + public BiometrySampleImportRow newEmptyInstance() { + return new BiometrySampleImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java deleted file mode 100644 index 1e0a69a..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link Sample} of total biometry. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class BiometrySampleImportModel extends AbstractImportModel<BiometrySampleImportRow> { - - public BiometrySampleImportModel(char separator, Map<String, Operation> operationMap, - Map<String, Species> speciesMap, - Map<String, SampleDataType> sampleDataTypeMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, BiometrySampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, BiometrySampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - - newMandatoryColumn(BiometrySampleImportRow.PROPERTY_NUM_FISH, EchoBaseCsvUtil.PRIMITIVE_INTEGER); - - newForeignKeyColumn("name", SampleData.PROPERTY_SAMPLE_DATA_TYPE, SampleDataType.class, SampleDataType.PROPERTY_NAME, sampleDataTypeMap); - newMandatoryColumn(SampleData.PROPERTY_DATA_LABEL); - newMandatoryColumn(SampleData.PROPERTY_DATA_VALUE, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - } - - @Override - public BiometrySampleImportRow newEmptyInstance() { - return new BiometrySampleImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java index 482c7e2..f05ef41 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.references.SampleDataType; import fr.ifremer.echobase.entities.references.Species; /** - * Bean used as a row for import of {@link BiometrySampleImportModel}. + * Bean used as a row for import of {@link BiometrySampleImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java index 3e7478e..af26fcc 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java @@ -1,9 +1,41 @@ package fr.ifremer.echobase.services.service.importdata.csv; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.ResultAble; +import org.nuiton.csv.ext.AbstractImportExportModel; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.service.csv.TopiaCsvCommons; + +import java.util.List; +import java.util.Map; + /** * Created on 27/03/16. * * @author Tony Chemit - chemit@codelutin.com */ -public class EchoBaseImportExportModelSupport { +public abstract class EchoBaseImportExportModelSupport<E> extends AbstractImportExportModel<E> { + + protected EchoBaseImportExportModelSupport(char separator) { + super(separator); + } + + protected static <R extends ResultAble> void addResultsColumns(EchoBaseImportExportModelSupport<R> model, List<DataMetadata> dataMetadatas) { + for (DataMetadata metadata : dataMetadatas) { + model.newColumnForExport( + metadata.getName(), + EchoBaseCsvUtil.<R>newResultValueGetter(metadata), + EchoBaseCsvUtil.newResultValueFormatter(metadata, false)); + } + } + + public <E extends TopiaEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { + newMandatoryColumn(headerName, propertyName, TopiaCsvCommons.newForeignKeyValue(entityType, foreignKeyName, universe)); + } + + public <E extends TopiaEntity> void newForeignKeyColumn(String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { + newMandatoryColumn(propertyName, propertyName, TopiaCsvCommons.newForeignKeyValue(entityType, foreignKeyName, universe)); + } + } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java new file mode 100644 index 0000000..ed76667 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java @@ -0,0 +1,71 @@ +/* + * #%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.Echotype; +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.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import echotypes. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EchotypeImportExportModel extends EchoBaseImportExportModelSupport<EchotypeImportRow> { + + private EchotypeImportExportModel(char separator) { + super(separator); + } + + public static EchotypeImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + EchotypeImportExportModel model = new EchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newMandatoryColumn("echotypeName", Echotype.PROPERTY_NAME); + model.newMandatoryColumn("meaning", Echotype.PROPERTY_MEANING); + model.newForeignKeyColumn(EchotypeImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, importDataContext.getDepthStratumsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, Echotype.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + return model; + + } + + public static EchotypeImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + EchotypeImportExportModel model = new EchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport("echotypeName", Echotype.PROPERTY_NAME); + model.newColumnForExport("meaning", Echotype.PROPERTY_MEANING); + model.newColumnForExport(EchotypeImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, EchoBaseCsvUtil.DEPTH_STRATUM_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, Echotype.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + return model; + + } + + @Override + public EchotypeImportRow newEmptyInstance() { + return new EchotypeImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java deleted file mode 100644 index a82181a..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import echotypes. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EchotypeImportModel extends AbstractImportModel<EchotypeImportRow> { - - public EchotypeImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, DepthStratum> depthStratumMap, - Map<String, Species> speciesMap) { - super(separator); - - newMandatoryColumn("echotypeName", Echotype.PROPERTY_NAME); - newMandatoryColumn("meaning", Echotype.PROPERTY_MEANING); - newForeignKeyColumn(EchotypeImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, depthStratumMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, Echotype.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - - } - - @Override - public EchotypeImportRow newEmptyInstance() { - return new EchotypeImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java index 4b4fe18..78332a1 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java @@ -29,20 +29,17 @@ import fr.ifremer.echobase.entities.references.Species; import java.io.Serializable; /** - * Bean used as a row for import of {@link EchotypeImportModel}. + * Bean used as a row for import of {@link EchotypeImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class EchotypeImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - - protected Voyage voyage; - + private static final long serialVersionUID = 1L; protected final Echotype echotype; + protected Voyage voyage; public EchotypeImportRow() { echotype = new EchotypeImpl(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java new file mode 100644 index 0000000..eb31871 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java @@ -0,0 +1,99 @@ +/* + * #%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.Echotype; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and echotypes. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultByEchotypeAndSpeciesCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultByEchotypeAndSpeciesCategoryImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_VOYAGE + }; + + private EsduResultByEchotypeAndSpeciesCategoryImportExportModel(char separator) { + super(separator); + } + + public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeAndSpeciesCategoryImportExportModel model = new EsduResultByEchotypeAndSpeciesCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultByEchotypeAndSpeciesCategoryImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeAndSpeciesCategoryImportExportModel model = new EsduResultByEchotypeAndSpeciesCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultByEchotypeAndSpeciesCategoryImportRow newEmptyInstance() { + return new EsduResultByEchotypeAndSpeciesCategoryImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java deleted file mode 100644 index fd13b51..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and echotypes. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultByEchotypeAndSpeciesCategoryImportModel extends AbstractImportModel<EsduResultByEchotypeAndSpeciesCategoryImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_VOYAGE - }; - - public EsduResultByEchotypeAndSpeciesCategoryImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Echotype> echotypeMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultByEchotypeAndSpeciesCategoryImportRow>newResultValueSetter()); - } - - } - - @Override - public EsduResultByEchotypeAndSpeciesCategoryImportRow newEmptyInstance() { - return new EsduResultByEchotypeAndSpeciesCategoryImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java index 1f7c0cf..0272460 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java @@ -21,7 +21,6 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; @@ -29,17 +28,18 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** * Bean used as a row for import of - * {@link EsduResultByEchotypeAndSpeciesCategoryImportModel}. + * {@link EsduResultByEchotypeAndSpeciesCategoryImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -62,11 +62,8 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements EchoBase protected List<Result> result = Lists.newArrayList(); protected Species species; - - private SizeCategory sizeCategory; - protected DataQuality dataQuality; - + private SizeCategory sizeCategory; public void setVoyage(Voyage voyage) { this.voyage = voyage; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.java new file mode 100644 index 0000000..71a53a4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.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.csv; + +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and echotypes. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultByEchotypeImportExportModel extends EchoBaseImportExportModelSupport<EsduResultByEchotypeImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, + EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, + EsduResultByEchotypeImportRow.PROPERTY_VOYAGE + }; + + private EsduResultByEchotypeImportExportModel(char separator) { + super(separator); + } + + public static EsduResultByEchotypeImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeImportExportModel model = new EsduResultByEchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultByEchotypeImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultByEchotypeImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeImportExportModel model = new EsduResultByEchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultByEchotypeImportRow newEmptyInstance() { + return new EsduResultByEchotypeImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java deleted file mode 100644 index ef2ad10..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and echotypes. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultByEchotypeImportModel extends AbstractImportModel<EsduResultByEchotypeImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, - EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, - EsduResultByEchotypeImportRow.PROPERTY_VOYAGE - }; - - public EsduResultByEchotypeImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Echotype> echotypeMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultByEchotypeImportRow>newResultValueSetter()); - } - } - - @Override - public EsduResultByEchotypeImportRow newEmptyInstance() { - return new EsduResultByEchotypeImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java index 11b8785..7d80c82 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java @@ -21,22 +21,22 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** - * Bean used as a row for import of {@link EsduResultByEchotypeImportModel}. + * Bean used as a row for import of {@link EsduResultByEchotypeImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultByEchotypeImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultByEchotypeImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java new file mode 100644 index 0000000..97e9877 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java @@ -0,0 +1,97 @@ +/* + * #%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.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and species and size category. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultBySpeciesAndAgeCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_VOYAGE + }; + + private EsduResultBySpeciesAndAgeCategoryImportExportModel(char separator) { + super(separator); + } + + public static EsduResultBySpeciesAndAgeCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndAgeCategoryImportExportModel model = new EsduResultBySpeciesAndAgeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY); + model.newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultBySpeciesAndAgeCategoryImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultBySpeciesAndAgeCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndAgeCategoryImportExportModel model = new EsduResultBySpeciesAndAgeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY); + model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultBySpeciesAndAgeCategoryImportRow newEmptyInstance() { + return new EsduResultBySpeciesAndAgeCategoryImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java deleted file mode 100644 index 65c6be0..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and species and size category. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultBySpeciesAndAgeCategoryImportModel extends AbstractImportModel<EsduResultBySpeciesAndAgeCategoryImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_VOYAGE - }; - - public EsduResultBySpeciesAndAgeCategoryImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Species> speciesMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY); - newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultBySpeciesAndAgeCategoryImportRow>newResultValueSetter()); - } - } - - @Override - public EsduResultBySpeciesAndAgeCategoryImportRow newEmptyInstance() { - return new EsduResultBySpeciesAndAgeCategoryImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java index f4599b5..46194f7 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java @@ -21,23 +21,23 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** * Bean used as a row for import of - * {@link EsduResultBySpeciesAndAgeCategoryImportModel}. + * {@link EsduResultBySpeciesAndAgeCategoryImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultBySpeciesAndAgeCategoryImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultBySpeciesAndAgeCategoryImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -58,13 +58,10 @@ public class EsduResultBySpeciesAndAgeCategoryImportRow implements EchoBaseCsvUt protected List<Result> result = Lists.newArrayList(); protected Species species; - + protected DataQuality dataQuality; private String ageCategory; - private String ageCategoryMeaning; - protected DataQuality dataQuality; - public void setVoyage(Voyage voyage) { this.voyage = voyage; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java new file mode 100644 index 0000000..88977da --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java @@ -0,0 +1,97 @@ +/* + * #%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.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and species and size category. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultBySpeciesAndSizeCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_VOYAGE + }; + + private EsduResultBySpeciesAndSizeCategoryImportExportModel(char separator) { + super(separator); + } + + public static EsduResultBySpeciesAndSizeCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndSizeCategoryImportExportModel model = new EsduResultBySpeciesAndSizeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY); + model.newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultBySpeciesAndSizeCategoryImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultBySpeciesAndSizeCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndSizeCategoryImportExportModel model = new EsduResultBySpeciesAndSizeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY); + model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultBySpeciesAndSizeCategoryImportRow newEmptyInstance() { + return new EsduResultBySpeciesAndSizeCategoryImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java deleted file mode 100644 index 90c1e9a..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and species and size category. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultBySpeciesAndSizeCategoryImportModel extends AbstractImportModel<EsduResultBySpeciesAndSizeCategoryImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_VOYAGE - }; - - public EsduResultBySpeciesAndSizeCategoryImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Species> speciesMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY); - newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultBySpeciesAndSizeCategoryImportRow>newResultValueSetter()); - } - } - - @Override - public EsduResultBySpeciesAndSizeCategoryImportRow newEmptyInstance() { - return new EsduResultBySpeciesAndSizeCategoryImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java index a709de5..eb84326 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java @@ -21,23 +21,23 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** * Bean used as a row for import of - * {@link EsduResultBySpeciesAndSizeCategoryImportModel}. + * {@link EsduResultBySpeciesAndSizeCategoryImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultBySpeciesAndSizeCategoryImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultBySpeciesAndSizeCategoryImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -58,13 +58,10 @@ public class EsduResultBySpeciesAndSizeCategoryImportRow implements EchoBaseCsvU protected List<Result> result = Lists.newArrayList(); protected Species species; - + protected DataQuality dataQuality; private String sizeCategory; - private String sizeCategoryMeaning; - protected DataQuality dataQuality; - public void setVoyage(Voyage voyage) { this.voyage = voyage; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.java new file mode 100644 index 0000000..586b80b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.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.csv; + +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Model to import {@link GearMetadataValue}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class GearMetadataValueImportExportModel extends EchoBaseImportExportModelSupport<GearMetadataValueImportRow> { + + + private GearMetadataValueImportExportModel(char separator) { + super(separator); + } + + public static GearMetadataValueImportExportModel forImport(VoyageOperationsImportDataContext importDataContext) { + + GearMetadataValueImportExportModel model = new GearMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, GearMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, GearMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn("metadataType", GearMetadataValue.PROPERTY_GEAR_METADATA, GearMetadata.class, GearMetadata.PROPERTY_NAME, importDataContext.getGearMetadatasByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, GearMetadataValue.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, importDataContext.getGearsByCasinoGearName()); + model.newMandatoryColumn("gearMetadataValue", GearMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + public static GearMetadataValueImportExportModel forExport(VoyageOperationsImportDataContext importDataContext) { + + GearMetadataValueImportExportModel model = new GearMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, GearMetadataValueImportRow.PROPERTY_VESSEL, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, GearMetadataValueImportRow.PROPERTY_OPERATION, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport("metadataType", GearMetadataValue.PROPERTY_GEAR_METADATA, EchoBaseCsvUtil.GEAR_METADATA_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.GEAR_CODE, GearMetadataValue.PROPERTY_GEAR, EchoBaseCsvUtil.GEAR_FORMATTER); + model.newColumnForExport("gearMetadataValue", GearMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + @Override + public GearMetadataValueImportRow newEmptyInstance() { + return new GearMetadataValueImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java deleted file mode 100644 index 7eea2ef..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.GearMetadataValue; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.GearMetadata; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link GearMetadataValue}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class GearMetadataValueImportModel extends AbstractImportModel<GearMetadataValueImportRow> { - - - public GearMetadataValueImportModel(char separator, - Map<String, Vessel> vesselMap, - Map<String, GearMetadata> gearMetadataMap, - Map<String, Gear> gearMap, - Map<String, Operation> operationMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, GearMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, GearMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - - newForeignKeyColumn("metadataType", GearMetadataValue.PROPERTY_GEAR_METADATA, GearMetadata.class, GearMetadata.PROPERTY_NAME, gearMetadataMap); - newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, GearMetadataValue.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, gearMap); - newMandatoryColumn("gearMetadataValue", GearMetadataValue.PROPERTY_DATA_VALUE); - - } - - @Override - public GearMetadataValueImportRow newEmptyInstance() { - return new GearMetadataValueImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java index 0ef4984..d06614a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java @@ -29,7 +29,7 @@ import fr.ifremer.echobase.entities.references.GearMetadata; import fr.ifremer.echobase.entities.references.Vessel; /** - * Bean used as a row for import of {@link GearMetadataValueImportModel}. + * Bean used as a row for import of {@link GearMetadataValueImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -39,13 +39,10 @@ public class GearMetadataValueImportRow { public static final String PROPERTY_VESSEL = Transect.PROPERTY_VESSEL; public static final String PROPERTY_OPERATION = Transect.PROPERTY_OPERATION; - + protected final GearMetadataValue gearMetadataValue; protected Vessel vessel; - protected Operation operation; - protected final GearMetadataValue gearMetadataValue; - public GearMetadataValueImportRow() { gearMetadataValue = new GearMetadataValueImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java new file mode 100644 index 0000000..424af2c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java @@ -0,0 +1,75 @@ +/* + * #%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.LengthAgeKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link LengthAgeKey}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class LengthAgeKeyImportExportModel extends EchoBaseImportExportModelSupport<LengthAgeKeyImportRow> { + + private LengthAgeKeyImportExportModel(char separator) { + super(separator); + } + + public static LengthAgeKeyImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthAgeKeyImportExportModel model = new LengthAgeKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(LengthAgeKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_AGE, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_PERCENT_AT_AGE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_METADATA); + model.newForeignKeyColumn(LengthAgeKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, importDataContext.getStratasByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + return model; + + } + + public static LengthAgeKeyImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthAgeKeyImportExportModel model = new LengthAgeKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(LengthAgeKeyImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(LengthAgeKey.PROPERTY_AGE, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newColumnForExport(LengthAgeKey.PROPERTY_PERCENT_AT_AGE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(LengthAgeKey.PROPERTY_METADATA); + model.newColumnForExport(LengthAgeKey.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + return model; + + } + + @Override + public LengthAgeKeyImportRow newEmptyInstance() { + return new LengthAgeKeyImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java deleted file mode 100644 index 1fe4921..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.LengthAgeKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Strata; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link LengthAgeKey}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class LengthAgeKeyImportModel extends AbstractImportModel<LengthAgeKeyImportRow> { - - public LengthAgeKeyImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Strata> strataMap, - Map<String, Species> speciesMap) { - super(separator); - - newForeignKeyColumn(LengthAgeKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - - newMandatoryColumn(LengthAgeKey.PROPERTY_AGE, EchoBaseCsvUtil.PRIMITIVE_INTEGER); - newMandatoryColumn(LengthAgeKey.PROPERTY_PERCENT_AT_AGE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(LengthAgeKey.PROPERTY_METADATA); - newForeignKeyColumn(LengthAgeKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, strataMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - } - - @Override - public LengthAgeKeyImportRow newEmptyInstance() { - return new LengthAgeKeyImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java index 4beb6ce..f231dd9 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java @@ -29,20 +29,17 @@ import fr.ifremer.echobase.entities.references.Strata; import java.io.Serializable; /** - * Bean used as a row for import of {@link LengthAgeKeyImportModel}. + * Bean used as a row for import of {@link LengthAgeKeyImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class LengthAgeKeyImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - - protected Voyage voyage; - + private static final long serialVersionUID = 1L; protected final LengthAgeKey lengthAgeKey; + protected Voyage voyage; public LengthAgeKeyImportRow() { lengthAgeKey = new LengthAgeKeyImpl(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java new file mode 100644 index 0000000..8efeaaa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java @@ -0,0 +1,74 @@ +/* + * #%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.LengthWeightKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link LengthWeightKey}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class LengthWeightKeyImportExportModel extends EchoBaseImportExportModelSupport<LengthWeightKeyImportRow> { + + private LengthWeightKeyImportExportModel(char separator) { + super(separator); + } + + public static LengthWeightKeyImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthWeightKeyImportExportModel model = new LengthWeightKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newMandatoryColumn("aParameter", LengthWeightKey.PROPERTY_APARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn("bParameter", LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthWeightKeyImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(LengthWeightKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, importDataContext.getStratasByName()); + return model; + + } + + public static LengthWeightKeyImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthWeightKeyImportExportModel model = new LengthWeightKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport("aParameter", LengthWeightKey.PROPERTY_APARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport("bParameter", LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(LengthWeightKeyImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(LengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, LengthWeightKeyImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(LengthWeightKey.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); + return model; + + } + + @Override + public LengthWeightKeyImportRow newEmptyInstance() { + return new LengthWeightKeyImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java deleted file mode 100644 index c256543..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.LengthWeightKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Strata; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link LengthWeightKey}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class LengthWeightKeyImportModel extends AbstractImportModel<LengthWeightKeyImportRow> { - - public LengthWeightKeyImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Strata> strataMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, Species> speciesMap) { - super(separator); - newMandatoryColumn("aParameter", LengthWeightKey.PROPERTY_APARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn("bParameter", LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - - newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthWeightKeyImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(LengthWeightKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, strataMap); - } - - @Override - public LengthWeightKeyImportRow newEmptyInstance() { - return new LengthWeightKeyImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java index f08012c..4427979 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java @@ -30,29 +30,22 @@ import fr.ifremer.echobase.entities.references.Strata; import java.io.Serializable; /** - * Bean used as a row for import of {@link LengthWeightKeyImportModel}. + * Bean used as a row for import of {@link LengthWeightKeyImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class LengthWeightKeyImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_SPECIES = "species"; - public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory"; - + private static final long serialVersionUID = 1L; + protected final LengthWeightKey lengthWeightKey; protected Species species; - protected SizeCategory sizeCategory; - protected Voyage voyage; - protected final LengthWeightKey lengthWeightKey; - public LengthWeightKeyImportRow() { lengthWeightKey = new LengthWeightKeyImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java new file mode 100644 index 0000000..4a31ee6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java @@ -0,0 +1,109 @@ +/* + * #%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.Voyage; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +import java.util.List; + +/** + * Model to import cells of type 'Map'. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class MapCellImportExportModel extends EchoBaseImportExportModelSupport<MapCellImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + MapCellImportRow.PROPERTY_NAME, + Species.PROPERTY_BARACOUDA_CODE, + MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, + MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, + MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, + MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, + MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, + MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, + MapCellImportRow.PROPERTY_VOYAGE, + MapCellImportRow.PROPERTY_SIZE_CATEGORY, + MapCellImportRow.PROPERTY_AGE_CATEGORY, + MapCellImportRow.PROPERTY_DATA_QUALITY + }; + protected final CellType cellType; + + private MapCellImportExportModel(char separator, CellType cellType) { + super(separator); + this.cellType = cellType; + + } + + public static MapCellImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext, List<DataMetadata> dataMetadatas) { + + MapCellImportExportModel model = new MapCellImportExportModel(importDataContext.getCsvSeparator(), importDataContext.getMapCellType()); + model.newForeignKeyColumn(MapCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_NAME); + model.newForeignKeyColumn(MapCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + + for (DataMetadata metadata : dataMetadatas) { + model.newMandatoryColumn( + metadata.getName(), + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<MapCellImportRow>newResultValueSetter()); + } + return model; + + } + + public static MapCellImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext, List<DataMetadata> dataMetadatas) { + + MapCellImportExportModel model = new MapCellImportExportModel(importDataContext.getCsvSeparator(), importDataContext.getMapCellType()); + model.newColumnForExport(MapCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(MapCellImportRow.PROPERTY_NAME); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public MapCellImportRow newEmptyInstance() { + return new MapCellImportRow(cellType); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java deleted file mode 100644 index 8d3addd..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import cells of type 'Map'. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class MapCellImportModel extends AbstractImportModel<MapCellImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - MapCellImportRow.PROPERTY_NAME, - Species.PROPERTY_BARACOUDA_CODE, - MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, - MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, - MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, - MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, - MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, - MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, - MapCellImportRow.PROPERTY_VOYAGE, - MapCellImportRow.PROPERTY_SIZE_CATEGORY, - MapCellImportRow.PROPERTY_AGE_CATEGORY, - MapCellImportRow.PROPERTY_DATA_QUALITY - }; - - protected final CellType cellType; - - public MapCellImportModel(char separator, - CellType cellType, - Map<String, Voyage> voyageMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - this.cellType = cellType; - - newForeignKeyColumn(MapCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(MapCellImportRow.PROPERTY_NAME); - newForeignKeyColumn(MapCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - - for (DataMetadata metadata : dataMetadatas) { - newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<MapCellImportRow>newResultValueSetter()); - } - } - - public MapCellImportModel(char separator, - CellType cellType, - Map<String, Voyage> voyageMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, AgeCategory> ageCategoryMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - this.cellType = cellType; - - newForeignKeyColumn(MapCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(MapCellImportRow.PROPERTY_NAME); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, MapCellImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(MapCellImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(MapCellImportRow.PROPERTY_AGE_CATEGORY, AgeCategory.class, AgeCategory.PROPERTY_NAME, ageCategoryMap); - newForeignKeyColumn(MapCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - - for (DataMetadata metadata : dataMetadatas) { - newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<MapCellImportRow>newResultValueSetter()); - } - } - - @Override - public MapCellImportRow newEmptyInstance() { - return new MapCellImportRow(cellType); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java index 6169077..fc9d300 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java @@ -21,7 +21,6 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.CellImpl; import fr.ifremer.echobase.entities.data.Result; @@ -31,16 +30,17 @@ import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** - * Bean used as a row for import of {@link MapCellImportModel}. + * Bean used as a row for import of {@link MapCellImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { +public class MapCellImportRow implements ResultAble { public static final String PROPERTY_NAME = "name"; @@ -67,11 +67,8 @@ public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { public static final String PROPERTY_DATA_GRID_DEPTH_LAG = "gridDepthLag"; public static final String PROPERTY_DATA_QUALITY = "dataQuality"; - - protected Voyage voyage; - protected final Cell cell; - + protected Voyage voyage; protected List<Result> result = Lists.newArrayList(); protected Species species; @@ -107,18 +104,34 @@ public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { return voyage; } + public void setVoyage(Voyage voyage) { + this.voyage = voyage; + } + public Species getSpecies() { return species; } + public void setSpecies(Species species) { + this.species = species; + } + public SizeCategory getSizeCategory() { return sizeCategory; } + public void setSizeCategory(SizeCategory sizeCategory) { + this.sizeCategory = sizeCategory; + } + public AgeCategory getAgeCategory() { return ageCategory; } + public void setAgeCategory(AgeCategory ageCategory) { + this.ageCategory = ageCategory; + } + public List<Result> getResult() { return result; } @@ -127,70 +140,54 @@ public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { return gridCellLongitude; } - public float getGridCellLatitude() { - return gridCellLatitude; - } - - public float getGridCellDepth() { - return gridCellDepth; - } - - public float getGridLongitudeLag() { - return gridLongitudeLag; - } - - public float getGridLatitudeLag() { - return gridLatitudeLag; - } - - public float getGridDepthLag() { - return gridDepthLag; - } - - public void setName(String name) { - getCell().setName(name); - } - - public void setVoyage(Voyage voyage) { - this.voyage = voyage; - } - - public void setSpecies(Species species) { - this.species = species; - } - - public void setSizeCategory(SizeCategory sizeCategory) { - this.sizeCategory = sizeCategory; - } - - public void setAgeCategory(AgeCategory ageCategory) { - this.ageCategory = ageCategory; - } - public void setGridCellLongitude(float GridCellLongitude) { this.gridCellLongitude = GridCellLongitude; } + public float getGridCellLatitude() { + return gridCellLatitude; + } + public void setGridCellLatitude(float GridCellLatitude) { this.gridCellLatitude = GridCellLatitude; } + public float getGridCellDepth() { + return gridCellDepth; + } + public void setGridCellDepth(float GridCellDepth) { this.gridCellDepth = GridCellDepth; } + public float getGridLongitudeLag() { + return gridLongitudeLag; + } + public void setGridLongitudeLag(float GridLongitudeLag) { this.gridLongitudeLag = GridLongitudeLag; } + public float getGridLatitudeLag() { + return gridLatitudeLag; + } + public void setGridLatitudeLag(float GridLatitudeLag) { this.gridLatitudeLag = GridLatitudeLag; } + public float getGridDepthLag() { + return gridDepthLag; + } + public void setGridDepthLag(float GridDepthLag) { this.gridDepthLag = GridDepthLag; } + public void setName(String name) { + getCell().setName(name); + } + @Override public void addResult(Result result) { this.result.add(result); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java new file mode 100644 index 0000000..526b69e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java @@ -0,0 +1,84 @@ +/* + * #%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.Operation; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Model to import {@link Operation}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class OperationImportExportModel extends EchoBaseImportExportModelSupport<OperationImportRow> { + + private OperationImportExportModel(char separator) { + super(separator); + } + + public static OperationImportExportModel forImport(VoyageOperationsImportDataContext importDataContext) { + + OperationImportExportModel model = new OperationImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, Operation.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, importDataContext.getGearsByCasinoGearName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Operation.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, importDataContext.getDepthStratumsById()); + model.newMandatoryColumn(EchoBaseCsvUtil.OPERATION_ID, Operation.PROPERTY_ID); + model.newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + public static OperationImportExportModel forExport(VoyageOperationsImportDataContext importDataContext) { + + OperationImportExportModel model = new OperationImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, OperationImportRow.PROPERTY_VESSEL, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.GEAR_CODE, Operation.PROPERTY_GEAR, EchoBaseCsvUtil.GEAR_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Operation.PROPERTY_DEPTH_STRATUM, EchoBaseCsvUtil.DEPTH_STRATUM_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, Operation.PROPERTY_ID); + model.newColumnForExport(Operation.PROPERTY_MID_HAUL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_MID_HAUL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + @Override + public OperationImportRow newEmptyInstance() { + return new OperationImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java deleted file mode 100644 index 430c6d5..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link Operation}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class OperationImportModel extends AbstractImportModel<OperationImportRow> { - - public OperationImportModel(char separator, - Map<String, Vessel> vesselMap, - Map<String, Gear> gearMap, - Map<String, DepthStratum> depthStratumMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - - newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, Operation.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, gearMap); - newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Operation.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, depthStratumMap); - newMandatoryColumn(EchoBaseCsvUtil.OPERATION_ID, Operation.PROPERTY_ID); - newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - } - - @Override - public OperationImportRow newEmptyInstance() { - return new OperationImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java index 48496ab..c81bada 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java @@ -30,7 +30,7 @@ import fr.ifremer.echobase.entities.references.Vessel; import java.util.Date; /** - * Bean used as a row for import of {@link OperationImportModel}. + * Bean used as a row for import of {@link OperationImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -38,10 +38,8 @@ import java.util.Date; public class OperationImportRow { public static final String PROPERTY_VESSEL = Transect.PROPERTY_VESSEL; - - protected Vessel vessel; - protected final Operation operation; + protected Vessel vessel; public OperationImportRow() { operation = new OperationImpl(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java new file mode 100644 index 0000000..0c5a0b4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java @@ -0,0 +1,68 @@ +/* + * #%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.Operation; +import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Model to import {@link OperationMetadataValue}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class OperationMetadataValueImportExportModel extends EchoBaseImportExportModelSupport<OperationMetadataValueImportRow> { + + private OperationMetadataValueImportExportModel(char separator) { + super(separator); + } + + public static OperationMetadataValueImportExportModel forImport(VoyageOperationsImportDataContext importDataContext) { + + OperationMetadataValueImportExportModel model = new OperationMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, OperationMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn("metadataType", OperationMetadataValue.PROPERTY_OPERATION_METADATA, OperationMetadata.class, OperationMetadata.PROPERTY_NAME, importDataContext.getOperationMetadatasByName()); + model.newMandatoryColumn("operationMetadataValue", OperationMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + public static OperationMetadataValueImportExportModel forExport(VoyageOperationsImportDataContext importDataContext) { + + OperationMetadataValueImportExportModel model = new OperationMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, OperationMetadataValueImportRow.PROPERTY_VESSEL, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, OperationMetadataValueImportRow.PROPERTY_OPERATION, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport("metadataType", OperationMetadataValue.PROPERTY_OPERATION_METADATA, EchoBaseCsvUtil.OPERATION_FMETADATA_ORMATTER); + model.newColumnForExport("operationMetadataValue", OperationMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + @Override + public OperationMetadataValueImportRow newEmptyInstance() { + return new OperationMetadataValueImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java deleted file mode 100644 index 2b03c00..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.OperationMetadataValue; -import fr.ifremer.echobase.entities.references.OperationMetadata; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link OperationMetadataValue}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class OperationMetadataValueImportModel extends AbstractImportModel<OperationMetadataValueImportRow> { - - public OperationMetadataValueImportModel(char separator, - Map<String, Vessel> vesselMap, - Map<String, OperationMetadata> operationMetadataMap, - Map<String, Operation> operationMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, OperationMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - - newForeignKeyColumn("metadataType", OperationMetadataValue.PROPERTY_OPERATION_METADATA, OperationMetadata.class, OperationMetadata.PROPERTY_NAME, operationMetadataMap); - newMandatoryColumn("operationMetadataValue", OperationMetadataValue.PROPERTY_DATA_VALUE); - } - - @Override - public OperationMetadataValueImportRow newEmptyInstance() { - return new OperationMetadataValueImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java index 6a12174..24bdcc2 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java @@ -28,7 +28,7 @@ import fr.ifremer.echobase.entities.references.OperationMetadata; import fr.ifremer.echobase.entities.references.Vessel; /** - * Bean used as a row for import of {@link OperationMetadataValueImportModel}. + * Bean used as a row for import of {@link OperationMetadataValueImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -38,13 +38,10 @@ public class OperationMetadataValueImportRow { public static final String PROPERTY_VESSEL = Transect.PROPERTY_VESSEL; public static final String PROPERTY_OPERATION = Transect.PROPERTY_OPERATION; - + protected final OperationMetadataValue operationMetadataValue; protected Operation operation; - protected Vessel vessel; - protected final OperationMetadataValue operationMetadataValue; - public OperationMetadataValueImportRow() { operationMetadataValue = new OperationMetadataValueImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java new file mode 100644 index 0000000..215903e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java @@ -0,0 +1,64 @@ +/* + * #%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.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +/** + * Model to import cells associations from region cells and esdu cells. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class RegionCellAssociationImportExportModel extends EchoBaseImportExportModelSupport<RegionCellAssociationImportRow> { + + private RegionCellAssociationImportExportModel(char separator) { + super(separator); + } + + public static RegionCellAssociationImportExportModel forImport(VoyageResultsImportDataContext importDataContext) { + + RegionCellAssociationImportExportModel model = new RegionCellAssociationImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellAssociationImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn("regionName", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, Cell.class, Cell.PROPERTY_NAME, importDataContext.getEsduCellsByName()); + model.newMandatoryColumn("esduName", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, importDataContext.newCellValueParser()); + return model; + + } + + public static RegionCellAssociationImportExportModel forExport(VoyageResultsImportDataContext importDataContext) { + + RegionCellAssociationImportExportModel model = new RegionCellAssociationImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellAssociationImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport("regionName", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, EchoBaseCsvUtil.CELL_FORMATTER); + model.newColumnForExport("esduName", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, importDataContext.newCellValueFormatter()); + return model; + + } + + @Override + public RegionCellAssociationImportRow newEmptyInstance() { + return new RegionCellAssociationImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java deleted file mode 100644 index c7785e1..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * #%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.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import org.nuiton.csv.ValueParser; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import cells associations from region cells and esdu cells. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class RegionCellAssociationImportModel extends AbstractImportModel<RegionCellAssociationImportRow> { - - public RegionCellAssociationImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Cell> regionCellMap, - ValueParser<Cell> cellParser) { - super(separator); - newForeignKeyColumn(RegionCellAssociationImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn("regionName", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, Cell.class, Cell.PROPERTY_NAME, regionCellMap); - newMandatoryColumn("esduName", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, cellParser); - - } - - @Override - public RegionCellAssociationImportRow newEmptyInstance() { - return new RegionCellAssociationImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java index 1a21f2f..c62ab4a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java @@ -24,7 +24,7 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Voyage; /** - * Bean used as a row for import of {@link RegionCellAssociationImportModel}. + * Bean used as a row for import of {@link RegionCellAssociationImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -50,22 +50,22 @@ public class RegionCellAssociationImportRow { return voyage; } - public Cell getRegionCell() { - return regionCell; - } - - public Cell getEsduCell() { - return esduCell; - } - public void setVoyage(Voyage voyage) { this.voyage = voyage; } + public Cell getRegionCell() { + return regionCell; + } + public void setRegionCell(Cell regionCell) { this.regionCell = regionCell; } + public Cell getEsduCell() { + return esduCell; + } + public void setEsduCell(Cell esduCell) { this.esduCell = esduCell; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java new file mode 100644 index 0000000..f27cbaa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java @@ -0,0 +1,71 @@ +/* + * #%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.Voyage; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +/** + * Model to import cells (with type "region"). + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class RegionCellImportExportModel extends EchoBaseImportExportModelSupport<RegionCellImportRow> { + + private RegionCellImportExportModel(char separator) { + super(separator); + } + + public static RegionCellImportExportModel forImport(VoyageResultsImportDataContext importDataContext) { + + RegionCellImportExportModel model = new RegionCellImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_CELL_TYPE, CellType.class, CellType.PROPERTY_ID, importDataContext.getRegionCellTypesById()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + model.newMandatoryColumn(RegionCellImportRow.PROPERTY_NAME); + model.newMandatoryColumn("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); + model.newMandatoryColumn("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + public static RegionCellImportExportModel forExport(VoyageResultsImportDataContext importDataContext) { + + RegionCellImportExportModel model = new RegionCellImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(RegionCellImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.CELL_TYPE_FORMATTER); + model.newColumnForExport(RegionCellImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + model.newColumnForExport(RegionCellImportRow.PROPERTY_NAME); + model.newColumnForExport("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); + model.newColumnForExport("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + @Override + public RegionCellImportRow newEmptyInstance() { + return new RegionCellImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java deleted file mode 100644 index bb13862..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.DataQuality; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import cells (with type "region"). - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class RegionCellImportModel extends AbstractImportModel<RegionCellImportRow> { - - public RegionCellImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, CellType> cellTypeMap, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(RegionCellImportRow.PROPERTY_CELL_TYPE, CellType.class, CellType.PROPERTY_ID, cellTypeMap); - newForeignKeyColumn(RegionCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - newMandatoryColumn(RegionCellImportRow.PROPERTY_NAME); - newMandatoryColumn("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); - newMandatoryColumn("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - } - - @Override - public RegionCellImportRow newEmptyInstance() { - return new RegionCellImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java index d1a0678..ffaa87c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java @@ -25,7 +25,7 @@ import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataQuality; /** - * Bean used as a row for import of {@link RegionCellImportModel}. + * Bean used as a row for import of {@link RegionCellImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -63,38 +63,38 @@ public class RegionCellImportRow { return voyage; } - public CellType getCellType() { - return cellType; + public void setVoyage(Voyage voyage) { + this.voyage = voyage; } - public String getName() { - return name; + public CellType getCellType() { + return cellType; } - public String getDataCoordinate() { - return dataCoordinate; + public void setCellType(CellType cellType) { + this.cellType = cellType; } - public float getDataSurface() { - return dataSurface; + public String getName() { + return name; } public void setName(String name) { this.name = name; } - public void setVoyage(Voyage voyage) { - this.voyage = voyage; - } - - public void setCellType(CellType cellType) { - this.cellType = cellType; + public String getDataCoordinate() { + return dataCoordinate; } public void setDataCoordinate(String dataCoordinate) { this.dataCoordinate = dataCoordinate; } + public float getDataSurface() { + return dataSurface; + } + public void setDataSurface(float dataSurface) { this.dataSurface = dataSurface; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java new file mode 100644 index 0000000..7b7afd8 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java @@ -0,0 +1,96 @@ +/* + * #%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.Cell; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import results of cell of type 'Region'. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class RegionCellResultImportExportModel extends EchoBaseImportExportModelSupport<RegionCellResultImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + RegionCellResultImportRow.PROPERTY_VOYAGE, + RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, + RegionCellResultImportRow.PROPERTY_ECHOTYPE, + RegionCellResultImportRow.PROPERTY_DATA_QUALITY + }; + + private RegionCellResultImportExportModel(char separator) { + super(separator); + } + + public static RegionCellResultImportExportModel forImport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { + + RegionCellResultImportExportModel model = new RegionCellResultImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.CELL_NAME, RegionCellResultImportRow.PROPERTY_CELL, Cell.class, Cell.PROPERTY_NAME, importDataContext.getVoyageRegionsByName()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, RegionCellResultImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + model.newMandatoryColumn( + metadata.getName(), + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<RegionCellResultImportRow>newResultValueSetter()); + } + return model; + + } + + public static RegionCellResultImportExportModel forExport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { + + RegionCellResultImportExportModel model = new RegionCellResultImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, RegionCellResultImportRow.PROPERTY_CELL, EchoBaseCsvUtil.CELL_FORMATTER); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, RegionCellResultImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + + return model; + + } + + @Override + public RegionCellResultImportRow newEmptyInstance() { + return new RegionCellResultImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java deleted file mode 100644 index 8e2f5c0..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import results of cell of type 'Region'. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class RegionCellResultImportModel extends AbstractImportModel<RegionCellResultImportRow> { - - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - RegionCellResultImportRow.PROPERTY_VOYAGE, - RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, - RegionCellResultImportRow.PROPERTY_ECHOTYPE, - RegionCellResultImportRow.PROPERTY_DATA_QUALITY - }; - - public RegionCellResultImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Cell> regionCellMap, - Map<String, Echotype> echotypeMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EchoBaseCsvUtil.CELL_NAME, RegionCellResultImportRow.PROPERTY_CELL, Cell.class, Cell.PROPERTY_NAME, regionCellMap); - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, RegionCellResultImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<RegionCellResultImportRow>newResultValueSetter()); - } - } - - @Override - public RegionCellResultImportRow newEmptyInstance() { - return new RegionCellResultImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java index da4dbb1..52fcf43 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java @@ -21,7 +21,6 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; @@ -29,16 +28,17 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** - * Bean used as a row for import of {@link RegionCellResultImportModel}. + * Bean used as a row for import of {@link RegionCellResultImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class RegionCellResultImportRow implements EchoBaseCsvUtil.ResultAble { +public class RegionCellResultImportRow implements ResultAble { public static final String PROPERTY_NAME = "name"; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java new file mode 100644 index 0000000..c1de923 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java @@ -0,0 +1,87 @@ +/* + * #%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.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link SampleData}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class SubSampleImportExportModel extends EchoBaseImportExportModelSupport<SubSampleImportRow> { + + private SubSampleImportExportModel(char separator) { + super(separator); + } + + public static SubSampleImportExportModel forImport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + SubSampleImportExportModel model = new SubSampleImportExportModel(importDataContext.getCsvSeparator()); + model.newIgnoredColumn("subHaul"); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, SubSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, SubSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(SubSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newForeignKeyColumn(SubSampleImportRow.PROPERTY_SEX_CATEGORY, SexCategory.class, SexCategory.PROPERTY_NAME, importDataContext.getSexCategoriesByName()); + model.newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_NUMBER_AT_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_WEIGHT_AT_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_LENGTH_CLASS); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_UNITS); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_ROUND, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + return model; + + } + + public static SubSampleImportExportModel forExport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + SubSampleImportExportModel model = new SubSampleImportExportModel(importDataContext.getCsvSeparator()); +// model.newIgnoredColumn("subHaul"); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_SEX_CATEGORY, EchoBaseCsvUtil.SEX_CATEGORY_FORMATTER); + model.newColumnForExport(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_NUMBER_AT_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(SubSampleImportRow.PROPERTY_WEIGHT_AT_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_LENGTH_CLASS); + model.newColumnForExport(SubSampleImportRow.PROPERTY_UNITS); + model.newColumnForExport(SubSampleImportRow.PROPERTY_ROUND, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + return model; + + } + + @Override + public SubSampleImportRow newEmptyInstance() { + return new SubSampleImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java deleted file mode 100644 index 2c25e55..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link SampleData}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class SubSampleImportModel extends AbstractImportModel<SubSampleImportRow> { - - public SubSampleImportModel(char separator, - Map<String, Operation> operationMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, SexCategory> sexCategoryMap) { - super(separator); - - newIgnoredColumn("subHaul"); - - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, SubSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, SubSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(SubSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(SubSampleImportRow.PROPERTY_SEX_CATEGORY, SexCategory.class, SexCategory.PROPERTY_NAME, sexCategoryMap); - - newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.PRIMITIVE_INTEGER); - - newMandatoryColumn(SubSampleImportRow.PROPERTY_NUMBER_AT_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(SubSampleImportRow.PROPERTY_WEIGHT_AT_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(SubSampleImportRow.PROPERTY_LENGTH_CLASS); - newMandatoryColumn(SubSampleImportRow.PROPERTY_UNITS); - newMandatoryColumn(SubSampleImportRow.PROPERTY_ROUND, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); - } - - @Override - public SubSampleImportRow newEmptyInstance() { - return new SubSampleImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java index 31f6ba9..1774c8f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java @@ -28,7 +28,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; /** - * Bean used as a row for import of {@link SubSampleImportModel}. + * Bean used as a row for import of {@link SubSampleImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -54,17 +54,11 @@ public class SubSampleImportRow { public static final String PROPERTY_UNITS = "units"; public static final String PROPERTY_ROUND = "round"; - + protected final Sample sample; protected Operation operation; - protected Species species; - protected SizeCategory sizeCategory; - protected SexCategory sexCategory; - - protected final Sample sample; - protected float numberAtLength; protected Float weightAtLength; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java new file mode 100644 index 0000000..22c6ecf --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java @@ -0,0 +1,79 @@ +/* + * #%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.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link Sample} of total type. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class TotalSampleImportExportModel extends EchoBaseImportExportModelSupport<TotalSampleImportRow> { + + private TotalSampleImportExportModel(char separator) { + super(separator); + } + + public static TotalSampleImportExportModel forImport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + TotalSampleImportExportModel model = new TotalSampleImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, TotalSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, TotalSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(TotalSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_WEIGHT, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_NO_PER_KG, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_SORTED_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + public static TotalSampleImportExportModel forExport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + TotalSampleImportExportModel model = new TotalSampleImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_MEAN_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_MEAN_WEIGHT, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_NO_PER_KG, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_SORTED_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + @Override + public TotalSampleImportRow newEmptyInstance() { + return new TotalSampleImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java deleted file mode 100644 index f2499d1..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link Sample} of total type. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class TotalSampleImportModel extends AbstractImportModel<TotalSampleImportRow> { - - public TotalSampleImportModel(char separator, - Map<String, Operation> operationMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, TotalSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, TotalSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(TotalSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - - newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); - - newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_WEIGHT, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(TotalSampleImportRow.PROPERTY_NO_PER_KG, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(TotalSampleImportRow.PROPERTY_SORTED_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - } - - @Override - public TotalSampleImportRow newEmptyInstance() { - return new TotalSampleImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java index f383d99..1ad6dea 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; /** - * Bean used as a row for import of {@link TotalSampleImportModel}. + * Bean used as a row for import of {@link TotalSampleImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -49,23 +49,15 @@ public class TotalSampleImportRow { public static final String PROPERTY_NO_PER_KG = "noPerKg"; public static final String PROPERTY_SORTED_WEIGHT = "sortedWeight"; - + protected final Sample sample; protected Float meanLength; - protected Float meanWeight; - protected Float noPerKg; - protected float sortedWeight; - protected Operation operation; - protected Species species; - protected SizeCategory sizeCategory; - protected final Sample sample; - public TotalSampleImportRow() { sample = new SampleImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java new file mode 100644 index 0000000..f57bb0f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java @@ -0,0 +1,93 @@ +/* + * #%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.Transect; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import transects. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class TransectImportExportModel extends EchoBaseImportExportModelSupport<TransectImportRow> { + + private TransectImportExportModel(char separator) { + super(separator); + } + + public static TransectImportExportModel forImport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransectImportExportModel model = new TransectImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(TransectImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, Transect.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newMandatoryColumn(Transect.PROPERTY_TITLE); + model.newMandatoryColumn(Transect.PROPERTY_TRANSECT_ABSTRACT); + model.newMandatoryColumn(Transect.PROPERTY_STRATUM); + model.newMandatoryColumn(Transect.PROPERTY_COMMENT); + model.newMandatoryColumn(Transect.PROPERTY_DATE_CREATED, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_LINESTRING); + return model; + + } + + public static TransectImportExportModel forExport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransectImportExportModel model = new TransectImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(TransectImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(Transect.PROPERTY_TITLE); + model.newColumnForExport(Transect.PROPERTY_TRANSECT_ABSTRACT); + model.newColumnForExport(Transect.PROPERTY_STRATUM); + model.newColumnForExport(Transect.PROPERTY_COMMENT); + model.newColumnForExport(Transect.PROPERTY_DATE_CREATED, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transect.PROPERTY_TIME_COVERAGE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transect.PROPERTY_TIME_COVERAGE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LON_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LAT_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LON_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LAT_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_LINESTRING); + return model; + + } + + @Override + public TransectImportRow newEmptyInstance() { + return new TransectImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java deleted file mode 100644 index 31363f7..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Transect; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import transects. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class TransectImportModel extends AbstractImportModel<TransectImportRow> { - - public TransectImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Vessel> vesselMap) { - super(separator); - newForeignKeyColumn( - TransectImportRow.PROPERTY_VOYAGE, - Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - - newForeignKeyColumn( - EchoBaseCsvUtil.VESSEL_NAME, Transect.PROPERTY_VESSEL, - Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - - newMandatoryColumn(Transect.PROPERTY_TITLE); - newMandatoryColumn(Transect.PROPERTY_TRANSECT_ABSTRACT); - newMandatoryColumn(Transect.PROPERTY_STRATUM); - newMandatoryColumn(Transect.PROPERTY_COMMENT); - - newMandatoryColumn(Transect.PROPERTY_DATE_CREATED, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_LINESTRING); - } - - @Override - public TransectImportRow newEmptyInstance() { - return new TransectImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java index 67a2a6d..4f79dfa 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java @@ -29,17 +29,15 @@ import java.io.Serializable; import java.util.Date; /** - * Bean used as a row for import of {@link TransectImportModel}. + * Bean used as a row for import of {@link TransectImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class TransectImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - + private static final long serialVersionUID = 1L; protected Voyage voyage; protected Transect transect; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java new file mode 100644 index 0000000..50ef71f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java @@ -0,0 +1,71 @@ +/* + * #%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.Transit; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import Transits. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class TransitImportExportModel extends EchoBaseImportExportModelSupport<TransitImportRow> { + + private TransitImportExportModel(char separator) { + super(separator); + } + + public static TransitImportExportModel forImport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransitImportExportModel model = new TransitImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(TransitImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(Transit.PROPERTY_DESCRIPTION); + model.newMandatoryColumn(Transit.PROPERTY_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transit.PROPERTY_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transit.PROPERTY_START_LOCALITY); + model.newMandatoryColumn(Transit.PROPERTY_END_LOCALITY); + return model; + + } + + public static TransitImportExportModel forExport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransitImportExportModel model = new TransitImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(TransitImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(Transit.PROPERTY_DESCRIPTION); + model.newColumnForExport(Transit.PROPERTY_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transit.PROPERTY_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transit.PROPERTY_START_LOCALITY); + model.newColumnForExport(Transit.PROPERTY_END_LOCALITY); + return model; + + } + + @Override + public TransitImportRow newEmptyInstance() { + return new TransitImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java deleted file mode 100644 index 3ea2234..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Transit; -import fr.ifremer.echobase.entities.data.Voyage; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import Transits. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class TransitImportModel extends AbstractImportModel<TransitImportRow> { - - public TransitImportModel(char separator, - Map<String, Voyage> voyageMap) { - super(separator); - newForeignKeyColumn(TransitImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(Transit.PROPERTY_DESCRIPTION); - newMandatoryColumn(Transit.PROPERTY_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transit.PROPERTY_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transit.PROPERTY_START_LOCALITY); - newMandatoryColumn(Transit.PROPERTY_END_LOCALITY); - } - - @Override - public TransitImportRow newEmptyInstance() { - return new TransitImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java index ebc1f7f..90ec738 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.data.Voyage; import java.util.Date; /** - * Bean used as a row for import of {@link TransitImportModel}. + * Bean used as a row for import of {@link TransitImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -35,11 +35,8 @@ import java.util.Date; public class TransitImportRow { public static final String PROPERTY_VOYAGE = "voyage"; - - protected Voyage voyage; - protected final Transit transit; - + protected Voyage voyage; protected String description; protected String relatedActivity; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java new file mode 100644 index 0000000..8bd44cf --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java @@ -0,0 +1,69 @@ +/* + * #%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.Voyage; +import fr.ifremer.echobase.entities.data.VoyageImpl; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import Voyages. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class VoyageImportExportModel extends EchoBaseImportExportModelSupport<Voyage> { + + private VoyageImportExportModel(char separator) { + super(separator); + } + + public static VoyageImportExportModel forImport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + VoyageImportExportModel model = new VoyageImportExportModel(importDataContext.getCsvSeparator()); + model.newMandatoryColumn(Voyage.PROPERTY_NAME); + model.newMandatoryColumn(Voyage.PROPERTY_START_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Voyage.PROPERTY_END_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Voyage.PROPERTY_START_PORT); + model.newMandatoryColumn(Voyage.PROPERTY_END_PORT); + return model; + + } + + public static VoyageImportExportModel forExport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + VoyageImportExportModel model = new VoyageImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(Voyage.PROPERTY_NAME); + model.newColumnForExport(Voyage.PROPERTY_START_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Voyage.PROPERTY_END_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Voyage.PROPERTY_START_PORT); + model.newColumnForExport(Voyage.PROPERTY_END_PORT); + return model; + + } + + @Override + public Voyage newEmptyInstance() { + return new VoyageImpl(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java deleted file mode 100644 index 2c399cd..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * #%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.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.VoyageImpl; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -/** - * Model to import Voyages. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class VoyageImportModel extends AbstractImportModel<Voyage> { - - public VoyageImportModel(char separator) { - super(separator); - newMandatoryColumn(Voyage.PROPERTY_NAME); - newMandatoryColumn(Voyage.PROPERTY_START_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Voyage.PROPERTY_END_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Voyage.PROPERTY_START_PORT); - newMandatoryColumn(Voyage.PROPERTY_END_PORT); - } - - @Override - public Voyage newEmptyInstance() { - return new VoyageImpl(); - } -} diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java index 51c1468..304f35a 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java @@ -22,12 +22,12 @@ package fr.ifremer.echobase.services; */ import com.google.common.collect.Sets; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.CellPositionReference; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; @@ -118,7 +118,7 @@ public class FixCellsIT extends EchoBaseTestServiceSupport { protected void importMissingEsduCells() throws IOException, ImportException { - AcousticImportConfiguration conf = new AcousticImportConfiguration(getLocale()); + VoyageAcousticsImportConfiguration conf = new VoyageAcousticsImportConfiguration(getLocale()); prepareInputFile(conf.getMoviesFile(), "/missingEsduCells.csv.gz"); conf.setCellPositionReference(CellPositionReference.START); @@ -158,13 +158,13 @@ Seens years 2003 :: 26595 } - protected void doImport(AcousticImportConfiguration conf, int... years) throws ImportException { + protected void doImport(VoyageAcousticsImportConfiguration conf, int... years) throws ImportException { System.gc(); ImportDataService service = newService(ImportDataService.class); - service.doImportAcoustics(conf, createFakeUser()); + service.doImportVoyageAcoustics(conf, createFakeUser()); System.gc(); } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java index 1846336..5736efa 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java @@ -24,7 +24,7 @@ import com.google.common.base.Charsets; import com.google.common.collect.Collections2; import com.google.common.collect.Sets; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.CellTopiaDao; @@ -48,6 +48,7 @@ import fr.ifremer.echobase.entities.references.CellTypeTopiaDao; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseTestServiceSupport; import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -110,7 +111,7 @@ public abstract class AbstractImportDataServiceIT extends EchoBaseTestServiceSup assertNbEntities(Echotype.class, fixtures.NB_ECHOTYPE()); } - protected <M extends AbstractImportConfiguration> Set<ImportDataFileResult> doImport(M conf, ImportDataService.ImportDataAction<M> importDataAction, int nbResults) throws ImportException { + protected <M extends VoyageImportDataConfigurationSupport> Set<ImportDataFileResult> doImport(M conf, ImportDataService.ImportDataAction<M> importDataAction, int nbResults) throws ImportException { ImportDataService service = newService(ImportDataService.class); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java index 1f5f463..7e2d45e 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java @@ -25,6 +25,7 @@ import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataProcessing; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -53,7 +54,7 @@ public class AcousticImportServiceIT extends AbstractImportDataServiceIT { Cell.class, Data.class); - AcousticImportConfiguration conf = new AcousticImportConfiguration(getLocale()); + VoyageAcousticsImportConfiguration conf = new VoyageAcousticsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setVesselId(fixtures.VESSEL_ID()); @@ -76,7 +77,7 @@ public class AcousticImportServiceIT extends AbstractImportDataServiceIT { prepareInputFile(conf.getMoviesFile(), getImportPath("movies.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.AcousticImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageAcousticsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_CELL()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java index 197f0b1..723ae69 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java @@ -24,6 +24,7 @@ import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -49,7 +50,7 @@ public class CatchesImportServiceIT extends AbstractImportDataServiceIT { assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); @@ -57,7 +58,7 @@ public class CatchesImportServiceIT extends AbstractImportDataServiceIT { prepareInputFile(conf.getSubSampleFile(), getImportPath("subsample.csv.gz")); prepareInputFile(conf.getBiometrySampleFile(), getImportPath("biometrysample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_SAMPLE_TOTAL()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java index 794f248..7ddb31b 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -48,13 +49,13 @@ public class CatchesImportServiceOnlyBiometrySampleIT extends AbstractImportData assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); prepareInputFile(conf.getBiometrySampleFile(), getImportPath("biometrysample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_SAMPLE_BIOMETRY()); assertCsvImportResult(result, 0, Sample.class, fixtures.NB_SAMPLE_BIOMETRY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java index 2a8442c..f2c36e1 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -48,13 +49,13 @@ public class CatchesImportServiceOnlySubSampleIT extends AbstractImportDataServi assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); prepareInputFile(conf.getSubSampleFile(), getImportPath("subsample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_SAMPLE_UNSORTED()); assertCsvImportResult(result, 0, Sample.class, fixtures.NB_SAMPLE_UNSORTED()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java index 28b4073..47027a9 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -48,13 +49,13 @@ public class CatchesImportServiceOnlyTotalSampleIT extends AbstractImportDataSer assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); prepareInputFile(conf.getTotalSampleFile(), getImportPath("totalsample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_SAMPLE_TOTAL()); assertCsvImportResult(result, 0, Sample.class, fixtures.NB_SAMPLE_TOTAL()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java index 8e2118a..54048c1 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java @@ -25,6 +25,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -53,7 +54,7 @@ public class CommonAllImportServiceIT extends AbstractImportDataServiceIT { // import with mode all (voyage / transit / transect) - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setAreaOfOperationId(fixtures.AREA_OF_OPERATION_ID()); conf.setDatum(fixtures.DATUM()); @@ -70,7 +71,7 @@ public class CommonAllImportServiceIT extends AbstractImportDataServiceIT { conf.setImportType(ImportType.COMMON_ALL); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_VOYAGE()); assertCsvImportResult(result, 0, Voyage.class, fixtures.NB_VOYAGE()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java index b950161..d5df2ea 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java @@ -24,6 +24,7 @@ import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -49,7 +50,7 @@ public class CommonTransectImportServiceIT extends AbstractImportDataServiceIT { assertImportCommonData(); - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setDatum(fixtures.DATUM()); conf.setVoyageId(getVoyageId()); @@ -66,7 +67,7 @@ public class CommonTransectImportServiceIT extends AbstractImportDataServiceIT { transit.clearTransect(); } - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_TRANSECT()); assertCsvImportResult(result, 0, Transect.class, fixtures.NB_TRANSECT()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java index e9ad1ce..ab82331 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -59,7 +60,7 @@ public class CommonTransitImportServiceIT extends AbstractImportDataServiceIT { // import common data with mode transit - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setTransitRelatedActivity(fixtures.TRANSIT_RELATED_ACTIVITY()); @@ -68,7 +69,7 @@ public class CommonTransitImportServiceIT extends AbstractImportDataServiceIT { conf.setImportType(ImportType.COMMON_TRANSIT); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_TRANSIT()); assertCsvImportResult(result, 0, Transit.class, fixtures.NB_TRANSIT()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java index 9e473ad..fc643c5 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class CommonVoyageImportServiceIT extends AbstractImportDataServiceIT { // import with mode voyage - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setAreaOfOperationId(fixtures.AREA_OF_OPERATION_ID()); conf.setDatum(fixtures.DATUM()); @@ -65,7 +66,7 @@ public class CommonVoyageImportServiceIT extends AbstractImportDataServiceIT { conf.setImportType(ImportType.COMMON_VOYAGE); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_VOYAGE()); assertCsvImportResult(result, 0, Voyage.class, fixtures.NB_VOYAGE()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java index e0cb551..1d45c56 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java @@ -24,6 +24,7 @@ import fr.ifremer.echobase.entities.data.GearMetadataValue; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.OperationMetadataValue; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -51,7 +52,7 @@ public class OperationImportServiceIT extends AbstractImportDataServiceIT { OperationMetadataValue.class, GearMetadataValue.class); - OperationImportConfiguration conf = new OperationImportConfiguration(getLocale()); + VoyageOperationsImportConfiguration conf = new VoyageOperationsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); @@ -62,7 +63,7 @@ public class OperationImportServiceIT extends AbstractImportDataServiceIT { prepareInputFile(conf.getGearMetadataFile(), getImportPath("gearmetadatavalue.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.OperationsImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageOperationsImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_OPERATION()); assertCsvImportResult(result, 0, Operation.class, fixtures.NB_OPERATION()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java index b15fac5..5c73646 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java @@ -20,7 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Result; @@ -29,6 +29,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -58,7 +59,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -71,7 +72,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 43533); @@ -89,7 +90,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -102,7 +103,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 357291); @@ -121,7 +122,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -134,7 +135,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 68108); assertCsvImportResult(result, 0, Result.class, 68108); @@ -153,7 +154,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -166,7 +167,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 10021); assertCsvImportResult(result, 0, Category.class, 14); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java index 2706777..3dc9e42 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class ResultsMapFishCellImportServiceIT extends AbstractImportDataService assertNoEntities(Result.class, Data.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -62,7 +63,7 @@ public class ResultsMapFishCellImportServiceIT extends AbstractImportDataService prepareInputFile(conf.getMapsFile(), getImportPath("mapsFish.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 380); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java index dcb54db..f42e5e4 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class ResultsMapOtherCellImportServiceIT extends AbstractImportDataServic assertNoEntities(Result.class, Data.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -62,7 +63,7 @@ public class ResultsMapOtherCellImportServiceIT extends AbstractImportDataServic prepareInputFile(conf.getMapsFile(), getImportPath("mapsOther.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 380); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java index 504e32a..8658503 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java @@ -27,6 +27,7 @@ import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -55,7 +56,7 @@ public class ResultsRegionCellImportServiceIT extends AbstractImportDataServiceI assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -72,7 +73,7 @@ public class ResultsRegionCellImportServiceIT extends AbstractImportDataServiceI conf.getVoyageId(), conf.getRegionAssociationFile()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 3); assertNbIDs(result, 0, 10); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java index 297e83a..98cc11c 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java @@ -25,6 +25,7 @@ import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.LengthAgeKey; import fr.ifremer.echobase.entities.data.LengthWeightKey; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class ResultsVoyageImportServiceIT extends AbstractImportDataServiceIT { assertNoEntities(LengthWeightKey.class); assertNoEntities(Echotype.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); @@ -65,7 +66,7 @@ public class ResultsVoyageImportServiceIT extends AbstractImportDataServiceIT { getImportPath("lengthWeightKey.csv.gz")); prepareInputFile(conf.getEchotypeFile(), getImportPath("echotype.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_LENGTH_AGE_KEY()); assertCsvImportResult(result, 0, LengthAgeKey.class, fixtures.NB_LENGTH_AGE_KEY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java index 9d6122e..422751c 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -50,14 +51,14 @@ public class ResultsVoyageImportServiceOnlyEchotypeIT extends AbstractImportData assertNoEntities(Echotype.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); prepareInputFile(conf.getEchotypeFile(), getImportPath("echotype.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_ECHOTYPE()); assertCsvImportResult(result, 0, Echotype.class, fixtures.NB_ECHOTYPE()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java index ee8cee9..afa853b 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.LengthAgeKey; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -50,7 +51,7 @@ public class ResultsVoyageImportServiceOnlyLengthAgeKeyIT extends AbstractImport assertNoEntities(LengthAgeKey.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); @@ -58,7 +59,7 @@ public class ResultsVoyageImportServiceOnlyLengthAgeKeyIT extends AbstractImport prepareInputFile(conf.getLengthAgeKeyFile(), getImportPath("lengthAgeKey.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_LENGTH_AGE_KEY()); assertCsvImportResult(result, 0, LengthAgeKey.class, fixtures.NB_LENGTH_AGE_KEY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java index dab283c..3acfab2 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.LengthWeightKey; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -50,7 +51,7 @@ public class ResultsVoyageImportServiceOnlyLengthWeightKeyIT extends AbstractImp assertNoEntities(LengthWeightKey.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); @@ -58,7 +59,7 @@ public class ResultsVoyageImportServiceOnlyLengthWeightKeyIT extends AbstractImp prepareInputFile(conf.getLengthWeightKeyFile(), getImportPath("lengthWeightKey.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_LENGTH_WEIGHT_KEY()); assertCsvImportResult(result, 0, LengthWeightKey.class, fixtures.NB_LENGTH_WEIGHT_KEY()); 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 f35112c..9ed63dc 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 @@ -75,13 +75,13 @@ import fr.ifremer.echobase.entities.references.Strata; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.services.EchoBaseTestServiceSupport; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; -import fr.ifremer.echobase.services.service.importdata.AbstractImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; +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.VoyageCommonsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataService; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import fr.ifremer.echobase.services.service.removedata.RemoveDataConfiguration; import fr.ifremer.echobase.services.service.removedata.RemoveDataService; import org.apache.commons.collections4.CollectionUtils; @@ -383,7 +383,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonVoyage1Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_VOYAGE, "Common/Voyage1", voyage1Id, @@ -408,7 +408,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonVoyage2Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_VOYAGE, "Common/Voyage2", voyage2Id, @@ -435,7 +435,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransit1Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSIT, "Common/Transit1", voyage1Id, @@ -462,7 +462,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransit2Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSIT, "Common/Transit2", voyage2Id, @@ -497,7 +497,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransect1Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSECT, "Common/Transect1", voyage1Id, @@ -531,7 +531,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransect2Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSECT, "Common/Transect2", voyage2Id, @@ -569,7 +569,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS operation.addGearMetadataValue(gearMetadataValue); importOperation1Id = createImport( - new OperationImportConfiguration(getLocale()), + new VoyageOperationsImportConfiguration(getLocale()), ImportType.OPERATION, "Operation1", voyage1Id, @@ -629,7 +629,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS biometrySample.addSampleData(biometrySampleData); importCatches1Id = createImport( - new CatchesImportConfiguration(getLocale()), + new VoyageCatchesImportConfiguration(getLocale()), ImportType.CATCHES, "Catches1", voyage1Id, @@ -673,7 +673,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS elementaryCell.addData(elementaryData); importAcoustic1Id = createImport( - new AcousticImportConfiguration(getLocale()), + new VoyageAcousticsImportConfiguration(getLocale()), ImportType.ACOUSTIC, "Acoustic1", voyage1Id, @@ -711,7 +711,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS voyage.addLengthWeightKey(lengthWeightKey); importResultVoyage1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_VOYAGE, "ResultsVoyage1", voyage1Id, @@ -735,7 +735,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS cell.addResult(result); importResultEsdu1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_ESDU, "ResultsEsdu1", voyage1Id, @@ -767,7 +767,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS region.addResult(result); importResultRegion1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_REGION, "ResultsRegion1", voyage1Id, @@ -795,7 +795,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS map.addResult(result); importResultMapFish1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_MAP_FISH, "ResultsMapFish1", voyage1Id, @@ -822,18 +822,18 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS map.addResult(result); importResultMapOther1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_MAP_OTHER, "ResultsMapOther1", voyage1Id, map); } - private <C extends AbstractImportConfiguration> String createImport(C importConf, - ImportType importType, - String importNote, - String voyageId, - TopiaEntity... importIds) { + private <C extends VoyageImportDataConfigurationSupport> String createImport(C importConf, + ImportType importType, + String importNote, + String voyageId, + TopiaEntity... importIds) { importConf.setImportType(importType); importConf.setImportNotes(importNote); importConf.setVoyageId(voyageId); -- 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/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 520575f87bffda480c1de0c15e12850647f9e337 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:45 2016 +0200 Renommages, mise en place context d'import (impacts dans les actions d'ui) --- .../java/fr/ifremer/echobase/ui/EchoBaseSession.java | 2 +- .../actions/importData/AbstractConfigureImport.java | 4 ++-- .../ui/actions/importData/AbstractLaunchImport.java | 4 ++-- .../actions/importData/ConfigureAcousticImport.java | 12 ++++++------ .../actions/importData/ConfigureCatchesImport.java | 12 ++++++------ .../ui/actions/importData/ConfigureCommonImport.java | 20 ++++++++++---------- .../actions/importData/ConfigureOperationImport.java | 12 ++++++------ .../actions/importData/ConfigureResultsImport.java | 12 ++++++------ .../ui/actions/importData/LaunchAcousticImport.java | 10 +++++----- .../ui/actions/importData/LaunchCatchesImport.java | 10 +++++----- .../ui/actions/importData/LaunchCommonImport.java | 10 +++++----- .../ui/actions/importData/LaunchOperationImport.java | 10 +++++----- .../ui/actions/importData/LaunchResultsImport.java | 10 +++++----- 13 files changed, 64 insertions(+), 64 deletions(-) diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java index 8ffc201..ffbb86f 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java @@ -284,7 +284,7 @@ public class EchoBaseSession implements Closeable, Serializable { /** Protect session constructor. */ protected EchoBaseSession() { - store = new TreeMap<String, Object>(); + store = new TreeMap<>(); } /** diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java index 8c8fba9..49d1218 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.importdata.AbstractImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; import fr.ifremer.echobase.ui.actions.AbstractConfigureAction; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -38,7 +38,7 @@ import java.io.IOException; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public abstract class AbstractConfigureImport<M extends AbstractImportConfiguration> extends AbstractConfigureAction<M> { +public abstract class AbstractConfigureImport<M extends VoyageImportDataConfigurationSupport> extends AbstractConfigureAction<M> { private static final long serialVersionUID = 1L; diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java index 9d93e9b..4e5ea8c 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java @@ -23,7 +23,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserPersistenceContext; import fr.ifremer.echobase.services.EchoBaseServiceSupport; -import fr.ifremer.echobase.services.service.importdata.AbstractImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; import fr.ifremer.echobase.services.service.importdata.ImportDataResult; import fr.ifremer.echobase.services.service.importdata.ImportException; import fr.ifremer.echobase.ui.actions.AbstractWaitAndExecAction; @@ -38,7 +38,7 @@ import javax.inject.Inject; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public abstract class AbstractLaunchImport<M extends AbstractImportConfiguration, S extends EchoBaseServiceSupport> extends AbstractWaitAndExecAction<M, S> { +public abstract class AbstractLaunchImport<M extends VoyageImportDataConfigurationSupport, S extends EchoBaseServiceSupport> extends AbstractWaitAndExecAction<M, S> { private static final long serialVersionUID = 1L; diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java index db8bf5e..71c1d61 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.CellPositionReference; import java.io.File; @@ -33,7 +33,7 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ConfigureAcousticImport extends AbstractConfigureImport<AcousticImportConfiguration> { +public class ConfigureAcousticImport extends AbstractConfigureImport<VoyageAcousticsImportConfiguration> { private static final long serialVersionUID = 1L; @@ -43,16 +43,16 @@ public class ConfigureAcousticImport extends AbstractConfigureImport<AcousticImp protected Map<String, String> cellPositionReferences; public ConfigureAcousticImport() { - super(AcousticImportConfiguration.class); + super(VoyageAcousticsImportConfiguration.class); } @Override - protected AcousticImportConfiguration createModel() { - return new AcousticImportConfiguration(getLocale()); + protected VoyageAcousticsImportConfiguration createModel() { + return new VoyageAcousticsImportConfiguration(getLocale()); } @Override - protected void prepareInputAction(AcousticImportConfiguration model) { + protected void prepareInputAction(VoyageAcousticsImportConfiguration model) { voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); cellPositionReferences = decoratorService.decorateEnums(CellPositionReference.values()); diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java index 1602670..87d141f 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import java.io.File; import java.util.Map; @@ -32,7 +32,7 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ConfigureCatchesImport extends AbstractConfigureImport<CatchesImportConfiguration> { +public class ConfigureCatchesImport extends AbstractConfigureImport<VoyageCatchesImportConfiguration> { private static final long serialVersionUID = 1L; @@ -40,16 +40,16 @@ public class ConfigureCatchesImport extends AbstractConfigureImport<CatchesImpor protected Map<String, String> voyages; public ConfigureCatchesImport() { - super(CatchesImportConfiguration.class); + super(VoyageCatchesImportConfiguration.class); } @Override - protected CatchesImportConfiguration createModel() { - return new CatchesImportConfiguration(getLocale()); + protected VoyageCatchesImportConfiguration createModel() { + return new VoyageCatchesImportConfiguration(getLocale()); } @Override - protected void prepareInputAction(CatchesImportConfiguration model) { + protected void prepareInputAction(VoyageCatchesImportConfiguration model) { voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java index a96e7d7..73cf6b4 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java @@ -25,7 +25,7 @@ import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.Mission; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -38,7 +38,7 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ConfigureCommonImport extends AbstractConfigureImport<CommonImportConfiguration> { +public class ConfigureCommonImport extends AbstractConfigureImport<VoyageCommonsImportConfiguration> { private static final long serialVersionUID = 1L; @@ -58,16 +58,16 @@ public class ConfigureCommonImport extends AbstractConfigureImport<CommonImportC protected Map<String, String> importTypes; public ConfigureCommonImport() { - super(CommonImportConfiguration.class); + super(VoyageCommonsImportConfiguration.class); } @Override - protected CommonImportConfiguration createModel() { - return new CommonImportConfiguration(getLocale()); + protected VoyageCommonsImportConfiguration createModel() { + return new VoyageCommonsImportConfiguration(getLocale()); } @Override - protected void prepareInputAction(CommonImportConfiguration model) { + protected void prepareInputAction(VoyageCommonsImportConfiguration model) { missions = userDbPersistenceService.loadSortAndDecorate(Mission.class); voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); areaOfOperations = userDbPersistenceService.loadSortAndDecorate(AreaOfOperation.class); @@ -121,7 +121,7 @@ public class ConfigureCommonImport extends AbstractConfigureImport<CommonImportC // mode Voyage - public CommonImportConfiguration getModelVoyage() { + public VoyageCommonsImportConfiguration getModelVoyage() { return getModel(); } @@ -139,7 +139,7 @@ public class ConfigureCommonImport extends AbstractConfigureImport<CommonImportC // mode transit - public CommonImportConfiguration getModelTransit() { + public VoyageCommonsImportConfiguration getModelTransit() { return getModel(); } @@ -158,7 +158,7 @@ public class ConfigureCommonImport extends AbstractConfigureImport<CommonImportC // mode transect - public CommonImportConfiguration getModelTransect() { + public VoyageCommonsImportConfiguration getModelTransect() { return getModel(); } @@ -176,7 +176,7 @@ public class ConfigureCommonImport extends AbstractConfigureImport<CommonImportC // mode All - public CommonImportConfiguration getModelAll() { + public VoyageCommonsImportConfiguration getModelAll() { return getModel(); } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java index ba22498..bbac755 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; import java.io.File; import java.util.Map; @@ -32,7 +32,7 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ConfigureOperationImport extends AbstractConfigureImport<OperationImportConfiguration> { +public class ConfigureOperationImport extends AbstractConfigureImport<VoyageOperationsImportConfiguration> { private static final long serialVersionUID = 1L; @@ -40,16 +40,16 @@ public class ConfigureOperationImport extends AbstractConfigureImport<OperationI protected Map<String, String> voyages; public ConfigureOperationImport() { - super(OperationImportConfiguration.class); + super(VoyageOperationsImportConfiguration.class); } @Override - protected OperationImportConfiguration createModel() { - return new OperationImportConfiguration(getLocale()); + protected VoyageOperationsImportConfiguration createModel() { + return new VoyageOperationsImportConfiguration(getLocale()); } @Override - protected void prepareInputAction(OperationImportConfiguration model) { + protected void prepareInputAction(VoyageOperationsImportConfiguration model) { voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java index a016039..638407b 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java @@ -24,7 +24,7 @@ import com.opensymphony.xwork2.interceptor.annotations.InputConfig; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import java.io.File; import java.util.Map; @@ -35,7 +35,7 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ConfigureResultsImport extends AbstractConfigureImport<ResultsImportConfiguration> { +public class ConfigureResultsImport extends AbstractConfigureImport<VoyageResultsImportConfiguration> { private static final long serialVersionUID = 1L; @@ -51,16 +51,16 @@ public class ConfigureResultsImport extends AbstractConfigureImport<ResultsImpor protected String resultLabel; public ConfigureResultsImport() { - super(ResultsImportConfiguration.class); + super(VoyageResultsImportConfiguration.class); } @Override - protected ResultsImportConfiguration createModel() { - return new ResultsImportConfiguration(getLocale()); + protected VoyageResultsImportConfiguration createModel() { + return new VoyageResultsImportConfiguration(getLocale()); } @Override - protected void prepareInputAction(ResultsImportConfiguration model) { + protected void prepareInputAction(VoyageResultsImportConfiguration model) { voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); vessels = userDbPersistenceService.loadSortAndDecorate(Vessel.class); importTypes = decoratorService.decorateEnums(ImportType.getResultImportType()); diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAcousticImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAcousticImport.java index 8c10048..b88f26b 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAcousticImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchAcousticImport.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataResult; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; @@ -32,16 +32,16 @@ import fr.ifremer.echobase.services.service.importdata.ImportException; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class LaunchAcousticImport extends AbstractLaunchImport<AcousticImportConfiguration, ImportDataService> { +public class LaunchAcousticImport extends AbstractLaunchImport<VoyageAcousticsImportConfiguration, ImportDataService> { private static final long serialVersionUID = 1L; public LaunchAcousticImport() { - super(AcousticImportConfiguration.class, ImportDataService.class); + super(VoyageAcousticsImportConfiguration.class, ImportDataService.class); } @Override - protected ImportDataResult<AcousticImportConfiguration> doImport(ImportDataService service, AcousticImportConfiguration model, EchoBaseUser user) throws ImportException { - return service.doImportAcoustics(model, user); + protected ImportDataResult<VoyageAcousticsImportConfiguration> doImport(ImportDataService service, VoyageAcousticsImportConfiguration model, EchoBaseUser user) throws ImportException { + return service.doImportVoyageAcoustics(model, user); } } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesImport.java index 597ff32..232359f 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCatchesImport.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataResult; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; @@ -32,16 +32,16 @@ import fr.ifremer.echobase.services.service.importdata.ImportException; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class LaunchCatchesImport extends AbstractLaunchImport<CatchesImportConfiguration, ImportDataService> { +public class LaunchCatchesImport extends AbstractLaunchImport<VoyageCatchesImportConfiguration, ImportDataService> { private static final long serialVersionUID = 1L; public LaunchCatchesImport() { - super(CatchesImportConfiguration.class, ImportDataService.class); + super(VoyageCatchesImportConfiguration.class, ImportDataService.class); } @Override - protected ImportDataResult<CatchesImportConfiguration> doImport(ImportDataService service, CatchesImportConfiguration model, EchoBaseUser user) throws ImportException { - return service.doImportCatches(model, user); + protected ImportDataResult<VoyageCatchesImportConfiguration> doImport(ImportDataService service, VoyageCatchesImportConfiguration model, EchoBaseUser user) throws ImportException { + return service.doImportVoyageCatches(model, user); } } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonImport.java index 5e6845f..d5339e4 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchCommonImport.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.ui.actions.importData; import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataResult; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; @@ -32,16 +32,16 @@ import fr.ifremer.echobase.services.service.importdata.ImportException; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class LaunchCommonImport extends AbstractLaunchImport<CommonImportConfiguration, ImportDataService> { +public class LaunchCommonImport extends AbstractLaunchImport<VoyageCommonsImportConfiguration, ImportDataService> { private static final long serialVersionUID = 1L; public LaunchCommonImport() { - super(CommonImportConfiguration.class, ImportDataService.class); + super(VoyageCommonsImportConfiguration.class, ImportDataService.class); } @Override - protected ImportDataResult<CommonImportConfiguration> doImport(ImportDataService service, CommonImportConfiguration model, EchoBaseUser user) throws ImportException { - return service.doImportCommons(model, user); + protected ImportDataResult<VoyageCommonsImportConfiguration> doImport(ImportDataService service, VoyageCommonsImportConfiguration model, EchoBaseUser user) throws ImportException { + return service.doImportVoyageCommons(model, user); } } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperationImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperationImport.java index 847944d..89c2ed6 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperationImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchOperationImport.java @@ -24,7 +24,7 @@ import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.services.service.importdata.ImportDataResult; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; /** * TODO @@ -32,16 +32,16 @@ import fr.ifremer.echobase.services.service.importdata.OperationImportConfigurat * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class LaunchOperationImport extends AbstractLaunchImport<OperationImportConfiguration, ImportDataService> { +public class LaunchOperationImport extends AbstractLaunchImport<VoyageOperationsImportConfiguration, ImportDataService> { private static final long serialVersionUID = 1L; public LaunchOperationImport() { - super(OperationImportConfiguration.class, ImportDataService.class); + super(VoyageOperationsImportConfiguration.class, ImportDataService.class); } @Override - protected ImportDataResult<OperationImportConfiguration> doImport(ImportDataService service, OperationImportConfiguration model, EchoBaseUser user) throws ImportException { - return service.doImportOperations(model, user); + protected ImportDataResult<VoyageOperationsImportConfiguration> doImport(ImportDataService service, VoyageOperationsImportConfiguration model, EchoBaseUser user) throws ImportException { + return service.doImportVoyageOperations(model, user); } } diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResultsImport.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResultsImport.java index 3bb7c6f..14d4b51 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResultsImport.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/LaunchResultsImport.java @@ -24,7 +24,7 @@ import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.services.service.importdata.ImportDataResult; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; /** * Configure a "result" import. @@ -32,17 +32,17 @@ import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguratio * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class LaunchResultsImport extends AbstractLaunchImport<ResultsImportConfiguration, ImportDataService> { +public class LaunchResultsImport extends AbstractLaunchImport<VoyageResultsImportConfiguration, ImportDataService> { private static final long serialVersionUID = 1L; public LaunchResultsImport() { - super(ResultsImportConfiguration.class, ImportDataService.class); + super(VoyageResultsImportConfiguration.class, ImportDataService.class); } @Override - protected ImportDataResult<ResultsImportConfiguration> doImport(ImportDataService service, ResultsImportConfiguration model, EchoBaseUser user) throws ImportException { - return service.doImportResults(model, user); + protected ImportDataResult<VoyageResultsImportConfiguration> doImport(ImportDataService service, VoyageResultsImportConfiguration model, EchoBaseUser user) throws ImportException { + return service.doImportVoyageResults(model, user); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm