branch feature/8170 updated (c93fc68 -> 130fa02)
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 c93fc68 Voyage map import ok \o/ (See #8170) new 26c5a8e Ajout colonne voyage sur import esdu echotype + fichier plus petit pour les tests new 822754f Correction de la clef du cache de category new 29a4316 Ajout d'un cache AgeCategory et SizeCategory new 130fa02 Revue de l'api pour les imports de résults + début des imports de résultats esdu The 4 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 130fa022c25914c1a515f0251f192a748fbc1691 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:53:41 2016 +0200 Revue de l'api pour les imports de résults + début des imports de résultats esdu commit 29a4316a329152aa3d6c5c9b88f067f44d7ae231 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:53:11 2016 +0200 Ajout d'un cache AgeCategory et SizeCategory commit 822754f55f86f3b79fad6c31fd2f08f916cad6c8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:52:52 2016 +0200 Correction de la clef du cache de category commit 26c5a8ebfdf926f3e72539cf18b4abcb4334a6e2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:52:18 2016 +0200 Ajout colonne voyage sur import esdu echotype + fichier plus petit pour les tests Summary of changes: .../fr/ifremer/echobase/services/csv/CellAble.java | 22 +++ .../service/importdata/AgeCategoryCache.java | 53 ++++++ .../service/importdata/ResultCategoryCache.java | 2 +- .../service/importdata/SizeCategoryCache.java | 53 ++++++ ...EchotypeAndSpeciesCategoryCellImportAction.java | 54 ++---- ...oyageResultsEsduByEchotypeCellImportAction.java | 47 +---- ...yageResultsEsduCellImportDataActionSupport.java | 194 +++++++++++++++++++++ ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 82 +++------ ...EsduSpeciesAndSizeCategoryCellImportAction.java | 90 ++++------ .../contexts/VoyageResultsImportDataContext.java | 19 ++ .../csv/EchoBaseImportExportModelSupport.java | 10 ++ ...chotypeAndSpeciesCategoryImportExportModel.java | 22 +-- ...esultByEchotypeAndSpeciesCategoryImportRow.java | 54 ++++-- .../csv/EsduResultByEchotypeImportExportModel.java | 14 +- .../csv/EsduResultByEchotypeImportRow.java | 49 ++++-- ...ltBySpeciesAndAgeCategoryImportExportModel.java | 22 +-- ...EsduResultBySpeciesAndAgeCategoryImportRow.java | 74 +++++--- ...tBySpeciesAndSizeCategoryImportExportModel.java | 16 +- ...sduResultBySpeciesAndSizeCategoryImportRow.java | 74 +++++--- .../VoyageResultsMapFishCellImportExportModel.java | 7 +- .../csv/VoyageResultsMapFishCellImportRow.java | 4 +- ...VoyageResultsMapOtherCellImportExportModel.java | 7 +- .../csv/VoyageResultsMapOtherCellImportRow.java | 4 +- ...geResultsRegionCellResultImportExportModel.java | 15 +- .../VoyageResultsRegionCellResultImportRow.java | 4 +- ...yageResultsVoyageEchotypeImportExportModel.java | 5 +- ...ResultsVoyageLengthAgeKeyImportExportModel.java | 6 +- ...ultsVoyageLengthWeightKeyImportExportModel.java | 9 +- ...oyageResultsVoyageLengthWeightKeyImportRow.java | 1 + ...esultsEsduCellOnlyEchotypeImportServiceIT.java} | 52 +++--- .../import-data/result/esdu/byEchotype.csv.gz | Bin 73537 -> 73195 bytes .../result/esdu/byEchotype_small.csv.gz | Bin 0 -> 2802 bytes 32 files changed, 666 insertions(+), 399 deletions(-) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellAble.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AgeCategoryCache.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SizeCategoryCache.java create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduCellImportDataActionSupport.java copy echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/{VoyageResultsMapFishCellImportServiceIT.java => VoyageResultsEsduCellOnlyEchotypeImportServiceIT.java} (69%) create mode 100644 echobase-services/src/test/resources/import-data/result/esdu/byEchotype_small.csv.gz -- 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 26c5a8ebfdf926f3e72539cf18b4abcb4334a6e2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:52:18 2016 +0200 Ajout colonne voyage sur import esdu echotype + fichier plus petit pour les tests --- .../import-data/result/esdu/byEchotype.csv.gz | Bin 73537 -> 73195 bytes .../import-data/result/esdu/byEchotype_small.csv.gz | Bin 0 -> 2802 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/echobase-services/src/test/resources/import-data/result/esdu/byEchotype.csv.gz b/echobase-services/src/test/resources/import-data/result/esdu/byEchotype.csv.gz index acce3cd..3518109 100644 Binary files a/echobase-services/src/test/resources/import-data/result/esdu/byEchotype.csv.gz and b/echobase-services/src/test/resources/import-data/result/esdu/byEchotype.csv.gz differ diff --git a/echobase-services/src/test/resources/import-data/result/esdu/byEchotype_small.csv.gz b/echobase-services/src/test/resources/import-data/result/esdu/byEchotype_small.csv.gz new file mode 100644 index 0000000..dbb9dfb Binary files /dev/null and b/echobase-services/src/test/resources/import-data/result/esdu/byEchotype_small.csv.gz differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 822754f55f86f3b79fad6c31fd2f08f916cad6c8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:52:52 2016 +0200 Correction de la clef du cache de category --- .../echobase/services/service/importdata/ResultCategoryCache.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 035e90d..5d8328d 100644 --- 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 @@ -53,7 +53,7 @@ public class ResultCategoryCache { public Category getResultCategory(Echotype echotype, SpeciesCategory speciesCategory, ImportDataFileResult importResult) { String key - = speciesCategory == null ? "" : speciesCategory.getTopiaId() + = (speciesCategory == null ? "" : speciesCategory.getTopiaId()) + "#" + (echotype == null ? "" : echotype.getName()); Category category = cache.get(key); -- 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 29a4316a329152aa3d6c5c9b88f067f44d7ae231 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:53:11 2016 +0200 Ajout d'un cache AgeCategory et SizeCategory --- .../service/importdata/AgeCategoryCache.java | 53 ++++++++++++++++++++++ .../service/importdata/SizeCategoryCache.java | 53 ++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AgeCategoryCache.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AgeCategoryCache.java new file mode 100644 index 0000000..c082766 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AgeCategoryCache.java @@ -0,0 +1,53 @@ +package fr.ifremer.echobase.services.service.importdata; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.references.AgeCategory; +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 05/04/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class AgeCategoryCache { + + /** Logger. */ + private static final Log log = LogFactory.getLog(AgeCategoryCache.class); + + private final Map<String, AgeCategory> cache; + private final UserDbPersistenceService persistenceService; + + public AgeCategoryCache(UserDbPersistenceService persistenceService, Map<String, AgeCategory> sizeCategoriesByName) { + this.persistenceService = persistenceService; + this.cache = new TreeMap<>(sizeCategoriesByName); + } + + public AgeCategory getAgeCategory(String ageCategoryName, String ageCategoryMeaning, ImportDataFileResult importResult) { + + AgeCategory category = cache.get(ageCategoryName); + + if (category == null) { + + // try to find it in db + if (log.isInfoEnabled()) { + log.info("Age category (" + ageCategoryName + ") not found in cache (nor in database), create it."); + } + + category = persistenceService.createAgeCategory(ageCategoryName, ageCategoryMeaning); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.AgeCategory); + + cache.put(ageCategoryName, category); + + } + + return category; + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SizeCategoryCache.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SizeCategoryCache.java new file mode 100644 index 0000000..ad94975 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SizeCategoryCache.java @@ -0,0 +1,53 @@ +package fr.ifremer.echobase.services.service.importdata; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.references.SizeCategory; +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 05/04/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SizeCategoryCache { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SizeCategoryCache.class); + + private final Map<String, SizeCategory> cache; + private final UserDbPersistenceService persistenceService; + + public SizeCategoryCache(UserDbPersistenceService persistenceService, Map<String, SizeCategory> sizeCategoriesByName) { + this.persistenceService = persistenceService; + this.cache = new TreeMap<>(sizeCategoriesByName); + } + + public SizeCategory getSizeCategory(String sizeCategoryName, String sizeCategoryMeaning, ImportDataFileResult importResult) { + + SizeCategory category = cache.get(sizeCategoryName); + + if (category == null) { + + // try to find it in db + if (log.isInfoEnabled()) { + log.info("Size category (" + sizeCategoryName + ") not found in cache (nor in database), create it."); + } + + category = persistenceService.createSizeCategory(sizeCategoryName, sizeCategoryMeaning); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SizeCategory); + + cache.put(sizeCategoryName, category); + + } + + return category; + + } + +} -- 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 130fa022c25914c1a515f0251f192a748fbc1691 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 5 12:53:41 2016 +0200 Revue de l'api pour les imports de résults + début des imports de résultats esdu --- .../fr/ifremer/echobase/services/csv/CellAble.java | 22 +++ ...EchotypeAndSpeciesCategoryCellImportAction.java | 54 ++---- ...oyageResultsEsduByEchotypeCellImportAction.java | 47 +---- ...yageResultsEsduCellImportDataActionSupport.java | 194 +++++++++++++++++++++ ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 82 +++------ ...EsduSpeciesAndSizeCategoryCellImportAction.java | 90 ++++------ .../contexts/VoyageResultsImportDataContext.java | 19 ++ .../csv/EchoBaseImportExportModelSupport.java | 10 ++ ...chotypeAndSpeciesCategoryImportExportModel.java | 22 +-- ...esultByEchotypeAndSpeciesCategoryImportRow.java | 54 ++++-- .../csv/EsduResultByEchotypeImportExportModel.java | 14 +- .../csv/EsduResultByEchotypeImportRow.java | 49 ++++-- ...ltBySpeciesAndAgeCategoryImportExportModel.java | 22 +-- ...EsduResultBySpeciesAndAgeCategoryImportRow.java | 74 +++++--- ...tBySpeciesAndSizeCategoryImportExportModel.java | 16 +- ...sduResultBySpeciesAndSizeCategoryImportRow.java | 74 +++++--- .../VoyageResultsMapFishCellImportExportModel.java | 7 +- .../csv/VoyageResultsMapFishCellImportRow.java | 4 +- ...VoyageResultsMapOtherCellImportExportModel.java | 7 +- .../csv/VoyageResultsMapOtherCellImportRow.java | 4 +- ...geResultsRegionCellResultImportExportModel.java | 15 +- .../VoyageResultsRegionCellResultImportRow.java | 4 +- ...yageResultsVoyageEchotypeImportExportModel.java | 5 +- ...ResultsVoyageLengthAgeKeyImportExportModel.java | 6 +- ...ultsVoyageLengthWeightKeyImportExportModel.java | 9 +- ...oyageResultsVoyageLengthWeightKeyImportRow.java | 1 + ...ResultsEsduCellOnlyEchotypeImportServiceIT.java | 96 ++++++++++ 27 files changed, 629 insertions(+), 372 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellAble.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellAble.java new file mode 100644 index 0000000..a3e91bd --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellAble.java @@ -0,0 +1,22 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; + +/** + * Created on 05/04/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface CellAble { + + Voyage getVoyage(); + + void setVoyage(Voyage voyage); + + Cell getCell(); + + void setCell(Cell cell); + +} 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 index 1dde0bd..6580444 100644 --- 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 @@ -2,8 +2,8 @@ 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.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; 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; @@ -11,7 +11,6 @@ import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeA 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; @@ -21,16 +20,13 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultByEchotypeAndSpeciesCategoryImportRow> { +public class VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction extends VoyageResultsEsduCellImportDataActionSupport<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); + super(importDataContext, importDataContext.getConfiguration().getEsduByEchotypeAndSpeciesCategoryFile(), EsduResultByEchotypeAndSpeciesCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); } @Override @@ -44,43 +40,19 @@ public class VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction exten } @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); - - } - - } - + protected Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, EsduResultByEchotypeAndSpeciesCategoryImportRow row) { + return resultCategoryCache.getResultCategory(row.getEchotype(), + row.getSpecies(), + row.getSizeCategory(), + null, + result); } @Override - protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { + protected void flushCellResults(ImportDataFileResult result, Voyage voyage, Cell cell, Category lastCategory, List<Result> cellResults) { - // TODO + EsduResultByEchotypeAndSpeciesCategoryImportRow row = EsduResultByEchotypeAndSpeciesCategoryImportRow.of(voyage, cell, lastCategory, cellResults); + addImportedRow(result, row); } 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 index 437f6da..2592698 100644 --- 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 @@ -2,8 +2,8 @@ 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.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; 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; @@ -11,7 +11,6 @@ import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeI 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; @@ -21,16 +20,13 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class VoyageResultsEsduByEchotypeCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultByEchotypeImportRow> { +public class VoyageResultsEsduByEchotypeCellImportAction extends VoyageResultsEsduCellImportDataActionSupport<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); + super(importDataContext, importDataContext.getConfiguration().getEsduByEchotypeFile(), EsduResultByEchotypeImportExportModel.COLUMN_NAMES_TO_EXCLUDE); } @Override @@ -44,40 +40,15 @@ public class VoyageResultsEsduByEchotypeCellImportAction extends VoyageResultsIm } @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); - - } - - } - + protected Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, EsduResultByEchotypeImportRow row) { + return resultCategoryCache.getResultCategory(row.getEchotype(), null, result); } @Override - protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { + protected void flushCellResults(ImportDataFileResult result, Voyage voyage, Cell cell, Category lastCategory, List<Result> cellResults) { - // TODO + EsduResultByEchotypeImportRow row = EsduResultByEchotypeImportRow.of(voyage, cell, lastCategory, cellResults); + addImportedRow(result, row); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduCellImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduCellImportDataActionSupport.java new file mode 100644 index 0000000..08024ae --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduCellImportDataActionSupport.java @@ -0,0 +1,194 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import com.google.common.base.Preconditions; +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.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.CellAble; +import fr.ifremer.echobase.services.csv.ResultAble; +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 org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public abstract class VoyageResultsEsduCellImportDataActionSupport<E extends ResultAble & CellAble> extends VoyageResultsImportDataActionSupport<E> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduCellImportDataActionSupport.class); + + private final Map<String, String> resultIdToCellId = new TreeMap<>(); + + protected final List<DataMetadata> metas; + + public VoyageResultsEsduCellImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, String... columnNamesToExclude) { + super(importDataContext, inputFile); + this.metas = importDataContext.getMetas(getInputFile(), columnNamesToExclude); + } + + protected abstract void flushCellResults(ImportDataFileResult result, Voyage voyage, Cell cell, Category lastCategory, List<Result> cellResults); + + @Override + protected final 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(); + + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<E> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (E row : importer) { + + doFlushTransaction(++rowNumber); + + Category category = getResultCategory(result, resultCategoryCache, row); + addResults(result, resultLabel, row, category); + + } + + } + + } + + protected abstract Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, E row); + + protected void addResults(ImportDataFileResult result, String resultLabel, E row, Category category) { + + Cell cell = row.getCell(); + + String cellTopiaId = cell.getTopiaId(); + List<Result> cellResults = addResults(row, cell, category, resultLabel, result, true, true); + for (Result cellResult : cellResults) { + resultIdToCellId.put(cellResult.getTopiaId(), cellTopiaId); + } + + addProcessedRow(result, row); + + } + + @Override + protected final void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { + + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage voyage = persistenceService.getVoyage(voyageId); + + String lastCellId = null; + Category lastCategory = null; + + List<String> cellResultIds = new LinkedList<>(); + int count = 0; + int max = result.getIds().size(); + + for (String resultId : result.getIds()) { + + if (log.isInfoEnabled()) { + log.info("Treat imported result: " + resultId + " (" + (++count) + "/" + max + ")"); + } + String cellId = resultIdToCellId.get(resultId); + + if (lastCellId != null && !lastCellId.equals(cellId)) { + + // flush current cell + flushCellResults0(result, voyage, lastCellId, lastCategory, cellResultIds); + + lastCellId = null; + cellResultIds.clear(); + + } + + if (lastCellId == null) { + + lastCellId = cellId; + lastCategory = null; + + if (log.isInfoEnabled()) { + log.info("New result cell: " + cellId); + } + + } + + Result cellResult = persistenceService.getResult(resultId); + + if (lastCategory != null && !lastCategory.equals(cellResult.getCategory())) { + + // flush current cell + flushCellResults0(result, voyage, lastCellId, lastCategory, cellResultIds); + + lastCategory = null; + cellResultIds.clear(); + + } + + if (lastCategory == null) { + + // first row for this category + lastCategory = cellResult.getCategory(); + + if (log.isInfoEnabled()) { + log.info("New result category: " + lastCategory + " for cell: " + lastCellId); + } + + } + + cellResultIds.add(resultId); + + } + + if (!cellResultIds.isEmpty()) { + + // flush last cell + flushCellResults0(result, voyage, lastCellId, lastCategory, cellResultIds); + + } + + } + + protected void flushCellResults0(ImportDataFileResult result, Voyage voyage, String lastCellId, Category lastCategory, List<String> cellResultIds) { + + Preconditions.checkState(!cellResultIds.isEmpty(), "Can't flush a cell (" + lastCellId + " ) with no result..."); + + // flush last cell + Cell cell = persistenceService.getCell(lastCellId); + Preconditions.checkNotNull(cell); + + if (log.isInfoEnabled()) { + log.info("Flush Cell " + cell + " with " + cellResultIds.size() + " results on category " + lastCategory); + } + + List<Result> cellResults = new LinkedList<>(); + + for (Result cellResult : cell.getResult()) { + + if (cellResultIds.contains(cellResult.getTopiaId())) { + cellResults.add(cellResult); + } + + } + + flushCellResults(result, voyage, cell, lastCategory, cellResults); + + + } + +} 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 index 48b6e04..e2ff8c5 100644 --- 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 @@ -1,11 +1,11 @@ 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.entities.data.Voyage; 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.AgeCategoryCache; 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; @@ -13,10 +13,8 @@ import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAn 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. @@ -24,16 +22,16 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { +public class VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction extends VoyageResultsEsduCellImportDataActionSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { /** Logger. */ private static final Log log = LogFactory.getLog(VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.class); - private final List<DataMetadata> metas; + private final AgeCategoryCache ageCategoryCache; public VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { - super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndAgeCategoryFile()); - metas = importDataContext.getMetas(getInputFile(), EsduResultBySpeciesAndAgeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndAgeCategoryFile(), EsduResultBySpeciesAndAgeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + this.ageCategoryCache = importDataContext.getAgeCategoryCache(); } @Override @@ -47,58 +45,28 @@ public class VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction extends Voya } @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); - - } - - } - + protected Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, EsduResultBySpeciesAndAgeCategoryImportRow row) { + AgeCategory ageCategory = ageCategoryCache.getAgeCategory(row.getAgeCategory(), row.getAgeCategoryMeaning(), result); + +// 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); +// } + + return resultCategoryCache.getResultCategory(null, row.getSpecies(), null, ageCategory, result); } @Override - protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { + protected void flushCellResults(ImportDataFileResult result, Voyage voyage, Cell cell, Category lastCategory, List<Result> cellResults) { - // TODO + EsduResultBySpeciesAndAgeCategoryImportRow row = EsduResultBySpeciesAndAgeCategoryImportRow.of(voyage, cell, lastCategory, cellResults); + addImportedRow(result, row); } 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 index 736912d..4ec3464 100644 --- 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 @@ -1,22 +1,20 @@ 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.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; 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.SizeCategoryCache; 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. @@ -24,16 +22,15 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { +public class VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction extends VoyageResultsEsduCellImportDataActionSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { /** Logger. */ private static final Log log = LogFactory.getLog(VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.class); - - private final List<DataMetadata> metas; + protected SizeCategoryCache sizeCategoryCache; public VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { - super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndSizeCategoryFile()); - metas = importDataContext.getMetas(getInputFile(), EsduResultBySpeciesAndSizeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndSizeCategoryFile(), EsduResultBySpeciesAndSizeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + this.sizeCategoryCache = importDataContext.getSizeCategoryCache(); } @Override @@ -47,60 +44,33 @@ public class VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction extends Voy } @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); - - } - - } - + protected Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, EsduResultBySpeciesAndSizeCategoryImportRow row) { + + SizeCategory sizeCategory = sizeCategoryCache.getSizeCategory(row.getSizeCategory(), row.getSizeCategoryMeaning(), result); + +// 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); +// } + + return resultCategoryCache.getResultCategory(null, + row.getSpecies(), + sizeCategory, + null, + result); } @Override - protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { + protected void flushCellResults(ImportDataFileResult result, Voyage voyage, Cell cell, Category lastCategory, List<Result> cellResults) { - // TODO + EsduResultBySpeciesAndSizeCategoryImportRow row = EsduResultBySpeciesAndSizeCategoryImportRow.of(voyage, cell, lastCategory, cellResults); + addImportedRow(result, row); } 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 index 625d280..b67052e 100644 --- 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 @@ -11,7 +11,9 @@ 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.AgeCategoryCache; import fr.ifremer.echobase.services.service.importdata.DataMetadataNotFoundException; +import fr.ifremer.echobase.services.service.importdata.SizeCategoryCache; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParser; @@ -49,10 +51,27 @@ public class VoyageResultsImportDataContext extends VoyageImportDataContextSuppo private Map<String, Cell> esduCellsByName; + private SizeCategoryCache sizeCategoryCache; + private AgeCategoryCache ageCategoryCache; + public VoyageResultsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageResultsImportConfiguration configuration, EchoBaseUser user) { super(persistenceService, locale, csvSeparator, configuration, user); } + public SizeCategoryCache getSizeCategoryCache() { + if (sizeCategoryCache == null) { + sizeCategoryCache = new SizeCategoryCache(persistenceService, getSizeCategoriesByName()); + } + return sizeCategoryCache; + } + + public AgeCategoryCache getAgeCategoryCache() { + if (ageCategoryCache == null) { + ageCategoryCache = new AgeCategoryCache(persistenceService, getAgeCategoriesByName()); + } + return ageCategoryCache; + } + public ValueParser<Cell> getCellValueParser() { return EchoBaseCsvUtil.newCellValueParser(getEsduCellsByName()); } 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 9492bf4..0f865c2 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 @@ -21,6 +21,16 @@ public abstract class EchoBaseImportExportModelSupport<E> extends AbstractImport super(separator); } + protected static <R extends ResultAble> void addResultsColumnsForImport(EchoBaseImportExportModelSupport<R> model, List<DataMetadata> dataMetadatas) { + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<R>newResultValueSetter()); + } + } + protected static <R extends ResultAble> void addResultsColumns(EchoBaseImportExportModelSupport<R> model, List<DataMetadata> dataMetadatas) { for (DataMetadata metadata : dataMetadatas) { model.newColumnForExport( 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 index de07a4f..764d9f7 100644 --- 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 @@ -40,9 +40,11 @@ import java.util.List; */ public class EsduResultByEchotypeAndSpeciesCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultByEchotypeAndSpeciesCategoryImportRow> { + protected static final String HEADER_SPECIES = "baracoudaCode"; + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, + HEADER_SPECIES, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, @@ -53,35 +55,27 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportExportModel extends Ech super(separator); } - public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, - List<DataMetadata> dataMetadatas) { + public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { EsduResultByEchotypeAndSpeciesCategoryImportExportModel model = new EsduResultByEchotypeAndSpeciesCategoryImportExportModel(importDataContext.getCsvSeparator()); model.newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.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(HEADER_SPECIES, 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()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } - public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, - List<DataMetadata> dataMetadatas) { + public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { EsduResultByEchotypeAndSpeciesCategoryImportExportModel model = new EsduResultByEchotypeAndSpeciesCategoryImportExportModel(importDataContext.getCsvSeparator()); model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.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(HEADER_SPECIES, 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); 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 0272460..9820151 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 @@ -20,7 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; -import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; @@ -28,8 +28,10 @@ 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.CellAble; import fr.ifremer.echobase.services.csv.ResultAble; +import java.util.LinkedList; import java.util.List; /** @@ -39,7 +41,7 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAble { +public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAble, CellAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -54,17 +56,30 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAb public static final String PROPERTY_DATA_QUALITY = "dataQuality"; protected Voyage voyage; - - protected Echotype echotype; - protected Cell cell; - - protected List<Result> result = Lists.newArrayList(); - + protected Echotype echotype; + protected final List<Result> result = new LinkedList<>(); protected Species species; protected DataQuality dataQuality; - private SizeCategory sizeCategory; + protected SizeCategory sizeCategory; + + public static EsduResultByEchotypeAndSpeciesCategoryImportRow of(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { + EsduResultByEchotypeAndSpeciesCategoryImportRow row = new EsduResultByEchotypeAndSpeciesCategoryImportRow(); + row.setVoyage(voyage); + row.setCell(cell); + row.setSpecies(category.getSpeciesCategory().getSpecies()); + row.setEchotype(category.getEchotype()); + row.setSizeCategory(category.getSpeciesCategory().getSizeCategory()); + row.result.addAll(cellResults); + return row; + } + + @Override + public Voyage getVoyage() { + return voyage; + } + @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } @@ -77,14 +92,17 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAb this.echotype = echotype; } + @Override public Cell getCell() { return cell; } + @Override public void setCell(Cell cell) { this.cell = cell; } + @Override public List<Result> getResult() { return result; } @@ -94,6 +112,16 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAb this.result.add(result); } + @Override + public DataQuality getDataQuality() { + return dataQuality; + } + + @Override + public void setDataQuality(DataQuality dataQuality) { + this.dataQuality = dataQuality; + } + public Species getSpecies() { return species; } @@ -109,12 +137,4 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAb public void setSizeCategory(SizeCategory sizeCategory) { this.sizeCategory = sizeCategory; } - - public DataQuality getDataQuality() { - return dataQuality; - } - - public void setDataQuality(DataQuality dataQuality) { - this.dataQuality = dataQuality; - } } 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 index c44fdf7..0ad1b7f 100644 --- 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 @@ -49,8 +49,7 @@ public class EsduResultByEchotypeImportExportModel extends EchoBaseImportExportM super(separator); } - public static EsduResultByEchotypeImportExportModel forImport(VoyageResultsImportDataContext importDataContext, - List<DataMetadata> dataMetadatas) { + public static EsduResultByEchotypeImportExportModel forImport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { EsduResultByEchotypeImportExportModel model = new EsduResultByEchotypeImportExportModel(importDataContext.getCsvSeparator()); model.newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); @@ -58,19 +57,12 @@ public class EsduResultByEchotypeImportExportModel extends EchoBaseImportExportM 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()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } - public static EsduResultByEchotypeImportExportModel forExport(VoyageResultsImportDataContext importDataContext, - List<DataMetadata> dataMetadatas) { + public static EsduResultByEchotypeImportExportModel forExport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { EsduResultByEchotypeImportExportModel model = new EsduResultByEchotypeImportExportModel(importDataContext.getCsvSeparator()); model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); 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 7d80c82..bc1866b 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 @@ -20,14 +20,16 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; -import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.data.Category; 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.CellAble; import fr.ifremer.echobase.services.csv.ResultAble; +import java.util.LinkedList; import java.util.List; /** @@ -36,46 +38,49 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultByEchotypeImportRow implements ResultAble { +public class EsduResultByEchotypeImportRow implements ResultAble, CellAble { public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_ECHOTYPE = "echotype"; - public static final String PROPERTY_CELL = "cell"; - public static final String PROPERTY_DATA_QUALITY = "dataQuality"; protected Voyage voyage; - - protected Echotype echotype; - protected Cell cell; - - protected List<Result> result = Lists.newArrayList(); - + protected Echotype echotype; + protected final List<Result> result = new LinkedList<>(); protected DataQuality dataQuality; - public void setVoyage(Voyage voyage) { - this.voyage = voyage; + public static EsduResultByEchotypeImportRow of(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { + EsduResultByEchotypeImportRow row = new EsduResultByEchotypeImportRow(); + row.setVoyage(voyage); + row.setCell(cell); + row.setEchotype(category.getEchotype()); + row.result.addAll(cellResults); + return row; } - public Echotype getEchotype() { - return echotype; + @Override + public Voyage getVoyage() { + return voyage; } - public void setEchotype(Echotype echotype) { - this.echotype = echotype; + @Override + public void setVoyage(Voyage voyage) { + this.voyage = voyage; } + @Override public Cell getCell() { return cell; } + @Override public void setCell(Cell cell) { this.cell = cell; } + @Override public List<Result> getResult() { return result; } @@ -85,11 +90,21 @@ public class EsduResultByEchotypeImportRow implements ResultAble { this.result.add(result); } + @Override public DataQuality getDataQuality() { return dataQuality; } + @Override public void setDataQuality(DataQuality dataQuality) { this.dataQuality = dataQuality; } + + public Echotype getEchotype() { + return echotype; + } + + public void setEchotype(Echotype echotype) { + this.echotype = echotype; + } } 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 index 6b9eb38..8f0c471 100644 --- 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 @@ -38,9 +38,11 @@ import java.util.List; */ public class EsduResultBySpeciesAndAgeCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { + protected static final String HEADER_SPECIES = "baracoudaCode"; + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, + HEADER_SPECIES, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, @@ -51,37 +53,29 @@ public class EsduResultBySpeciesAndAgeCategoryImportExportModel extends EchoBase super(separator); } - public static EsduResultBySpeciesAndAgeCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, - List<DataMetadata> dataMetadatas) { + public static EsduResultBySpeciesAndAgeCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { EsduResultBySpeciesAndAgeCategoryImportExportModel model = new EsduResultBySpeciesAndAgeCategoryImportExportModel(importDataContext.getCsvSeparator()); model.newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.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(HEADER_SPECIES, 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()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } - public static EsduResultBySpeciesAndAgeCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, - List<DataMetadata> dataMetadatas) { + public static EsduResultBySpeciesAndAgeCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { EsduResultBySpeciesAndAgeCategoryImportExportModel model = new EsduResultBySpeciesAndAgeCategoryImportExportModel(importDataContext.getCsvSeparator()); model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.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(HEADER_SPECIES, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); addResultsColumns(model, dataMetadatas); 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 46194f7..3e29731 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 @@ -20,14 +20,16 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; -import com.google.common.collect.Lists; +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.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.CellAble; import fr.ifremer.echobase.services.csv.ResultAble; +import java.util.LinkedList; import java.util.List; /** @@ -37,31 +39,40 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultBySpeciesAndAgeCategoryImportRow implements ResultAble { +public class EsduResultBySpeciesAndAgeCategoryImportRow implements ResultAble, CellAble { public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_CELL = "cell"; - public static final String PROPERTY_SPECIES = "species"; - public static final String PROPERTY_AGE_CATEGORY = "ageCategory"; - public static final String PROPERTY_AGE_CATEGORY_MEANING = "ageCategoryMeaning"; - public static final String PROPERTY_DATA_QUALITY = "dataQuality"; protected Voyage voyage; - protected Cell cell; - - protected List<Result> result = Lists.newArrayList(); - + protected final List<Result> result = new LinkedList<>(); protected Species species; protected DataQuality dataQuality; - private String ageCategory; - private String ageCategoryMeaning; + protected String ageCategory; + protected String ageCategoryMeaning; + + public static EsduResultBySpeciesAndAgeCategoryImportRow of(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { + EsduResultBySpeciesAndAgeCategoryImportRow row = new EsduResultBySpeciesAndAgeCategoryImportRow(); + row.setVoyage(voyage); + row.setCell(cell); + row.setSpecies(category.getSpeciesCategory().getSpecies()); + row.setAgeCategory(category.getSpeciesCategory().getAgeCategory().getName()); + row.setAgeCategoryMeaning(category.getSpeciesCategory().getAgeCategory().getMeaning()); + row.result.addAll(cellResults); + return row; + } + + @Override + public Voyage getVoyage() { + return voyage; + } + @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } @@ -74,30 +85,17 @@ public class EsduResultBySpeciesAndAgeCategoryImportRow implements ResultAble { this.species = species; } + @Override public Cell getCell() { return cell; } + @Override public void setCell(Cell cell) { this.cell = cell; } - public String getAgeCategory() { - return ageCategory; - } - - public void setAgeCategory(String ageCategory) { - this.ageCategory = ageCategory; - } - - public String getAgeCategoryMeaning() { - return ageCategoryMeaning; - } - - public void setAgeCategoryMeaning(String ageCategoryMeaning) { - this.ageCategoryMeaning = ageCategoryMeaning; - } - + @Override public List<Result> getResult() { return result; } @@ -107,11 +105,29 @@ public class EsduResultBySpeciesAndAgeCategoryImportRow implements ResultAble { this.result.add(result); } + @Override public DataQuality getDataQuality() { return dataQuality; } + @Override public void setDataQuality(DataQuality dataQuality) { this.dataQuality = dataQuality; } + + public String getAgeCategory() { + return ageCategory; + } + + public void setAgeCategory(String ageCategory) { + this.ageCategory = ageCategory; + } + + public String getAgeCategoryMeaning() { + return ageCategoryMeaning; + } + + public void setAgeCategoryMeaning(String ageCategoryMeaning) { + this.ageCategoryMeaning = ageCategoryMeaning; + } } 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 index e1dcc52..ad2e90f 100644 --- 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 @@ -38,9 +38,11 @@ import java.util.List; */ public class EsduResultBySpeciesAndSizeCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { + protected static final String HEADER_SPECIES = "baracoudaCode"; + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, + HEADER_SPECIES, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, @@ -59,16 +61,10 @@ public class EsduResultBySpeciesAndSizeCategoryImportExportModel extends EchoBas 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(HEADER_SPECIES, 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()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } @@ -81,7 +77,7 @@ public class EsduResultBySpeciesAndSizeCategoryImportExportModel extends EchoBas 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(HEADER_SPECIES, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); addResultsColumns(model, dataMetadatas); 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 eb84326..5b99837 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 @@ -20,14 +20,16 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; -import com.google.common.collect.Lists; +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.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.CellAble; import fr.ifremer.echobase.services.csv.ResultAble; +import java.util.LinkedList; import java.util.List; /** @@ -37,31 +39,40 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultBySpeciesAndSizeCategoryImportRow implements ResultAble { +public class EsduResultBySpeciesAndSizeCategoryImportRow implements ResultAble, CellAble { public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_CELL = "cell"; - public static final String PROPERTY_SPECIES = "species"; - public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory"; - public static final String PROPERTY_SIZE_CATEGORY_MEANING = "sizeCategoryMeaning"; - public static final String PROPERTY_DATA_QUALITY = "dataQuality"; protected Voyage voyage; - protected Cell cell; - - protected List<Result> result = Lists.newArrayList(); - + protected final List<Result> result = new LinkedList<>(); protected Species species; protected DataQuality dataQuality; - private String sizeCategory; - private String sizeCategoryMeaning; + protected String sizeCategory; + protected String sizeCategoryMeaning; + + public static EsduResultBySpeciesAndSizeCategoryImportRow of(Voyage voyage, Cell cell, Category category, List<Result> results) { + EsduResultBySpeciesAndSizeCategoryImportRow row = new EsduResultBySpeciesAndSizeCategoryImportRow(); + row.setVoyage(voyage); + row.setCell(cell); + row.setSpecies(category.getSpeciesCategory().getSpecies()); + row.setSizeCategory(category.getSpeciesCategory().getSizeCategory().getName()); + row.setSizeCategoryMeaning(category.getSpeciesCategory().getSizeCategory().getMeaning()); + row.result.addAll(results); + return row; + } + + @Override + public Voyage getVoyage() { + return voyage; + } + @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } @@ -74,30 +85,17 @@ public class EsduResultBySpeciesAndSizeCategoryImportRow implements ResultAble { this.species = species; } + @Override public Cell getCell() { return cell; } + @Override public void setCell(Cell cell) { this.cell = cell; } - public String getSizeCategory() { - return sizeCategory; - } - - public void setSizeCategory(String sizeCategory) { - this.sizeCategory = sizeCategory; - } - - public String getSizeCategoryMeaning() { - return sizeCategoryMeaning; - } - - public void setSizeCategoryMeaning(String sizeCategoryMeaning) { - this.sizeCategoryMeaning = sizeCategoryMeaning; - } - + @Override public List<Result> getResult() { return result; } @@ -107,11 +105,29 @@ public class EsduResultBySpeciesAndSizeCategoryImportRow implements ResultAble { this.result.add(result); } + @Override public DataQuality getDataQuality() { return dataQuality; } + @Override public void setDataQuality(DataQuality dataQuality) { this.dataQuality = dataQuality; } + + public String getSizeCategory() { + return sizeCategory; + } + + public void setSizeCategory(String sizeCategory) { + this.sizeCategory = sizeCategory; + } + + public String getSizeCategoryMeaning() { + return sizeCategoryMeaning; + } + + public void setSizeCategoryMeaning(String sizeCategoryMeaning) { + this.sizeCategoryMeaning = sizeCategoryMeaning; + } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportExportModel.java index d25b367..766849b 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportExportModel.java @@ -81,12 +81,7 @@ public class VoyageResultsMapFishCellImportExportModel extends EchoBaseImportExp model.newMandatoryColumn(VoyageResultsMapFishCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); model.newMandatoryColumn(VoyageResultsMapFishCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - for (DataMetadata metadata : dataMetadatas) { - model.newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<VoyageResultsMapFishCellImportRow>newResultValueSetter()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportRow.java index ecd13be..b805215 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapFishCellImportRow.java @@ -32,7 +32,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.services.csv.ResultAble; -import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; /** @@ -73,7 +73,7 @@ public class VoyageResultsMapFishCellImportRow implements ResultAble { protected Voyage voyage; - protected final List<Result> result = new ArrayList<>(); + protected final List<Result> result = new LinkedList<>(); protected Species species; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportExportModel.java index a5f4d67..4323298 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportExportModel.java @@ -69,12 +69,7 @@ public class VoyageResultsMapOtherCellImportExportModel extends EchoBaseImportEx model.newMandatoryColumn(VoyageResultsMapOtherCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); model.newMandatoryColumn(VoyageResultsMapOtherCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - for (DataMetadata metadata : dataMetadatas) { - model.newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<VoyageResultsMapOtherCellImportRow>newResultValueSetter()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportRow.java index 6ed408d..a741316 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsMapOtherCellImportRow.java @@ -28,7 +28,7 @@ import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.services.csv.ResultAble; -import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; /** @@ -63,7 +63,7 @@ public class VoyageResultsMapOtherCellImportRow implements ResultAble { protected Voyage voyage; - protected final List<Result> result = new ArrayList<>(); + protected final List<Result> result = new LinkedList<>(); protected DataQuality dataQuality; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportExportModel.java index 4f7641f..0315b14 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportExportModel.java @@ -40,9 +40,11 @@ import java.util.List; */ public class VoyageResultsRegionCellResultImportExportModel extends EchoBaseImportExportModelSupport<VoyageResultsRegionCellResultImportRow> { + protected static final String HEADER_SPECIES = "baracoudaCode"; + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, + HEADER_SPECIES, VoyageResultsRegionCellResultImportRow.PROPERTY_VOYAGE, VoyageResultsRegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, VoyageResultsRegionCellResultImportRow.PROPERTY_ECHOTYPE, @@ -59,16 +61,11 @@ public class VoyageResultsRegionCellResultImportExportModel extends EchoBaseImpo model.newForeignKeyColumn(VoyageResultsRegionCellResultImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); model.newForeignKeyColumn(EchoBaseCsvUtil.CELL_NAME, VoyageResultsRegionCellResultImportRow.PROPERTY_CELL, Cell.class, Cell.PROPERTY_NAME, importDataContext.getVoyageRegionsByName()); model.newForeignKeyColumn(VoyageResultsRegionCellResultImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); - model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, VoyageResultsRegionCellResultImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(HEADER_SPECIES, VoyageResultsRegionCellResultImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); model.newForeignKeyColumn(VoyageResultsRegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); model.newForeignKeyColumn(VoyageResultsRegionCellResultImportRow.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.<VoyageResultsRegionCellResultImportRow>newResultValueSetter()); - } + addResultsColumnsForImport(model, dataMetadatas); return model; } @@ -79,7 +76,7 @@ public class VoyageResultsRegionCellResultImportExportModel extends EchoBaseImpo model.newColumnForExport(VoyageResultsRegionCellResultImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, VoyageResultsRegionCellResultImportRow.PROPERTY_CELL, EchoBaseCsvUtil.CELL_FORMATTER); model.newColumnForExport(VoyageResultsRegionCellResultImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); - model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, VoyageResultsRegionCellResultImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(HEADER_SPECIES, VoyageResultsRegionCellResultImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); model.newColumnForExport(VoyageResultsRegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); model.newColumnForExport(VoyageResultsRegionCellResultImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportRow.java index 65abf87..835aff3 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsRegionCellResultImportRow.java @@ -31,7 +31,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.services.csv.ResultAble; -import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; /** @@ -62,7 +62,7 @@ public class VoyageResultsRegionCellResultImportRow implements ResultAble { protected Cell cell; - protected final List<Result> result = new ArrayList<>(); + protected final List<Result> result = new LinkedList<>(); protected Species species; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java index 8db503d..8689524 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportExportModel.java @@ -36,6 +36,7 @@ import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImp public class VoyageResultsVoyageEchotypeImportExportModel extends EchoBaseImportExportModelSupport<VoyageResultsVoyageEchotypeImportRow> { public static final String HEADER_ECHOTYPE_NAME = "echotypeName"; + protected static final String HEADER_SPECIES = "baracoudaCode"; private VoyageResultsVoyageEchotypeImportExportModel(char separator) { super(separator); @@ -48,7 +49,7 @@ public class VoyageResultsVoyageEchotypeImportExportModel extends EchoBaseImport model.newMandatoryColumn(VoyageResultsVoyageEchotypeImportRow.PROPERTY_MEANING, Echotype.PROPERTY_MEANING); model.newForeignKeyColumn(VoyageResultsVoyageEchotypeImportRow.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()); + model.newForeignKeyColumn(HEADER_SPECIES, Echotype.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); return model; } @@ -60,7 +61,7 @@ public class VoyageResultsVoyageEchotypeImportExportModel extends EchoBaseImport model.newColumnForExport(VoyageResultsVoyageEchotypeImportRow.PROPERTY_MEANING, Echotype.PROPERTY_MEANING); model.newColumnForExport(VoyageResultsVoyageEchotypeImportRow.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); + model.newColumnForExport(HEADER_SPECIES, Echotype.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); return model; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthAgeKeyImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthAgeKeyImportExportModel.java index 4148419..72ef37d 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthAgeKeyImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthAgeKeyImportExportModel.java @@ -35,6 +35,8 @@ import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImp */ public class VoyageResultsVoyageLengthAgeKeyImportExportModel extends EchoBaseImportExportModelSupport<VoyageResultsVoyageLengthAgeKeyImportRow> { + protected static final String HEADER_SPECIES = "baracoudaCode"; + private VoyageResultsVoyageLengthAgeKeyImportExportModel(char separator) { super(separator); } @@ -48,7 +50,7 @@ public class VoyageResultsVoyageLengthAgeKeyImportExportModel extends EchoBaseIm 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()); + model.newForeignKeyColumn(HEADER_SPECIES, LengthAgeKey.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); return model; } @@ -62,7 +64,7 @@ public class VoyageResultsVoyageLengthAgeKeyImportExportModel extends EchoBaseIm model.newColumnForExport(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); model.newColumnForExport(LengthAgeKey.PROPERTY_METADATA); model.newColumnForExport(LengthAgeKey.PROPERTY_STRATA, LengthAgeKey.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); - model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(HEADER_SPECIES, LengthAgeKey.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); return model; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportExportModel.java index eaa94b5..1bc6ee0 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportExportModel.java @@ -38,6 +38,7 @@ public class VoyageResultsVoyageLengthWeightKeyImportExportModel extends EchoBas public static final String HEADER_A_PARAMETER = "aParameter"; public static final String HEADER_B_PARAMETER = "bParameter"; + protected static final String HEADER_SPECIES = "baracoudaCode"; private VoyageResultsVoyageLengthWeightKeyImportExportModel(char separator) { super(separator); @@ -50,8 +51,8 @@ public class VoyageResultsVoyageLengthWeightKeyImportExportModel extends EchoBas model.newMandatoryColumn(HEADER_B_PARAMETER, LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); model.newForeignKeyColumn(VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); model.newForeignKeyColumn(VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); - model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); - model.newForeignKeyColumn(LengthWeightKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, importDataContext.getStratasByName()); + model.newForeignKeyColumn(HEADER_SPECIES, VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, importDataContext.getStratasByName()); return model; } @@ -63,8 +64,8 @@ public class VoyageResultsVoyageLengthWeightKeyImportExportModel extends EchoBas model.newColumnForExport(HEADER_B_PARAMETER, LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); model.newColumnForExport(VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); model.newColumnForExport(VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); - model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); - model.newColumnForExport(LengthWeightKey.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); + model.newColumnForExport(HEADER_SPECIES, VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(VoyageResultsVoyageLengthWeightKeyImportRow.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); return model; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportRow.java index ef57446..ddac939 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageLengthWeightKeyImportRow.java @@ -42,6 +42,7 @@ public class VoyageResultsVoyageLengthWeightKeyImportRow implements Serializable public static final String PROPERTY_VOYAGE = "voyage"; public static final String PROPERTY_SPECIES = "species"; public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory"; + public static final String PROPERTY_STRATA = "strata"; protected final LengthWeightKey lengthWeightKey; protected Species species; diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsEsduCellOnlyEchotypeImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsEsduCellOnlyEchotypeImportServiceIT.java new file mode 100644 index 0000000..b7cf342 --- /dev/null +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsEsduCellOnlyEchotypeImportServiceIT.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; + +import com.google.common.collect.Iterables; +import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; + +import java.io.IOException; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class VoyageResultsEsduCellOnlyEchotypeImportServiceIT extends VoyageResultsImportServiceITSupport { + + public VoyageResultsEsduCellOnlyEchotypeImportServiceIT() { + super(1); + } + + protected FakeEchoBaseServiceContext initContext() { + return new FakeEchoBaseServiceContext(fixtures.IMPORT_DATA_ECHOBASE_CATCHES_AND_VOYAGE_RESULT()); + } + + protected String[] getImportPath(String filename) { + return new String[]{"/import-data", "result", "esdu", filename}; + } + + @Override + protected VoyageResultsImportConfiguration createConfiguration() throws IOException { + VoyageResultsImportConfiguration configuration = super.createConfiguration(); + configuration.setImportType(ImportType.RESULT_ESDU); + + InputFile inputFile = configuration.getEsduByEchotypeFile(); + prepareInputFile(inputFile, getImportPath("byEchotype_small.csv.gz")); + + addMissingEsduCells(EchoBaseCsvUtil.CELL_NAME, configuration.getVoyageId(), inputFile); + + configuration.setDataProcessingId(getDataProcessingId()); + + addMissingEsduCells(EchoBaseCsvUtil.CELL_NAME, configuration.getVoyageId(), inputFile); + return configuration; + } + + @Override + protected void assertBeforeImport() { + assertImportCommonData(); + assertImportOperations(); + assertImportSampleDatas(); + assertImportVoyageResult(); + assertNoEntities(Result.class); + } + + @Override + protected void assertAfertImport(ImportDataResult<VoyageResultsImportConfiguration> result) throws IOException { +// Set<ImportDataFileResult> importDataFileResults = result.getImportResults(); +// assertNbIds(importDataFileResults, 0, 43533); +// +// assertCsvImportResult(importDataFileResults, 0, Result.class, 43533); +// assertCsvImportResult(importDataFileResults, 0, Category.class, 7); + + int nbCategory = 7; + int nbResult = 1569; +// int nbResult = 43533; + + ImportDataFileResult importDataFileResult = Iterables.get(result.getImportResults(), 0); + assertCsvImportResultPerEntity(importDataFileResult, Result.class, nbResult, 0, nbResult); + assertCsvImportResultPerEntity(importDataFileResult, Category.class, nbCategory, 0, nbCategory); + assertCsvImportResult0(importDataFileResult, nbResult); + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm