branch feature/8180 updated (d3f6fb9 -> 612b6a3)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git from d3f6fb9 Fix delete import for mooring new cd4c7ee Refactoring on result import to make place for mooring new 612b6a3 Refactoring on echotype import to make place for mooring The 2 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 612b6a3dcd3d18cf0a24af7bf4f2333d97dbad07 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Wed Jun 29 10:35:11 2016 +0200 Refactoring on echotype import to make place for mooring 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 Summary of changes: .../echobase/entities/DataAcousticProvider.java | 12 +- .../echobase/entities/data/MooringImpl.java | 16 ++ .../echobase/entities/data/TransectImpl.java | 16 ++ .../fr/ifremer/echobase/services/csv/CellAble.java | 7 +- .../csv/{CellAble.java => ProviderAble.java} | 18 +- ...ava => ImportResultsCellDataActionSupport.java} | 43 ++--- ...rt.java => ImportResultsDataActionSupport.java} | 20 +- ...ava => ImportResultsEchotypeActionSupport.java} | 70 +++---- .../actions/MooringCommonsMooringImportAction.java | 2 - .../VoyageResultsCellImportDataActionSupport.java | 109 +---------- ...ndSpeciesCategoryAndLengthCellImportAction.java | 5 +- ...EchotypeAndSpeciesCategoryCellImportAction.java | 6 +- ...oyageResultsEsduByEchotypeCellImportAction.java | 5 +- ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 6 +- .../VoyageResultsImportDataActionSupport.java | 52 +----- .../VoyageResultsRegionResultsImportAction.java | 147 +-------------- .../VoyageResultsVoyageEchotypeImportAction.java | 121 +----------- ...java => ImportResultsConfigurationSupport.java} | 35 ++-- .../VoyageResultsImportConfiguration.java | 32 ++-- ...aContext.java => ImportResultsDataContext.java} | 42 ++--- .../MooringAcousticsImportDataContext.java | 2 +- .../contexts/VoyageImportDataContextSupport.java | 19 -- .../contexts/VoyageResultsImportDataContext.java | 206 +++------------------ .../importdata/csv/AcousticImportExportModel.java | 1 - ...mportRow.java => ResultsEchotypeImportRow.java} | 34 +--- ...hotypeAndSpeciesCategoryAndLengthImportRow.java | 13 +- ...sEsduByEchotypeAndSpeciesCategoryImportRow.java | 13 +- .../csv/VoyageResultsEsduByEchotypeImportRow.java | 15 +- ...esultsEsduBySpeciesAndAgeCategoryImportRow.java | 13 +- .../VoyageResultsRegionCellResultImportRow.java | 13 +- .../csv/VoyageResultsVoyageEchotypeImportRow.java | 59 ++---- 31 files changed, 297 insertions(+), 855 deletions(-) copy echobase-services/src/main/java/fr/ifremer/echobase/services/csv/{CellAble.java => ProviderAble.java} (72%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{VoyageResultsCellImportDataActionSupport.java => ImportResultsCellDataActionSupport.java} (72%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{VoyageResultsImportDataActionSupport.java => ImportResultsDataActionSupport.java} (82%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/{VoyageResultsVoyageEchotypeImportAction.java => ImportResultsEchotypeActionSupport.java} (63%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/{MooringCommonsImportConfiguration.java => ImportResultsConfigurationSupport.java} (57%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/{VoyageResultsImportDataContext.java => ImportResultsDataContext.java} (86%) copy echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/{VoyageResultsVoyageEchotypeImportRow.java => ResultsEchotypeImportRow.java} (69%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 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>.
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 612b6a3dcd3d18cf0a24af7bf4f2333d97dbad07 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Wed Jun 29 10:35:11 2016 +0200 Refactoring on echotype import to make place for mooring --- .../echobase/entities/DataAcousticProvider.java | 12 +- .../echobase/entities/data/MooringImpl.java | 16 +++ .../echobase/entities/data/TransectImpl.java | 16 +++ .../fr/ifremer/echobase/services/csv/CellAble.java | 7 +- .../csv/{CellAble.java => ProviderAble.java} | 18 +-- ...ava => ImportResultsEchotypeActionSupport.java} | 70 +++++------- .../actions/MooringCommonsMooringImportAction.java | 2 - .../VoyageResultsVoyageEchotypeImportAction.java | 121 ++------------------- .../importdata/csv/AcousticImportExportModel.java | 1 - ...mportRow.java => ResultsEchotypeImportRow.java} | 34 ++---- ...hotypeAndSpeciesCategoryAndLengthImportRow.java | 13 ++- ...sEsduByEchotypeAndSpeciesCategoryImportRow.java | 13 ++- .../csv/VoyageResultsEsduByEchotypeImportRow.java | 15 ++- ...esultsEsduBySpeciesAndAgeCategoryImportRow.java | 13 ++- .../VoyageResultsRegionCellResultImportRow.java | 13 ++- .../csv/VoyageResultsVoyageEchotypeImportRow.java | 59 +++------- 16 files changed, 161 insertions(+), 262 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/DataAcousticProvider.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/DataAcousticProvider.java index 2506b7d..450b9f1 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/DataAcousticProvider.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/DataAcousticProvider.java @@ -1,6 +1,7 @@ package fr.ifremer.echobase.entities; import fr.ifremer.echobase.entities.data.DataAcquisition; +import fr.ifremer.echobase.entities.data.Echotype; import java.util.Collection; import org.nuiton.topia.persistence.TopiaEntity; @@ -34,11 +35,20 @@ import org.nuiton.topia.persistence.TopiaEntity; public interface DataAcousticProvider<E extends TopiaEntity> { public String getName(); + E getEntity(); + + // For Acoustic import boolean isDataAcquisitionEmpty(); Collection<DataAcquisition> getDataAcquisition(); public void addDataAcquisition(DataAcquisition dataAcquisition); - E getEntity(); + + // For Echotype import + public boolean isEchotypeEmpty(); + + public Collection<Echotype> getEchotype(); + + public void addEchotype(Echotype echotype); } diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java index 6858c7d..1a8cd77 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/MooringImpl.java @@ -1,6 +1,7 @@ package fr.ifremer.echobase.entities.data; import fr.ifremer.echobase.entities.DataAcousticProvider; +import java.util.Collection; /** * Default implementation of {@link Mooring}. @@ -27,4 +28,19 @@ public class MooringImpl extends MooringAbstract implements DataAcousticProvider return this; } + @Override + public boolean isEchotypeEmpty() { + throw new UnsupportedOperationException(); + } + + @Override + public Collection<Echotype> getEchotype() { + throw new UnsupportedOperationException(); + } + + @Override + public void addEchotype(Echotype echotype) { + throw new UnsupportedOperationException(); + } + } //MooringImpl diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/TransectImpl.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/TransectImpl.java index 11405f7..0162a71 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/TransectImpl.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/TransectImpl.java @@ -1,6 +1,7 @@ package fr.ifremer.echobase.entities.data; import fr.ifremer.echobase.entities.DataAcousticProvider; +import java.util.Collection; /** * Default implementation of {@link Transect}. @@ -21,5 +22,20 @@ public class TransectImpl extends TransectAbstract implements DataAcousticProvid public Transect getEntity() { return this; } + + @Override + public boolean isEchotypeEmpty() { + return getTransit().getVoyage().isEchotypeEmpty(); + } + + @Override + public Collection<Echotype> getEchotype() { + return getTransit().getVoyage().getEchotype(); + } + + @Override + public void addEchotype(Echotype echotype) { + getTransit().getVoyage().addEchotype(echotype); + } } //TransectImpl 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 index 8fee5b8..55ea14e 100644 --- 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 @@ -22,7 +22,6 @@ 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. @@ -30,11 +29,7 @@ import fr.ifremer.echobase.entities.data.Voyage; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public interface CellAble { - - Voyage getVoyage(); - - void setVoyage(Voyage voyage); +public interface CellAble extends ProviderAble { Cell getCell(); 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/ProviderAble.java similarity index 72% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellAble.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ProviderAble.java index 8fee5b8..64a0363 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellAble.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ProviderAble.java @@ -21,23 +21,17 @@ package fr.ifremer.echobase.services.csv; * #L% */ -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.DataAcousticProvider; +import org.nuiton.topia.persistence.TopiaEntity; /** - * Created on 05/04/16. - * - * @author Tony Chemit - chemit@codelutin.com + * @author Julien Ruchaud - ruchaud@codelutin.com * @since 4.0 */ -public interface CellAble { +public interface ProviderAble<E extends TopiaEntity> { - Voyage getVoyage(); + DataAcousticProvider<E> getProvider(); - void setVoyage(Voyage voyage); - - Cell getCell(); - - void setCell(Cell cell); + void setProvider(DataAcousticProvider<E> provider); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsEchotypeActionSupport.java similarity index 63% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsEchotypeActionSupport.java index be5e18d..c50ef55 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportResultsEchotypeActionSupport.java @@ -24,18 +24,18 @@ package fr.ifremer.echobase.services.service.importdata.actions; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Echotypes; -import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.service.importdata.DuplicatedEchotypeAssociationException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; -import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; -import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageEchotypeImportExportModel; -import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageEchotypeImportRow; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.contexts.ImportDataContextSupport; +import fr.ifremer.echobase.services.service.importdata.csv.ResultsEchotypeImportRow; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,53 +45,44 @@ import java.util.Collection; import java.util.LinkedList; /** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com + * @author Julien Ruchaud - ruchaud@codelutin.com * @since 4.0 */ -public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImportDataActionSupport<VoyageResultsVoyageEchotypeImportRow> { +public abstract class ImportResultsEchotypeActionSupport<M extends ImportDataConfigurationSupport, C extends ImportDataContextSupport<M>, E extends ResultsEchotypeImportRow> extends ImportDataActionSupport<M, C, E> { /** Logger. */ - private static final Log log = LogFactory.getLog(VoyageResultsVoyageEchotypeImportAction.class); + private static final Log log = LogFactory.getLog(ImportResultsEchotypeActionSupport.class); private final LinkedList<Pair<String, String>> speciesIdToEchotypeId = new LinkedList<>(); - public VoyageResultsVoyageEchotypeImportAction(VoyageResultsImportDataContext importDataContext) { - super(importDataContext, importDataContext.getConfiguration().getEchotypeFile()); + public ImportResultsEchotypeActionSupport(C importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); } + + protected abstract E newImportedRow(DataAcousticProvider provider, Echotype echotype, Species species); - @Override - protected VoyageResultsVoyageEchotypeImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { - return VoyageResultsVoyageEchotypeImportExportModel.forImport(importDataContext); - } + protected abstract DataAcousticProvider getDataProvider(C importDataContext); @Override - protected VoyageResultsVoyageEchotypeImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { - return VoyageResultsVoyageEchotypeImportExportModel.forExport(importDataContext); - } - - @Override - protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { - + protected void performImport(C importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of echotype from file " + inputFile.getFileName()); } - Voyage expectedVoyage = importDataContext.getVoyage(); + DataAcousticProvider expectedProvider = getDataProvider(importDataContext); - try (Import<VoyageResultsVoyageEchotypeImportRow> importer = open()) { + try (Import<E> importer = open()) { incrementsProgress(); int rowNumber = 0; - for (VoyageResultsVoyageEchotypeImportRow row : importer) { + for (E row : importer) { doFlushTransaction(++rowNumber); - Voyage voyage = row.getVoyage(); + DataAcousticProvider provider = row.getProvider(); - if (!expectedVoyage.equals(voyage)) { - throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); + if (!expectedProvider.equals(provider)) { + throw new MismatchVoyageException(getLocale(), rowNumber, provider.getName()); } Echotype rowEchotype = row.getEchotype(); @@ -101,9 +92,9 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport // check if there is a echotype for the voyage and this name Echotype echotype = null; - if (!voyage.isEchotypeEmpty()) { + if (!provider.isEchotypeEmpty()) { - Collection<Echotype> echotypes = voyage.getEchotype(); + Collection<Echotype> echotypes = provider.getEchotype(); Predicate<Echotype> predicate = Echotypes.newEchotypeByNamePredicate(echotypeName); echotype = Iterables.find(echotypes, predicate, null); @@ -117,7 +108,7 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport echotype = persistenceService.createEchotype(rowEchotype); // attach it to voyage - voyage.addEchotype(echotype); + provider.addEchotype(echotype); // collect ids addId(result, EchoBaseUserEntityEnum.Echotype, echotype, rowNumber); @@ -129,8 +120,7 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport Species existingSpecies = echotype.getSpeciesByTopiaId(species.getTopiaId()); if (existingSpecies != null) { - - throw new DuplicatedEchotypeAssociationException(getLocale(), rowNumber, voyage.getName(), echotypeName, species.getBaracoudaCode()); + throw new DuplicatedEchotypeAssociationException(getLocale(), rowNumber, provider.getName(), echotypeName, species.getBaracoudaCode()); } // add this species @@ -141,21 +131,15 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport } addProcessedRow(result, row); - } - } - } @Override - protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage voyage = persistenceService.getVoyage(voyageId); + protected void computeImportedExport(C importDataContext, ImportDataFileResult result) { + DataAcousticProvider provider = getDataProvider(importDataContext); for (Pair<String, String> speciesIdToEchotypeIdEntry : speciesIdToEchotypeId) { - String speciesId = speciesIdToEchotypeIdEntry.getKey(); Species species = persistenceService.getSpecies(speciesId); Preconditions.checkNotNull(species); @@ -164,11 +148,9 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport Echotype echotype = persistenceService.getEchotype(echotypeId); Preconditions.checkNotNull(echotype); - VoyageResultsVoyageEchotypeImportRow row = VoyageResultsVoyageEchotypeImportRow.of(voyage, echotype, species); + E row = newImportedRow(provider, echotype, species); addImportedRow(result, row); - } - } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringCommonsMooringImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringCommonsMooringImportAction.java index 263522a..f95301c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringCommonsMooringImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/MooringCommonsMooringImportAction.java @@ -61,8 +61,6 @@ public class MooringCommonsMooringImportAction extends MooringCommonsImportDataA @Override public void performImport(MooringCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { log.info("Starts import of mooring from file " + inputFile.getFileName()); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java index be5e18d..d539412 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java @@ -21,28 +21,15 @@ package fr.ifremer.echobase.services.service.importdata.actions; * #L% */ -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.DataAcousticProvider; 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.references.Species; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.importdata.DuplicatedEchotypeAssociationException; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.MismatchVoyageException; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageEchotypeImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.VoyageResultsVoyageEchotypeImportRow; -import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.LinkedList; /** * Created on 25/03/16. @@ -50,11 +37,10 @@ import java.util.LinkedList; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImportDataActionSupport<VoyageResultsVoyageEchotypeImportRow> { +public class VoyageResultsVoyageEchotypeImportAction extends ImportResultsEchotypeActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, VoyageResultsVoyageEchotypeImportRow> { /** Logger. */ private static final Log log = LogFactory.getLog(VoyageResultsVoyageEchotypeImportAction.class); - private final LinkedList<Pair<String, String>> speciesIdToEchotypeId = new LinkedList<>(); public VoyageResultsVoyageEchotypeImportAction(VoyageResultsImportDataContext importDataContext) { super(importDataContext, importDataContext.getConfiguration().getEchotypeFile()); @@ -71,104 +57,13 @@ public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImport } @Override - protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of echotype from file " + inputFile.getFileName()); - } - - Voyage expectedVoyage = importDataContext.getVoyage(); - - try (Import<VoyageResultsVoyageEchotypeImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (VoyageResultsVoyageEchotypeImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Voyage voyage = row.getVoyage(); - - if (!expectedVoyage.equals(voyage)) { - throw new MismatchVoyageException(getLocale(), rowNumber, voyage.getName()); - } - - Echotype rowEchotype = row.getEchotype(); - - String echotypeName = rowEchotype.getName(); - - // check if there is a echotype for the voyage and this name - Echotype echotype = null; - - if (!voyage.isEchotypeEmpty()) { - - Collection<Echotype> echotypes = voyage.getEchotype(); - Predicate<Echotype> predicate = Echotypes.newEchotypeByNamePredicate(echotypeName); - echotype = Iterables.find(echotypes, predicate, null); - - } - - Species species = row.getSpecies(); - - if (echotype == null) { - - // creates it - echotype = persistenceService.createEchotype(rowEchotype); - - // attach it to voyage - voyage.addEchotype(echotype); - - // collect ids - addId(result, EchoBaseUserEntityEnum.Echotype, echotype, rowNumber); - - speciesIdToEchotypeId.add(Pair.of(species.getTopiaId(), echotype.getTopiaId())); - - } else { - - Species existingSpecies = echotype.getSpeciesByTopiaId(species.getTopiaId()); - - if (existingSpecies != null) { - - throw new DuplicatedEchotypeAssociationException(getLocale(), rowNumber, voyage.getName(), echotypeName, species.getBaracoudaCode()); - } - - // add this species - echotype.addSpecies(species); - - speciesIdToEchotypeId.add(Pair.of(species.getTopiaId(), echotype.getTopiaId())); - - } - - addProcessedRow(result, row); - - } - - } - + protected DataAcousticProvider getDataProvider(VoyageResultsImportDataContext importDataContext) { + return (DataAcousticProvider) importDataContext.getVoyage(); } @Override - protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - - String voyageId = importDataContext.getConfiguration().getVoyageId(); - Voyage voyage = persistenceService.getVoyage(voyageId); - - for (Pair<String, String> speciesIdToEchotypeIdEntry : speciesIdToEchotypeId) { - - String speciesId = speciesIdToEchotypeIdEntry.getKey(); - Species species = persistenceService.getSpecies(speciesId); - Preconditions.checkNotNull(species); - - String echotypeId = speciesIdToEchotypeIdEntry.getValue(); - Echotype echotype = persistenceService.getEchotype(echotypeId); - Preconditions.checkNotNull(echotype); - - VoyageResultsVoyageEchotypeImportRow row = VoyageResultsVoyageEchotypeImportRow.of(voyage, echotype, species); - addImportedRow(result, row); - - } - + protected VoyageResultsVoyageEchotypeImportRow newImportedRow(DataAcousticProvider provider, Echotype echotype, Species species) { + return VoyageResultsVoyageEchotypeImportRow.of(provider, echotype, species); } - + } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java index abe9a68..6f44d2b 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java @@ -28,7 +28,6 @@ import fr.ifremer.echobase.entities.references.AcousticInstrument; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.services.service.importdata.contexts.ImportDataContextSupport; -import fr.ifremer.echobase.services.service.importdata.contexts.MooringAcousticsImportDataContext; /** * To import acoustic datas (says {@link DataAcquisition}, diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java similarity index 69% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java index ca572d7..d34999f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/ResultsEchotypeImportRow.java @@ -22,52 +22,34 @@ package fr.ifremer.echobase.services.service.importdata.csv; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.EchotypeImpl; -import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ProviderAble; import java.io.Serializable; +import org.nuiton.topia.persistence.TopiaEntity; /** - * Bean used as a row for import of {@link VoyageResultsVoyageEchotypeImportExportModel}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 */ -public class VoyageResultsVoyageEchotypeImportRow implements Serializable { +public abstract class ResultsEchotypeImportRow<E extends TopiaEntity> implements Serializable, ProviderAble<E> { private static final long serialVersionUID = 1L; public static final String PROPERTY_MEANING = Echotype.PROPERTY_MEANING; - public static final String PROPERTY_VOYAGE = "voyage"; protected final Echotype echotype; - protected Voyage voyage; protected Species species; - - public static VoyageResultsVoyageEchotypeImportRow of(Voyage voyage, Echotype echotype, Species species) { - VoyageResultsVoyageEchotypeImportRow row = new VoyageResultsVoyageEchotypeImportRow(echotype); - row.setVoyage(voyage); - row.setSpecies(species); - return row; - } - - public VoyageResultsVoyageEchotypeImportRow() { + + public ResultsEchotypeImportRow() { this(new EchotypeImpl()); } - public VoyageResultsVoyageEchotypeImportRow(Echotype echotype) { + public ResultsEchotypeImportRow(Echotype echotype) { this.echotype = echotype; } - public Voyage getVoyage() { - return voyage; - } - - public void setVoyage(Voyage voyage) { - this.voyage = voyage; - } - public Echotype getEchotype() { return echotype; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow.java index 5c8cce0..4945c15 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow.java @@ -20,6 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; +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.Echotype; @@ -78,16 +79,24 @@ public class VoyageResultsEsduByEchotypeAndSpeciesCategoryAndLengthImportRow imp return row; } - @Override public Voyage getVoyage() { return voyage; } - @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } + @Override + public DataAcousticProvider<Voyage> getProvider() { + return (DataAcousticProvider) voyage; + } + + @Override + public void setProvider(DataAcousticProvider provider) { + setVoyage((Voyage) provider); + } + public Species getSpecies() { return species; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow.java index 8564abf..4acdedd 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow.java @@ -20,6 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; +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.Echotype; @@ -74,16 +75,24 @@ public class VoyageResultsEsduByEchotypeAndSpeciesCategoryImportRow implements R return row; } - @Override public Voyage getVoyage() { return voyage; } - @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } + @Override + public DataAcousticProvider<Voyage> getProvider() { + return (DataAcousticProvider) voyage; + } + + @Override + public void setProvider(DataAcousticProvider provider) { + setVoyage((Voyage) provider); + } + public Echotype getEchotype() { return echotype; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeImportRow.java index 1097a35..1087aad 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduByEchotypeImportRow.java @@ -20,6 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; +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.Echotype; @@ -59,18 +60,26 @@ public class VoyageResultsEsduByEchotypeImportRow implements ResultAble, CellAbl row.result.addAll(cellResults); return row; } - - @Override + public Voyage getVoyage() { return voyage; } - @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } @Override + public DataAcousticProvider<Voyage> getProvider() { + return (DataAcousticProvider) voyage; + } + + @Override + public void setProvider(DataAcousticProvider provider) { + setVoyage((Voyage) provider); + } + + @Override public Cell getCell() { return cell; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduBySpeciesAndAgeCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduBySpeciesAndAgeCategoryImportRow.java index da43112..f466978 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduBySpeciesAndAgeCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsEsduBySpeciesAndAgeCategoryImportRow.java @@ -20,6 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; +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; @@ -67,16 +68,24 @@ public class VoyageResultsEsduBySpeciesAndAgeCategoryImportRow implements Result return row; } - @Override public Voyage getVoyage() { return voyage; } - @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } + @Override + public DataAcousticProvider<Voyage> getProvider() { + return (DataAcousticProvider) voyage; + } + + @Override + public void setProvider(DataAcousticProvider provider) { + setVoyage((Voyage) provider); + } + public Species getSpecies() { return species; } 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 f111167..855d4fc 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 @@ -21,6 +21,7 @@ package fr.ifremer.echobase.services.service.importdata.csv; 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.Echotype; @@ -86,17 +87,25 @@ public class VoyageResultsRegionCellResultImportRow implements ResultAble, CellA this.echotype = echotype; } - @Override public Voyage getVoyage() { return voyage; } - @Override public void setVoyage(Voyage voyage) { this.voyage = voyage; } @Override + public DataAcousticProvider<Voyage> getProvider() { + return (DataAcousticProvider) voyage; + } + + @Override + public void setProvider(DataAcousticProvider provider) { + setVoyage((Voyage) provider); + } + + @Override public Cell getCell() { return cell; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java index ca572d7..1d26403 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageResultsVoyageEchotypeImportRow.java @@ -20,46 +20,39 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; +import fr.ifremer.echobase.entities.DataAcousticProvider; import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.EchotypeImpl; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.Species; -import java.io.Serializable; - /** * Bean used as a row for import of {@link VoyageResultsVoyageEchotypeImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class VoyageResultsVoyageEchotypeImportRow implements Serializable { +public class VoyageResultsVoyageEchotypeImportRow extends ResultsEchotypeImportRow<Voyage> { private static final long serialVersionUID = 1L; - public static final String PROPERTY_MEANING = Echotype.PROPERTY_MEANING; public static final String PROPERTY_VOYAGE = "voyage"; - - protected final Echotype echotype; protected Voyage voyage; - protected Species species; - public static VoyageResultsVoyageEchotypeImportRow of(Voyage voyage, Echotype echotype, Species species) { + public static VoyageResultsVoyageEchotypeImportRow of(DataAcousticProvider provider, Echotype echotype, Species species) { VoyageResultsVoyageEchotypeImportRow row = new VoyageResultsVoyageEchotypeImportRow(echotype); - row.setVoyage(voyage); + row.setProvider(provider); row.setSpecies(species); return row; } public VoyageResultsVoyageEchotypeImportRow() { - this(new EchotypeImpl()); + super(); } public VoyageResultsVoyageEchotypeImportRow(Echotype echotype) { - this.echotype = echotype; + super(echotype); } - + public Voyage getVoyage() { return voyage; } @@ -68,39 +61,13 @@ public class VoyageResultsVoyageEchotypeImportRow implements Serializable { this.voyage = voyage; } - public Echotype getEchotype() { - return echotype; - } - - public String getName() { - return echotype.getName(); - } - - public void setName(String name) { - echotype.setName(name); - } - - public String getMeaning() { - return echotype.getMeaning(); - } - - public void setMeaning(String meaning) { - echotype.setMeaning(meaning); - } - - public Species getSpecies() { - return species; - } - - public void setSpecies(Species species) { - this.species = species; - } - - public DepthStratum getDepthStratum() { - return echotype.getDepthStratum(); + @Override + public DataAcousticProvider<Voyage> getProvider() { + return (DataAcousticProvider) voyage; } - public void setDepthStratum(DepthStratum depthStratum) { - echotype.setDepthStratum(depthStratum); + @Override + public void setProvider(DataAcousticProvider<Voyage> provider) { + setVoyage(provider.getEntity()); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm