This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit cd4c7ee532575e11d9158e771847051cdb19dbc4 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Wed Jun 29 09:17:44 2016 +0200 Refactoring on result import to make place for mooring --- ...ava => ImportResultsCellDataActionSupport.java} | 43 ++--- ...rt.java => ImportResultsDataActionSupport.java} | 20 +- .../VoyageResultsCellImportDataActionSupport.java | 109 +---------- ...ndSpeciesCategoryAndLengthCellImportAction.java | 5 +- ...EchotypeAndSpeciesCategoryCellImportAction.java | 6 +- ...oyageResultsEsduByEchotypeCellImportAction.java | 5 +- ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 6 +- .../VoyageResultsImportDataActionSupport.java | 52 +----- .../VoyageResultsRegionResultsImportAction.java | 147 +-------------- .../ImportResultsConfigurationSupport.java | 54 ++++++ .../VoyageResultsImportConfiguration.java | 32 ++-- ...aContext.java => ImportResultsDataContext.java} | 42 ++--- .../MooringAcousticsImportDataContext.java | 2 +- .../contexts/VoyageImportDataContextSupport.java | 19 -- .../contexts/VoyageResultsImportDataContext.java | 206 +++------------------ 15 files changed, 172 insertions(+), 576 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsCellDataActionSupport.java similarity index 72% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsCellDataActionSupport.java index 9b562b3..3acef6c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsCellDataActionSupport.java @@ -22,18 +22,19 @@ package fr.ifremer.echobase.services.service.importdata.actions; */ import com.google.common.base.Preconditions; +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.ImportedCellResult; 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 fr.ifremer.echobase.services.service.importdata.configurations.ImportResultsConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.contexts.ImportResultsDataContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; @@ -42,29 +43,29 @@ import java.util.LinkedList; import java.util.List; /** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com + * @author Julien Ruchaud - ruchaud@codelutin.com * @since 4.0 */ -public abstract class VoyageResultsCellImportDataActionSupport<E extends ResultAble & CellAble> extends VoyageResultsImportDataActionSupport<E> { +public abstract class ImportResultsCellDataActionSupport<M extends ImportResultsConfigurationSupport, C extends ImportResultsDataContext<M>, E extends CellAble & ResultAble> extends ImportResultsDataActionSupport<M, C, E> { /** Logger. */ - private static final Log log = LogFactory.getLog(VoyageResultsCellImportDataActionSupport.class); + private static final Log log = LogFactory.getLog(ImportResultsCellDataActionSupport.class); protected final List<DataMetadata> metas; - protected VoyageResultsCellImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, String... columnNamesToExclude) { + protected ImportResultsCellDataActionSupport(C importDataContext, InputFile inputFile, String... columnNamesToExclude) { super(importDataContext, inputFile); this.metas = importDataContext.getMetas(getInputFile(), columnNamesToExclude); } - protected abstract E newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults); + protected abstract E newImportedRow(DataAcousticProvider provider, Cell cell, Category category, List<Result> cellResults); protected abstract Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, E row); + protected abstract DataAcousticProvider getDataProvider(C importDataContext); + @Override - protected final void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + protected final void performImport(C importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of acoustic result by species and size category from file " + inputFile.getFileName()); @@ -88,18 +89,13 @@ public abstract class VoyageResultsCellImportDataActionSupport<E extends ResultA addResults(row, cell, category, resultLabel, result, true, true, rowNumber); addProcessedRow(result, row); - } - } - } - + @Override - protected final void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage voyage = persistenceService.getVoyage(voyageId); + protected final void computeImportedExport(C importDataContext, ImportDataFileResult result) { + DataAcousticProvider provider = getDataProvider(importDataContext); List<Result> cellResults = new LinkedList<>(); Cell cell = null; @@ -117,7 +113,7 @@ public abstract class VoyageResultsCellImportDataActionSupport<E extends ResultA } else if (currentLineNumber != lineNumber) { - flushCell(currentLineNumber, result, voyage, cell, category, cellResults); + flushCell(currentLineNumber, result, provider, cell, category, cellResults); currentLineNumber = lineNumber; cell = resultRow.getCell(); @@ -130,21 +126,18 @@ public abstract class VoyageResultsCellImportDataActionSupport<E extends ResultA } - flushCell(currentLineNumber, result, voyage, cell, category, cellResults); + flushCell(currentLineNumber, result, provider, cell, category, cellResults); } - protected void flushCell(int lineNumber, ImportDataFileResult result, Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - + protected void flushCell(int lineNumber, ImportDataFileResult result, DataAcousticProvider provider, Cell cell, Category category, List<Result> cellResults) { Preconditions.checkState(!cellResults.isEmpty()); if (log.isInfoEnabled()) { log.info("Flush " + cell + " (" + lineNumber + ") with " + cellResults.size() + " result(s) with category: " + category + "."); } - E row = newImportedRow(voyage, cell, category, cellResults); + E row = newImportedRow(provider, cell, category, cellResults); addImportedRow(result, row); - } - } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsDataActionSupport.java similarity index 82% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsDataActionSupport.java index c1702fa..345cba0 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsDataActionSupport.java @@ -29,20 +29,24 @@ import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.services.csv.ResultAble; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.contexts.ImportDataContextSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.util.LinkedList; import java.util.List; /** - * Created on 30/03/16. - * - * @author Tony Chemit - chemit@codelutin.com + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 */ -public abstract class VoyageResultsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, E> { +public abstract class ImportResultsDataActionSupport<M extends ImportDataConfigurationSupport, C extends ImportDataContextSupport<M>, E> extends ImportDataActionSupport<M, C, E> { - protected VoyageResultsImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile) { + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportResultsDataActionSupport.class); + + public ImportResultsDataActionSupport(C importDataContext, InputFile inputFile) { super(importDataContext, inputFile); } @@ -84,7 +88,5 @@ public abstract class VoyageResultsImportDataActionSupport<E> extends ImportData } return results; - } - } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java index 9b562b3..f1f9cd9 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsCellImportDataActionSupport.java @@ -21,25 +21,14 @@ package fr.ifremer.echobase.services.service.importdata.actions; * #L% */ -import com.google.common.base.Preconditions; -import fr.ifremer.echobase.entities.ImportedCellResult; -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.entities.DataAcousticProvider; 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.configurations.VoyageResultsImportConfiguration; 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; /** * Created on 25/03/16. @@ -47,104 +36,18 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public abstract class VoyageResultsCellImportDataActionSupport<E extends ResultAble & CellAble> extends VoyageResultsImportDataActionSupport<E> { +public abstract class VoyageResultsCellImportDataActionSupport<E extends ResultAble & CellAble> extends ImportResultsCellDataActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, E> { /** Logger. */ private static final Log log = LogFactory.getLog(VoyageResultsCellImportDataActionSupport.class); - protected final List<DataMetadata> metas; - protected VoyageResultsCellImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, String... columnNamesToExclude) { - super(importDataContext, inputFile); - this.metas = importDataContext.getMetas(getInputFile(), columnNamesToExclude); - } - - protected abstract E newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults); - - protected abstract Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, E row); - - @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); - Cell cell = row.getCell(); - - addResults(row, cell, category, resultLabel, result, true, true, rowNumber); - - addProcessedRow(result, row); - - } - - } - + super(importDataContext, inputFile, columnNamesToExclude); } @Override - protected final void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage voyage = persistenceService.getVoyage(voyageId); - - List<Result> cellResults = new LinkedList<>(); - Cell cell = null; - Category category = null; - int currentLineNumber = -1; - for (ImportedCellResult resultRow : persistenceService.getImportedCellResults(result.getImportFile())) { - - int lineNumber = resultRow.getLineNumber(); - - if (currentLineNumber == -1) { - - currentLineNumber = lineNumber; - cell = resultRow.getCell(); - category = resultRow.getCategory(); - - } else if (currentLineNumber != lineNumber) { - - flushCell(currentLineNumber, result, voyage, cell, category, cellResults); - - currentLineNumber = lineNumber; - cell = resultRow.getCell(); - category = resultRow.getCategory(); - cellResults.clear(); - - } - - cellResults.add(resultRow.getResult()); - - } - - flushCell(currentLineNumber, result, voyage, cell, category, cellResults); - - } - - protected void flushCell(int lineNumber, ImportDataFileResult result, Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - - Preconditions.checkState(!cellResults.isEmpty()); - - if (log.isInfoEnabled()) { - log.info("Flush " + cell + " (" + lineNumber + ") with " + cellResults.size() + " result(s) with category: " + category + "."); - } - - E row = newImportedRow(voyage, cell, category, cellResults); - addImportedRow(result, row); - + protected DataAcousticProvider getDataProvider(VoyageResultsImportDataContext importDataContext) { + return (DataAcousticProvider) importDataContext.getVoyage(); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthCellImportAction.java index c4e7947..2cc2ad5 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthCellImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthCellImportAction.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata.actions; import com.google.common.base.Preconditions; import com.google.common.base.Strings; +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; @@ -86,8 +87,8 @@ public class VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthCellImportAct } @Override - protected VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - return VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow.of(voyage, cell, category, cellResults); + protected VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow newImportedRow(DataAcousticProvider voyage, Cell cell, Category category, List<Result> cellResults) { + return VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow.of((Voyage) voyage, cell, category, cellResults); } } 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 e33e20e..b965d5f 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 @@ -21,12 +21,14 @@ package fr.ifremer.echobase.services.service.importdata.actions; * #L% */ +import fr.ifremer.echobase.entities.DataAcousticProvider; 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.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsEsduByEchotypeAndSpeciesCategoryImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow; @@ -66,8 +68,8 @@ public class VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction exten } @Override - protected VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - return VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow.of(voyage, cell, category, cellResults); + protected VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow newImportedRow(DataAcousticProvider voyage, Cell cell, Category category, List<Result> cellResults) { + return VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow.of((Voyage) voyage, cell, category, cellResults); } } 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 c675f76..b591598 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 @@ -21,6 +21,7 @@ package fr.ifremer.echobase.services.service.importdata.actions; * #L% */ +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; @@ -61,8 +62,8 @@ public class VoyageResultsEsduByEchotypeCellImportAction extends VoyageResultsCe } @Override - protected VoyageResultsEsduByEchotypeImportRow newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - return VoyageResultsEsduByEchotypeImportRow.of(voyage, cell, category, cellResults); + protected VoyageResultsEsduByEchotypeImportRow newImportedRow(DataAcousticProvider voyage, Cell cell, Category category, List<Result> cellResults) { + return VoyageResultsEsduByEchotypeImportRow.of((Voyage) voyage, cell, category, 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 97ff4a5..761806a 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 @@ -22,6 +22,7 @@ package fr.ifremer.echobase.services.service.importdata.actions; */ import com.google.common.base.Preconditions; +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; @@ -31,6 +32,7 @@ import fr.ifremer.echobase.services.service.importdata.AgeCategoryCache; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.MismatchAgeCategoryMeaningException; import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsEsduBySpeciesAndAgeCategoryImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsEsduBySpeciesAndAgeCategoryImportRow; @@ -73,8 +75,8 @@ public class VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction extends Voya } @Override - protected VoyageResultsEsduBySpeciesAndAgeCategoryImportRow newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - return VoyageResultsEsduBySpeciesAndAgeCategoryImportRow.of(voyage, cell, category, cellResults); + protected VoyageResultsEsduBySpeciesAndAgeCategoryImportRow newImportedRow(DataAcousticProvider voyage, Cell cell, Category category, List<Result> cellResults) { + return VoyageResultsEsduBySpeciesAndAgeCategoryImportRow.of((Voyage) voyage, cell, category, cellResults); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java index c1702fa..56b92ca 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java @@ -21,70 +21,20 @@ package fr.ifremer.echobase.services.service.importdata.actions; * #L% */ -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.services.csv.ResultAble; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; -import java.util.LinkedList; -import java.util.List; /** * Created on 30/03/16. * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class VoyageResultsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, E> { +public abstract class VoyageResultsImportDataActionSupport<E> extends ImportResultsDataActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, E> { protected VoyageResultsImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile) { super(importDataContext, inputFile); } - protected List<Result> addResults(ResultAble row, - Cell cell, - Category category, - String resultLabel, - ImportDataFileResult importResult, - boolean collectIds, - boolean importNAResults, int rowNumber) { - - List<Result> results = new LinkedList<>(); - - for (Result result : row.getResult()) { - - if (!importNAResults && EchoBaseCsvUtil.NA.equals(result.getResultValue())) { - - // Do not import NA results - continue; - } - result.setDataQuality(row.getDataQuality()); - result.setCategory(category); - result.setResultLabel(resultLabel); - - Result resultCreated = persistenceService.createResult(result); - cell.addResult(resultCreated); - - if (collectIds) { - - addId(importResult,EchoBaseUserEntityEnum.Result, resultCreated, rowNumber); - - } else { - - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Result); - } - - results.add(resultCreated); - - } - - return results; - - } - } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java index faeb63e..92852e4 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java @@ -21,6 +21,7 @@ package fr.ifremer.echobase.services.service.importdata.actions; * #L% */ +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; @@ -57,11 +58,6 @@ public class VoyageResultsRegionResultsImportAction extends VoyageResultsCellImp } @Override - protected VoyageResultsRegionCellResultImportRow newImportedRow(Voyage voyage, Cell cell, Category category, List<Result> cellResults) { - return VoyageResultsRegionCellResultImportRow.of(voyage, cell, category, cellResults); - } - - @Override protected Category getResultCategory(ImportDataFileResult result, ResultCategoryCache resultCategoryCache, VoyageResultsRegionCellResultImportRow row) { return resultCategoryCache.getResultCategory(row.getEchotype(), row.getSpecies(), @@ -71,141 +67,8 @@ public class VoyageResultsRegionResultsImportAction extends VoyageResultsCellImp result); } -// private final Map<String, String> resultIdToCellId = new TreeMap<>(); -// -// @Override -// protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { -// -// if (log.isInfoEnabled()) { -// log.info("Starts import of Region cell results from file " + inputFile.getFileName()); -// } -// -// String resultLabel = getConfiguration().getResultLabel(); -// -// ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); -// -// try (Import<VoyageResultsRegionCellResultImportRow> importer = open()) { -// -// incrementsProgress(); -// int rowNumber = 0; -// for (VoyageResultsRegionCellResultImportRow row : importer) { -// -// doFlushTransaction(++rowNumber); -// -// Cell cell = row.getCell(); -// -// Category category = resultCategoryCache.getResultCategory(row.getEchotype(), -// row.getSpecies(), -// row.getSizeCategory(), -// null, -// result); -// -// String cellTopiaId = cell.getTopiaId(); -// -// List<Result> cellResults = addResults(row, cell, category, resultLabel, result, true, false); -// for (Result cellResult : cellResults) { -// resultIdToCellId.put(cellResult.getTopiaId(), cellTopiaId); -// } -// -// addProcessedRow(result, row); -// -// } -// } -// -// } -// -// @Override -// protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { -// -// String voyageId = importDataContext.getConfiguration().getVoyageId(); -// Voyage voyage = persistenceService.getVoyage(voyageId); -// -// String lastCellId = null; -// Category lastCategory = null; -// -// List<Result> cellResults = new LinkedList<>(); -// for (String resultId : result.getIds()) { -// -// String cellId = resultIdToCellId.get(resultId); -// -// if (lastCellId != null && !lastCellId.equals(cellId)) { -// -// Preconditions.checkState(!cellResults.isEmpty(), "Can't flush a cell (" + lastCellId + " ) with no result..."); -// -// // flush current cell -// Cell cell = persistenceService.getCell(lastCellId); -// -// if (log.isInfoEnabled()) { -// log.info("Cell has changed, flushing " + cellResults.size() + " results for cell: " + cell + " with category " + lastCategory); -// } -// VoyageResultsRegionCellResultImportRow row = VoyageResultsRegionCellResultImportRow.of(voyage, cell, lastCategory, cellResults); -// -// addImportedRow(result, row); -// -// lastCellId = null; -// cellResults.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())) { -// -// Preconditions.checkState(!cellResults.isEmpty(), "Can't flush a cell (" + lastCellId + " ) with no result..."); -// -// // flush current cell -// Cell cell = persistenceService.getCell(lastCellId); -// -// if (log.isInfoEnabled()) { -// log.info("Cell result category has changed, flushing " + cellResults.size() + " results for cell: " + cell + " with category " + lastCategory); -// } -// -// VoyageResultsRegionCellResultImportRow row = VoyageResultsRegionCellResultImportRow.of(voyage, cell, lastCategory, cellResults); -// -// addImportedRow(result, row); -// -// lastCategory = null; -// cellResults.clear(); -// -// } -// -// if (lastCategory == null) { -// -// // first row for this category -// lastCategory = cellResult.getCategory(); -// -// if (log.isInfoEnabled()) { -// log.info("New result category: " + lastCategory + " for cell: " + lastCellId); -// } -// -// } -// -// cellResults.add(cellResult); -// -// } -// -// if (!cellResults.isEmpty()) { -// -// // flush last cell -// Cell cell = persistenceService.getCell(lastCellId); -// -// VoyageResultsRegionCellResultImportRow row = VoyageResultsRegionCellResultImportRow.of(voyage, cell, lastCategory, cellResults); -// addImportedRow(result, row); -// -// } -// -// } - + @Override + protected VoyageResultsRegionCellResultImportRow newImportedRow(DataAcousticProvider voyage, Cell cell, Category category, List<Result> cellResults) { + return VoyageResultsRegionCellResultImportRow.of((Voyage) voyage, cell, category, cellResults); + } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportResultsConfigurationSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportResultsConfigurationSupport.java new file mode 100644 index 0000000..7533714 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportResultsConfigurationSupport.java @@ -0,0 +1,54 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.configurations; + +/** + * Configuration of a "results" import. + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public abstract class ImportResultsConfigurationSupport extends ImportDataConfigurationSupport { + + private static final long serialVersionUID = 1L; + + /** Selected dataProcessing id where to search esdu or elementary cells. */ + protected String dataProcessingId; + + /** resultLabel to store while importing acoustic result. */ + protected String resultLabel; + + public String getDataProcessingId() { + return dataProcessingId; + } + + public void setDataProcessingId(String dataProcessingId) { + this.dataProcessingId = dataProcessingId; + } + + public String getResultLabel() { + return resultLabel; + } + + public void setResultLabel(String resultLabel) { + this.resultLabel = resultLabel; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java index 39c0bf1..eef6b5f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java @@ -32,7 +32,7 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class VoyageResultsImportConfiguration extends VoyageImportDataConfigurationSupport { +public class VoyageResultsImportConfiguration extends ImportResultsConfigurationSupport { private static final long serialVersionUID = 1L; /** Acoustic result by echotype import. */ @@ -57,12 +57,10 @@ public class VoyageResultsImportConfiguration extends VoyageImportDataConfigurat protected final InputFile lengthAgeKeyFile; /** LengthWeightKey file to import. */ protected final InputFile lengthWeightKeyFile; - /** Selected dataProcessing id where to search esdu or elementary cells. */ - protected String dataProcessingId; /** Selected vessel id to find out transect where to import datas. */ protected String vesselId; - /** resultLabel to store while importing acoustic result. */ - protected String resultLabel; + /** Selected voyage id where to import datas. */ + protected String voyageId; public VoyageResultsImportConfiguration(Locale locale) { regionsFile = InputFile.newFile(l(locale, "echobase.common.cellRegionsFile")); @@ -78,6 +76,14 @@ public class VoyageResultsImportConfiguration extends VoyageImportDataConfigurat esduBySpeciesAndAgeCategoryFile = InputFile.newFile(l(locale, "echobase.common.esduBySpeciesAndAgeCategoryFile")); } + public final String getVoyageId() { + return voyageId; + } + + public final void setVoyageId(String voyageId) { + this.voyageId = voyageId; + } + public String getVesselId() { return vesselId; } @@ -86,22 +92,6 @@ public class VoyageResultsImportConfiguration extends VoyageImportDataConfigurat this.vesselId = vesselId; } - public String getDataProcessingId() { - return dataProcessingId; - } - - public void setDataProcessingId(String dataProcessingId) { - this.dataProcessingId = dataProcessingId; - } - - public String getResultLabel() { - return resultLabel; - } - - public void setResultLabel(String resultLabel) { - this.resultLabel = resultLabel; - } - public InputFile getRegionsFile() { return regionsFile; } 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/ImportResultsDataContext.java similarity index 86% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportResultsDataContext.java index 64cac48..65d8c51 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/ImportResultsDataContext.java @@ -35,7 +35,6 @@ 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; import org.nuiton.csv.ext.CsvReaders; @@ -49,16 +48,17 @@ import java.util.Set; import java.util.regex.Matcher; import static fr.ifremer.echobase.services.service.importdata.ImportDataService.REMOVE_DOUBLE_QUOTES_PATTERN; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportResultsConfigurationSupport; /** - * Created on 30/03/16. - * - * @author Tony Chemit - chemit@codelutin.com + * @author Julien Ruchaud - ruchaud@codelutin.com */ -public class VoyageResultsImportDataContext extends VoyageImportDataContextSupport<VoyageResultsImportConfiguration> { +public abstract class ImportResultsDataContext<C extends ImportResultsConfigurationSupport> extends ImportDataContextSupport<C> { -// private SpeciesCategoryCache speciesCategoryCache; -// private ResultCategoryCache resultCategoryCache; + private SpeciesCategoryCache speciesCategoryCache; + private ResultCategoryCache resultCategoryCache; private DataMetadata gridCellLongitudeMeta; private DataMetadata gridCellLatitudeMeta; @@ -76,7 +76,7 @@ public class VoyageResultsImportDataContext extends VoyageImportDataContextSuppo private SizeCategoryCache sizeCategoryCache; private AgeCategoryCache ageCategoryCache; - public VoyageResultsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageResultsImportConfiguration configuration, EchoBaseUser user, Date importDate) { + public ImportResultsDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, C configuration, EchoBaseUser user, Date importDate) { super(persistenceService, locale, csvSeparator, configuration, user, importDate); } @@ -218,18 +218,18 @@ public class VoyageResultsImportDataContext extends VoyageImportDataContextSuppo return gridDepthLagMeta; } -// public SpeciesCategoryCache getSpeciesCategoryCache() { -// if (speciesCategoryCache == null) { -// speciesCategoryCache = new SpeciesCategoryCache(persistenceService); -// } -// return speciesCategoryCache; -// } -// -// public ResultCategoryCache getResultCategoryCache() { -// if (resultCategoryCache == null) { -// resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); -// } -// return resultCategoryCache; -// } + public SpeciesCategoryCache getSpeciesCategoryCache() { + if (speciesCategoryCache == null) { + speciesCategoryCache = new SpeciesCategoryCache(persistenceService); + } + return speciesCategoryCache; + } + + public ResultCategoryCache getResultCategoryCache() { + if (resultCategoryCache == null) { + resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); + } + return resultCategoryCache; + } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringAcousticsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringAcousticsImportDataContext.java index 6fbee32..393869a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringAcousticsImportDataContext.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/MooringAcousticsImportDataContext.java @@ -31,7 +31,7 @@ import java.util.Locale; /** * @author Julien Ruchaud - ruchaud@codelutin.com - * @since 0.5 + * @since 4.O */ public class MooringAcousticsImportDataContext extends ImportDataContextSupport<MooringAcousticsImportConfiguration> { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContextSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContextSupport.java index 8022e64..17f5b46 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContextSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContextSupport.java @@ -24,7 +24,6 @@ package fr.ifremer.echobase.services.service.importdata.contexts; import com.google.common.collect.Collections2; import com.google.common.collect.Maps; import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.ImportLog; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Cells; import fr.ifremer.echobase.entities.data.Echotype; @@ -61,10 +60,6 @@ class VoyageImportDataContextSupport<C extends VoyageImportDataConfigurationSupp private Map<String, Voyage> voyagesByName; private Map<String, Operation> voyageOperationsById; - - private Map<String, Cell> voyageRegionsByName; - private Map<String, Echotype> voyageEchotypesByName; - public VoyageImportDataContextSupport(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, C configuration, EchoBaseUser user, Date importDate) { super(persistenceService, locale, csvSeparator, configuration, user, importDate); } @@ -74,20 +69,6 @@ class VoyageImportDataContextSupport<C extends VoyageImportDataConfigurationSupp return configuration.getVoyageId(); } - public final Map<String, Cell> getVoyageRegionsByName() { - if (voyageRegionsByName == null) { - voyageRegionsByName = Maps.uniqueIndex(getVoyage().getRegionCells(), Cells.CELL_BY_NAME); - } - return voyageRegionsByName; - } - - public final Map<String, Echotype> getVoyageEchotypesByName() { - if (voyageEchotypesByName == null) { - voyageEchotypesByName = Maps.uniqueIndex(getVoyage().getEchotype(), Echotypes.ECHOTYPE_NAME); - } - return voyageEchotypesByName; - } - public final Collection<Operation> getVoyageOperationsWithTotalOrUnsortedSample() { if (voyageOperationsWithTotalOrUnsortedSample == null) { voyageOperationsWithTotalOrUnsortedSample = Collections2.filter(getVoyageOperations(), Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); 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 64cac48..d2bedeb 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 @@ -21,215 +21,69 @@ package fr.ifremer.echobase.services.service.importdata.contexts; * #L% */ -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Echotypes; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.data.Voyages; import fr.ifremer.echobase.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; -import org.nuiton.csv.ext.CsvReaders; +import java.util.Collections; import java.util.Date; -import java.util.LinkedHashSet; -import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Set; -import java.util.regex.Matcher; - -import static fr.ifremer.echobase.services.service.importdata.ImportDataService.REMOVE_DOUBLE_QUOTES_PATTERN; /** * Created on 30/03/16. * * @author Tony Chemit - chemit@codelutin.com */ -public class VoyageResultsImportDataContext extends VoyageImportDataContextSupport<VoyageResultsImportConfiguration> { - -// private SpeciesCategoryCache speciesCategoryCache; -// private ResultCategoryCache resultCategoryCache; - - private DataMetadata gridCellLongitudeMeta; - private DataMetadata gridCellLatitudeMeta; - private DataMetadata gridCellDepthMeta; - private DataMetadata gridLongitudeLagMeta; - private DataMetadata gridLatitudeLagMeta; - private DataMetadata gridDepthLagMeta; - private DataMetadata regionEnvCoordinateMeta; - private DataMetadata surfaceMeta; - - private Set<Cell> esduCells; +public class VoyageResultsImportDataContext extends ImportResultsDataContext<VoyageResultsImportConfiguration> { - private Map<String, Cell> esduCellsByName; - - private SizeCategoryCache sizeCategoryCache; - private AgeCategoryCache ageCategoryCache; + private Voyage voyage; + private Map<String, Voyage> voyagesByName; + private Map<String, Echotype> voyageEchotypesByName; + private Map<String, Cell> voyageRegionsByName; public VoyageResultsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageResultsImportConfiguration configuration, EchoBaseUser user, Date importDate) { super(persistenceService, locale, csvSeparator, configuration, user, importDate); } - - public SizeCategoryCache getSizeCategoryCache() { - if (sizeCategoryCache == null) { - sizeCategoryCache = new SizeCategoryCache(persistenceService, getSizeCategoriesByName()); - } - return sizeCategoryCache; - } - - public AgeCategoryCache getAgeCategoryCache() { - if (ageCategoryCache == null) { - ageCategoryCache = new AgeCategoryCache(persistenceService, getAgeCategoriesByName()); + + public final Voyage getVoyage() { + if (voyage == null) { + voyage = persistenceService.getVoyage(configuration.getVoyageId()); } - return ageCategoryCache; - } - - public ValueParser<Cell> getCellValueParser() { - return EchoBaseCsvUtil.newCellValueParser(getEsduCellsByName()); + return voyage; } - public ValueFormatter<Cell> getCellValueFormatter() { - return EchoBaseCsvUtil.newCellValueFormatter(getEsduCells(), getEsduCellType(), getElementaryCellType()); + @Override + public String getEntityId() { + return configuration.getVoyageId(); } - public ValueParser<Cell> newCellValueParser() { - return persistenceService.newCellValueParser(); - } - - public ValueFormatter<Cell> newCellValueFormatter() { - return persistenceService.newCellValueFormatter(); - } - - public Map<String, Cell> getEsduCellsByName() { - if (esduCellsByName == null) { - esduCellsByName = Maps.uniqueIndex(getEsduCells(), Cells.CELL_BY_NAME); + public final Map<String, Echotype> getVoyageEchotypesByName() { + if (voyageEchotypesByName == null) { + voyageEchotypesByName = Maps.uniqueIndex(getVoyage().getEchotype(), Echotypes.ECHOTYPE_NAME); } - return esduCellsByName; + return voyageEchotypesByName; } - public Set<Cell> getEsduCells() { - if (esduCells == null) { - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - esduCells = new LinkedHashSet<>(dataProcessing.getCell()); - + public final Map<String, Voyage> getVoyagesByName() { + if (voyagesByName == null) { + voyagesByName = Maps.uniqueIndex(Collections.singletonList(getVoyage()), Voyages.VOYAGE_NAME); } - return esduCells; + return voyagesByName; } - public List<DataMetadata> getMetas(InputFile inputFile, String... columnNamesToExclude) { - - Map<String, DataMetadata> dataMetadatasByName = getDataMetadatasByName(); - - String[] headers = CsvReaders.getHeader(inputFile.getFile(), csvSeparator); - - List<String> metadataNames = Lists.newArrayList(headers); - for (String columnToExclude : columnNamesToExclude) { - metadataNames.remove(columnToExclude); - metadataNames.remove("\"" + columnToExclude + "\""); + public final Map<String, Cell> getVoyageRegionsByName() { + if (voyageRegionsByName == null) { + voyageRegionsByName = Maps.uniqueIndex(getVoyage().getRegionCells(), Cells.CELL_BY_NAME); } - - List<DataMetadata> result = Lists.newArrayList(); - - for (String metadataName : metadataNames) { - - Matcher matcher = REMOVE_DOUBLE_QUOTES_PATTERN.matcher(metadataName); - if (matcher.matches()) { - metadataName = matcher.group(1); - } - DataMetadata dataMetadata = dataMetadatasByName.get(metadataName); - if (dataMetadata == null) { - throw new DataMetadataNotFoundException(getLocale(), metadataName, dataMetadatasByName.keySet()); - } - result.add(dataMetadata); - - } - - return result; - - } - - public DataMetadata getRegionEnvCoordinateMeta() { - if (regionEnvCoordinateMeta == null) { - regionEnvCoordinateMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.REGION_ENV_COORDINATES); - } - return regionEnvCoordinateMeta; - } - - public DataMetadata getSurfaceMeta() { - if (surfaceMeta == null) { - surfaceMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.SURFACE); - } - return surfaceMeta; - } - - public final DataMetadata getGridCellLongitudeMeta() { - if (gridCellLongitudeMeta == null) { - gridCellLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); - } - return gridCellLongitudeMeta; - } - - public final DataMetadata getGridCellLatitudeMeta() { - if (gridCellLatitudeMeta == null) { - gridCellLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); - } - return gridCellLatitudeMeta; + return voyageRegionsByName; } - public final DataMetadata getGridCellDepthMeta() { - if (gridCellDepthMeta == null) { - gridCellDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); - } - return gridCellDepthMeta; - } - - public final DataMetadata getGridLongitudeLagMeta() { - if (gridLongitudeLagMeta == null) { - gridLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); - } - return gridLongitudeLagMeta; - } - - public final DataMetadata getGridLatitudeLagMeta() { - if (gridLatitudeLagMeta == null) { - gridLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); - } - return gridLatitudeLagMeta; - } - - public final DataMetadata getGridDepthLagMeta() { - if (gridDepthLagMeta == null) { - gridDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); - } - return gridDepthLagMeta; - } - -// public SpeciesCategoryCache getSpeciesCategoryCache() { -// if (speciesCategoryCache == null) { -// speciesCategoryCache = new SpeciesCategoryCache(persistenceService); -// } -// return speciesCategoryCache; -// } -// -// public ResultCategoryCache getResultCategoryCache() { -// if (resultCategoryCache == null) { -// resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); -// } -// return resultCategoryCache; -// } - } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.