This is an automated email from the git hooks/post-receive script. New commit to branch feature/8170 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit de077c867a7955258a7f2cbc224bdd6e0546b6d9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 04:46:30 2016 +0200 Renommages, mise en place context d'import --- .../echobase/services/csv/CellValueFormatter.java | 115 +++++++ .../echobase/services/csv/CellValueParser.java | 119 +++++++ .../echobase/services/csv/ChainValueParser.java | 74 +++++ .../echobase/services/csv/EchoBaseCsvUtil.java | 337 ++++++++++++++++++++ .../ifremer/echobase/services/csv/ResultAble.java | 23 ++ .../services/csv/ResultValueFormatter.java | 53 ++++ .../echobase/services/csv/ResultValueGetter.java | 29 ++ .../echobase/services/csv/ResultValueParser.java | 59 ++++ .../echobase/services/csv/ResultValueSetter.java | 17 + .../services/csv/ValueFormatterByFunction.java | 24 ++ .../echobase/services/service/DbEditorService.java | 2 +- .../services/service/UserDbPersistenceService.java | 101 +++--- .../service/exportCoser/IndicatorExportModel.java | 2 +- .../exportCoser/RawDataCatchExportModel.java | 2 +- .../exportCoser/RawDataSizeExportModel.java | 4 +- .../exportCoser/RawDataStrataExportModel.java | 2 +- .../service/exportCoser/SpeciesExportModel.java | 2 +- .../service/exportquery/ExportQueryCsvModel.java | 2 +- .../service/importdata/ImportDataFileResult.java | 32 +- .../service/importdata/ImportDataResult.java | 3 +- .../service/importdata/ImportDataService.java | 278 ++++++++-------- .../service/importdata/ResultCategoryCache.java | 93 ++++++ .../service/importdata/SpeciesCategoryCache.java | 82 +++++ .../importdata/actions/AbstractImportAction.java | 352 --------------------- .../actions/BiometrySampleImportAction.java | 136 -------- .../actions/GearMetadataImportAction.java | 100 ------ .../actions/ImportDataActionSupport.java | 167 ++++++++++ .../importdata/actions/OperationImportAction.java | 104 ------ .../actions/OperationMetadataImportAction.java | 94 ------ .../actions/RegionAssociationImportAction.java | 84 ----- .../importdata/actions/RegionImportAction.java | 118 ------- ...EchotypeAndSpeciesCategoryCellImportAction.java | 134 -------- .../ResultsEsduByEchotypeCellImportAction.java | 118 ------- ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 138 -------- ...EsduSpeciesAndSizeCategoryCellImportAction.java | 140 -------- .../actions/ResultsMapFishCellImportAction.java | 194 ------------ .../actions/ResultsMapOtherCellImportAction.java | 168 ---------- .../actions/ResultsRegionImportAction.java | 126 -------- .../ResultsVoyageLengthAgeKeyImportAction.java | 95 ------ .../ResultsVoyageLengthWeightKeyImportAction.java | 109 ------- .../importdata/actions/SubSampleImportAction.java | 151 --------- ...ction.java => VoyageAcousticsImportAction.java} | 64 ++-- .../VoyageAcousticsImportDataActionSupport.java | 18 ++ .../VoyageCatchesBiometrySampleImportAction.java | 109 +++++++ .../VoyageCatchesImportDataActionSupport.java | 57 ++++ .../VoyageCatchesSubSampleImportAction.java | 121 +++++++ ...a => VoyageCatchesTotalSampleImportAction.java} | 70 ++-- .../VoyageCommonsImportDataActionSupport.java | 18 ++ ...java => VoyageCommonsTransectImportAction.java} | 47 +-- ....java => VoyageCommonsTransitImportAction.java} | 43 +-- ...n.java => VoyageCommonsVoyageImportAction.java} | 38 +-- .../VoyageOperationsGearMetadataImportAction.java | 68 ++++ .../VoyageOperationsImportDataActionSupport.java | 18 ++ .../VoyageOperationsOperationImportAction.java | 86 +++++ ...ageOperationsOperationMetadataImportAction.java | 68 ++++ ...EchotypeAndSpeciesCategoryCellImportAction.java | 80 +++++ ...oyageResultsEsduByEchotypeCellImportAction.java | 77 +++++ ...sEsduSpeciesAndAgeCategoryCellImportAction.java | 98 ++++++ ...EsduSpeciesAndSizeCategoryCellImportAction.java | 100 ++++++ .../VoyageResultsImportDataActionSupport.java | 64 ++++ .../VoyageResultsMapFishCellImportAction.java | 141 +++++++++ .../VoyageResultsMapOtherCellImportAction.java | 132 ++++++++ ...VoyageResultsRegionAssociationImportAction.java | 65 ++++ .../actions/VoyageResultsRegionImportAction.java | 89 ++++++ .../VoyageResultsRegionResultsImportAction.java | 81 +++++ ...> VoyageResultsVoyageEchotypeImportAction.java} | 46 +-- ...oyageResultsVoyageLengthAgeKeyImportAction.java | 73 +++++ ...geResultsVoyageLengthWeightKeyImportAction.java | 82 +++++ .../ImportDataConfigurationSupport.java} | 15 +- .../VoyageAcousticsImportConfiguration.java} | 31 +- .../VoyageCatchesImportConfiguration.java} | 6 +- .../VoyageCommonsImportConfiguration.java} | 29 +- .../VoyageImportDataConfigurationSupport.java} | 33 +- .../VoyageOperationsImportConfiguration.java} | 6 +- .../VoyageResultsImportConfiguration.java} | 32 +- .../contexts/ImportDataContextSupport.java | 234 ++++++++++++++ .../contexts/VoyageAcousticsImportDataContext.java | 20 ++ .../contexts/VoyageCatchesImportDataContext.java | 121 +++++++ .../contexts/VoyageCommonsImportDataContext.java | 20 ++ .../contexts/VoyageImportDataContext.java | 112 +++++++ .../VoyageOperationsImportDataContext.java | 20 ++ .../contexts/VoyageResultsImportDataContext.java | 194 ++++++++++++ .../importdata/csv/AcousticImportExportModel.java | 223 +++++++++++++ .../importdata/csv/AcousticImportModel.java | 136 -------- .../service/importdata/csv/AcousticImportRow.java | 2 +- .../csv/BiometrySampleImportExportModel.java | 72 +++++ .../importdata/csv/BiometrySampleImportModel.java | 60 ---- .../importdata/csv/BiometrySampleImportRow.java | 2 +- .../csv/EchoBaseImportExportModelSupport.java | 34 +- .../importdata/csv/EchotypeImportExportModel.java | 71 +++++ .../importdata/csv/EchotypeImportModel.java | 58 ---- .../service/importdata/csv/EchotypeImportRow.java | 9 +- ...chotypeAndSpeciesCategoryImportExportModel.java | 99 ++++++ ...ultByEchotypeAndSpeciesCategoryImportModel.java | 88 ------ ...esultByEchotypeAndSpeciesCategoryImportRow.java | 11 +- .../csv/EsduResultByEchotypeImportExportModel.java | 91 ++++++ .../csv/EsduResultByEchotypeImportModel.java | 79 ----- .../csv/EsduResultByEchotypeImportRow.java | 6 +- ...ltBySpeciesAndAgeCategoryImportExportModel.java | 97 ++++++ ...duResultBySpeciesAndAgeCategoryImportModel.java | 83 ----- ...EsduResultBySpeciesAndAgeCategoryImportRow.java | 11 +- ...tBySpeciesAndSizeCategoryImportExportModel.java | 97 ++++++ ...uResultBySpeciesAndSizeCategoryImportModel.java | 83 ----- ...sduResultBySpeciesAndSizeCategoryImportRow.java | 11 +- .../csv/GearMetadataValueImportExportModel.java | 72 +++++ .../csv/GearMetadataValueImportModel.java | 62 ---- .../importdata/csv/GearMetadataValueImportRow.java | 7 +- .../csv/LengthAgeKeyImportExportModel.java | 75 +++++ .../importdata/csv/LengthAgeKeyImportModel.java | 60 ---- .../importdata/csv/LengthAgeKeyImportRow.java | 9 +- .../csv/LengthWeightKeyImportExportModel.java | 74 +++++ .../importdata/csv/LengthWeightKeyImportModel.java | 60 ---- .../importdata/csv/LengthWeightKeyImportRow.java | 13 +- .../importdata/csv/MapCellImportExportModel.java | 109 +++++++ .../service/importdata/csv/MapCellImportModel.java | 125 -------- .../service/importdata/csv/MapCellImportRow.java | 91 +++--- .../importdata/csv/OperationImportExportModel.java | 84 +++++ .../importdata/csv/OperationImportModel.java | 65 ---- .../service/importdata/csv/OperationImportRow.java | 6 +- .../OperationMetadataValueImportExportModel.java | 68 ++++ .../csv/OperationMetadataValueImportModel.java | 57 ---- .../csv/OperationMetadataValueImportRow.java | 7 +- .../RegionCellAssociationImportExportModel.java | 64 ++++ .../csv/RegionCellAssociationImportModel.java | 53 ---- .../csv/RegionCellAssociationImportRow.java | 18 +- .../csv/RegionCellImportExportModel.java | 71 +++++ .../importdata/csv/RegionCellImportModel.java | 58 ---- .../importdata/csv/RegionCellImportRow.java | 30 +- .../csv/RegionCellResultImportExportModel.java | 96 ++++++ .../csv/RegionCellResultImportModel.java | 84 ----- .../importdata/csv/RegionCellResultImportRow.java | 6 +- .../importdata/csv/SubSampleImportExportModel.java | 87 +++++ .../importdata/csv/SubSampleImportModel.java | 70 ---- .../service/importdata/csv/SubSampleImportRow.java | 10 +- .../csv/TotalSampleImportExportModel.java | 79 +++++ .../importdata/csv/TotalSampleImportModel.java | 63 ---- .../importdata/csv/TotalSampleImportRow.java | 12 +- .../importdata/csv/TransectImportExportModel.java | 93 ++++++ .../importdata/csv/TransectImportModel.java | 74 ----- .../service/importdata/csv/TransectImportRow.java | 6 +- .../importdata/csv/TransitImportExportModel.java | 71 +++++ .../service/importdata/csv/TransitImportModel.java | 53 ---- .../service/importdata/csv/TransitImportRow.java | 7 +- .../importdata/csv/VoyageImportExportModel.java | 69 ++++ .../service/importdata/csv/VoyageImportModel.java | 49 --- .../fr/ifremer/echobase/services/FixCellsIT.java | 10 +- .../importdata/AbstractImportDataServiceIT.java | 5 +- .../importdata/AcousticImportServiceIT.java | 5 +- .../service/importdata/CatchesImportServiceIT.java | 5 +- .../CatchesImportServiceOnlyBiometrySampleIT.java | 5 +- .../CatchesImportServiceOnlySubSampleIT.java | 5 +- .../CatchesImportServiceOnlyTotalSampleIT.java | 5 +- .../importdata/CommonAllImportServiceIT.java | 5 +- .../importdata/CommonTransectImportServiceIT.java | 5 +- .../importdata/CommonTransitImportServiceIT.java | 5 +- .../importdata/CommonVoyageImportServiceIT.java | 5 +- .../importdata/OperationImportServiceIT.java | 5 +- .../importdata/ResultsEsduCellImportServiceIT.java | 19 +- .../ResultsMapFishCellImportServiceIT.java | 5 +- .../ResultsMapOtherCellImportServiceIT.java | 5 +- .../ResultsRegionCellImportServiceIT.java | 5 +- .../importdata/ResultsVoyageImportServiceIT.java | 5 +- .../ResultsVoyageImportServiceOnlyEchotypeIT.java | 5 +- ...sultsVoyageImportServiceOnlyLengthAgeKeyIT.java | 5 +- ...tsVoyageImportServiceOnlyLengthWeightKeyIT.java | 5 +- .../removedata/AbstractRemoveDataServiceTest.java | 50 +-- 166 files changed, 6040 insertions(+), 4628 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java new file mode 100644 index 0000000..ba50519 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueFormatter.java @@ -0,0 +1,115 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; +import fr.ifremer.echobase.entities.references.CellType; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ValueFormatter; + +import java.util.LinkedHashSet; +import java.util.Set; + +public class CellValueFormatter implements ValueFormatter<Cell> { + + private final Set<Cell> esduCells; + private final CellTopiaDao cellDAO; + private final CellType esduCellType; + private final CellType elementaryCellType; + + public CellValueFormatter(CellTopiaDao cellDAO, CellType esduCellType, CellType elementaryCellType) { + this.cellDAO = cellDAO; + this.esduCellType = esduCellType; + this.elementaryCellType = elementaryCellType; + this.esduCells = new LinkedHashSet<>(); + } + + protected CellValueFormatter(Set<Cell> esduCells, CellType esduCellType, CellType elementaryCellType) { + this.esduCells = esduCells; + this.esduCellType = esduCellType; + this.elementaryCellType = elementaryCellType; + this.cellDAO = null; + } + + @Override + public String format(Cell value) { + CellType cellType = value.getCellType(); + + if (esduCellType.equals(cellType)) { + + // cellule de type esdu + return value.getName(); + + } + + if (elementaryCellType.equals(cellType)) { + + // cellule de type élémentaire + + // récupération de la cellule de type esdu qui la contient + + Cell esduCell = getEsduCell(value); + + return esduCell + "_" + value.getName(); + } + + //FIXME Use a real exception + return null; + } + + protected Cell getEsduCell(Cell elementaryCell) { + + Cell result = getEsduCellFromCache(elementaryCell); + + if (result == null && cellDAO != null) { + + result = cellDAO.forChildsContains(elementaryCell).findAnyOrNull(); + + if (result != null) { + esduCells.add(result); + } + + } + + if (result == null) { + //FIXME USe a real exception + throw new ImportRuntimeException( + "Can not find esdu cell for elementary cell " + elementaryCell.getName()); + } + + return result; + } + + protected Cell getEsduCellFromCache(Cell elementaryCell) { + + for (Cell cell : esduCells) { + + if (cell.getChildsByTopiaId(elementaryCell.getTopiaId()) != null) { + + return cell; + } + } + + return null; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueParser.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueParser.java new file mode 100644 index 0000000..b3d5347 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CellValueParser.java @@ -0,0 +1,119 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; +import org.apache.commons.collections4.CollectionUtils; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ValueParser; +import org.nuiton.topia.persistence.TopiaException; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +public class CellValueParser implements ValueParser<Cell> { + + private final Map<String, Cell> esduCellMap; + + private CellTopiaDao cellDAO; + + public CellValueParser(CellTopiaDao cellDAO) { + this.esduCellMap = Maps.newTreeMap(); + this.cellDAO = cellDAO; + } + + protected CellValueParser(Map<String, Cell> esduCellMap) { + this.esduCellMap = esduCellMap; + } + + @Override + public Cell parse(String value) throws ParseException { + + int separatorIndex = value.indexOf("_"); + + String esduCellId; + String elementaryCellId; + + if (separatorIndex == -1) { + + // just esdu cell in value + + esduCellId = value; + elementaryCellId = null; + } else { + + // esdu and elementary cell in value + + esduCellId = value.substring(0, separatorIndex); + elementaryCellId = value.substring(separatorIndex + 1); + } + + // get esdu cell + Cell result = getEsduCell(esduCellId); + + if (result == null) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not found esdu cell [" + esduCellId + "]"); + } + + if (elementaryCellId != null) { + + // using a elementary cell + + result = result.getChildByName(elementaryCellId); + if (result == null) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not found elementary cell [" + elementaryCellId + "] for esdu cell [" + esduCellId + "]"); + } + } + return result; + } + + protected Cell getEsduCell(String esduCellId) throws ParseException { + + Cell result = esduCellMap.get(esduCellId); + + if (result == null && cellDAO != null) { + try { + List<Cell> cells = cellDAO.forNameEquals(esduCellId).findAll(); + + if (CollectionUtils.isEmpty(cells)) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not find esdu cell with name " + esduCellId); + } + + //TODO Should check this cell is in voyage ? + result = cells.get(0); + + // store it in cache + esduCellMap.put(esduCellId, result); + + } catch (TopiaException e) { + //FIXME USe a real exception + throw new ImportRuntimeException("Can not find esdu cell with name " + esduCellId); + } + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ChainValueParser.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ChainValueParser.java new file mode 100644 index 0000000..2829e9f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ChainValueParser.java @@ -0,0 +1,74 @@ +package fr.ifremer.echobase.services.csv; + +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ValueParser; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * To chain some {@link ValueParser} (different format supported). + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.3 + */ +class ChainValueParser<E> implements ValueParser<E> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ChainValueParser.class); + + private final List<ValueParser<E>> parsers; + + protected ChainValueParser(List<ValueParser<E>> parsers) { + this.parsers = new ArrayList<>(parsers); + } + + @Override + public E parse(String value) throws ParseException { + E result = null; + Iterator<ValueParser<E>> iterator = parsers.iterator(); + while (iterator.hasNext()) { + ValueParser<E> parser = iterator.next(); + try { + result = parser.parse(value); + break; + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not parse value " + value, e); + } + } + } + + if (result == null && !iterator.hasNext()) { + + // all parsers were used and no one gives a good result + throw new ParseException( + "Could not parse value " + value + " with any parsers", 0); + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java new file mode 100644 index 0000000..f317b96 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EchoBaseCsvUtil.java @@ -0,0 +1,337 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import com.google.common.base.Function; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.entities.references.Vessel; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.csv.ValueGetter; +import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.csv.ValueSetter; +import org.nuiton.topia.service.csv.TopiaCsvCommons; + +import java.util.Arrays; +import java.util.Date; +import java.util.Map; +import java.util.Set; + +/** + * Usefull class to build csv import-export models. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.2 + */ +public class EchoBaseCsvUtil extends TopiaCsvCommons { + + public static final String CELLULE_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSS"; + + public static final ValueParserFormatter<Date> IMPORT_DAY_TIME_ECHOBASE = new DateValue(CELLULE_DATE_FORMAT); + +// public static final ValueParser<Date> IMPORT_DAY_TIME_ECHOBASE2 = new DateValue("dd/MM/yyyy HH:mm:ss.SSSS"); + + public static final ValueFormatter<Species> SPECIES_TO_COSER_CODE = new ValueFormatter<Species>() { + @Override + public String format(Species value) { + return value.getBaracoudaCode().replaceAll("-", ""); + } + }; + + public static final ValueFormatter<DataQuality> DATA_QUALITY_FORMATTER = newValueFormatterByFunction(new Function<DataQuality, String>() { + @Override + public String apply(DataQuality input) { + return "" + input.getQualityDataFlagValues(); + } + }); + + public static final ValueFormatter<AcousticInstrument> ACOUSTIC_INSTRUMENT_FORMATTER = newValueFormatterByFunction( + new Function<AcousticInstrument, String>() { + + @Override + public String apply(AcousticInstrument input) { + return input.getId(); + } + } + ); + public static final ValueFormatter<Voyage> VOYAGE_FORMATTER = newValueFormatterByFunction( + new Function<Voyage, String>() { + + @Override + public String apply(Voyage input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Vessel> VESSEL_FORMATTER = newValueFormatterByFunction( + new Function<Vessel, String>() { + + @Override + public String apply(Vessel input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Gear> GEAR_FORMATTER = newValueFormatterByFunction( + new Function<Gear, String>() { + + @Override + public String apply(Gear input) { + return input.getCasinoGearName(); + } + } + ); + public static final ValueFormatter<GearMetadata> GEAR_METADATA_FORMATTER = newValueFormatterByFunction( + new Function<GearMetadata, String>() { + + @Override + public String apply(GearMetadata input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<DepthStratum> DEPTH_STRATUM_FORMATTER = newValueFormatterByFunction( + new Function<DepthStratum, String>() { + + @Override + public String apply(DepthStratum input) { + return input.getId(); + } + } + ); + public static final ValueFormatter<Species> SPECIES_FORMATTER = newValueFormatterByFunction( + new Function<Species, String>() { + + @Override + public String apply(Species input) { + return input.getBaracoudaCode(); + } + } + ); + public static final ValueFormatter<SampleDataType> SAMPLE_DATA_TYPE_FORMATTER = newValueFormatterByFunction( + new Function<SampleDataType, String>() { + + @Override + public String apply(SampleDataType input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Strata> STRATA_FORMATTER = newValueFormatterByFunction( + new Function<Strata, String>() { + + @Override + public String apply(Strata input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Operation> OPERATION_FORMATTER = newValueFormatterByFunction( + new Function<Operation, String>() { + + @Override + public String apply(Operation input) { + return input.getId(); + } + } + ); + public static final ValueFormatter<OperationMetadata> OPERATION_FMETADATA_ORMATTER = newValueFormatterByFunction( + new Function<OperationMetadata, String>() { + + @Override + public String apply(OperationMetadata input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<SizeCategory> SIZE_CATEGORY_FORMATTER = newValueFormatterByFunction( + new Function<SizeCategory, String>() { + + @Override + public String apply(SizeCategory input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<SexCategory> SEX_CATEGORY_FORMATTER = newValueFormatterByFunction( + new Function<SexCategory, String>() { + + @Override + public String apply(SexCategory input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Cell> CELL_FORMATTER = newValueFormatterByFunction( + new Function<Cell, String>() { + + @Override + public String apply(Cell input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<Echotype> ECHOTYPE_FORMATTER = newValueFormatterByFunction( + new Function<Echotype, String>() { + + @Override + public String apply(Echotype input) { + return input.getName(); + } + } + ); + public static final ValueFormatter<CellType> CELL_TYPE_FORMATTER = newValueFormatterByFunction( + new Function<CellType, String>() { + + @Override + public String apply(CellType input) { + return input.getId(); + } + } + ); + + public static <E> ValueFormatter<E> newValueFormatterByFunction(Function<E, String> function) { + return new ValueFormatterByFunction<>(function); + } + + public static ValueParser<Cell> newCellValueParser(Map<String, Cell> esduCellMap) { + return new CellValueParser(esduCellMap); + } + + public static ValueFormatter<Cell> newCellValueFormatter(Set<Cell> esduCells, CellType esduCellType, CellType elementaryCellType) { + return new CellValueFormatter(esduCells, esduCellType, elementaryCellType); + } + + public static <B extends ResultAble> ValueSetter<B, Result> newResultValueSetter() { + return new ResultValueSetter<>(); + } + + public static <B extends ResultAble> ValueGetter<B, Result> newResultValueGetter(DataMetadata metadata) { + return new ResultValueGetter<>(metadata); + } + + public static ValueParser<Result> newResultValueParser(DataMetadata metadata, boolean useFillValue) { + return new ResultValueParser(metadata, useFillValue); + } + + public static ValueFormatter<Result> newResultValueFormatter(DataMetadata metadata, boolean useFillValue) { + return new ResultValueFormatter(metadata, useFillValue); + } + + +// public static final ValueParser<Boolean> INT_TO_BOOLEAN_PARSER = new ValueParser<Boolean>() { +// +// @Override +// public Boolean parse(String value) { +// return "1".equals(value); +// } +// }; + + public static final ValueParserFormatter<Float> NA_TO_FLOAT_PARSER_FORMATTER = new FloatParserFormatter(null, true) { + + @Override + public String format(Float value) { + return value == null ? NA : super.format(value); + } + + @Override + protected Float parseNoneEmptyValue(String value) { + Float result = null; + if (!NA.equals(value)) { + result = super.parseNoneEmptyValue(value); + } + return result; + } + + }; + +// public static final ValueParser<Float> NA_TO_PRIMITIVE_FLOAT_PARSER = new FloatParserFormatter(0f, false) { +// +// @Override +// protected Float parseNoneEmptyValue(String value) { +// Float result; +// if (!NA.equals(value)) { +// result = super.parseNoneEmptyValue(value); +// } else { +// result = defaultValue; +// } +// return result; +// } +// +// }; + + public static final ValueParserFormatter<Integer> NA_TO_INTEGER_PARSER_FORMATTER = new IntegerParserFormatter(null, true) { + + @Override + public String format(Integer value) { + return value == null ? NA : super.format(value); + } + + @Override + protected Integer parseNoneEmptyValue(String value) { + Integer result = null; + if (!NA.equals(value)) { + result = super.parseNoneEmptyValue(value); + } + return result; + } + + }; + + public static final ValueParser<Date> DATE_TIME_VALUE_PARSER = new ChainValueParser<>(Arrays.<ValueParser<Date>>asList(TopiaCsvCommons.DAY_TIME_SECOND_WITH_TIMESTAMP, + TopiaCsvCommons.DAY_TIME_SECOND, + TopiaCsvCommons.DAY_TIME, + TopiaCsvCommons.DAY)); + + public static final String CELL_NAME = "name"; + + public static final String OPERATION_ID = "operationId"; + + public static final String VESSEL_NAME = "vesselName"; + + public static final String GEAR_CODE = "gearCode"; + + public static final String DEPTH_STRATUM_ID = "depthStratumId"; + + public static final String NA = "NA"; + + protected EchoBaseCsvUtil() { + // avoid instanciation on helper class + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java new file mode 100644 index 0000000..bf8caae --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultAble.java @@ -0,0 +1,23 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.references.DataQuality; + +import java.util.List; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface ResultAble { + + void addResult(Result value); + + List<Result> getResult(); + + DataQuality getDataQuality(); + + void setDataQuality(DataQuality dataQuality); + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java new file mode 100644 index 0000000..85c9b92 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueFormatter.java @@ -0,0 +1,53 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.references.DataMetadata; +import org.nuiton.csv.ValueFormatter; + +/** + * TODO + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +class ResultValueFormatter implements ValueFormatter<Result> { + + private final String fillValue; + private final boolean useFillValue; + + public ResultValueFormatter(DataMetadata metadata, boolean useFillValue) { + this.useFillValue = useFillValue; + this.fillValue = String.valueOf(metadata.getFillValue()); + } + + @Override + public String format(Result value) { + String resultValue = value.getResultValue(); + + if ((fillValue.equals(resultValue) || resultValue == null) && useFillValue) { + resultValue = EchoBaseCsvUtil.NA; + } + return resultValue; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java new file mode 100644 index 0000000..b83c593 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueGetter.java @@ -0,0 +1,29 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.references.DataMetadata; +import org.nuiton.csv.ValueGetter; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +class ResultValueGetter<B extends ResultAble> implements ValueGetter<B, Result> { + + private final DataMetadata metadata; + + ResultValueGetter(DataMetadata metadata) { + this.metadata = metadata; + } + + @Override + public Result get(B object) throws Exception { + for (Result result : object.getResult()) { + if (metadata.equals(result.getDataMetadata())) { + return result; + } + } + return null; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueParser.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueParser.java new file mode 100644 index 0000000..20d31c6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueParser.java @@ -0,0 +1,59 @@ +/* + * #%L + * EchoBase :: Domain + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.ResultImpl; +import fr.ifremer.echobase.entities.references.DataMetadata; +import org.nuiton.csv.ValueParser; + +import java.text.ParseException; + +/** + * TODO + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +class ResultValueParser implements ValueParser<Result> { + + private final DataMetadata metadata; + private final boolean useFillValue; + + public ResultValueParser(DataMetadata metadata, boolean useFillValue) { + this.metadata = metadata; + this.useFillValue = useFillValue; + } + + @Override + public Result parse(String value) throws ParseException { + + Result result = new ResultImpl(); + result.setDataMetadata(metadata); + result.setResultValue(value); + if (EchoBaseCsvUtil.NA.equals(value) && useFillValue) { + + // use metadata fillValue + result.setResultValue(String.valueOf(metadata.getFillValue())); + } + return result; + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java new file mode 100644 index 0000000..b34ec12 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ResultValueSetter.java @@ -0,0 +1,17 @@ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Result; +import org.nuiton.csv.ValueSetter; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +class ResultValueSetter<B extends ResultAble> implements ValueSetter<B, Result> { + + @Override + public void set(B object, Result value) throws Exception { + object.addResult(value); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java new file mode 100644 index 0000000..5ca6340 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ValueFormatterByFunction.java @@ -0,0 +1,24 @@ +package fr.ifremer.echobase.services.csv; + +import com.google.common.base.Function; +import org.nuiton.csv.ValueFormatter; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +class ValueFormatterByFunction<E> implements ValueFormatter<E> { + + private final Function<E, String> function; + + protected ValueFormatterByFunction(Function<E, String> function) { + this.function = function; + } + + @Override + public String format(E value) { + return function.apply(value); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java index 0fcab32..632de4d 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java @@ -25,7 +25,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.AbstractEchoBaseDao; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java index a040188..709e10c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java @@ -37,6 +37,7 @@ import fr.ifremer.echobase.entities.ImportLogTopiaDao; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellTopiaDao; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataProcessing; @@ -56,6 +57,7 @@ import fr.ifremer.echobase.entities.references.AcousticInstrument; import fr.ifremer.echobase.entities.references.AgeCategory; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.CellTypeImpl; import fr.ifremer.echobase.entities.references.CellTypes; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.Mission; @@ -69,9 +71,12 @@ import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseServiceSupport; +import fr.ifremer.echobase.services.csv.CellValueFormatter; +import fr.ifremer.echobase.services.csv.CellValueParser; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParser; import org.nuiton.decorator.Decorator; import org.nuiton.topia.persistence.TopiaDao; @@ -169,11 +174,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getCategoryDao().forEchotypeEquals(echotype).findAll(); } - public Iterable<Category> getCategories(Predicate<Category> acceptPredicate) { - return Iterables.filter( - persistenceContext.getCategoryDao(), - acceptPredicate); - } +// public Iterable<Category> getCategories(Predicate<Category> acceptPredicate) { +// return Iterables.filter(persistenceContext.getCategoryDao(), acceptPredicate); +// } public long countCategoryUsingEchotype(Voyage voyage) throws TopiaException { @@ -225,12 +228,20 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getCellDao().getVoyageCellIds(voyage); } - public ValueParser<Cell> newCellValueParser(Voyage voyage) { - return persistenceContext.getCellDao().newCellValueParser(voyage); + public ValueParser<Cell> newCellValueParser() { + + CellTopiaDao cellDao = persistenceContext.getCellDao(); + return new CellValueParser(cellDao); + } + + public ValueFormatter<Cell> newCellValueFormatter() { + CellTopiaDao cellDao = persistenceContext.getCellDao(); + CellType esduCellType = getEsduCellType(); + CellType elementaryCellType = getElementaryCellType(); + return new CellValueFormatter(cellDao, esduCellType, elementaryCellType); } - public Cell createCell(CellType cellType, - String cellName) { + public Cell createCell(CellType cellType, String cellName) { return persistenceContext.getCellDao().create( Cell.PROPERTY_CELL_TYPE, cellType, Cell.PROPERTY_NAME, cellName); @@ -253,8 +264,20 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return Sets.newHashSet(Iterables.filter(cellTypes, CellTypes.IS_REGION_CELL_TYPE)); } - public CellType getCellType(String id) { - return persistenceContext.getCellTypeDao().findByTopiaId(id); +// public CellType getCellType(String id) { +// return persistenceContext.getCellTypeDao().findByTopiaId(id); +// } + + public CellType getEsduCellType() { + return getCellTypeById(CellTypeImpl.ESDU); + } + + public CellType getElementaryCellType() { + return getCellTypeById(CellTypeImpl.ELEMENTARY); + } + + public CellType getMapCellType() { + return getCellTypeById(CellTypeImpl.MAP); } public CellType getCellTypeById(String id) { @@ -453,9 +476,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Echotype -----------------------------------------------------------// //------------------------------------------------------------------------// - public Optional<Echotype> getOptionalEchotype(String id) { - return Optional.fromNullable(persistenceContext.getEchotypeDao().forTopiaIdEquals(id).findAnyOrNull()); - } +// public Optional<Echotype> getOptionalEchotype(String id) { +// return Optional.fromNullable(persistenceContext.getEchotypeDao().forTopiaIdEquals(id).findAnyOrNull()); +// } public Echotype getEchotype(String id) { return persistenceContext.getEchotypeDao().findByTopiaId(id); @@ -526,10 +549,10 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { persistenceContext.getImportLogDao().delete(importLog); } - @Deprecated - public ImportFile createImportFile(InputFile importFile) { - throw new IllegalStateException("No!"); - } +// @Deprecated +// public ImportFile createImportFile(InputFile importFile) { +// throw new IllegalStateException("No!"); +// } public ImportFile createImportFile(InputFile importFile, InputFile checkFile) { @@ -674,16 +697,16 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { //--- Result -------------------------------------------------------------// //------------------------------------------------------------------------// - public List<Result> getAllWithCategoryCellAndDataMetadata(Set<String> cellIds, - DataMetadata requiredDataMetadata, - List<String> categoryIds) { - return persistenceContext.getResultDao().findAllWithCategoryCellAndDataMetadata(cellIds, requiredDataMetadata, categoryIds); - } - - public List<Result> getAllWithNoCategoryCellAndDataMetadata(Set<String> cellIds, - DataMetadata requiredDataMetadata) { - return persistenceContext.getResultDao().findAllWithNoCategoryCellAndDataMetadata(cellIds, requiredDataMetadata); - } +// public List<Result> getAllWithCategoryCellAndDataMetadata(Set<String> cellIds, +// DataMetadata requiredDataMetadata, +// List<String> categoryIds) { +// return persistenceContext.getResultDao().findAllWithCategoryCellAndDataMetadata(cellIds, requiredDataMetadata, categoryIds); +// } +// +// public List<Result> getAllWithNoCategoryCellAndDataMetadata(Set<String> cellIds, +// DataMetadata requiredDataMetadata) { +// return persistenceContext.getResultDao().findAllWithNoCategoryCellAndDataMetadata(cellIds, requiredDataMetadata); +// } public Result getResult(String id) { return persistenceContext.getResultDao().findByTopiaId(id); @@ -781,11 +804,10 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getSpeciesDao().findAll(); } - public Optional<Species> getOptionalSpecies(String id) { - Species species = persistenceContext.getSpeciesDao().findByTopiaId( - id); - return Optional.fromNullable(species); - } +// public Optional<Species> getOptionalSpecies(String id) { +// Species species = persistenceContext.getSpeciesDao().findByTopiaId(id); +// return Optional.fromNullable(species); +// } //------------------------------------------------------------------------// //--- SpeciesCategory ----------------------------------------------------// @@ -879,9 +901,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getVoyageDao().forMissionEquals(mission).findAll(); } - public List<Voyage> getAllVoyages() { - return persistenceContext.getVoyageDao().findAll(); - } +// public List<Voyage> getAllVoyages() { +// return persistenceContext.getVoyageDao().findAll(); +// } public long countVoyage() { return persistenceContext.getVoyageDao().count(); @@ -905,12 +927,9 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return decoratorService.sortAndDecorate(beans, null); } - public <E extends TopiaEntity, K> Map<K, E> getEntitiesMap( - Class<E> entityType, - Function<E, K> function) { + public <E extends TopiaEntity, K> Map<K, E> getEntitiesMap(Class<E> entityType, Function<E, K> function) { List<E> allVoyages = persistenceContext.getDao(entityType).findAll(); - return Maps.uniqueIndex( - allVoyages, function); + return Maps.uniqueIndex(allVoyages, function); } public void executeSQL(String sqlScript) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java index 949a930..2969e68 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/IndicatorExportModel.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.services.service.exportCoser; * #L% */ -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import org.nuiton.csv.ext.AbstractExportModel; /** diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java index 21bee94..ba0ca25 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataCatchExportModel.java @@ -23,7 +23,7 @@ package fr.ifremer.echobase.services.service.exportCoser; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.Transect; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java index 9099deb..b327ab0 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataSizeExportModel.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.services.service.exportCoser; */ import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; @@ -150,7 +150,7 @@ et "Annee", mais j'y arrive pas... if (operation.isSampleNotEmpty()) { // compute sum of number and weight per species and lengthStep - MultiKeyMap<Object, LengthStepContext> map = new MultiKeyMap<Object, LengthStepContext>(); + MultiKeyMap<Object, LengthStepContext> map = new MultiKeyMap<>(); for (Sample sample : operation.getSample()) { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java index 3997a55..debf47f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/RawDataStrataExportModel.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.services.service.exportCoser; */ import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Voyage; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java index 99152ba..5a83dc6 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportCoser/SpeciesExportModel.java @@ -22,7 +22,7 @@ package fr.ifremer.echobase.services.service.exportCoser; */ import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.references.Species; import org.nuiton.csv.ext.AbstractExportModel; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java index a6fe12e..5f9f6cb 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java @@ -21,7 +21,7 @@ package fr.ifremer.echobase.services.service.exportquery; * #L% */ -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import org.nuiton.csv.ext.AbstractExportModel; import java.util.Map; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java index 40c93a7..aa29567 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataFileResult.java @@ -21,11 +21,22 @@ import java.util.TreeMap; */ public class ImportDataFileResult { + /** Entity types to import csv datas. */ + protected final Set<EchoBaseUserEntityEnum> entityTypes; + /** Count of created entities. */ + protected final Map<EchoBaseUserEntityEnum, MutableInt> numberCreated; + /** Count of updated entities. */ + protected final Map<EchoBaseUserEntityEnum, MutableInt> numberUpdated; + /** Count of updated entities. */ + protected final Map<EchoBaseUserEntityEnum, MutableInt> numberNotImported; + /** Ids of created entities. */ + protected final LinkedHashSet<String> ids; + /** Ids of not imported entities. */ + protected final LinkedHashSet<String> notImportedIds; /** * Import file. */ private final InputFile importFile; - /** * Processed Import file (used to compare with result file). * @@ -33,7 +44,6 @@ public class ImportDataFileResult { * remove ignored columns. */ private final InputFile processedImportile; - /** * Export file. * @@ -41,24 +51,6 @@ public class ImportDataFileResult { */ private final InputFile exportFile; - /** Entity types to import csv datas. */ - protected final Set<EchoBaseUserEntityEnum> entityTypes; - - /** Count of created entities. */ - protected final Map<EchoBaseUserEntityEnum, MutableInt> numberCreated; - - /** Count of updated entities. */ - protected final Map<EchoBaseUserEntityEnum, MutableInt> numberUpdated; - - /** Count of updated entities. */ - protected final Map<EchoBaseUserEntityEnum, MutableInt> numberNotImported; - - /** Ids of created entities. */ - protected final LinkedHashSet<String> ids; - - /** Ids of not imported entities. */ - protected final LinkedHashSet<String> notImportedIds; - public ImportDataFileResult(InputFile importFile) { this.importFile = importFile; this.processedImportile = InputFile.newFile(importFile.getLabel() + " - " + importFile.getFileName() + ".processed"); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java index 98274e4..2a85863 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataResult.java @@ -1,6 +1,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; import java.util.Collections; import java.util.Set; @@ -10,7 +11,7 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public class ImportDataResult<C extends AbstractImportConfiguration> { +public class ImportDataResult<C extends VoyageImportDataConfigurationSupport> { private final C configuration; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java index d16f1ba..641a78a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ImportDataService.java @@ -10,29 +10,40 @@ import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.actions.AbstractImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.AcousticImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.BiometrySampleImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.CommonTransectImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.CommonTransitImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.CommonVoyageImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.GearMetadataImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.OperationImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.OperationMetadataImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.RegionAssociationImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.RegionImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduByEchotypeCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduSpeciesAndAgeCategoryCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsEsduSpeciesAndSizeCategoryCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsMapFishCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsMapOtherCellImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsRegionImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsVoyageEchotypeImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsVoyageLengthAgeKeyImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.ResultsVoyageLengthWeightKeyImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.SubSampleImportAction; -import fr.ifremer.echobase.services.service.importdata.actions.TotalSampleImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.ImportDataActionSupport; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageAcousticsImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCatchesBiometrySampleImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCatchesSubSampleImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCatchesTotalSampleImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCommonsTransectImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCommonsTransitImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageCommonsVoyageImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageOperationsGearMetadataImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageOperationsOperationImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageOperationsOperationMetadataImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduByEchotypeCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsMapFishCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsMapOtherCellImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsRegionAssociationImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsRegionImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsRegionResultsImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsVoyageEchotypeImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsVoyageLengthAgeKeyImportAction; +import fr.ifremer.echobase.services.service.importdata.actions.VoyageResultsVoyageLengthWeightKeyImportAction; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,53 +70,40 @@ import static org.nuiton.i18n.I18n.l; public class ImportDataService extends EchoBaseServiceSupport { public static final Pattern REMOVE_DOUBLE_QUOTES_PATTERN = Pattern.compile("\"(.+)\""); - + public static final TimeLog TIME_LOG = new TimeLog(ImportDataService.class); /** Logger. */ private static final Log log = LogFactory.getLog(ImportDataService.class); - public static final TimeLog TIME_LOG = new TimeLog(ImportDataService.class); - @Inject protected UserDbPersistenceService persistenceService; + public ImportDataResult<VoyageCommonsImportConfiguration> doImportVoyageCommons(VoyageCommonsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - public ImportDataResult<CommonImportConfiguration> doImportCommons(CommonImportConfiguration configuration, EchoBaseUser user) throws ImportException { + VoyageCommonsImportDataContext importDataContext = newVoyageCommonsImportContext(configuration, user); + + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); ImportType importMode = configuration.getImportType(); switch (importMode) { - case COMMON_ALL: { - CommonVoyageImportAction importAction = new CommonVoyageImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - { - CommonTransitImportAction importAction = new CommonTransitImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, false); - importActions.add(importAction); - } - { - CommonTransectImportAction importAction = new CommonTransectImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, false); - importActions.add(importAction); - } - break; + case COMMON_ALL: + importActions.add(new VoyageCommonsVoyageImportAction(importDataContext)); + importActions.add(new VoyageCommonsTransitImportAction(importDataContext, false)); + importActions.add(new VoyageCommonsTransectImportAction(importDataContext, false)); + break; - case COMMON_VOYAGE: { - CommonVoyageImportAction importAction = new CommonVoyageImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; + case COMMON_VOYAGE: + importActions.add(new VoyageCommonsVoyageImportAction(importDataContext)); + break; - case COMMON_TRANSIT: { - CommonTransitImportAction importAction = new CommonTransitImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, true); - importActions.add(importAction); - } - break; + case COMMON_TRANSIT: + importActions.add(new VoyageCommonsTransitImportAction(importDataContext, true)); + break; - case COMMON_TRANSECT: { - CommonTransectImportAction importAction = new CommonTransectImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user, true); - importActions.add(importAction); - } - break; + case COMMON_TRANSECT: + importActions.add(new VoyageCommonsTransectImportAction(importDataContext, true)); + + break; default: throw new EchoBaseTechnicalException("Can not treate import result of type " + importMode); @@ -116,62 +114,60 @@ public class ImportDataService extends EchoBaseServiceSupport { } - public ImportDataResult<OperationImportConfiguration> doImportOperations(OperationImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageOperationsImportConfiguration> doImportVoyageOperations(VoyageOperationsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); - OperationImportAction operationImportAction = new OperationImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - importActions.add(operationImportAction); + VoyageOperationsImportDataContext importDataContext = newVoyageOperationsImportContext(configuration, user); - OperationMetadataImportAction operationMetadataImportAction = new OperationMetadataImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - importActions.add(operationMetadataImportAction); - - GearMetadataImportAction gearMetadataImportAction = new GearMetadataImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - importActions.add(gearMetadataImportAction); + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); + importActions.add(new VoyageOperationsOperationImportAction(importDataContext)); + importActions.add(new VoyageOperationsOperationMetadataImportAction(importDataContext)); + importActions.add(new VoyageOperationsGearMetadataImportAction(importDataContext)); return doImport(configuration, user, importActions); } - public ImportDataResult<CatchesImportConfiguration> doImportCatches(CatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageCatchesImportConfiguration> doImportVoyageCatches(VoyageCatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { + + VoyageCatchesImportDataContext importDataContext = newVoyageCatchesImportContext(configuration, user); - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); InputFile totalSampleFile = configuration.getTotalSampleFile(); if (totalSampleFile.hasFile()) { - TotalSampleImportAction importAction = new TotalSampleImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageCatchesTotalSampleImportAction(importDataContext)); } InputFile subSampleFile = configuration.getSubSampleFile(); if (subSampleFile.hasFile()) { - SubSampleImportAction importAction = new SubSampleImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageCatchesSubSampleImportAction(importDataContext)); } InputFile biometrySampleFile = configuration.getBiometrySampleFile(); if (biometrySampleFile.hasFile()) { - BiometrySampleImportAction importAction = new BiometrySampleImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageCatchesBiometrySampleImportAction(importDataContext)); } return doImport(configuration, user, importActions); } - public ImportDataResult<AcousticImportConfiguration> doImportAcoustics(AcousticImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageAcousticsImportConfiguration> doImportVoyageAcoustics(VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - AcousticImportAction acousticImportAction = new AcousticImportAction(getLocale(), getCsvSeparator(), persistenceService, configuration, user); - Set<AcousticImportAction> importActions = Collections.singleton(acousticImportAction); + VoyageAcousticsImportDataContext importDataContext = newVoyageAcousticsImportContext(configuration, user); + Set<VoyageAcousticsImportAction> importActions = Collections.singleton(new VoyageAcousticsImportAction(importDataContext)); return doImport(configuration, user, importActions); } - public ImportDataResult<ResultsImportConfiguration> doImportResults(ResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + public ImportDataResult<VoyageResultsImportConfiguration> doImportVoyageResults(VoyageResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + + VoyageResultsImportDataContext importDataContext = newVoyageResultsImportContext(configuration, user); - Collection<AbstractImportAction> importActions = new LinkedHashSet<>(); + Collection<ImportDataActionSupport> importActions = new LinkedHashSet<>(); ImportType importMode = configuration.getImportType(); @@ -189,22 +185,19 @@ public class ImportDataService extends EchoBaseServiceSupport { if (configuration.getLengthAgeKeyFile().hasFile()) { - ResultsVoyageLengthAgeKeyImportAction importAction = new ResultsVoyageLengthAgeKeyImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsVoyageLengthAgeKeyImportAction(importDataContext)); } if (configuration.getLengthWeightKeyFile().hasFile()) { - ResultsVoyageLengthWeightKeyImportAction importAction = new ResultsVoyageLengthWeightKeyImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsVoyageLengthWeightKeyImportAction(importDataContext)); } if (configuration.getEchotypeFile().hasFile()) { - ResultsVoyageEchotypeImportAction importAction = new ResultsVoyageEchotypeImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsVoyageEchotypeImportAction(importDataContext)); } @@ -214,70 +207,76 @@ public class ImportDataService extends EchoBaseServiceSupport { case RESULT_ESDU: if (configuration.getEsduByEchotypeFile().hasFile()) { - ResultsEsduByEchotypeCellImportAction importAction = new ResultsEsduByEchotypeCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduByEchotypeCellImportAction(importDataContext)); } if (configuration.getEsduByEchotypeAndSpeciesCategoryFile().hasFile()) { - ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction importAction = new ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(importDataContext)); } if (configuration.getEsduBySpeciesAndSizeCategoryFile().hasFile()) { - ResultsEsduSpeciesAndSizeCategoryCellImportAction importAction = new ResultsEsduSpeciesAndSizeCategoryCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction(importDataContext)); } if (configuration.getEsduBySpeciesAndAgeCategoryFile().hasFile()) { - ResultsEsduSpeciesAndAgeCategoryCellImportAction importAction = new ResultsEsduSpeciesAndAgeCategoryCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); + importActions.add(new VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction(importDataContext)); } break; - case RESULT_REGION: { - RegionImportAction importAction = new RegionImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - { - RegionAssociationImportAction importAction = new RegionAssociationImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - { - ResultsRegionImportAction importAction = new ResultsRegionImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; + case RESULT_REGION: + importActions.add(new VoyageResultsRegionImportAction(importDataContext)); + importActions.add(new VoyageResultsRegionAssociationImportAction(importDataContext)); + importActions.add(new VoyageResultsRegionResultsImportAction(importDataContext)); - case RESULT_MAP_FISH: { - ResultsMapFishCellImportAction importAction = new ResultsMapFishCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; + break; + + case RESULT_MAP_FISH: + importActions.add(new VoyageResultsMapFishCellImportAction(importDataContext)); + + break; + + case RESULT_MAP_OTHER: + importActions.add(new VoyageResultsMapOtherCellImportAction(importDataContext)); + break; - case RESULT_MAP_OTHER: { - ResultsMapOtherCellImportAction importAction = new ResultsMapOtherCellImportAction(persistenceService, getLocale(), getCsvSeparator(), configuration, user); - importActions.add(importAction); - } - break; default: - throw new EchoBaseTechnicalException( - "Can not treate import result of type " + importMode); + throw new EchoBaseTechnicalException("Can not treate import result of type " + importMode); } return doImport(configuration, user, importActions); } + private VoyageCommonsImportDataContext newVoyageCommonsImportContext(VoyageCommonsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageCommonsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } - protected <M extends AbstractImportConfiguration, A extends AbstractImportAction> ImportDataResult<M> doImport(M configuration, EchoBaseUser user, Collection<A> importActions) throws ImportException { + private VoyageResultsImportDataContext newVoyageResultsImportContext(VoyageResultsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageResultsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + private VoyageOperationsImportDataContext newVoyageOperationsImportContext(VoyageOperationsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageOperationsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + private VoyageCatchesImportDataContext newVoyageCatchesImportContext(VoyageCatchesImportConfiguration configuration, EchoBaseUser user) { + return new VoyageCatchesImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + private VoyageAcousticsImportDataContext newVoyageAcousticsImportContext(VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) { + return new VoyageAcousticsImportDataContext(persistenceService, getLocale(), getCsvSeparator(), configuration, user); + } + + + protected <M extends VoyageImportDataConfigurationSupport, A extends ImportDataActionSupport> ImportDataResult<M> doImport(M configuration, EchoBaseUser user, Collection<A> importActions) throws ImportException { long s0 = TimeLog.getTime(); @@ -318,7 +317,7 @@ public class ImportDataService extends EchoBaseServiceSupport { } } - protected <M extends AbstractImportConfiguration> String computeResultAndLogBookEntry(M configuration, EchoBaseUser user, Set<ImportDataFileResult> importDataFileResults) { + protected <M extends VoyageImportDataConfigurationSupport> String computeResultAndLogBookEntry(M configuration, EchoBaseUser user, Set<ImportDataFileResult> importDataFileResults) { Date importDate = newDate(); String importUser = user.getEmail(); @@ -389,7 +388,7 @@ public class ImportDataService extends EchoBaseServiceSupport { } - public <M extends AbstractImportConfiguration> ImportLog computeImportLogEntry(M configuration, EchoBaseUser user) { + public <M extends VoyageImportDataConfigurationSupport> ImportLog computeImportLogEntry(M configuration, EchoBaseUser user) { Date importDate = newDate(); String importUser = user.getEmail(); @@ -407,7 +406,7 @@ public class ImportDataService extends EchoBaseServiceSupport { importUser, importDate, importText, - new ArrayList<>()); + new ArrayList<String>()); } @@ -427,52 +426,51 @@ public class ImportDataService extends EchoBaseServiceSupport { throw new EchoBaseTechnicalException("Can't get length of checkFile " + result.getName()); } } + return result; } - protected <M extends AbstractImportConfiguration> String getImportLabel(M configuration) { + protected <M extends VoyageImportDataConfigurationSupport> String getImportLabel(M configuration) { return l(getLocale(), configuration.getImportType().getI18nKey()); } - public interface ImportDataAction<M extends AbstractImportConfiguration> { - + public interface ImportDataAction<M extends VoyageImportDataConfigurationSupport> { ImportDataResult<M> doImport(ImportDataService service, M configuration, EchoBaseUser user) throws ImportException; - } - public static class AcousticImportDataAction implements ImportDataAction<AcousticImportConfiguration> { + public static class VoyageAcousticsImportDataAction implements ImportDataAction<VoyageAcousticsImportConfiguration> { @Override - public ImportDataResult<AcousticImportConfiguration> doImport(ImportDataService service, AcousticImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportAcoustics(configuration, user); + public ImportDataResult<VoyageAcousticsImportConfiguration> doImport(ImportDataService service, VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageAcoustics(configuration, user); } } - public static class CommonImportDataAction implements ImportDataAction<CommonImportConfiguration> { + public static class VoyageCommonsImportDataAction implements ImportDataAction<VoyageCommonsImportConfiguration> { @Override - public ImportDataResult<CommonImportConfiguration> doImport(ImportDataService service, CommonImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportCommons(configuration, user); + public ImportDataResult<VoyageCommonsImportConfiguration> doImport(ImportDataService service, VoyageCommonsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageCommons(configuration, user); } } - public static class OperationsImportDataAction implements ImportDataAction<OperationImportConfiguration> { + public static class VoyageOperationsImportDataAction implements ImportDataAction<VoyageOperationsImportConfiguration> { @Override - public ImportDataResult<OperationImportConfiguration> doImport(ImportDataService service, OperationImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportOperations(configuration, user); + public ImportDataResult<VoyageOperationsImportConfiguration> doImport(ImportDataService service, VoyageOperationsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageOperations(configuration, user); } } - public static class ResultsImportDataAction implements ImportDataAction<ResultsImportConfiguration> { + public static class VoyageResultsImportDataAction implements ImportDataAction<VoyageResultsImportConfiguration> { @Override - public ImportDataResult<ResultsImportConfiguration> doImport(ImportDataService service, ResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportResults(configuration, user); + public ImportDataResult<VoyageResultsImportConfiguration> doImport(ImportDataService service, VoyageResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageResults(configuration, user); } } - public static class CatchesImportDataAction implements ImportDataAction<CatchesImportConfiguration> { + public static class VoyageCatchesImportDataAction implements ImportDataAction<VoyageCatchesImportConfiguration> { @Override - public ImportDataResult<CatchesImportConfiguration> doImport(ImportDataService service, CatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { - return service.doImportCatches(configuration, user); + public ImportDataResult<VoyageCatchesImportConfiguration> doImport(ImportDataService service, VoyageCatchesImportConfiguration configuration, EchoBaseUser user) throws ImportException { + return service.doImportVoyageCatches(configuration, user); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java new file mode 100644 index 0000000..035e90d --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultCategoryCache.java @@ -0,0 +1,93 @@ +package fr.ifremer.echobase.services.service.importdata; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 29/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ResultCategoryCache { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ResultCategoryCache.class); + + private final Map<String, Category> cache; + private final UserDbPersistenceService persistenceService; + private final SpeciesCategoryCache speciesCategoryCache; + + public ResultCategoryCache(UserDbPersistenceService persistenceService, SpeciesCategoryCache speciesCategoryCache) { + this.persistenceService = persistenceService; + this.speciesCategoryCache = speciesCategoryCache; + this.cache = new TreeMap<>(); + } + + public Category getResultCategory(Echotype echotype, + Species species, + SizeCategory sizeCategory, + AgeCategory ageCategory, + ImportDataFileResult importResult) { + + SpeciesCategory speciesCategory = speciesCategoryCache.getSpeciesCategory(species, + sizeCategory, + ageCategory, + null, + importResult); + return getResultCategory(echotype, speciesCategory, importResult); + + } + + public Category getResultCategory(Echotype echotype, SpeciesCategory speciesCategory, ImportDataFileResult importResult) { + + String key + = speciesCategory == null ? "" : speciesCategory.getTopiaId() + + "#" + (echotype == null ? "" : echotype.getName()); + + Category category = cache.get(key); + + if (category == null) { + + // try to find it in db + if (log.isInfoEnabled()) { + log.info("Result category (" + key + ") not found in cache."); + } + + category = persistenceService.getCategoryByEchotypeAndSpeciesCategory(echotype, speciesCategory); + + if (category == null) { + + // not found in db, create it + if (log.isInfoEnabled()) { + log.info("Result category (" + key + ") not found in database, create it."); + } + category = persistenceService.createCategory(echotype, speciesCategory); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Category); + } else { + + if (log.isInfoEnabled()) { + log.info("Result category (" + key + ") found in database, add it to cache."); + } + } + + cache.put(key, category); + + } + + return category; + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java new file mode 100644 index 0000000..b83df5b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/SpeciesCategoryCache.java @@ -0,0 +1,82 @@ +package fr.ifremer.echobase.services.service.importdata; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 29/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SpeciesCategoryCache { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SpeciesCategoryCache.class); + + private final Map<String, SpeciesCategory> cache; + private final UserDbPersistenceService persistenceService; + + public SpeciesCategoryCache(UserDbPersistenceService persistenceService) { + this.persistenceService = persistenceService; + this.cache = new TreeMap<>(); + } + + public SpeciesCategory getSpeciesCategory(Species species, + SizeCategory sizeCategory, + AgeCategory ageCategory, + SexCategory sexCategory, + ImportDataFileResult importResult) { + + String key + = species == null ? "" : species.getBaracoudaCode() + + "#" + (ageCategory == null ? "" : ageCategory.getName()) + + "#" + (sizeCategory == null ? "" : sizeCategory.getName()) + + "#" + (sexCategory == null ? "" : sexCategory.getName()); + + SpeciesCategory category = cache.get(key); + + if (category == null) { + + // try to find it in db + if (log.isInfoEnabled()) { + log.info("Species category (" + key + ") not found in cache."); + } + + category = persistenceService.getSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); + + if (category == null) { + + // not found in db, create it + if (log.isInfoEnabled()) { + log.info("Species category (" + key + ") not found in database, create it."); + } + category = persistenceService.createSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SpeciesCategory); + } else { + + if (log.isInfoEnabled()) { + log.info("Species category (" + key + ") found in database, add it to cache."); + } + + } + + cache.put(key, category); + + } + + return category; + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java deleted file mode 100644 index 832c51f..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AbstractImportAction.java +++ /dev/null @@ -1,352 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.base.Charsets; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Data; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.AbstractImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.DataMetadataNotFoundException; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ImportException; -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportModel; -import org.nuiton.csv.ImportRuntimeException; - -import java.io.BufferedReader; -import java.io.Closeable; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.Collection; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.regex.Matcher; - -import static fr.ifremer.echobase.services.service.importdata.ImportDataService.REMOVE_DOUBLE_QUOTES_PATTERN; -import static org.nuiton.i18n.I18n.l; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public abstract class AbstractImportAction<M extends AbstractImportConfiguration, E, C extends ImportModel<E>> implements Closeable { - - /** Logger. */ - private static final Log log = LogFactory.getLog(AbstractImportAction.class); - protected final UserDbPersistenceService persistenceService; - private final Locale locale; - private final M configuration; - private final EchoBaseUser user; - private final InputFile inputFile; - private final C importModel; - //FIXME Use a real cache - protected Map<String, SpeciesCategory> speciesCategories = Maps.newTreeMap(); - //FIXME Use a real cache - protected Map<String, Category> categories = Maps.newTreeMap(); - private Reader reader; - private Import<E> csvImport; - - protected AbstractImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - M configuration, - EchoBaseUser user, - InputFile inputFile) { - this.persistenceService = persistenceService; - this.locale = locale; - this.configuration = configuration; - this.user = user; - this.inputFile = inputFile; - this.importModel = createCsvImportModel(csvSeparator, configuration); - } - - public ImportDataFileResult run() throws ImportException { - - ImportDataFileResult result = new ImportDataFileResult(inputFile); - try { - performImport(getConfiguration(), inputFile, result); - } catch (ImportRuntimeException e) { - throw new ImportException(locale, inputFile, e); - } - return result; - - } - - protected abstract void performImport(M configuration, InputFile inputFile, ImportDataFileResult result); - - protected abstract C createCsvImportModel(char csvSeparator, M configuration); - - public final Locale getLocale() { - return locale; - } - - public final M getConfiguration() { - return configuration; - } - - public final EchoBaseUser getUser() { - return user; - } - - public InputFile getInputFile() { - return inputFile; - } - - protected final Import<E> open() { - if (reader != null) { - throw new IllegalStateException("Reader was already opened"); - } - if (csvImport != null) { - throw new IllegalStateException("csvImport was already opened"); - } - try { - reader = new BufferedReader(new InputStreamReader(new FileInputStream(inputFile.getFile()), Charsets.UTF_8)); - } catch (FileNotFoundException e) { - throw new EchoBaseTechnicalException("Could not find import file " + inputFile.getFile(), e); - } - return csvImport = Import.newImport(importModel, reader); - } - - @Override - public void close() throws IOException { - if (reader != null) { - IOUtils.closeQuietly(reader); - } - if (csvImport != null) { - IOUtils.closeQuietly(csvImport); - } - } - - public final String getImportLabel() { - return l(getLocale(), configuration.getImportType().getI18nKey()); - } - - public final String getImportMessage() { - return l(getLocale(), "echobase.importLabel.withFile", getImportLabel(), inputFile.getFileName()); - } - - protected void incrementsProgress() { - configuration.incrementsProgress(); - } - - protected final void doFlushTransaction(int rowNumber) { - configuration.incrementsProgress(); - if (rowNumber % 1000 == 0) { - // flush each 1000 imported rows - String message = getImportMessage(); - if (log.isDebugEnabled()) { - log.debug(message); - } - persistenceService.flush(); - } - } - - protected SpeciesCategory getSpeciesCategory(Species species, - SizeCategory sizeCategory, - AgeCategory ageCategory, - SexCategory sexCategory, - ImportDataFileResult importResult) { - - String key = species == null ? "" : species.getBaracoudaCode(); - key += "#" + (ageCategory == null ? "" : ageCategory.getName()); - key += "#" + (sizeCategory == null ? "" : sizeCategory.getName()); - key += "#" + (sexCategory == null ? "" : sexCategory.getName()); - - SpeciesCategory category = speciesCategories.get(key); - - if (category == null) { - - // try to find it in db - - category = persistenceService.getSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); - - if (category == null) { - - // not found in db, create it - - category = persistenceService.createSpeciesCategory(species, sizeCategory, ageCategory, sexCategory); - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SpeciesCategory); - } - - speciesCategories.put(key, category); - } - return category; - } - - protected Category getResultCategory(Echotype echotype, - Species species, - SizeCategory sizeCategory, - AgeCategory ageCategory, - ImportDataFileResult importResult) { - - // get species categorie first - - SpeciesCategory speciesCategory = getSpeciesCategory(species, sizeCategory, ageCategory, null, importResult); - - return getResultCategory(echotype, speciesCategory, importResult); - } - - protected Category getResultCategory(Echotype echotype, SpeciesCategory speciesCategory, ImportDataFileResult importResult) { - - String key = speciesCategory == null ? "" : speciesCategory.getTopiaId(); - key += "#" + (echotype == null ? "" : echotype.getName()); - - Category category = categories.get(key); - - if (category == null) { - - // try to find it in db - - category = persistenceService.getCategoryByEchotypeAndSpeciesCategory(echotype, speciesCategory); - - if (category == null) { - - // not found in db, create it - category = persistenceService.createCategory(echotype, speciesCategory); - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Category); - } - - categories.put(key, category); - } - - return category; - } - - protected void createCellData(Cell cell, - DataMetadata dataMetaData, - String dataValue, - DataQuality dataQuality, - ImportDataFileResult importResult) { - - Data data = persistenceService.createData(dataMetaData, dataValue); - cell.addData(data); - cell.setDataQuality(dataQuality); - - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Data); - - } - - protected List<DataMetadata> getMetas(String[] columnNamesToExclude, Map<String, DataMetadata> dataMetadataMap, String... headers) { - - List<String> metadataNames = Lists.newArrayList(headers); - for (String columnToExclude : columnNamesToExclude) { - metadataNames.remove(columnToExclude); - metadataNames.remove("\"" + columnToExclude + "\""); - } - - List<DataMetadata> result = Lists.newArrayList(); - - Locale locale = getLocale(); - - for (String metadataName : metadataNames) { - - Matcher matcher = REMOVE_DOUBLE_QUOTES_PATTERN.matcher(metadataName); - if (matcher.matches()) { - metadataName = matcher.group(1); - } - DataMetadata dataMetadata = dataMetadataMap.get(metadataName); - if (dataMetadata == null) { - throw new DataMetadataNotFoundException(locale, metadataName, dataMetadataMap.keySet()); - } - result.add(dataMetadata); - } - return result; - - } - - protected void addResults(EchoBaseCsvUtil.ResultAble row, - Cell cell, - Category category, - String resultLabel, - ImportDataFileResult importResult, - boolean collecIds, - boolean importNAResults) { - - List<Result> results = row.getResult(); - - for (Result result : results) { - - if (!importNAResults && EchoBaseCsvUtil.NA.equals(result.getResultValue())) { - - // Do not import NA results - continue; - } - result.setDataQuality(row.getDataQuality()); - result.setCategory(category); - result.setResultLabel(resultLabel); - - Result resultCreated = persistenceService.createResult(result); - cell.addResult(resultCreated); - - if (collecIds) { - - importResult.addId(EchoBaseUserEntityEnum.Result, resultCreated); - - } else { - - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Result); - } - - } - - } - - protected Sample addSample(Operation operation, Sample sample, ImportDataFileResult importResult) { - - Preconditions.checkNotNull(operation); - Preconditions.checkNotNull(sample); - Sample result = persistenceService.createSample(sample); - operation.addSample(result); - importResult.addId(EchoBaseUserEntityEnum.Sample, sample); - return result; - - } - - protected SampleData addSampleData(SampleDataType sampleDataType, String label, float value, Sample sample, ImportDataFileResult importResult) { - - SampleData sampleData = persistenceService.createSampleData(sampleDataType, label, value); - sample.addSampleData(sampleData); - importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); - return sampleData; - - } - - //FIXME Define a real exception - protected void checkOperationWithTotalOrUnsortedSample(int rowNumber, Collection<Operation> operationWithTotalOrUnsortedSample, Operation operation) { - if (!operationWithTotalOrUnsortedSample.contains(operation)) { - - // can not accept this import - throw new ImportRuntimeException("At line " + rowNumber + ", wants to add a subsample sample but operation " + operation.getId() + " has no sample of type *Total*, nor *Unsorted*"); - } - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java deleted file mode 100644 index 6b6b850..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/BiometrySampleImportAction.java +++ /dev/null @@ -1,136 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Collections2; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleDataTypes; -import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SampleTypeImpl; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class BiometrySampleImportAction extends AbstractImportAction<CatchesImportConfiguration, BiometrySampleImportRow, BiometrySampleImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(BiometrySampleImportAction.class); - - public BiometrySampleImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CatchesImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getSubSampleFile()); - } - - @Override - protected BiometrySampleImportModel createCsvImportModel(char csvSeparator, CatchesImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - Map<String, SampleDataType> sampleDataTypeMap = persistenceService.getEntitiesMap(SampleDataType.class, SampleDataTypes.SAMPLE_DATA_TYPE_NAME); - - return new BiometrySampleImportModel(csvSeparator, operationMap, speciesMap, sampleDataTypeMap); - - } - - @Override - protected void performImport(CatchesImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of subSample from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Collection<Operation> operationWithTotalOrUnsortedSample = Collections2.filter(operations, Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); - - SampleType sampleTypeIndividual = persistenceService.getSampleTypeByName(SampleTypeImpl.INDIVIDUAL_SAMPLE_TYPE); - Map<String, Sample> samples = Maps.newTreeMap(); - - try (Import<BiometrySampleImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (BiometrySampleImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Operation operation = row.getOperation(); - - checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); - - Species species = row.getSpecies(); - - int numFish = row.getNumFish(); - - String sampleKey = operation.getId() + "_" + species.getBaracoudaCode() + "_" + numFish; - - Sample sample = samples.get(sampleKey); - - if (sample == null) { - - // create a new sample - sample = persistenceService.newSample(); - - sample.setSampleType(sampleTypeIndividual); - - SpeciesCategory category = getSpeciesCategory(species, null, null, null, result); - - sample.setSpeciesCategory(category); - - sample = addSample(operation, sample, result); - - samples.put(sampleKey, sample); - } - - SampleData sampleData = row.getSampleData(); - - SampleData sampleDataCreated = persistenceService.createSampleData(sampleData); - sample.addSampleData(sampleDataCreated); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java deleted file mode 100644 index 10391be..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/GearMetadataImportAction.java +++ /dev/null @@ -1,100 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.GearMetadataValue; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.GearMetadata; -import fr.ifremer.echobase.entities.references.GearMetadatas; -import fr.ifremer.echobase.entities.references.Gears; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class GearMetadataImportAction extends AbstractImportAction<OperationImportConfiguration, GearMetadataValueImportRow, GearMetadataValueImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(GearMetadataImportAction.class); - - public GearMetadataImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - OperationImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getOperationMetadataFile()); - - } - - @Override - protected GearMetadataValueImportModel createCsvImportModel(char csvSeparator, OperationImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get usable vessels from the voyage by their name - Map<String, Vessel> vesselMap = Maps.uniqueIndex(voyage.getAllVessels(), Vessels.VESSEL_NAME); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - // get usable gears by their casino gear name - Map<String, Gear> gearMap = persistenceService.getEntitiesMap(Gear.class, Gears.GEAR_CASINO_GEAR_NAME); - - // split them by operation Id - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, GearMetadata> gearMetadatasMap = persistenceService.getEntitiesMap(GearMetadata.class, GearMetadatas.GEAR_METADATA_NAME); - return new GearMetadataValueImportModel(csvSeparator, vesselMap, gearMetadatasMap, gearMap, operationMap); - } - - @Override - protected void performImport(OperationImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of gear metadata values from file " + inputFile.getFileName()); - } - - try (Import<GearMetadataValueImportRow> importer = open()) { - - int rowNumber = 0; - incrementsProgress(); - for (GearMetadataValueImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Operation operation = row.getOperation(); - - GearMetadataValue gearMetadataValuetoCreate = row.getGearMetadataValue(); - GearMetadataValue gearMetadataValue = persistenceService.createGearMetadataValue(gearMetadataValuetoCreate); - - operation.addGearMetadataValue(gearMetadataValue); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.GearMetadataValue); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java new file mode 100644 index 0000000..15f276b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportDataActionSupport.java @@ -0,0 +1,167 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import com.google.common.base.Charsets; +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Data; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ImportException; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.contexts.ImportDataContextSupport; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.ExportModel; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportRuntimeException; + +import java.io.BufferedReader; +import java.io.Closeable; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ImportDataActionSupport<M extends ImportDataConfigurationSupport, C extends ImportDataContextSupport<M>, E> implements Closeable { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportDataActionSupport.class); + + private final C importDataContext; + private final InputFile inputFile; + + private ImportModel<E> importModel; + private ExportModel<E> exportModel; + private Reader reader; + private Import<E> csvImport; + private Export<E> csvExport; + protected final UserDbPersistenceService persistenceService; + + protected ImportDataActionSupport(C importDataContext, InputFile inputFile) { + this.importDataContext = importDataContext; + this.inputFile = inputFile; + this.persistenceService = importDataContext.getPersistenceService(); + } + + public ImportDataFileResult run() throws ImportException { + + this.importModel = createCsvImportModel(importDataContext); + this.exportModel = createCsvExportModel(importDataContext); + + ImportDataFileResult result = new ImportDataFileResult(inputFile); + try { + performImport(importDataContext, inputFile, result); + } catch (ImportRuntimeException e) { + throw new ImportException(importDataContext.getLocale(), inputFile, e); + } + return result; + + } + + protected abstract void performImport(C importDataContext, InputFile inputFile, ImportDataFileResult result); + + protected abstract ImportModel<E> createCsvImportModel(C importDataContext); + + protected abstract ExportModel<E> createCsvExportModel(C importDataContext); + + public final Locale getLocale() { + return importDataContext.getLocale(); + } + + public final M getConfiguration() { + return importDataContext.getConfiguration(); + } + + public final EchoBaseUser getUser() { + return importDataContext.getUser(); + } + + public InputFile getInputFile() { + return inputFile; + } + + protected final Import<E> open() { + if (reader != null) { + throw new IllegalStateException("Reader was already opened"); + } + if (csvImport != null) { + throw new IllegalStateException("csvImport was already opened"); + } + try { + reader = new BufferedReader(new InputStreamReader(new FileInputStream(getInputFile().getFile()), Charsets.UTF_8)); + } catch (FileNotFoundException e) { + throw new EchoBaseTechnicalException("Could not find import file " + getInputFile().getFile(), e); + } + return csvImport = Import.newImport(importModel, reader); + } + + @Override + public void close() throws IOException { + if (reader != null) { + IOUtils.closeQuietly(reader); + } + if (csvImport != null) { + IOUtils.closeQuietly(csvImport); + } + } + + public final String getImportLabel() { + return l(getLocale(), getConfiguration().getImportType().getI18nKey()); + } + + public final String getImportMessage() { + return l(getLocale(), "echobase.importLabel.withFile", getImportLabel(), getInputFile().getFileName()); + } + + protected void incrementsProgress() { + getConfiguration().incrementsProgress(); + } + + protected final void doFlushTransaction(int rowNumber) { + getConfiguration().incrementsProgress(); + if (rowNumber % 1000 == 0) { + // flush each 1000 imported rows + String message = getImportMessage(); + if (log.isDebugEnabled()) { + log.debug(message); + } + getPersistenceService().flush(); + } + } + + protected final UserDbPersistenceService getPersistenceService() { + return importDataContext.getPersistenceService(); + } + + protected void createCellData(Cell cell, + DataMetadata dataMetaData, + String dataValue, + DataQuality dataQuality, + ImportDataFileResult importResult) { + + Data data = getPersistenceService().createData(dataMetaData, dataValue); + cell.addData(data); + cell.setDataQuality(dataQuality); + + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Data); + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java deleted file mode 100644 index 62e9770..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationImportAction.java +++ /dev/null @@ -1,104 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Transect; -import fr.ifremer.echobase.entities.data.Transit; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.DepthStratums; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.Gears; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.OperationImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.OperationImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Date; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class OperationImportAction extends AbstractImportAction<OperationImportConfiguration, OperationImportRow, OperationImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(OperationImportAction.class); - - public OperationImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - OperationImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getOperationFile()); - } - - @Override - protected OperationImportModel createCsvImportModel(char csvSeparator, OperationImportConfiguration configuration) { - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get usable vessels from the voyage by their name - Map<String, Vessel> vesselMap = Maps.uniqueIndex(voyage.getAllVessels(), Vessels.VESSEL_NAME); - - // get usable gears by their casino gear name - Map<String, Gear> gearMap = persistenceService.getEntitiesMap(Gear.class, Gears.GEAR_CASINO_GEAR_NAME); - - Map<String, DepthStratum> depthStratumMap = persistenceService.getEntitiesMap(DepthStratum.class, DepthStratums.DEPTH_STRATUM_ID); - return new OperationImportModel(csvSeparator, vesselMap, gearMap, depthStratumMap); - } - - @Override - protected void performImport(OperationImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of operation from file " + inputFile.getFileName()); - } - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - try (Import<OperationImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (OperationImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Vessel vessel = row.getVessel(); - - Operation operation = row.getOperation(); - - Date startTime = operation.getGearShootingStartTime(); - Date endTime = operation.getGearShootingEndTime(); - - Transit transit = voyage.getTransit(startTime, endTime); - - Transect transect = transit.getTransect(vessel); - - Operation createdOperation = persistenceService.createOperation(operation); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Operation, createdOperation); - - transect.addOperation(createdOperation); - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java deleted file mode 100644 index 24e63eb..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/OperationMetadataImportAction.java +++ /dev/null @@ -1,94 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.OperationMetadataValue; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.OperationMetadata; -import fr.ifremer.echobase.entities.references.OperationMetadatas; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class OperationMetadataImportAction extends AbstractImportAction<OperationImportConfiguration, OperationMetadataValueImportRow, OperationMetadataValueImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(OperationMetadataImportAction.class); - - public OperationMetadataImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - OperationImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getOperationMetadataFile()); - } - - @Override - protected OperationMetadataValueImportModel createCsvImportModel(char csvSeparator, OperationImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(getConfiguration().getVoyageId()); - - // get usable vessels from the voyage by their name - Map<String, Vessel> vesselMap = Maps.uniqueIndex(voyage.getAllVessels(), Vessels.VESSEL_NAME); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - // split them by operation Id - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, OperationMetadata> operationMetadatasMap = persistenceService.getEntitiesMap(OperationMetadata.class, OperationMetadatas.OPERATION_METADATA_NAME); - return new OperationMetadataValueImportModel(csvSeparator, vesselMap, operationMetadatasMap, operationMap); - } - - @Override - protected void performImport(OperationImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of operation metadata values from file " + inputFile.getFileName()); - } - - try (Import<OperationMetadataValueImportRow> importer = open()) { - - int rowNumber = 0; - incrementsProgress(); - for (OperationMetadataValueImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Operation operation = row.getOperation(); - - OperationMetadataValue operationMetadataValueToCreate = row.getOperationMetadataValue(); - OperationMetadataValue operationMetadataValue = persistenceService.createOperationMetadataValue(operationMetadataValueToCreate); - - operation.addOperationMetadataValue(operationMetadataValue); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.OperationMetadataValue); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java deleted file mode 100644 index 9485b33..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionAssociationImportAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class RegionAssociationImportAction extends AbstractImportAction<ResultsImportConfiguration, RegionCellAssociationImportRow, RegionCellAssociationImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(RegionAssociationImportAction.class); - - public RegionAssociationImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getRegionAssociationFile()); - } - - @Override - protected RegionCellAssociationImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, Cell> regionsMap = Maps.uniqueIndex(voyage.getRegionCells(), Cells.CELL_BY_NAME); - return new RegionCellAssociationImportModel(csvSeparator, - voyageMap, - regionsMap, - persistenceService.newCellValueParser(voyage)); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Region cells association from file " + inputFile.getFileName()); - } - - try (Import<RegionCellAssociationImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (RegionCellAssociationImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell regionCell = row.getRegionCell(); - Cell esduCell = row.getEsduCell(); - regionCell.addChilds(esduCell); - result.incrementsNumberUpdated(EchoBaseUserEntityEnum.Cell); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java deleted file mode 100644 index 87ba05e..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/RegionImportAction.java +++ /dev/null @@ -1,118 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypes; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class RegionImportAction extends AbstractImportAction<ResultsImportConfiguration, RegionCellImportRow, RegionCellImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(RegionImportAction.class); - - public RegionImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getRegionsFile()); - } - - @Override - protected RegionCellImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Set<CellType> allCellTypes = persistenceService.getRegionCellTypes(); - - // authorize only to use region* cell types - Map<String, CellType> cellTypeMap = Maps.uniqueIndex(allCellTypes, CellTypes.CELL_TYPE_ID); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - return new RegionCellImportModel(csvSeparator, voyageMap, cellTypeMap, dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - DataMetadata dataCoordinateMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.REGION_ENV_COORDINATES); - - DataMetadata dataSurfaceMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.SURFACE); - - if (log.isInfoEnabled()) { - log.info("Starts import of Region cells from file " + inputFile.getFileName()); - } - - try (Import<RegionCellImportRow> importer = open()) { - - Cell cell = null; - - incrementsProgress(); - int rowNumber = 0; - for (RegionCellImportRow row : importer) { - - doFlushTransaction(++rowNumber); - if (cell == null || !row.getName().equals(cell.getName())) { - - cell = persistenceService.createCell(row.getCellType(), row.getName()); - voyage.addPostCell(cell); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Cell, cell); - - // add surface data - createCellData(cell, - dataSurfaceMeta, - String.valueOf(row.getDataSurface()), - row.getDataQuality(), - result); - } - - // add coordinate data - createCellData(cell, - dataCoordinateMeta, - row.getDataCoordinate(), - row.getDataQuality(), - result); - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java deleted file mode 100644 index 0430e84..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java +++ /dev/null @@ -1,134 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Echotypes; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultByEchotypeAndSpeciesCategoryImportRow, EsduResultByEchotypeAndSpeciesCategoryImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.class); - - public ResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduByEchotypeAndSpeciesCategoryFile()); - - } - - @Override - protected EsduResultByEchotypeAndSpeciesCategoryImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - // index all echotypes of this voyage - Map<String, Echotype> echotypeMap = Maps.uniqueIndex(voyage.getEchotype(), Echotypes.ECHOTYPE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - return new EsduResultByEchotypeAndSpeciesCategoryImportModel(csvSeparator, - voyageMap, - echotypeMap, - speciesMap, - sizeCategoryMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - - } - - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of acoustic result by echotype and species category from file " + inputFile.getFileName()); - } - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultByEchotypeAndSpeciesCategoryImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (EsduResultByEchotypeAndSpeciesCategoryImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - Category category = getResultCategory(row.getEchotype(), - row.getSpecies(), - row.getSizeCategory(), - null, - result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java deleted file mode 100644 index 9d4e2e2..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduByEchotypeCellImportAction.java +++ /dev/null @@ -1,118 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Echotypes; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduByEchotypeCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultByEchotypeImportRow, EsduResultByEchotypeImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduByEchotypeCellImportAction.class); - - public ResultsEsduByEchotypeCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduByEchotypeFile()); - } - - @Override - protected EsduResultByEchotypeImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - // index all echotypes of this voyage - Map<String, Echotype> echotypeMap = Maps.uniqueIndex(voyage.getEchotype(), Echotypes.ECHOTYPE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - return new EsduResultByEchotypeImportModel(csvSeparator, - voyageMap, - echotypeMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - } - - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of esdu result by echotype from file " + inputFile.getFileName()); - } - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultByEchotypeImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - - for (EsduResultByEchotypeImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - Category category = getResultCategory(row.getEchotype(), null, result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java deleted file mode 100644 index 1fee2a7..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndAgeCategoryCellImportAction.java +++ /dev/null @@ -1,138 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.AgeCategories; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduSpeciesAndAgeCategoryCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultBySpeciesAndAgeCategoryImportRow, EsduResultBySpeciesAndAgeCategoryImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduSpeciesAndAgeCategoryCellImportAction.class); - - public ResultsEsduSpeciesAndAgeCategoryCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduBySpeciesAndAgeCategoryFile()); - } - - @Override - protected EsduResultBySpeciesAndAgeCategoryImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - return new EsduResultBySpeciesAndAgeCategoryImportModel(csvSeparator, - voyageMap, - speciesMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of acoustic result by speices and size category from file " + inputFile.getFileName()); - } - - Map<String, AgeCategory> ageCategoryMap = Maps.newTreeMap(); - ageCategoryMap.putAll(persistenceService.getEntitiesMap(AgeCategory.class, AgeCategories.AGE_CATEGORY_NAME)); - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultBySpeciesAndAgeCategoryImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - - for (EsduResultBySpeciesAndAgeCategoryImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - String ageCategoryName = row.getAgeCategory(); - - AgeCategory ageCategory = ageCategoryMap.get(ageCategoryName); - - if (ageCategory == null) { - - // create a new sizeCategory - ageCategory = persistenceService.createAgeCategory(ageCategoryName, row.getAgeCategoryMeaning()); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.AgeCategory); - if (log.isInfoEnabled()) { - log.info("Creates a new AgeCategory " + ageCategoryName); - } - ageCategoryMap.put(ageCategoryName, ageCategory); - } - - Category category = getResultCategory(null, row.getSpecies(), null, ageCategory, result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java deleted file mode 100644 index 2a4f307..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsEsduSpeciesAndSizeCategoryCellImportAction.java +++ /dev/null @@ -1,140 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportRow; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsEsduSpeciesAndSizeCategoryCellImportAction extends AbstractImportAction<ResultsImportConfiguration, EsduResultBySpeciesAndSizeCategoryImportRow, EsduResultBySpeciesAndSizeCategoryImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsEsduSpeciesAndSizeCategoryCellImportAction.class); - - public ResultsEsduSpeciesAndSizeCategoryCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEsduBySpeciesAndSizeCategoryFile()); - } - - @Override - protected EsduResultBySpeciesAndSizeCategoryImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - // get selected dataProcessing - DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); - - // get esdu cells usables - Map<String, Cell> esduCellMap = Maps.uniqueIndex(dataProcessing.getCell(), Cells.CELL_BY_NAME); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - return new EsduResultBySpeciesAndSizeCategoryImportModel(csvSeparator, - voyageMap, - speciesMap, - voyage, - esduCellMap, - metas, - dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of acoustic result by speices and size category from file " + inputFile.getFileName()); - } - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<EsduResultBySpeciesAndSizeCategoryImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (EsduResultBySpeciesAndSizeCategoryImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - String sizeCategoryName = row.getSizeCategory(); - - SizeCategory sizeCategory = sizeCategoryMap.get(sizeCategoryName); - - if (sizeCategory == null) { - - // create a new sizeCategory - sizeCategory = persistenceService.createSizeCategory(sizeCategoryName, row.getSizeCategoryMeaning()); - result.incrementsNumberCreated(EchoBaseUserEntityEnum.SizeCategory); - if (log.isInfoEnabled()) { - log.info("Creates a new SizeCategory " + sizeCategoryName); - } - sizeCategoryMap.put(sizeCategoryName, sizeCategory); - } - - Category category = getResultCategory(null, - row.getSpecies(), - sizeCategory, - null, - result); - - addResults(row, cell, category, resultLabel, result, true, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java deleted file mode 100644 index 0652502..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapFishCellImportAction.java +++ /dev/null @@ -1,194 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.AgeCategories; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypeImpl; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsMapFishCellImportAction extends AbstractImportAction<ResultsImportConfiguration, MapCellImportRow, MapCellImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsMapFishCellImportAction.class); - - public ResultsMapFishCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getMapsFile()); - } - - @Override - protected MapCellImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - CellType cellType = persistenceService.getCellTypeById(CellTypeImpl.MAP); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - Map<String, AgeCategory> ageCategoryMap = Maps.newTreeMap(); - ageCategoryMap.putAll(persistenceService.getEntitiesMap(AgeCategory.class, AgeCategories.AGE_CATEGORY_NAME)); - - return new MapCellImportModel(csvSeparator, - cellType, - voyageMap, - speciesMap, - sizeCategoryMap, - ageCategoryMap, - metas, - dataQualityMap); - - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Map cells from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - String resultLabel = getConfiguration().getResultLabel(); - - DataMetadata dataLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); - - DataMetadata dataLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); - - DataMetadata dataDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); - - DataMetadata dataLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); - - DataMetadata dataLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); - - DataMetadata dataDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); - - - try (Import<MapCellImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (MapCellImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = persistenceService.createCell(row.getCell()); - voyage.addPostCell(cell); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Cell, cell); - - DataQuality dataQuality = row.getDataQuality(); - - // add gridCellLongitude data - createCellData(cell, - dataLongitudeMeta, - String.valueOf(row.getGridCellLongitude()), - dataQuality, - result); - - // add gridCellLatitude data - createCellData(cell, - dataLatitudeMeta, - String.valueOf(row.getGridCellLatitude()), - dataQuality, - result); - - // add gridCellDepth data - createCellData(cell, - dataDepthMeta, - String.valueOf(row.getGridCellDepth()), - dataQuality, - result); - - // add gridLongitudeLag data - createCellData(cell, - dataLongitudeLagMeta, - String.valueOf(row.getGridLongitudeLag()), - dataQuality, - result); - - // add gridLatitudeLag data - createCellData(cell, - dataLatitudeLagMeta, - String.valueOf(row.getGridLatitudeLag()), - dataQuality, - result); - - // add gridDepthLag data - createCellData(cell, - dataDepthLagMeta, - String.valueOf(row.getGridDepthLag()), - dataQuality, - result); - - Category category = getResultCategory(null, - row.getSpecies(), - row.getSizeCategory(), - row.getAgeCategory(), - result); - - addResults(row, cell, category, resultLabel, result, false, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java deleted file mode 100644 index 9409251..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsMapOtherCellImportAction.java +++ /dev/null @@ -1,168 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypeImpl; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadataImpl; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsMapOtherCellImportAction extends AbstractImportAction<ResultsImportConfiguration, MapCellImportRow, MapCellImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsMapOtherCellImportAction.class); - - public ResultsMapOtherCellImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getMapsFile()); - } - - @Override - protected MapCellImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - List<DataMetadata> metas = getMetas(MapCellImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - CellType cellType = persistenceService.getCellTypeById(CellTypeImpl.MAP); - - return new MapCellImportModel(csvSeparator, - cellType, - voyageMap, - metas, - dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Map Other cells from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - String resultLabel = getConfiguration().getResultLabel(); - - DataMetadata dataLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); - - DataMetadata dataLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); - - DataMetadata dataDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); - - DataMetadata dataLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); - - DataMetadata dataLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); - - DataMetadata dataDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); - - try (Import<MapCellImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (MapCellImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = persistenceService.createCell(row.getCell()); - voyage.addPostCell(cell); - - // collect ids - result.addId(EchoBaseUserEntityEnum.Cell, cell); - - DataQuality dataQuality = row.getDataQuality(); - - // add gridCellLongitude data - createCellData(cell, - dataLongitudeMeta, - String.valueOf(row.getGridCellLongitude()), - dataQuality, - result); - - // add gridCellLatitude data - createCellData(cell, - dataLatitudeMeta, - String.valueOf(row.getGridCellLatitude()), - dataQuality, - result); - - // add gridCellDepth data - createCellData(cell, - dataDepthMeta, - String.valueOf(row.getGridCellDepth()), - dataQuality, - result); - - // add gridLongitudeLag data - createCellData(cell, - dataLongitudeLagMeta, - String.valueOf(row.getGridLongitudeLag()), - dataQuality, - result); - - // add gridLatitudeLag data - createCellData(cell, - dataLatitudeLagMeta, - String.valueOf(row.getGridLatitudeLag()), - dataQuality, - result); - - // add gridDepthLag data - createCellData(cell, - dataDepthLagMeta, - String.valueOf(row.getGridDepthLag()), - dataQuality, - result); - - addResults(row, cell, null, resultLabel, result, false, true); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java deleted file mode 100644 index 276faf8..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsRegionImportAction.java +++ /dev/null @@ -1,126 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Cells; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Echotypes; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ext.CsvReaders; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsRegionImportAction extends AbstractImportAction<ResultsImportConfiguration, RegionCellResultImportRow, RegionCellResultImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsRegionImportAction.class); - - public ResultsRegionImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getRegionResultFile()); - } - - @Override - protected RegionCellResultImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - - // first get header of file to detect which results to import - String[] header = CsvReaders.getHeader(getInputFile().getFile(), csvSeparator); - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, Cell> regionsMap = Maps.uniqueIndex(voyage.getRegionCells(), Cells.CELL_BY_NAME); - - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - - // index all echotypes of thi voyage - Map<String, Echotype> echotypeMap = Maps.uniqueIndex(voyage.getEchotype(), Echotypes.ECHOTYPE_NAME); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = Maps.newTreeMap(); - sizeCategoryMap.putAll(persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME)); - - Map<String, DataMetadata> dataMetadataMap = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); - - List<DataMetadata> metas = getMetas(RegionCellResultImportModel.COLUMN_NAMES_TO_EXCLUDE, dataMetadataMap, header); - - return new RegionCellResultImportModel(csvSeparator, - voyageMap, - regionsMap, - echotypeMap, - speciesMap, - sizeCategoryMap, - metas, - dataQualityMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of Region cell results from file " + inputFile.getFileName()); - } - - String resultLabel = getConfiguration().getResultLabel(); - - try (Import<RegionCellResultImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (RegionCellResultImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Cell cell = row.getCell(); - - Category category = getResultCategory(row.getEchotype(), - row.getSpecies(), - row.getSizeCategory(), - null, - result); - - addResults(row, cell, category, resultLabel, result, false, false); - - } - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java deleted file mode 100644 index 853b973..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthAgeKeyImportAction.java +++ /dev/null @@ -1,95 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.LengthAgeKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.Strata; -import fr.ifremer.echobase.entities.references.Stratas; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsVoyageLengthAgeKeyImportAction extends AbstractImportAction<ResultsImportConfiguration, LengthAgeKeyImportRow, LengthAgeKeyImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsVoyageLengthAgeKeyImportAction.class); - - public ResultsVoyageLengthAgeKeyImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getLengthAgeKeyFile()); - } - - @Override - protected LengthAgeKeyImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, Strata> strataMap = persistenceService.getEntitiesMap(Strata.class, Stratas.STRATA_BY_NAME); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - return new LengthAgeKeyImportModel(csvSeparator, voyageMap, strataMap, speciesMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of lenthAgeKey from file " + inputFile.getFileName()); - } - - try (Import<LengthAgeKeyImportRow> importer = open()) { - - incrementsProgress(); - - int rowNumber = 0; - for (LengthAgeKeyImportRow row : importer) { - - doFlushTransaction(++rowNumber); - - Voyage voyage = row.getVoyage(); - - LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey(); - LengthAgeKey lengthAgeKey = persistenceService.createLengthAgeKey(lengthAgeKeyToCreate); - - // attach it to voyage - voyage.addLengthAgeKey(lengthAgeKey); - - // collect ids - result.addId(EchoBaseUserEntityEnum.LengthAgeKey, lengthAgeKey); - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java deleted file mode 100644 index 456efa8..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageLengthWeightKeyImportAction.java +++ /dev/null @@ -1,109 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.data.LengthWeightKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.entities.references.Strata; -import fr.ifremer.echobase.entities.references.Stratas; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ResultsVoyageLengthWeightKeyImportAction extends AbstractImportAction<ResultsImportConfiguration, LengthWeightKeyImportRow, LengthWeightKeyImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsVoyageLengthWeightKeyImportAction.class); - - public ResultsVoyageLengthWeightKeyImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getLengthWeightKeyFile()); - } - - @Override - protected LengthWeightKeyImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, Strata> strataMap = persistenceService.getEntitiesMap(Strata.class, Stratas.STRATA_BY_NAME); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - - Map<String, SizeCategory> sizeCategoryMap = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); - - return new LengthWeightKeyImportModel(csvSeparator, - voyageMap, - strataMap, - sizeCategoryMap, - speciesMap); - } - - @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of lenthWeightKey from file " + inputFile.getFileName()); - } - - try (Import<LengthWeightKeyImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (LengthWeightKeyImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Voyage voyage = row.getVoyage(); - - // find speciesCategory - SpeciesCategory speciesCategory = getSpeciesCategory(row.getSpecies(), row.getSizeCategory(), null, null, result); - - LengthWeightKey toCreate = row.getLengthWeightKey(); - toCreate.setSpeciesCategory(speciesCategory); - - LengthWeightKey lengthWeightKey = persistenceService.createLengthWeightKey(toCreate); - - //TODO should we import it ? - //lengthWeightKey.setMetadata(row.getMetadata()); - - // attach it to voyage - voyage.addLengthWeightKey(lengthWeightKey); - - // collect ids - result.addId(EchoBaseUserEntityEnum.LengthWeightKey, lengthWeightKey); - - } - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java deleted file mode 100644 index bca73d2..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/SubSampleImportAction.java +++ /dev/null @@ -1,151 +0,0 @@ -package fr.ifremer.echobase.services.service.importdata.actions; - -import com.google.common.collect.Collections2; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleDataTypeImpl; -import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SampleTypeImpl; -import fr.ifremer.echobase.entities.references.SexCategories; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategories; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportModel; -import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -/** - * Created on 25/03/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class SubSampleImportAction extends AbstractImportAction<CatchesImportConfiguration, SubSampleImportRow, SubSampleImportModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(SubSampleImportAction.class); - - public SubSampleImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CatchesImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getSubSampleFile()); - } - - @Override - protected SubSampleImportModel createCsvImportModel(char csvSeparator, CatchesImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); - - Map<String, SexCategory> sexCategoryMap = persistenceService.getEntitiesMap(SexCategory.class, SexCategories.SEX_CATEGORY_NAME); - return new SubSampleImportModel(csvSeparator, operationMap, speciesMap, sizeCategoryMap, sexCategoryMap); - } - - @Override - protected void performImport(CatchesImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { - - if (log.isInfoEnabled()) { - log.info("Starts import of subSample from file " + inputFile.getFileName()); - } - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - Collection<Operation> operationWithTotalOrUnsortedSample = Collections2.filter(operations, Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); - - SampleType sampleTypeSubsample = persistenceService.getSampleTypeByName(SampleTypeImpl.SUB_SAMPLE_TYPE); - SampleDataType sampleDataTypeNumberAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NUMBER_AT_LENGTH); - SampleDataType sampleDataTypeNumberAtLength05cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.LTCM0_5); - SampleDataType sampleDataTypeNumberAtLength1cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.L_TCM_1); - SampleDataType sampleDataTypeWeightAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.WEIGHT_AT_LENGTHKG); - - try (Import<SubSampleImportRow> importer = open()) { - - incrementsProgress(); - int rowNumber = 0; - for (SubSampleImportRow row : importer) { - - doFlushTransaction(++rowNumber); - Operation operation = row.getOperation(); - - checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); - - Species species = row.getSpecies(); - SizeCategory sizeCategory = row.getSizeCategory(); - SexCategory sexCategory = row.getSexCategory(); - - SpeciesCategory category = getSpeciesCategory(species, sizeCategory, null, sexCategory, result); - - // find the sample with this category - Sample sample = operation.getSample(category, sampleTypeSubsample); - - if (sample == null) { - - // must create it - sample = row.getSample(); - - sample.setSpeciesCategory(category); - sample.setSampleType(sampleTypeSubsample); - - sample = addSample(operation, sample, result); - } - - Integer round = row.getRound(); - SampleDataType dataType = sampleDataTypeNumberAtLength; - - if (round == null) { - dataType = sampleDataTypeNumberAtLength; - } else if (round == 5) { - dataType = sampleDataTypeNumberAtLength05cm; - } else if (round == 1) { - dataType = sampleDataTypeNumberAtLength1cm; - } - - //create numberAtLength data - addSampleData(dataType, "" + row.getLengthClass(), row.getNumberAtLength(), sample, result); - - if (row.getWeightAtLength() != null) { - - //create weightAtLength data - addSampleData(sampleDataTypeWeightAtLength, "" + row.getLengthClass(), row.getWeightAtLength(), sample, result); - } - - } - - } - - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AcousticImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java similarity index 90% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AcousticImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java index eadc34e..d34992b 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/AcousticImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java @@ -3,8 +3,6 @@ package fr.ifremer.echobase.services.service.importdata.actions; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.DataAcquisition; @@ -15,20 +13,18 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.AcousticInstrument; import fr.ifremer.echobase.entities.references.AcousticInstruments; import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.CellTypeImpl; import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataMetadatas; -import fr.ifremer.echobase.entities.references.DataQualities; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.services.service.importdata.EsduCellNotFoundException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.TransectNotFoundException; import fr.ifremer.echobase.services.service.importdata.TransitNotFoundException; -import fr.ifremer.echobase.services.service.importdata.csv.AcousticImportModel; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.AcousticImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.AcousticImportRow; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; @@ -49,51 +45,47 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class AcousticImportAction extends AbstractImportAction<AcousticImportConfiguration, AcousticImportRow, AcousticImportModel> { +public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataActionSupport<AcousticImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(AcousticImportAction.class); + private static final Log log = LogFactory.getLog(VoyageAcousticsImportAction.class); private final DateFormat cellDateFormat; private final Map<String, DataMetadata> dataMetadatasByName; - private String lastEsduId; - - public AcousticImportAction(Locale locale, - char csvSeparator, - UserDbPersistenceService persistenceService, - AcousticImportConfiguration configuration, - EchoBaseUser user) { - - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getMoviesFile()); - dataMetadatasByName = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); + private String lastEsduId; + public VoyageAcousticsImportAction(VoyageAcousticsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getMoviesFile()); cellDateFormat = new SimpleDateFormat(EchoBaseCsvUtil.CELLULE_DATE_FORMAT); + dataMetadatasByName = importDataContext.getDataMetadatasByName(); + } + @Override + protected AcousticImportExportModel createCsvImportModel(VoyageAcousticsImportDataContext importDataContext) { + return AcousticImportExportModel.forImport(importDataContext); } @Override - protected AcousticImportModel createCsvImportModel(char csvSeparator, AcousticImportConfiguration configuration) { - Map<String, AcousticInstrument> instrumentsById = persistenceService.getEntitiesMap(AcousticInstrument.class, AcousticInstruments.ACOUSTIC_INSTRUMENT_ID); - Map<String, DataQuality> dataQualityMap = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); - return new AcousticImportModel(csvSeparator, instrumentsById, dataQualityMap); + protected AcousticImportExportModel createCsvExportModel(VoyageAcousticsImportDataContext importDataContext) { + return AcousticImportExportModel.forExport(importDataContext); } @Override - protected void performImport(AcousticImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageAcousticsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts " + getImportMessage()); } // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); + Voyage voyage = importDataContext.getVoyage(); // get selected vessel - Vessel vessel = persistenceService.getVessel(configuration.getVesselId()); + Vessel vessel = persistenceService.getVessel(importDataContext.getConfiguration().getVesselId()); - CellType esduCellType = persistenceService.getCellTypeById(CellTypeImpl.ESDU); - CellType elementaryCellType = persistenceService.getCellTypeById(CellTypeImpl.ELEMENTARY); + CellType esduCellType = importDataContext.getEsduCellType(); + CellType elementaryCellType = importDataContext.getElementaryCellType(); boolean addDataAcquisition = getConfiguration().isAddDataAcquisition(); @@ -104,7 +96,6 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon Locale locale = getLocale(); String dataProcessingId = null; - String processingTemplate = getConfiguration().getProcessingTemplate(); try (Import<AcousticImportRow> importer = open()) { @@ -322,7 +313,9 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon // create datas of the elementary cell createElementaryCellData(suffix, elementaryCell, surface, row, dataQuality, result); + } + } } @@ -346,7 +339,9 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon } } } + return result; + } private void createEsduCellData(String suffix, @@ -403,6 +398,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon dataValue = String.valueOf(row.getCellNumberOfSamplesEchoIntegrated()); createCellData(cell, "NumberOfSamplesEchoIntegrated", dataValue, dataQuality, importResult); } + } private void createElementaryCellData(String suffix, @@ -487,7 +483,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String soundSpeedCalculations, AcousticImportRow row) { - AcousticImportConfiguration configuration = getConfiguration(); + VoyageAcousticsImportConfiguration configuration = getConfiguration(); String transceiverAcquisitionAbsorptionDescription = configuration.getTransceiverAcquisitionAbsorptionDescription(); @@ -495,7 +491,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String loggedDataDatatype = configuration.getLoggedDataDatatype(); String pingDutyCycle = configuration.getPingDutyCycle(); - DataAcquisition dataAcquisition = persistenceService.createDataAcquisition(instrument); + DataAcquisition dataAcquisition = getPersistenceService().createDataAcquisition(instrument); // fill from manual configuration dataAcquisition.setTransceiverAcquisitionAbsorptionDescription(transceiverAcquisitionAbsorptionDescription); @@ -533,7 +529,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String soundSpeedCalculations, AcousticImportRow row) { - AcousticImportConfiguration configuration = getConfiguration(); + VoyageAcousticsImportConfiguration configuration = getConfiguration(); String transceiverAcquisitionAbsorptionDescription = configuration.getTransceiverAcquisitionAbsorptionDescription(); @@ -544,7 +540,7 @@ public class AcousticImportAction extends AbstractImportAction<AcousticImportCon String acousticDensityUnit = configuration.getAcousticDensityUnit(); String notes = configuration.getNotes(); - DataProcessing dataProcessing = persistenceService.createDataProcessing(id, processingTemplate); + DataProcessing dataProcessing = getPersistenceService().createDataProcessing(id, processingTemplate); // fill from manual configuration dataProcessing.setProcessingDescription(processingDescription); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java new file mode 100644 index 0000000..42661e4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportDataActionSupport.java @@ -0,0 +1,18 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageAcousticsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageAcousticsImportConfiguration, VoyageAcousticsImportDataContext, E> { + + protected VoyageAcousticsImportDataActionSupport(VoyageAcousticsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java new file mode 100644 index 0000000..370adb1 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesBiometrySampleImportAction.java @@ -0,0 +1,109 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.BiometrySampleImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.Collection; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageCatchesBiometrySampleImportAction extends VoyageCatchesImportDataActionSupport<BiometrySampleImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageCatchesBiometrySampleImportAction.class); + + public VoyageCatchesBiometrySampleImportAction(VoyageCatchesImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getBiometrySampleFile()); + } + + @Override + protected BiometrySampleImportExportModel createCsvImportModel(VoyageCatchesImportDataContext importDataContext) { + return BiometrySampleImportExportModel.forImport(importDataContext); + } + + @Override + protected BiometrySampleImportExportModel createCsvExportModel(VoyageCatchesImportDataContext importDataContext) { + return BiometrySampleImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of subSample from file " + inputFile.getFileName()); + } + + SampleType sampleTypeIndividual = importDataContext.getSampleTypeIndividualType(); + Collection<Operation> operationWithTotalOrUnsortedSample = importDataContext.getVoyageOperationsWithTotalOrUnsortedSample(); + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + Map<String, Sample> samples = new TreeMap<>(); + + try (Import<BiometrySampleImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (BiometrySampleImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Operation operation = row.getOperation(); + + checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); + + Species species = row.getSpecies(); + + int numFish = row.getNumFish(); + + String sampleKey = operation.getId() + "_" + species.getBaracoudaCode() + "_" + numFish; + + Sample sample = samples.get(sampleKey); + + if (sample == null) { + + // create a new sample + sample = persistenceService.newSample(); + + sample.setSampleType(sampleTypeIndividual); + + SpeciesCategory category = speciesCategoryCache.getSpeciesCategory(species, null, null, null, result); + + sample.setSpeciesCategory(category); + + sample = addSample(operation, sample, result); + + samples.put(sampleKey, sample); + } + + SampleData sampleData = row.getSampleData(); + + SampleData sampleDataCreated = persistenceService.createSampleData(sampleData); + sample.addSampleData(sampleDataCreated); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java new file mode 100644 index 0000000..cf6c2a0 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesImportDataActionSupport.java @@ -0,0 +1,57 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import com.google.common.base.Preconditions; +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import org.nuiton.csv.ImportRuntimeException; + +import java.util.Collection; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageCatchesImportDataActionSupport<E> extends ImportDataActionSupport<VoyageCatchesImportConfiguration, VoyageCatchesImportDataContext, E> { + + protected VoyageCatchesImportDataActionSupport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + + protected Sample addSample(Operation operation, Sample sample, ImportDataFileResult importResult) { + + Preconditions.checkNotNull(operation); + Preconditions.checkNotNull(sample); + Sample result = getPersistenceService().createSample(sample); + operation.addSample(result); + importResult.addId(EchoBaseUserEntityEnum.Sample, sample); + return result; + + } + + protected SampleData addSampleData(SampleDataType sampleDataType, String label, float value, Sample sample, ImportDataFileResult importResult) { + + SampleData sampleData = getPersistenceService().createSampleData(sampleDataType, label, value); + sample.addSampleData(sampleData); + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.SampleData); + return sampleData; + + } + + //FIXME Define a real exception + protected void checkOperationWithTotalOrUnsortedSample(int rowNumber, Collection<Operation> operationWithTotalOrUnsortedSample, Operation operation) { + if (!operationWithTotalOrUnsortedSample.contains(operation)) { + + // can not accept this import + throw new ImportRuntimeException("At line " + rowNumber + ", wants to add a subsample sample but operation " + operation.getId() + " has no sample of type *Total*, nor *Unsorted*"); + } + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java new file mode 100644 index 0000000..03b6515 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesSubSampleImportAction.java @@ -0,0 +1,121 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.SubSampleImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.Collection; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageCatchesSubSampleImportAction extends VoyageCatchesImportDataActionSupport<SubSampleImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageCatchesSubSampleImportAction.class); + + public VoyageCatchesSubSampleImportAction(VoyageCatchesImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getSubSampleFile()); + } + + @Override + protected SubSampleImportExportModel createCsvImportModel(VoyageCatchesImportDataContext importDataContext) { + return SubSampleImportExportModel.forImport(importDataContext); + } + + @Override + protected SubSampleImportExportModel createCsvExportModel(VoyageCatchesImportDataContext importDataContext) { + return SubSampleImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of subSample from file " + inputFile.getFileName()); + } + + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + Collection<Operation> operationWithTotalOrUnsortedSample = importDataContext.getVoyageOperationsWithTotalOrUnsortedSample(); + + SampleType sampleTypeSubsample = importDataContext.getSampleTypeSubsample(); + SampleDataType sampleDataTypeNumberAtLength = importDataContext.getSampleDataTypeNumberAtLength(); + SampleDataType sampleDataTypeNumberAtLength05cm = importDataContext.getSampleDataTypeNumberAtLength05cm(); + SampleDataType sampleDataTypeNumberAtLength1cm = importDataContext.getSampleDataTypeNumberAtLength1cm(); + SampleDataType sampleDataTypeWeightAtLength = importDataContext.getSampleDataTypeWeightAtLength(); + + try (Import<SubSampleImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (SubSampleImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Operation operation = row.getOperation(); + + checkOperationWithTotalOrUnsortedSample(rowNumber, operationWithTotalOrUnsortedSample, operation); + + Species species = row.getSpecies(); + SizeCategory sizeCategory = row.getSizeCategory(); + SexCategory sexCategory = row.getSexCategory(); + + SpeciesCategory category = speciesCategoryCache.getSpeciesCategory(species, sizeCategory, null, sexCategory, result); + + // find the sample with this category + Sample sample = operation.getSample(category, sampleTypeSubsample); + + if (sample == null) { + + // must create it + sample = row.getSample(); + + sample.setSpeciesCategory(category); + sample.setSampleType(sampleTypeSubsample); + + sample = addSample(operation, sample, result); + } + + Integer round = row.getRound(); + SampleDataType dataType = sampleDataTypeNumberAtLength; + + if (round == null) { + dataType = sampleDataTypeNumberAtLength; + } else if (round == 5) { + dataType = sampleDataTypeNumberAtLength05cm; + } else if (round == 1) { + dataType = sampleDataTypeNumberAtLength1cm; + } + + //create numberAtLength data + addSampleData(dataType, "" + row.getLengthClass(), row.getNumberAtLength(), sample, result); + + if (row.getWeightAtLength() != null) { + + //create weightAtLength data + addSampleData(sampleDataTypeWeightAtLength, "" + row.getLengthClass(), row.getWeightAtLength(), sample, result); + } + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/TotalSampleImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java similarity index 54% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/TotalSampleImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java index f38d7c3..c9f7580 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/TotalSampleImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCatchesTotalSampleImportAction.java @@ -1,89 +1,65 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Operations; import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleDataTypeImpl; import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SampleTypeImpl; import fr.ifremer.echobase.entities.references.SizeCategories; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; import fr.ifremer.echobase.services.service.importdata.DuplicatedSampleException; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.TotalSampleImportModel; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCatchesImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.TotalSampleImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.TotalSampleImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - /** * Created on 25/03/16. * * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class TotalSampleImportAction extends AbstractImportAction<CatchesImportConfiguration, TotalSampleImportRow, TotalSampleImportModel> { +public class VoyageCatchesTotalSampleImportAction extends VoyageCatchesImportDataActionSupport<TotalSampleImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(TotalSampleImportAction.class); - - public TotalSampleImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CatchesImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getTotalSampleFile()); + private static final Log log = LogFactory.getLog(VoyageCatchesTotalSampleImportAction.class); + + public VoyageCatchesTotalSampleImportAction(VoyageCatchesImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getTotalSampleFile()); } @Override - protected TotalSampleImportModel createCsvImportModel(char csvSeparator, CatchesImportConfiguration configuration) { - - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // get all operation for this voyage and this vessel - Collection<Operation> operations = voyage.getAllOperations(); - - // split them by operation Id - Map<String, Operation> operationMap = Maps.uniqueIndex(operations, Operations.OPERATION_ID); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - Map<String, SizeCategory> sizeCategoryMap = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); - - return new TotalSampleImportModel(csvSeparator, operationMap, speciesMap, sizeCategoryMap); + protected TotalSampleImportExportModel createCsvImportModel(VoyageCatchesImportDataContext importDataContext) { + return TotalSampleImportExportModel.forImport(importDataContext); } + @Override + protected TotalSampleImportExportModel createCsvExportModel(VoyageCatchesImportDataContext importDataContext) { + return TotalSampleImportExportModel.forExport(importDataContext); + } @Override - protected void performImport(CatchesImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageCatchesImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of totalSample from file " + inputFile.getFileName()); } + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); - SampleType sampleTypeTotal = persistenceService.getSampleTypeByName(SampleTypeImpl.TOTAL_SAMPLE_TYPE); - SampleType sampleTypeUnsorted = persistenceService.getSampleTypeByName(SampleTypeImpl.UNSORTED_SAMPLE_TYPE); - SampleType sampleTypeSorted = persistenceService.getSampleTypeByName(SampleTypeImpl.SORTED_SAMPLE_TYPE); + SampleType sampleTypeTotal = importDataContext.getSampleTypeTotal(); + SampleType sampleTypeUnsorted = importDataContext.getSampleTypeUnsorted(); + SampleType sampleTypeSorted = importDataContext.getSampleTypeSorted(); - SampleDataType sampleDataTypeMeanLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_LENGTHCM); - SampleDataType sampleDataTypeMeanWeight = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_WEIGHTG); - SampleDataType sampleDataTypeNoPerKg = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NO_PER_KG); + SampleDataType sampleDataTypeMeanLength = importDataContext.getSampleDataTypeMeanLength(); + SampleDataType sampleDataTypeMeanWeight = importDataContext.getSampleDataTypeMeanWeight(); + SampleDataType sampleDataTypeNoPerKg = importDataContext.getSampleDataTypeNoPerKg(); try (Import<TotalSampleImportRow> importer = open()) { @@ -97,7 +73,7 @@ public class TotalSampleImportAction extends AbstractImportAction<CatchesImportC Species species = row.getSpecies(); SizeCategory sizeCategory = row.getSizeCategory(); - SpeciesCategory category = getSpeciesCategory(species, sizeCategory, null, null, result); + SpeciesCategory category = speciesCategoryCache.getSpeciesCategory(species, sizeCategory, null, null, result); SampleType sampleType; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java new file mode 100644 index 0000000..a169a54 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsImportDataActionSupport.java @@ -0,0 +1,18 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageCommonsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageCommonsImportConfiguration, VoyageCommonsImportDataContext, E> { + + protected VoyageCommonsImportDataActionSupport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransectImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java similarity index 58% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransectImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java index 08e4022..d27157a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransectImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransectImportAction.java @@ -1,29 +1,20 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.Vessels; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.NoTransitFoundBetweenDateException; -import fr.ifremer.echobase.services.service.importdata.csv.TransectImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.TransectImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.TransectImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; -import java.util.Collections; import java.util.Date; -import java.util.Locale; -import java.util.Map; /** * Created on 25/03/16. @@ -31,47 +22,37 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class CommonTransectImportAction extends AbstractImportAction<CommonImportConfiguration, TransectImportRow, TransectImportModel> { +public class VoyageCommonsTransectImportAction extends VoyageCommonsImportDataActionSupport<TransectImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(CommonTransectImportAction.class); + private static final Log log = LogFactory.getLog(VoyageCommonsTransectImportAction.class); private final boolean collectIds; - public CommonTransectImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CommonImportConfiguration configuration, - EchoBaseUser user, - boolean collectIds) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getTransectFile()); + public VoyageCommonsTransectImportAction(VoyageCommonsImportDataContext importDataContext, boolean collectIds) { + super(importDataContext, importDataContext.getConfiguration().getTransectFile()); this.collectIds = collectIds; } @Override - protected TransectImportModel createCsvImportModel(char csvSeparator, CommonImportConfiguration configuration) { + protected TransectImportExportModel createCsvImportModel(VoyageCommonsImportDataContext importDataContext) { + return TransectImportExportModel.forImport(importDataContext); - // get usable vessels - Map<String, Vessel> vesselMap = persistenceService.getEntitiesMap(Vessel.class, Vessels.VESSEL_NAME); - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // restrict voyage to use to this voyage - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - return new TransectImportModel(csvSeparator, voyageMap, vesselMap); + } + @Override + protected TransectImportExportModel createCsvExportModel(VoyageCommonsImportDataContext importDataContext) { + return TransectImportExportModel.forExport(importDataContext); } @Override - protected void performImport(CommonImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of transects from file " + inputFile.getFileName()); } - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - + Voyage voyage = importDataContext.getVoyage(); String datum = getConfiguration().getDatum(); String license = getConfiguration().getTransectLicence(); String geospatialVerticalPositive = getConfiguration().getTransectGeospatialVerticalPositive(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransitImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java similarity index 50% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransitImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java index 2d2d800..e3b647f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonTransitImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsTransitImportAction.java @@ -1,68 +1,53 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.csv.TransitImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.TransitImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.TransitImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; -import java.util.Collections; -import java.util.Locale; -import java.util.Map; - /** * Created on 25/03/16. * * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class CommonTransitImportAction extends AbstractImportAction<CommonImportConfiguration, TransitImportRow, TransitImportModel> { +public class VoyageCommonsTransitImportAction extends VoyageCommonsImportDataActionSupport< TransitImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(CommonTransitImportAction.class); + private static final Log log = LogFactory.getLog(VoyageCommonsTransitImportAction.class); private final boolean collectIds; - public CommonTransitImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CommonImportConfiguration configuration, - EchoBaseUser user, - boolean collectIds) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getTransitFile()); + public VoyageCommonsTransitImportAction(VoyageCommonsImportDataContext importDataContext, boolean collectIds) { + super(importDataContext, importDataContext.getConfiguration().getTransitFile()); this.collectIds = collectIds; } @Override - protected TransitImportModel createCsvImportModel(char csvSeparator, CommonImportConfiguration configuration) { - - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - // restrict voyage to use to this voyage - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); - return new TransitImportModel(csvSeparator, voyageMap); + protected TransitImportExportModel createCsvImportModel(VoyageCommonsImportDataContext importDataContext) { + return TransitImportExportModel.forImport(importDataContext); + } + @Override + protected TransitImportExportModel createCsvExportModel(VoyageCommonsImportDataContext importDataContext) { + return TransitImportExportModel.forExport(importDataContext); } @Override - protected void performImport(CommonImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of transits from file " + inputFile.getFileName()); } - // get voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); + Voyage voyage = importDataContext.getVoyage(); String relatedActivity = getConfiguration().getTransitRelatedActivity(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonVoyageImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java similarity index 62% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonVoyageImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java index a5328fb..b4db779 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/CommonVoyageImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageCommonsVoyageImportAction.java @@ -1,17 +1,15 @@ package fr.ifremer.echobase.services.service.importdata.actions; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; import fr.ifremer.echobase.services.service.importdata.MoreThanOnceVoyageToImportException; import fr.ifremer.echobase.services.service.importdata.NoVoyageToImportException; -import fr.ifremer.echobase.services.service.importdata.csv.VoyageImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageCommonsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.VoyageImportExportModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; @@ -24,34 +22,36 @@ import java.util.Locale; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class CommonVoyageImportAction extends AbstractImportAction<CommonImportConfiguration, Voyage, VoyageImportModel> { +public class VoyageCommonsVoyageImportAction extends VoyageCommonsImportDataActionSupport<Voyage> { /** Logger. */ - private static final Log log = LogFactory.getLog(CommonVoyageImportAction.class); - - public CommonVoyageImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - CommonImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getVoyageFile()); + private static final Log log = LogFactory.getLog(VoyageCommonsVoyageImportAction.class); + + + public VoyageCommonsVoyageImportAction(VoyageCommonsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getVoyageFile()); + } + + @Override + protected VoyageImportExportModel createCsvImportModel(VoyageCommonsImportDataContext importDataContext) { + return VoyageImportExportModel.forImport(importDataContext); } @Override - protected VoyageImportModel createCsvImportModel(char csvSeparator, CommonImportConfiguration configuration) { - return new VoyageImportModel(csvSeparator); + protected VoyageImportExportModel createCsvExportModel(VoyageCommonsImportDataContext importDataContext) { + return VoyageImportExportModel.forExport(importDataContext); } @Override - public void performImport(CommonImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + public void performImport(VoyageCommonsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of voyages from file " + inputFile.getFileName()); } - Mission mission = persistenceService.getMission(configuration.getMissionId()); - AreaOfOperation areaOfOperation = persistenceService.getAreaOfOperation(configuration.getAreaOfOperationId()); + Mission mission = getPersistenceService().getMission(importDataContext.getConfiguration().getMissionId()); + AreaOfOperation areaOfOperation = getPersistenceService().getAreaOfOperation(importDataContext.getConfiguration().getAreaOfOperationId()); String voyageDescription = getConfiguration().getVoyageDescription(); String datum = getConfiguration().getDatum(); @@ -72,7 +72,7 @@ public class CommonVoyageImportAction extends AbstractImportAction<CommonImportC voyage.setDescription(voyageDescription); voyage.setDatum(datum); - Voyage createdVoyage = persistenceService.createVoyage(voyage); + Voyage createdVoyage = getPersistenceService().createVoyage(voyage); if (newVoyage == null) { newVoyage = createdVoyage; } else { diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java new file mode 100644 index 0000000..8523a64 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsGearMetadataImportAction.java @@ -0,0 +1,68 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.GearMetadataValueImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageOperationsGearMetadataImportAction extends VoyageOperationsImportDataActionSupport<GearMetadataValueImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageOperationsGearMetadataImportAction.class); + + public VoyageOperationsGearMetadataImportAction(VoyageOperationsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getGearMetadataFile()); + } + + @Override + protected GearMetadataValueImportExportModel createCsvImportModel(VoyageOperationsImportDataContext importDataContext) { + return GearMetadataValueImportExportModel.forImport(importDataContext); + } + + @Override + protected GearMetadataValueImportExportModel createCsvExportModel(VoyageOperationsImportDataContext importDataContext) { + return GearMetadataValueImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of gear metadata values from file " + inputFile.getFileName()); + } + + try (Import<GearMetadataValueImportRow> importer = open()) { + + int rowNumber = 0; + incrementsProgress(); + for (GearMetadataValueImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Operation operation = row.getOperation(); + + GearMetadataValue gearMetadataValuetoCreate = row.getGearMetadataValue(); + GearMetadataValue gearMetadataValue = persistenceService.createGearMetadataValue(gearMetadataValuetoCreate); + + operation.addGearMetadataValue(gearMetadataValue); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.GearMetadataValue); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java new file mode 100644 index 0000000..641c3aa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsImportDataActionSupport.java @@ -0,0 +1,18 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageOperationsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageOperationsImportConfiguration, VoyageOperationsImportDataContext, E> { + + protected VoyageOperationsImportDataActionSupport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java new file mode 100644 index 0000000..bc8d8c0 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationImportAction.java @@ -0,0 +1,86 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Transect; +import fr.ifremer.echobase.entities.data.Transit; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.OperationImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.OperationImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.Date; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageOperationsOperationImportAction extends VoyageOperationsImportDataActionSupport<OperationImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageOperationsOperationImportAction.class); + + public VoyageOperationsOperationImportAction(VoyageOperationsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getOperationFile()); + } + + @Override + protected OperationImportExportModel createCsvImportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationImportExportModel.forImport(importDataContext); + } + + @Override + protected OperationImportExportModel createCsvExportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of operation from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + + try (Import<OperationImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (OperationImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Vessel vessel = row.getVessel(); + + Operation operation = row.getOperation(); + + Date startTime = operation.getGearShootingStartTime(); + Date endTime = operation.getGearShootingEndTime(); + + Transit transit = voyage.getTransit(startTime, endTime); + + Transect transect = transit.getTransect(vessel); + + Operation createdOperation = persistenceService.createOperation(operation); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Operation, createdOperation); + + transect.addOperation(createdOperation); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java new file mode 100644 index 0000000..c52e613 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageOperationsOperationMetadataImportAction.java @@ -0,0 +1,68 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.OperationMetadataValueImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageOperationsOperationMetadataImportAction extends VoyageOperationsImportDataActionSupport<OperationMetadataValueImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageOperationsOperationMetadataImportAction.class); + + public VoyageOperationsOperationMetadataImportAction(VoyageOperationsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getOperationMetadataFile()); + } + + @Override + protected OperationMetadataValueImportExportModel createCsvImportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationMetadataValueImportExportModel.forImport(importDataContext); + } + + @Override + protected OperationMetadataValueImportExportModel createCsvExportModel(VoyageOperationsImportDataContext importDataContext) { + return OperationMetadataValueImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageOperationsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of operation metadata values from file " + inputFile.getFileName()); + } + + try (Import<OperationMetadataValueImportRow> importer = open()) { + + int rowNumber = 0; + incrementsProgress(); + for (OperationMetadataValueImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Operation operation = row.getOperation(); + + OperationMetadataValue operationMetadataValueToCreate = row.getOperationMetadataValue(); + OperationMetadataValue operationMetadataValue = persistenceService.createOperationMetadataValue(operationMetadataValueToCreate); + + operation.addOperationMetadataValue(operationMetadataValue); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.OperationMetadataValue); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java new file mode 100644 index 0000000..1a83ea1 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.java @@ -0,0 +1,80 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeAndSpeciesCategoryImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultByEchotypeAndSpeciesCategoryImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduByEchotypeAndSpeciesCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduByEchotypeAndSpeciesCategoryFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultByEchotypeAndSpeciesCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultByEchotypeAndSpeciesCategoryImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeAndSpeciesCategoryImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultByEchotypeAndSpeciesCategoryImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeAndSpeciesCategoryImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of acoustic result by echotype and species category from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultByEchotypeAndSpeciesCategoryImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (EsduResultByEchotypeAndSpeciesCategoryImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + Category category = resultCategoryCache.getResultCategory(row.getEchotype(), + row.getSpecies(), + row.getSizeCategory(), + null, + result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java new file mode 100644 index 0000000..b97e17c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduByEchotypeCellImportAction.java @@ -0,0 +1,77 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultByEchotypeImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduByEchotypeCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultByEchotypeImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduByEchotypeCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduByEchotypeCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduByEchotypeFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultByEchotypeImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultByEchotypeImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultByEchotypeImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultByEchotypeImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of esdu result by echotype from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultByEchotypeImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + + for (EsduResultByEchotypeImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + Category category = resultCategoryCache.getResultCategory(row.getEchotype(), null, result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java new file mode 100644 index 0000000..50b7290 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.java @@ -0,0 +1,98 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndAgeCategoryImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; +import java.util.Map; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduSpeciesAndAgeCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndAgeCategoryFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultBySpeciesAndAgeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultBySpeciesAndAgeCategoryImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndAgeCategoryImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultBySpeciesAndAgeCategoryImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndAgeCategoryImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of acoustic result by species and size category from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + + Map<String, AgeCategory> ageCategoryMap = importDataContext.getAgeCategoriesByName(); + + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultBySpeciesAndAgeCategoryImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + + for (EsduResultBySpeciesAndAgeCategoryImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + String ageCategoryName = row.getAgeCategory(); + + AgeCategory ageCategory = ageCategoryMap.get(ageCategoryName); + + if (ageCategory == null) { + + // create a new sizeCategory + ageCategory = persistenceService.createAgeCategory(ageCategoryName, row.getAgeCategoryMeaning()); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.AgeCategory); + if (log.isInfoEnabled()) { + log.info("Creates a new AgeCategory " + ageCategoryName); + } + ageCategoryMap.put(ageCategoryName, ageCategory); + } + + Category category = resultCategoryCache.getResultCategory(null, row.getSpecies(), null, ageCategory, result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java new file mode 100644 index 0000000..7adaa66 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.java @@ -0,0 +1,100 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.EsduResultBySpeciesAndSizeCategoryImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; +import java.util.Map; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction extends VoyageResultsImportDataActionSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsEsduSpeciesAndSizeCategoryCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEsduBySpeciesAndSizeCategoryFile()); + metas = importDataContext.getMetas(getInputFile(), EsduResultBySpeciesAndSizeCategoryImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected EsduResultBySpeciesAndSizeCategoryImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndSizeCategoryImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected EsduResultBySpeciesAndSizeCategoryImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EsduResultBySpeciesAndSizeCategoryImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of acoustic result by speices and size category from file " + inputFile.getFileName()); + } + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + Map<String, SizeCategory> sizeCategoryMap = importDataContext.getSizeCategoriesByName(); + + String resultLabel = getConfiguration().getResultLabel(); + + try (Import<EsduResultBySpeciesAndSizeCategoryImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (EsduResultBySpeciesAndSizeCategoryImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + String sizeCategoryName = row.getSizeCategory(); + + SizeCategory sizeCategory = sizeCategoryMap.get(sizeCategoryName); + + if (sizeCategory == null) { + + // create a new sizeCategory + sizeCategory = persistenceService.createSizeCategory(sizeCategoryName, row.getSizeCategoryMeaning()); + result.incrementsNumberCreated(EchoBaseUserEntityEnum.SizeCategory); + if (log.isInfoEnabled()) { + log.info("Creates a new SizeCategory " + sizeCategoryName); + } + sizeCategoryMap.put(sizeCategoryName, sizeCategory); + } + + Category category = resultCategoryCache.getResultCategory(null, + row.getSpecies(), + sizeCategory, + null, + result); + + addResults(row, cell, category, resultLabel, result, true, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java new file mode 100644 index 0000000..3477b5b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsImportDataActionSupport.java @@ -0,0 +1,64 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.ResultAble; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; + +import java.util.List; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class VoyageResultsImportDataActionSupport<E> extends ImportDataActionSupport<VoyageResultsImportConfiguration, VoyageResultsImportDataContext, E> { + + protected VoyageResultsImportDataActionSupport(VoyageResultsImportDataContext importDataContext, InputFile inputFile) { + super(importDataContext, inputFile); + } + + protected void addResults(ResultAble row, + Cell cell, + Category category, + String resultLabel, + ImportDataFileResult importResult, + boolean collecIds, + boolean importNAResults) { + + List<Result> results = row.getResult(); + + for (Result result : results) { + + if (!importNAResults && EchoBaseCsvUtil.NA.equals(result.getResultValue())) { + + // Do not import NA results + continue; + } + result.setDataQuality(row.getDataQuality()); + result.setCategory(category); + result.setResultLabel(resultLabel); + + Result resultCreated = getPersistenceService().createResult(result); + cell.addResult(resultCreated); + + if (collecIds) { + + importResult.addId(EchoBaseUserEntityEnum.Result, resultCreated); + + } else { + + importResult.incrementsNumberCreated(EchoBaseUserEntityEnum.Result); + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java new file mode 100644 index 0000000..0001b90 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapFishCellImportAction.java @@ -0,0 +1,141 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsMapFishCellImportAction extends VoyageResultsImportDataActionSupport<MapCellImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsMapFishCellImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsMapFishCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getMapsFile()); + metas = importDataContext.getMetas(getInputFile(), MapCellImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected MapCellImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected MapCellImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Map cells from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + + String resultLabel = getConfiguration().getResultLabel(); + + DataMetadata dataLongitudeMeta = importDataContext.getGridCellLongitudeMeta(); + DataMetadata dataLatitudeMeta = importDataContext.getGridCellLatitudeMeta(); + DataMetadata dataDepthMeta = importDataContext.getGridCellDepthMeta(); + DataMetadata dataLongitudeLagMeta = importDataContext.getGridLongitudeLagMeta(); + DataMetadata dataLatitudeLagMeta = importDataContext.getGridLatitudeLagMeta(); + DataMetadata dataDepthLagMeta = importDataContext.getGridDepthLagMeta(); + + try (Import<MapCellImportRow> importer = open()) { + + incrementsProgress(); + + int rowNumber = 0; + for (MapCellImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = persistenceService.createCell(row.getCell()); + voyage.addPostCell(cell); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Cell, cell); + + DataQuality dataQuality = row.getDataQuality(); + + // add gridCellLongitude data + createCellData(cell, + dataLongitudeMeta, + String.valueOf(row.getGridCellLongitude()), + dataQuality, + result); + + // add gridCellLatitude data + createCellData(cell, + dataLatitudeMeta, + String.valueOf(row.getGridCellLatitude()), + dataQuality, + result); + + // add gridCellDepth data + createCellData(cell, + dataDepthMeta, + String.valueOf(row.getGridCellDepth()), + dataQuality, + result); + + // add gridLongitudeLag data + createCellData(cell, + dataLongitudeLagMeta, + String.valueOf(row.getGridLongitudeLag()), + dataQuality, + result); + + // add gridLatitudeLag data + createCellData(cell, + dataLatitudeLagMeta, + String.valueOf(row.getGridLatitudeLag()), + dataQuality, + result); + + // add gridDepthLag data + createCellData(cell, + dataDepthLagMeta, + String.valueOf(row.getGridDepthLag()), + dataQuality, + result); + + Category category = resultCategoryCache.getResultCategory(null, + row.getSpecies(), + row.getSizeCategory(), + row.getAgeCategory(), + result); + + addResults(row, cell, category, resultLabel, result, false, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java new file mode 100644 index 0000000..97f64f6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsMapOtherCellImportAction.java @@ -0,0 +1,132 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.MapCellImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsMapOtherCellImportAction extends VoyageResultsImportDataActionSupport<MapCellImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsMapOtherCellImportAction.class); + + protected final List<DataMetadata> metas; + + public VoyageResultsMapOtherCellImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getMapsFile()); + metas = importDataContext.getMetas(getInputFile(), MapCellImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected MapCellImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected MapCellImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return MapCellImportExportModel.forExport(importDataContext, metas); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Map Other cells from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + + String resultLabel = getConfiguration().getResultLabel(); + + DataMetadata dataLongitudeMeta = importDataContext.getGridCellLongitudeMeta(); + DataMetadata dataLatitudeMeta = importDataContext.getGridCellLatitudeMeta(); + DataMetadata dataDepthMeta = importDataContext.getGridCellDepthMeta(); + DataMetadata dataLongitudeLagMeta = importDataContext.getGridLongitudeLagMeta(); + DataMetadata dataLatitudeLagMeta = importDataContext.getGridLatitudeLagMeta(); + DataMetadata dataDepthLagMeta = importDataContext.getGridDepthLagMeta(); + + try (Import<MapCellImportRow> importer = open()) { + + incrementsProgress(); + + int rowNumber = 0; + for (MapCellImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = persistenceService.createCell(row.getCell()); + voyage.addPostCell(cell); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Cell, cell); + + DataQuality dataQuality = row.getDataQuality(); + + // add gridCellLongitude data + createCellData(cell, + dataLongitudeMeta, + String.valueOf(row.getGridCellLongitude()), + dataQuality, + result); + + // add gridCellLatitude data + createCellData(cell, + dataLatitudeMeta, + String.valueOf(row.getGridCellLatitude()), + dataQuality, + result); + + // add gridCellDepth data + createCellData(cell, + dataDepthMeta, + String.valueOf(row.getGridCellDepth()), + dataQuality, + result); + + // add gridLongitudeLag data + createCellData(cell, + dataLongitudeLagMeta, + String.valueOf(row.getGridLongitudeLag()), + dataQuality, + result); + + // add gridLatitudeLag data + createCellData(cell, + dataLatitudeLagMeta, + String.valueOf(row.getGridLatitudeLag()), + dataQuality, + result); + + // add gridDepthLag data + createCellData(cell, + dataDepthLagMeta, + String.valueOf(row.getGridDepthLag()), + dataQuality, + result); + + addResults(row, cell, null, resultLabel, result, false, true); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java new file mode 100644 index 0000000..3bdd735 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionAssociationImportAction.java @@ -0,0 +1,65 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellAssociationImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsRegionAssociationImportAction extends VoyageResultsImportDataActionSupport<RegionCellAssociationImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsRegionAssociationImportAction.class); + + public VoyageResultsRegionAssociationImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getRegionAssociationFile()); + } + + @Override + protected RegionCellAssociationImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellAssociationImportExportModel.forImport(importDataContext); + } + + @Override + protected RegionCellAssociationImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellAssociationImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Region cells association from file " + inputFile.getFileName()); + } + + try (Import<RegionCellAssociationImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (RegionCellAssociationImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell regionCell = row.getRegionCell(); + Cell esduCell = row.getEsduCell(); + regionCell.addChilds(esduCell); + result.incrementsNumberUpdated(EchoBaseUserEntityEnum.Cell); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java new file mode 100644 index 0000000..406a92d --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionImportAction.java @@ -0,0 +1,89 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActionSupport<RegionCellImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsRegionImportAction.class); + + public VoyageResultsRegionImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getRegionsFile()); + } + + @Override + protected RegionCellImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellImportExportModel.forImport(importDataContext); + } + + @Override + protected RegionCellImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + DataMetadata dataCoordinateMeta = importDataContext.getRegionEnvCoordinateMeta(); + DataMetadata dataSurfaceMeta = importDataContext.getSurfaceMeta(); + + if (log.isInfoEnabled()) { + log.info("Starts import of Region cells from file " + inputFile.getFileName()); + } + + Voyage voyage = importDataContext.getVoyage(); + try (Import<RegionCellImportRow> importer = open()) { + + Cell cell = null; + + incrementsProgress(); + int rowNumber = 0; + for (RegionCellImportRow row : importer) { + + doFlushTransaction(++rowNumber); + if (cell == null || !row.getName().equals(cell.getName())) { + + cell = persistenceService.createCell(row.getCellType(), row.getName()); + voyage.addPostCell(cell); + + // collect ids + result.addId(EchoBaseUserEntityEnum.Cell, cell); + + // add surface data + createCellData(cell, + dataSurfaceMeta, + String.valueOf(row.getDataSurface()), + row.getDataQuality(), + result); + } + + // add coordinate data + createCellData(cell, + dataCoordinateMeta, + row.getDataCoordinate(), + row.getDataQuality(), + result); + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java new file mode 100644 index 0000000..2991dee --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java @@ -0,0 +1,81 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.RegionCellResultImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +import java.util.List; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsRegionResultsImportAction extends VoyageResultsImportDataActionSupport<RegionCellResultImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsRegionResultsImportAction.class); + + private final List<DataMetadata> metas; + + public VoyageResultsRegionResultsImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getRegionResultFile()); + metas = importDataContext.getMetas(getInputFile(), RegionCellResultImportExportModel.COLUMN_NAMES_TO_EXCLUDE); + } + + @Override + protected RegionCellResultImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellResultImportExportModel.forImport(importDataContext, metas); + } + + @Override + protected RegionCellResultImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return RegionCellResultImportExportModel.forExport(importDataContext, metas); + + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of Region cell results from file " + inputFile.getFileName()); + } + + String resultLabel = getConfiguration().getResultLabel(); + + ResultCategoryCache resultCategoryCache = importDataContext.getResultCategoryCache(); + + try (Import<RegionCellResultImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (RegionCellResultImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Cell cell = row.getCell(); + + Category category = resultCategoryCache.getResultCategory(row.getEchotype(), + row.getSpecies(), + row.getSizeCategory(), + null, + result); + + addResults(row, cell, category, resultLabel, result, false, false); + + } + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageEchotypeImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java similarity index 55% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageEchotypeImportAction.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java index c4b1b01..2d3bc37 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ResultsVoyageEchotypeImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageEchotypeImportAction.java @@ -2,31 +2,21 @@ package fr.ifremer.echobase.services.service.importdata.actions; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Echotypes; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.Voyages; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.DepthStratums; import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Species2; import fr.ifremer.echobase.io.InputFile; -import fr.ifremer.echobase.services.service.UserDbPersistenceService; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.csv.EchotypeImportModel; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.EchotypeImportExportModel; import fr.ifremer.echobase.services.service.importdata.csv.EchotypeImportRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; import java.util.Collection; -import java.util.Collections; -import java.util.Locale; -import java.util.Map; /** * Created on 25/03/16. @@ -34,35 +24,27 @@ import java.util.Map; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class ResultsVoyageEchotypeImportAction extends AbstractImportAction<ResultsImportConfiguration, EchotypeImportRow, EchotypeImportModel> { +public class VoyageResultsVoyageEchotypeImportAction extends VoyageResultsImportDataActionSupport<EchotypeImportRow> { /** Logger. */ - private static final Log log = LogFactory.getLog(ResultsVoyageEchotypeImportAction.class); - - public ResultsVoyageEchotypeImportAction(UserDbPersistenceService persistenceService, - Locale locale, - char csvSeparator, - ResultsImportConfiguration configuration, - EchoBaseUser user) { - super(persistenceService, locale, csvSeparator, configuration, user, configuration.getEchotypeFile()); + private static final Log log = LogFactory.getLog(VoyageResultsVoyageEchotypeImportAction.class); + + public VoyageResultsVoyageEchotypeImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getEchotypeFile()); } @Override - protected EchotypeImportModel createCsvImportModel(char csvSeparator, ResultsImportConfiguration configuration) { - // get selected voyage - Voyage voyage = persistenceService.getVoyage(configuration.getVoyageId()); - - Map<String, Species> speciesMap = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); - - // authorize only the selected voyage to be imported - Map<String, Voyage> voyageMap = Maps.uniqueIndex(Collections.singletonList(voyage), Voyages.VOYAGE_NAME); + protected EchotypeImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return EchotypeImportExportModel.forImport(importDataContext); + } - Map<String, DepthStratum> depthStratumMap = persistenceService.getEntitiesMap(DepthStratum.class, DepthStratums.DEPTH_STRATUM_ID); - return new EchotypeImportModel(csvSeparator, voyageMap, depthStratumMap, speciesMap); + @Override + protected EchotypeImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return EchotypeImportExportModel.forExport(importDataContext); } @Override - protected void performImport(ResultsImportConfiguration configuration, InputFile inputFile, ImportDataFileResult result) { + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { if (log.isInfoEnabled()) { log.info("Starts import of echotype from file " + inputFile.getFileName()); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java new file mode 100644 index 0000000..1493ce7 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthAgeKeyImportAction.java @@ -0,0 +1,73 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.LengthAgeKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.LengthAgeKeyImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsVoyageLengthAgeKeyImportAction extends VoyageResultsImportDataActionSupport<LengthAgeKeyImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsVoyageLengthAgeKeyImportAction.class); + + public VoyageResultsVoyageLengthAgeKeyImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getLengthAgeKeyFile()); + } + + @Override + protected LengthAgeKeyImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return LengthAgeKeyImportExportModel.forImport(importDataContext); + } + + @Override + protected LengthAgeKeyImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return LengthAgeKeyImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of lenthAgeKey from file " + inputFile.getFileName()); + } + + try (Import<LengthAgeKeyImportRow> importer = open()) { + + incrementsProgress(); + + int rowNumber = 0; + for (LengthAgeKeyImportRow row : importer) { + + doFlushTransaction(++rowNumber); + + Voyage voyage = row.getVoyage(); + + LengthAgeKey lengthAgeKeyToCreate = row.getLengthAgeKey(); + LengthAgeKey lengthAgeKey = persistenceService.createLengthAgeKey(lengthAgeKeyToCreate); + + // attach it to voyage + voyage.addLengthAgeKey(lengthAgeKey); + + // collect ids + result.addId(EchoBaseUserEntityEnum.LengthAgeKey, lengthAgeKey); + + } + + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java new file mode 100644 index 0000000..eca495c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsVoyageLengthWeightKeyImportAction.java @@ -0,0 +1,82 @@ +package fr.ifremer.echobase.services.service.importdata.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; +import fr.ifremer.echobase.entities.data.LengthWeightKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportExportModel; +import fr.ifremer.echobase.services.service.importdata.csv.LengthWeightKeyImportRow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; + +/** + * Created on 25/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class VoyageResultsVoyageLengthWeightKeyImportAction extends VoyageResultsImportDataActionSupport<LengthWeightKeyImportRow> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(VoyageResultsVoyageLengthWeightKeyImportAction.class); + + public VoyageResultsVoyageLengthWeightKeyImportAction(VoyageResultsImportDataContext importDataContext) { + super(importDataContext, importDataContext.getConfiguration().getLengthWeightKeyFile()); + } + + @Override + protected LengthWeightKeyImportExportModel createCsvImportModel(VoyageResultsImportDataContext importDataContext) { + return LengthWeightKeyImportExportModel.forImport(importDataContext); + } + + @Override + protected LengthWeightKeyImportExportModel createCsvExportModel(VoyageResultsImportDataContext importDataContext) { + return LengthWeightKeyImportExportModel.forExport(importDataContext); + } + + @Override + protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { + + if (log.isInfoEnabled()) { + log.info("Starts import of lenthWeightKey from file " + inputFile.getFileName()); + } + + SpeciesCategoryCache speciesCategoryCache = importDataContext.getSpeciesCategoryCache(); + + try (Import<LengthWeightKeyImportRow> importer = open()) { + + incrementsProgress(); + int rowNumber = 0; + for (LengthWeightKeyImportRow row : importer) { + + doFlushTransaction(++rowNumber); + Voyage voyage = row.getVoyage(); + + // find speciesCategory + SpeciesCategory speciesCategory = speciesCategoryCache.getSpeciesCategory(row.getSpecies(), row.getSizeCategory(), null, null, result); + + LengthWeightKey toCreate = row.getLengthWeightKey(); + toCreate.setSpeciesCategory(speciesCategory); + + LengthWeightKey lengthWeightKey = persistenceService.createLengthWeightKey(toCreate); + + //TODO should we import it ? + //lengthWeightKey.setMetadata(row.getMetadata()); + + // attach it to voyage + voyage.addLengthWeightKey(lengthWeightKey); + + // collect ids + result.addId(EchoBaseUserEntityEnum.LengthWeightKey, lengthWeightKey); + + } + } + + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportDataConfigurationSupport.java similarity index 86% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportDataConfigurationSupport.java index bffeff6..818e589 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AbstractImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/ImportDataConfigurationSupport.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.EchoBaseIOUtil; @@ -33,13 +33,10 @@ import java.io.File; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public abstract class AbstractImportConfiguration extends AbstractEchobaseActionConfiguration { +public abstract class ImportDataConfigurationSupport extends AbstractEchobaseActionConfiguration { private static final long serialVersionUID = 1L; - /** Selected voyage id where to import datas. */ - protected String voyageId; - /** Directory where to store temporary files. */ protected File workingDirectory; @@ -55,14 +52,6 @@ public abstract class AbstractImportConfiguration extends AbstractEchobaseAction */ protected ImportType importType; - public final String getVoyageId() { - return voyageId; - } - - public final void setVoyageId(String voyageId) { - this.voyageId = voyageId; - } - public File getWorkingDirectory() { return workingDirectory; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AcousticImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageAcousticsImportConfiguration.java similarity index 95% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AcousticImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageAcousticsImportConfiguration.java index e1247ed..2be11af 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/AcousticImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageAcousticsImportConfiguration.java @@ -18,11 +18,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.CellPositionReference; import java.util.Locale; @@ -34,66 +35,48 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class AcousticImportConfiguration extends AbstractImportConfiguration { +public class VoyageAcousticsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; - + /** Movies file to import. */ + protected final InputFile moviesFile; /** Selected vessel id to find out transect where to import datas. */ protected String vesselId; - /** Flag to always add new dataAcquisition when a new instrument is found in movies file. */ protected boolean addDataAcquisition = true; - /** Manual transceiverAcquisitionAbsorptionDescription. */ protected String transceiverAcquisitionAbsorptionDescription = "(i) Equation: Francois and garrison 1982,(ii) CTD, (iii) nominal value for entire data set"; - /** Manual acquisitionSoftwareVersion (ER60 instrument). */ protected String acquisitionSoftwareVersionER60; - /** Manual acquisitionSoftwareVersion (ME70 instrument). */ protected String acquisitionSoftwareVersionME70; - /** Manual loggedDataFormat. */ protected String loggedDataFormat = ".hac and .raw formats"; - /** Manual loggedDataDatatype. */ protected String loggedDataDatatype = "‘raw’ digitisation samples"; - /** Manual pingDutyCycle. */ protected String pingDutyCycle = "Ifremer's standard ping duty cycle"; - /** Manual soundSpeedCalculations (ER60 instrument). */ protected String soundSpeedCalculationsER60 = "(i) Equation: Mackenzie (1980), (ii) CTD, (iii) nominal value for entire data set"; - /** Manual soundSpeedCalculations (ME70 instrument). */ protected String soundSpeedCalculationsME70 = "(i) Equation: Mackenzie (1980), (ii) Hull-mounted thermosalinometer, (iii) surface absorption value recomputed every 30s and applied to the entire data set"; - /** Manual sounderConstant. */ protected String sounderConstant = EchoBaseCsvUtil.NA; - /** Manual processingTemplate. */ protected String processingTemplate; - /** Manual processingDescription. */ protected String processingDescription; - /** Manual digitThreshold. */ protected float digitThreshold = -100f; - /** Manual acousticDensityUnit. */ protected String acousticDensityUnit = "sA"; - /** Manual notes. */ protected String notes; - /** Cell position reference for esdu cell datas. */ protected CellPositionReference cellPositionReference; - /** Movies file to import. */ - protected final InputFile moviesFile; - - public AcousticImportConfiguration(Locale locale) { + public VoyageAcousticsImportConfiguration(Locale locale) { moviesFile = InputFile.newFile(l(locale, "echobase.common.moviesFile")); importType = ImportType.ACOUSTIC; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CatchesImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCatchesImportConfiguration.java similarity index 90% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CatchesImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCatchesImportConfiguration.java index 4878cbc..e61dd7a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CatchesImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCatchesImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class CatchesImportConfiguration extends AbstractImportConfiguration { +public class VoyageCatchesImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; @@ -46,7 +46,7 @@ public class CatchesImportConfiguration extends AbstractImportConfiguration { /** Biometry sample file to import. */ protected final InputFile biometrySampleFile; - public CatchesImportConfiguration(Locale locale) { + public VoyageCatchesImportConfiguration(Locale locale) { totalSampleFile = InputFile.newFile(l(locale, "echobase.common.totalSampleFile")); subSampleFile = InputFile.newFile(l(locale, "echobase.common.subSampleFile")); biometrySampleFile = InputFile.newFile(l(locale, "echobase.common.biometrySampleFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CommonImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCommonsImportConfiguration.java similarity index 95% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CommonImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCommonsImportConfiguration.java index c252fe2..e435853 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/CommonImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageCommonsImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.io.InputFile; @@ -32,44 +32,33 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class CommonImportConfiguration extends AbstractImportConfiguration { +public class VoyageCommonsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; - + /** Voyage file to import. */ + protected final InputFile voyageFile; + /** Transit file to import. */ + protected final InputFile transitFile; + /** Transect file to import. */ + protected final InputFile transectFile; /** Selected mission id to use in voyage. */ protected String missionId; - /** Selected area of operation to use for voyage. */ protected String areaOfOperationId; - /** Manual description of voyage. */ protected String voyageDescription; - /** transit related activity. */ protected String transitRelatedActivity; - /** transect license. */ protected String transectLicence; - /** transect geospatialVerticalPositive. */ protected String transectGeospatialVerticalPositive = "down"; - /** transect binUnitsPingAxis. */ protected String transectBinUnitsPingAxis = "1 nautical mile"; - /** Manual datum to use in voyage. */ protected String datum = "WGS84"; - /** Voyage file to import. */ - protected final InputFile voyageFile; - - /** Transit file to import. */ - protected final InputFile transitFile; - - /** Transect file to import. */ - protected final InputFile transectFile; - - public CommonImportConfiguration(Locale locale) { + public VoyageCommonsImportConfiguration(Locale locale) { voyageFile = InputFile.newFile(l(locale, "echobase.common.voyageFile")); transitFile = InputFile.newFile(l(locale, "echobase.common.transitFile")); transectFile = InputFile.newFile(l(locale, "echobase.common.transectFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageImportDataConfigurationSupport.java similarity index 57% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageImportDataConfigurationSupport.java index a6fe12e..b89c157 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportquery/ExportQueryCsvModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageImportDataConfigurationSupport.java @@ -1,5 +1,3 @@ -package fr.ifremer.echobase.services.service.exportquery; - /* * #%L * EchoBase :: Services @@ -20,28 +18,27 @@ package fr.ifremer.echobase.services.service.exportquery; * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import org.nuiton.csv.ext.AbstractExportModel; - -import java.util.Map; +package fr.ifremer.echobase.services.service.importdata.configurations; /** - * Csv model to export sql in {@link ExportQueryService}. + * Common import data configuration. * * @author Tony Chemit - chemit@codelutin.com - * @since 0.2 + * @since 0.3 */ -public class ExportQueryCsvModel extends AbstractExportModel<Map<String, Object>> { +public abstract class VoyageImportDataConfigurationSupport extends ImportDataConfigurationSupport { + + private static final long serialVersionUID = 1L; + + /** Selected voyage id where to import datas. */ + protected String voyageId; + + public final String getVoyageId() { + return voyageId; + } - public ExportQueryCsvModel(char separator, String[] columnHeaders) { - super(separator); - for (String columnHeader : columnHeaders) { - newColumnForExport( - columnHeader, - EchoBaseCsvUtil.TO_STRING_FORMATTER - ); - } + public final void setVoyageId(String voyageId) { + this.voyageId = voyageId; } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/OperationImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageOperationsImportConfiguration.java similarity index 90% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/OperationImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageOperationsImportConfiguration.java index 341c938..1dc0c2e 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/OperationImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageOperationsImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.io.InputFile; @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class OperationImportConfiguration extends AbstractImportConfiguration { +public class VoyageOperationsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; @@ -46,7 +46,7 @@ public class OperationImportConfiguration extends AbstractImportConfiguration { /** gear metadatas file to import. */ protected final InputFile gearMetadataFile; - public OperationImportConfiguration(Locale locale) { + public VoyageOperationsImportConfiguration(Locale locale) { operationFile = InputFile.newFile(l(locale, "echobase.common.operationFile")); operationMetadataFile = InputFile.newFile(l(locale, "echobase.common.operationMetadataFile")); gearMetadataFile = InputFile.newFile(l(locale, "echobase.common.gearMetadataFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsImportConfiguration.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java similarity index 96% rename from echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsImportConfiguration.java rename to echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java index f73ef83..6dfd8d7 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/ResultsImportConfiguration.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/configurations/VoyageResultsImportConfiguration.java @@ -18,7 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.echobase.services.service.importdata; +package fr.ifremer.echobase.services.service.importdata.configurations; import fr.ifremer.echobase.io.InputFile; @@ -32,53 +32,39 @@ import static org.nuiton.i18n.I18n.l; * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class ResultsImportConfiguration extends AbstractImportConfiguration { +public class VoyageResultsImportConfiguration extends VoyageImportDataConfigurationSupport { private static final long serialVersionUID = 1L; - - /** Selected dataProcessing id where to search esdu or elementary cells. */ - protected String dataProcessingId; - - /** Selected vessel id to find out transect where to import datas. */ - protected String vesselId; - - /** resultLabel to store while importing acoustic result. */ - protected String resultLabel; - /** Acoustic result by echotype import. */ protected final InputFile esduByEchotypeFile; - /** Acoustic result by echotype and species category import. */ protected final InputFile esduByEchotypeAndSpeciesCategoryFile; - /** Acoustic result by species and size category import. */ protected final InputFile esduBySpeciesAndSizeCategoryFile; - /** Acoustic result by species and age category import. */ protected final InputFile esduBySpeciesAndAgeCategoryFile; - /** Region file to import. */ protected final InputFile regionsFile; - /** Region cell associations file to import. */ protected final InputFile regionAssociationFile; - /** Region cell results file to import. */ protected final InputFile regionResultFile; - /** Map cells file to import. */ protected final InputFile mapsFile; - /** Echotype file to import. */ protected final InputFile echotypeFile; - /** LengthAgeKey file to import. */ protected final InputFile lengthAgeKeyFile; - /** LengthWeightKey file to import. */ protected final InputFile lengthWeightKeyFile; + /** Selected dataProcessing id where to search esdu or elementary cells. */ + protected String dataProcessingId; + /** Selected vessel id to find out transect where to import datas. */ + protected String vesselId; + /** resultLabel to store while importing acoustic result. */ + protected String resultLabel; - public ResultsImportConfiguration(Locale locale) { + public VoyageResultsImportConfiguration(Locale locale) { regionsFile = InputFile.newFile(l(locale, "echobase.common.cellRegionsFile")); regionAssociationFile = InputFile.newFile(l(locale, "echobase.common.cellRegionAssociationFile")); regionResultFile = InputFile.newFile(l(locale, "echobase.common.cellRegionResultFile")); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java new file mode 100644 index 0000000..3d0c2ab --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/ImportDataContextSupport.java @@ -0,0 +1,234 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.AcousticInstruments; +import fr.ifremer.echobase.entities.references.AgeCategories; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.CellTypes; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataMetadatas; +import fr.ifremer.echobase.entities.references.DataQualities; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.DepthStratums; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.GearMetadatas; +import fr.ifremer.echobase.entities.references.Gears; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.OperationMetadatas; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleDataTypes; +import fr.ifremer.echobase.entities.references.SexCategories; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategories; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Species2; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.entities.references.Stratas; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.entities.references.Vessels; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.ImportDataConfigurationSupport; + +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ImportDataContextSupport<C extends ImportDataConfigurationSupport> { + + protected final UserDbPersistenceService persistenceService; + protected final char csvSeparator; + protected final C configuration; + private final Locale locale; + private final EchoBaseUser user; + + private Map<String, Vessel> vesselsByName; + private Map<String, Gear> gearsByCasinoGearName; + private Map<String, DepthStratum> depthStratumsById; + private Map<String, OperationMetadata> operationMetadatasByName; + private Map<String, GearMetadata> gearMetadatasByName; + private Map<String, DataMetadata> dataMetadatasByName; + private Map<String, Species> speciesByBaracoudaCode; + private Map<String, SampleDataType> sampleDataTypesByName; + private Map<String, SizeCategory> sizeCategoriesByName; + private Map<String, SexCategory> sexCategoriesByName; + private Map<String, AcousticInstrument> instrumentsById; + private Map<String, DataQuality> dataQualitiesByName; + private Map<String, Strata> stratasByName; + private Map<String, CellType> regionCellTypesById; + private Map<String, AgeCategory> ageCategoriesByName; + + private CellType esduCellType; + private CellType elementaryCellType; + private CellType mapCellType; + + ImportDataContextSupport(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, C configuration, EchoBaseUser user) { + this.persistenceService = persistenceService; + this.locale = locale; + this.csvSeparator = csvSeparator; + this.configuration = configuration; + this.user = user; + } + + public final Map<String, AgeCategory> getAgeCategoriesByName() { + if (ageCategoriesByName == null) { + ageCategoriesByName = new TreeMap<>(); + ageCategoriesByName.putAll(persistenceService.getEntitiesMap(AgeCategory.class, AgeCategories.AGE_CATEGORY_NAME)); + } + return ageCategoriesByName; + } + + public final Map<String, CellType> getRegionCellTypesById() { + if (regionCellTypesById == null) { + Set<CellType> allCellTypes = persistenceService.getRegionCellTypes(); + + // authorize only to use region* cell types + regionCellTypesById = Maps.uniqueIndex(allCellTypes, CellTypes.CELL_TYPE_ID); + } + return regionCellTypesById; + } + + public final CellType getEsduCellType() { + if (esduCellType == null) { + esduCellType = persistenceService.getEsduCellType(); + } + return esduCellType; + } + + public final CellType getElementaryCellType() { + if (elementaryCellType == null) { + elementaryCellType = persistenceService.getElementaryCellType(); + } + return elementaryCellType; + } + + public final CellType getMapCellType() { + if (mapCellType == null) { + mapCellType = persistenceService.getMapCellType(); + } + return mapCellType; + } + + public final Map<String, Strata> getStratasByName() { + if (stratasByName == null) { + stratasByName = persistenceService.getEntitiesMap(Strata.class, Stratas.STRATA_BY_NAME); + } + return stratasByName; + } + + public final Map<String, AcousticInstrument> getInstrumentsById() { + if (instrumentsById == null) { + instrumentsById = persistenceService.getEntitiesMap(AcousticInstrument.class, AcousticInstruments.ACOUSTIC_INSTRUMENT_ID); + } + return instrumentsById; + } + + public final Map<String, DataQuality> getDataQualitiesByName() { + if (dataQualitiesByName == null) { + dataQualitiesByName = persistenceService.getEntitiesMap(DataQuality.class, DataQualities.DATA_QUALITY_NAME); + } + return dataQualitiesByName; + } + + public final Map<String, SexCategory> getSexCategoriesByName() { + if (sexCategoriesByName == null) { + sexCategoriesByName = persistenceService.getEntitiesMap(SexCategory.class, SexCategories.SEX_CATEGORY_NAME); + } + return sexCategoriesByName; + } + + public final Map<String, SizeCategory> getSizeCategoriesByName() { + if (sizeCategoriesByName == null) { + sizeCategoriesByName = persistenceService.getEntitiesMap(SizeCategory.class, SizeCategories.SIZE_CATEGORY_NAME); + } + return sizeCategoriesByName; + } + + public final Map<String, Species> getSpeciesByBaracoudaCode() { + if (speciesByBaracoudaCode == null) { + speciesByBaracoudaCode = persistenceService.getEntitiesMap(Species.class, Species2.SPECIES_BARACOUDA_CODE); + } + return speciesByBaracoudaCode; + } + + public final Map<String, SampleDataType> getSampleDataTypesByName() { + if (sampleDataTypesByName == null) { + sampleDataTypesByName = persistenceService.getEntitiesMap(SampleDataType.class, SampleDataTypes.SAMPLE_DATA_TYPE_NAME); + } + return sampleDataTypesByName; + } + + public final Map<String, GearMetadata> getGearMetadatasByName() { + if (gearMetadatasByName == null) { + gearMetadatasByName = persistenceService.getEntitiesMap(GearMetadata.class, GearMetadatas.GEAR_METADATA_NAME); + } + return gearMetadatasByName; + } + + public final Map<String, OperationMetadata> getOperationMetadatasByName() { + if (operationMetadatasByName == null) { + operationMetadatasByName = persistenceService.getEntitiesMap(OperationMetadata.class, OperationMetadatas.OPERATION_METADATA_NAME); + } + return operationMetadatasByName; + } + + public final Map<String, Gear> getGearsByCasinoGearName() { + if (gearsByCasinoGearName == null) { + gearsByCasinoGearName = persistenceService.getEntitiesMap(Gear.class, Gears.GEAR_CASINO_GEAR_NAME); + } + return gearsByCasinoGearName; + } + + public final Map<String, DepthStratum> getDepthStratumsById() { + if (depthStratumsById == null) { + depthStratumsById = persistenceService.getEntitiesMap(DepthStratum.class, DepthStratums.DEPTH_STRATUM_ID); + } + return depthStratumsById; + } + + public final Map<String, Vessel> getVesselsByName() { + if (vesselsByName == null) { + vesselsByName = persistenceService.getEntitiesMap(Vessel.class, Vessels.VESSEL_NAME); + } + return vesselsByName; + } + + public final Map<String, DataMetadata> getDataMetadatasByName() { + if (dataMetadatasByName == null) { + dataMetadatasByName = persistenceService.getEntitiesMap(DataMetadata.class, DataMetadatas.DATA_METADATA_NAME); + } + return dataMetadatasByName; + } + + public final Locale getLocale() { + return locale; + } + + public final char getCsvSeparator() { + return csvSeparator; + } + + public final C getConfiguration() { + return configuration; + } + + public final EchoBaseUser getUser() { + return user; + } + + public final UserDbPersistenceService getPersistenceService() { + return persistenceService; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java new file mode 100644 index 0000000..8435c0a --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageAcousticsImportDataContext.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageAcousticsImportDataContext extends VoyageImportDataContext<VoyageAcousticsImportConfiguration> { + + public VoyageAcousticsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageAcousticsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java new file mode 100644 index 0000000..412dbd7 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCatchesImportDataContext.java @@ -0,0 +1,121 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleDataTypeImpl; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.SampleTypeImpl; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageCatchesImportDataContext extends VoyageImportDataContext<VoyageCatchesImportConfiguration> { + + private SampleType sampleTypeIndividualType; + private SampleType sampleTypeTotal; + private SampleType sampleTypeUnsorted; + private SampleType sampleTypeSorted; + private SampleDataType sampleDataTypeMeanLength; + private SampleDataType sampleDataTypeMeanWeight; + private SampleDataType sampleDataTypeNoPerKg; + private SampleType sampleTypeSubsample; + private SampleDataType sampleDataTypeNumberAtLength; + private SampleDataType sampleDataTypeNumberAtLength05cm; + private SampleDataType sampleDataTypeNumberAtLength1cm; + private SampleDataType sampleDataTypeWeightAtLength; + + public VoyageCatchesImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageCatchesImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + + public final SampleType getSampleTypeSubsample() { + if (sampleTypeSubsample == null) { + sampleTypeSubsample = persistenceService.getSampleTypeByName(SampleTypeImpl.SUB_SAMPLE_TYPE); + } + return sampleTypeSubsample; + } + + public final SampleDataType getSampleDataTypeNumberAtLength() { + if (sampleDataTypeNumberAtLength == null) { + sampleDataTypeNumberAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NUMBER_AT_LENGTH); + } + return sampleDataTypeNumberAtLength; + } + + public final SampleDataType getSampleDataTypeNumberAtLength05cm() { + if (sampleDataTypeNumberAtLength05cm == null) { + sampleDataTypeNumberAtLength05cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.LTCM0_5); + } + return sampleDataTypeNumberAtLength05cm; + } + + public final SampleDataType getSampleDataTypeNumberAtLength1cm() { + if (sampleDataTypeNumberAtLength1cm == null) { + sampleDataTypeNumberAtLength1cm = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.L_TCM_1); + } + return sampleDataTypeNumberAtLength1cm; + } + + public final SampleDataType getSampleDataTypeWeightAtLength() { + if (sampleDataTypeWeightAtLength == null) { + sampleDataTypeWeightAtLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.WEIGHT_AT_LENGTHKG); + } + return sampleDataTypeWeightAtLength; + } + + public final SampleType getSampleTypeTotal() { + if (sampleTypeTotal == null) { + sampleTypeTotal = persistenceService.getSampleTypeByName(SampleTypeImpl.TOTAL_SAMPLE_TYPE); + } + return sampleTypeTotal; + } + + public final SampleType getSampleTypeUnsorted() { + if (sampleTypeUnsorted == null) { + sampleTypeUnsorted = persistenceService.getSampleTypeByName(SampleTypeImpl.UNSORTED_SAMPLE_TYPE); + } + return sampleTypeUnsorted; + } + + public final SampleType getSampleTypeSorted() { + if (sampleTypeSorted == null) { + sampleTypeSorted = persistenceService.getSampleTypeByName(SampleTypeImpl.SORTED_SAMPLE_TYPE); + } + return sampleTypeSorted; + } + + public final SampleDataType getSampleDataTypeMeanLength() { + if (sampleDataTypeMeanLength == null) { + sampleDataTypeMeanLength = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_LENGTHCM); + } + return sampleDataTypeMeanLength; + } + + public final SampleDataType getSampleDataTypeMeanWeight() { + if (sampleDataTypeMeanWeight == null) { + sampleDataTypeMeanWeight = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.MEAN_WEIGHTG); + } + return sampleDataTypeMeanWeight; + } + + public final SampleDataType getSampleDataTypeNoPerKg() { + if (sampleDataTypeNoPerKg == null) { + sampleDataTypeNoPerKg = persistenceService.getSampleDataTypeByName(SampleDataTypeImpl.NO_PER_KG); + } + return sampleDataTypeNoPerKg; + } + + public final SampleType getSampleTypeIndividualType() { + if (sampleTypeIndividualType == null) { + sampleTypeIndividualType = persistenceService.getSampleTypeByName(SampleTypeImpl.INDIVIDUAL_SAMPLE_TYPE); + } + return sampleTypeIndividualType; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java new file mode 100644 index 0000000..f643c0f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageCommonsImportDataContext.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageCommonsImportDataContext extends VoyageImportDataContext<VoyageCommonsImportConfiguration> { + + public VoyageCommonsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageCommonsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java new file mode 100644 index 0000000..4852544 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageImportDataContext.java @@ -0,0 +1,112 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import com.google.common.collect.Collections2; +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Cells; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Echotypes; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Operations; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.data.Voyages; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.ResultCategoryCache; +import fr.ifremer.echobase.services.service.importdata.SpeciesCategoryCache; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; + +import java.util.Collection; +import java.util.Collections; +import java.util.Locale; +import java.util.Map; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageImportDataContext<C extends VoyageImportDataConfigurationSupport> extends ImportDataContextSupport<C> { + + private SpeciesCategoryCache speciesCategoryCache; + private ResultCategoryCache resultCategoryCache; + + private Voyage voyage; + private Collection<Operation> voyageOperations; + private Collection<Operation> voyageOperationsWithTotalOrUnsortedSample; + + private Map<String, Voyage> voyagesByName; + private Map<String, Operation> voyageOperationsById; + + + private Map<String, Cell> voyageRegionsByName; + private Map<String, Echotype> voyageEchotypesByName; + + public VoyageImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, C configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + + public final Map<String, Cell> getVoyageRegionsByName() { + if (voyageRegionsByName == null) { + voyageRegionsByName = Maps.uniqueIndex(getVoyage().getRegionCells(), Cells.CELL_BY_NAME); + } + return voyageRegionsByName; + } + + public final Map<String, Echotype> getVoyageEchotypesByName() { + if (voyageEchotypesByName == null) { + voyageEchotypesByName = Maps.uniqueIndex(getVoyage().getEchotype(), Echotypes.ECHOTYPE_NAME); + } + return voyageEchotypesByName; + } + + public final Collection<Operation> getVoyageOperationsWithTotalOrUnsortedSample() { + if (voyageOperationsWithTotalOrUnsortedSample == null) { + voyageOperationsWithTotalOrUnsortedSample = Collections2.filter(getVoyageOperations(), Operations.OPERATION_WITH_TOTAL_OR_UNSORTED_SAMPLE); + } + return voyageOperationsWithTotalOrUnsortedSample; + } + + public final Collection<Operation> getVoyageOperations() { + if (voyageOperations == null) { + voyageOperations = getVoyage().getAllOperations(); + } + return voyageOperations; + } + + public final Map<String, Operation> getVoyageOperationsById() { + if (voyageOperationsById == null) { + voyageOperationsById = Maps.uniqueIndex(getVoyageOperations(), Operations.OPERATION_ID); + } + return voyageOperationsById; + } + + public final Map<String, Voyage> getVoyagesByName() { + if (voyagesByName == null) { + voyagesByName = Maps.uniqueIndex(Collections.singletonList(getVoyage()), Voyages.VOYAGE_NAME); + } + return voyagesByName; + } + + public final Voyage getVoyage() { + if (voyage == null) { + voyage = persistenceService.getVoyage(configuration.getVoyageId()); + } + return voyage; + } + + public final SpeciesCategoryCache getSpeciesCategoryCache() { + if (speciesCategoryCache == null) { + speciesCategoryCache = new SpeciesCategoryCache(persistenceService); + } + return speciesCategoryCache; + } + + public final ResultCategoryCache getResultCategoryCache() { + if (resultCategoryCache == null) { + resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); + } + return resultCategoryCache; + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java new file mode 100644 index 0000000..a0074c3 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageOperationsImportDataContext.java @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; + +import java.util.Locale; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageOperationsImportDataContext extends VoyageImportDataContext<VoyageOperationsImportConfiguration> { + + public VoyageOperationsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageOperationsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java new file mode 100644 index 0000000..2ab868a --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/contexts/VoyageResultsImportDataContext.java @@ -0,0 +1,194 @@ +package fr.ifremer.echobase.services.service.importdata.contexts; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Cells; +import fr.ifremer.echobase.entities.data.DataProcessing; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataMetadataImpl; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.DataMetadataNotFoundException; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ext.CsvReaders; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; + +import static fr.ifremer.echobase.services.service.importdata.ImportDataService.REMOVE_DOUBLE_QUOTES_PATTERN; + +/** + * Created on 30/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class VoyageResultsImportDataContext extends VoyageImportDataContext<VoyageResultsImportConfiguration> { + +// private SpeciesCategoryCache speciesCategoryCache; +// private ResultCategoryCache resultCategoryCache; + + private DataMetadata gridCellLongitudeMeta; + private DataMetadata gridCellLatitudeMeta; + private DataMetadata gridCellDepthMeta; + private DataMetadata gridLongitudeLagMeta; + private DataMetadata gridLatitudeLagMeta; + private DataMetadata gridDepthLagMeta; + private DataMetadata regionEnvCoordinateMeta; + private DataMetadata surfaceMeta; + + private Set<Cell> esduCells; + + private Map<String, Cell> esduCellsByName; + + public VoyageResultsImportDataContext(UserDbPersistenceService persistenceService, Locale locale, char csvSeparator, VoyageResultsImportConfiguration configuration, EchoBaseUser user) { + super(persistenceService, locale, csvSeparator, configuration, user); + } + + public ValueParser<Cell> getCellValueParser() { + return EchoBaseCsvUtil.newCellValueParser(getEsduCellsByName()); + } + + public ValueFormatter<Cell> getCellValueFormatter() { + return EchoBaseCsvUtil.newCellValueFormatter(getEsduCells(), getEsduCellType(), getElementaryCellType()); + } + + public ValueParser<Cell> newCellValueParser() { + return persistenceService.newCellValueParser(); + } + + public ValueFormatter<Cell> newCellValueFormatter() { + return persistenceService.newCellValueFormatter(); + } + + public Map<String, Cell> getEsduCellsByName() { + if (esduCellsByName == null) { + esduCellsByName = Maps.uniqueIndex(getEsduCells(), Cells.CELL_BY_NAME); + } + return esduCellsByName; + } + + public Set<Cell> getEsduCells() { + if (esduCells == null) { + + // get selected dataProcessing + DataProcessing dataProcessing = persistenceService.getDataProcessing(configuration.getDataProcessingId()); + + // get esdu cells usables + esduCells = new LinkedHashSet<>(dataProcessing.getCell()); + + } + return esduCells; + } + + public List<DataMetadata> getMetas(InputFile inputFile, String... columnNamesToExclude) { + + Map<String, DataMetadata> dataMetadatasByName = getDataMetadatasByName(); + + String[] headers = CsvReaders.getHeader(inputFile.getFile(), csvSeparator); + + List<String> metadataNames = Lists.newArrayList(headers); + for (String columnToExclude : columnNamesToExclude) { + metadataNames.remove(columnToExclude); + metadataNames.remove("\"" + columnToExclude + "\""); + } + + List<DataMetadata> result = Lists.newArrayList(); + + for (String metadataName : metadataNames) { + + Matcher matcher = REMOVE_DOUBLE_QUOTES_PATTERN.matcher(metadataName); + if (matcher.matches()) { + metadataName = matcher.group(1); + } + DataMetadata dataMetadata = dataMetadatasByName.get(metadataName); + if (dataMetadata == null) { + throw new DataMetadataNotFoundException(getLocale(), metadataName, dataMetadatasByName.keySet()); + } + result.add(dataMetadata); + + } + + return result; + + } + + public DataMetadata getRegionEnvCoordinateMeta() { + if (regionEnvCoordinateMeta == null) { + regionEnvCoordinateMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.REGION_ENV_COORDINATES); + } + return regionEnvCoordinateMeta; + } + + public DataMetadata getSurfaceMeta() { + if (surfaceMeta == null) { + surfaceMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.SURFACE); + } + return surfaceMeta; + } + + public final DataMetadata getGridCellLongitudeMeta() { + if (gridCellLongitudeMeta == null) { + gridCellLongitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LONGITUDE); + } + return gridCellLongitudeMeta; + } + + public final DataMetadata getGridCellLatitudeMeta() { + if (gridCellLatitudeMeta == null) { + gridCellLatitudeMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_LATITUDE); + } + return gridCellLatitudeMeta; + } + + public final DataMetadata getGridCellDepthMeta() { + if (gridCellDepthMeta == null) { + gridCellDepthMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_CELL_DEPTH); + } + return gridCellDepthMeta; + } + + public final DataMetadata getGridLongitudeLagMeta() { + if (gridLongitudeLagMeta == null) { + gridLongitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LONGITUDE_LAG); + } + return gridLongitudeLagMeta; + } + + public final DataMetadata getGridLatitudeLagMeta() { + if (gridLatitudeLagMeta == null) { + gridLatitudeLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_LATITUDE_LAG); + } + return gridLatitudeLagMeta; + } + + public final DataMetadata getGridDepthLagMeta() { + if (gridDepthLagMeta == null) { + gridDepthLagMeta = persistenceService.getDataMetadataByName(DataMetadataImpl.GRID_DEPTH_LAG); + } + return gridDepthLagMeta; + } + +// public SpeciesCategoryCache getSpeciesCategoryCache() { +// if (speciesCategoryCache == null) { +// speciesCategoryCache = new SpeciesCategoryCache(persistenceService); +// } +// return speciesCategoryCache; +// } +// +// public ResultCategoryCache getResultCategoryCache() { +// if (resultCategoryCache == null) { +// resultCategoryCache = new ResultCategoryCache(persistenceService, getSpeciesCategoryCache()); +// } +// return resultCategoryCache; +// } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java new file mode 100644 index 0000000..c17bf2e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportExportModel.java @@ -0,0 +1,223 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Data; +import fr.ifremer.echobase.entities.data.DataAcquisition; +import fr.ifremer.echobase.entities.data.DataProcessing; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageAcousticsImportDataContext; + +/** + * To import acoustic datas (says {@link DataAcquisition}, + * {@link DataProcessing}, {@link Cell} and {@link Data}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class AcousticImportExportModel extends EchoBaseImportExportModelSupport<AcousticImportRow> { + + private AcousticImportExportModel(char separator) { + super(separator); + } + + public static AcousticImportExportModel forImport(VoyageAcousticsImportDataContext importDataContext) { + + AcousticImportExportModel model = new AcousticImportExportModel(importDataContext.getCsvSeparator()); + + model.newMandatoryColumn("MOVIES_EILayer", AcousticImportRow.PROPERTY_EI_LAYER);//A + model.newIgnoredColumn("MOVIES_EILayer\\sndset");//B + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndname");//C + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndident");//D + model.newForeignKeyColumn("MOVIES_EILayer\\sndset\\softChannelId", AcousticImportRow.PROPERTY_ACOUSTIC_INSTRUMENT, AcousticInstrument.class, AcousticInstrument.PROPERTY_ID, importDataContext.getInstrumentsById()); //E + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\channelName");//F + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\dataType");//G + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beamType");//H + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\acousticFrequency");//I + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\startSample");//J + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAlongSteeringAngle");//K + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAthwartSteeringAngle");//L + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\absorptionCoef", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_ABSORPTION, EchoBaseCsvUtil.FLOAT);//M + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\transmissionPower", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_POWER, EchoBaseCsvUtil.INTEGER);//N + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAlongAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ALONGSHIP, EchoBaseCsvUtil.FLOAT);//O + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAthwartAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ATHWARTSHIP, EchoBaseCsvUtil.FLOAT);//P + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAlong");//Q + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAthwart");//R + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamEquTwoWayAngle", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_PSI, EchoBaseCsvUtil.FLOAT);//S + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamGain", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_GAIN, EchoBaseCsvUtil.FLOAT);//T + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\beamSACorrection", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_SACORRECTION, EchoBaseCsvUtil.FLOAT);//U + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinDepth");//V + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMaxDepth");//W + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinLevel");//X + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AlongTXRXWeightId");//Y + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AthwartTXRXWeightId");//Z + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAlongTXRXWeightId");//AA + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAthwartTXRXWeightId");//AB + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bandWidth");//AC + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgminrange");//AD + model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgmaxrange");//AE + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\pulseduration", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_PULSE_LENGTH, EchoBaseCsvUtil.FLOAT);//AF + model.newIgnoredColumn("MOVIES_EILayer\\shipnav");//AG + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\lat");//AH + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\long");//AI + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\alt");//AJ + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndspeed");//AK + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndcourse");//AL + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfspeed");//AM + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfcourse");//AN + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftspeed");//AO + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftcourse");//AP + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heading");//AQ + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\roll");//AR + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\pitch");//AS + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heave");//AT + model.newMandatoryColumn("MOVIES_EILayer\\shipnav\\depth", AcousticImportRow.PROPERTY_ESDU_CELL_DATA_DEPTH);//AU + model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\draught");//AV + + // Cell elementary Datas + model.newIgnoredColumn("MOVIES_EILayer\\cellset");//AW + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\cellnum", AcousticImportRow.PROPERTY_CELL_NUM, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AX + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\celltype", AcousticImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AY + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\depthstart", AcousticImportRow.PROPERTY_CELL_DEPTH_START, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//AZ + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\depthend", AcousticImportRow.PROPERTY_CELL_DEPTH_END, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BA + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexstart");//BB + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexend");//BC + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\datestart", AcousticImportRow.PROPERTY_CELL_DATE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BD + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\dateend", AcousticImportRow.PROPERTY_CELL_DATE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BE + + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\lat", AcousticImportRow.PROPERTY_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BF + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\long", AcousticImportRow.PROPERTY_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BG + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\volume", AcousticImportRow.PROPERTY_CELL_VOLUME, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BH + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\area", AcousticImportRow.PROPERTY_CELL_SURFACE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BI + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\diststart");//BJ + model.newIgnoredColumn("MOVIES_EILayer\\cellset\\distend");//BK + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdup", AcousticImportRow.PROPERTY_E_ITHRESHOLD_HIGH, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BL + model.newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdlow", AcousticImportRow.PROPERTY_E_ITHRESHOLD_LOW, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BM + model.newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN + model.newMandatoryColumn("MOVIES_EILayer\\eilayer\\sa", AcousticImportRow.PROPERTY_CELL_NASC, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BO + model.newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP + model.newMandatoryColumn("MOVIES_EILayer\\eilayer\\ni", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BQ + model.newMandatoryColumn("MOVIES_EILayer\\eilayer\\nt", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BR + model.newIgnoredColumn("MOVIES_EILayer\\boterr");//BR + model.newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT + model.newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU + model.newMandatoryColumn("MOVIES_EILayer\\sndset\\soundcelerity", AcousticImportRow.PROPERTY_SOUND_CELERITY);//BV + + model.newForeignKeyColumn(AcousticImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); //E + + return model; + } + + public static AcousticImportExportModel forExport(VoyageAcousticsImportDataContext importDataContext) { + + AcousticImportExportModel model = new AcousticImportExportModel(importDataContext.getCsvSeparator()); + + model.newColumnForExport("MOVIES_EILayer", AcousticImportRow.PROPERTY_EI_LAYER);//A +// model.newIgnoredColumn("MOVIES_EILayer\\sndset");//B +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndname");//C +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\sndident");//D + model.newColumnForExport("MOVIES_EILayer\\sndset\\softChannelId", AcousticImportRow.PROPERTY_ACOUSTIC_INSTRUMENT, EchoBaseCsvUtil.ACOUSTIC_INSTRUMENT_FORMATTER); //E +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\channelName");//F +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\dataType");//G +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beamType");//H +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\acousticFrequency");//I +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\startSample");//J +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAlongSteeringAngle");//K +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAthwartSteeringAngle");//L + model.newColumnForExport("MOVIES_EILayer\\sndset\\absorptionCoef", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_ABSORPTION, EchoBaseCsvUtil.FLOAT);//M + model.newColumnForExport("MOVIES_EILayer\\sndset\\transmissionPower", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_POWER, EchoBaseCsvUtil.INTEGER);//N + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamAlongAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ALONGSHIP, EchoBaseCsvUtil.FLOAT);//O + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamAthwartAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ATHWARTSHIP, EchoBaseCsvUtil.FLOAT);//P +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAlong");//Q +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAthwart");//R + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamEquTwoWayAngle", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_PSI, EchoBaseCsvUtil.FLOAT);//S + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamGain", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_GAIN, EchoBaseCsvUtil.FLOAT);//T + model.newColumnForExport("MOVIES_EILayer\\sndset\\beamSACorrection", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_SACORRECTION, EchoBaseCsvUtil.FLOAT);//U +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinDepth");//V +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMaxDepth");//W +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinLevel");//X +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AlongTXRXWeightId");//Y +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\AthwartTXRXWeightId");//Z +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAlongTXRXWeightId");//AA +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAthwartTXRXWeightId");//AB +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\bandWidth");//AC +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgminrange");//AD +// model.newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgmaxrange");//AE + model.newColumnForExport("MOVIES_EILayer\\sndset\\pulseduration", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_PULSE_LENGTH, EchoBaseCsvUtil.FLOAT);//AF +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav");//AG +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\lat");//AH +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\long");//AI +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\alt");//AJ +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndspeed");//AK +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndcourse");//AL +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfspeed");//AM +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfcourse");//AN +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftspeed");//AO +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftcourse");//AP +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heading");//AQ +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\roll");//AR +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\pitch");//AS +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\heave");//AT + model.newColumnForExport("MOVIES_EILayer\\shipnav\\depth", AcousticImportRow.PROPERTY_ESDU_CELL_DATA_DEPTH);//AU +// model.newIgnoredColumn("MOVIES_EILayer\\shipnav\\draught");//AV + + // Cell elementary Datas +// model.newIgnoredColumn("MOVIES_EILayer\\cellset");//AW + model.newColumnForExport("MOVIES_EILayer\\cellset\\cellnum", AcousticImportRow.PROPERTY_CELL_NUM, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AX + model.newColumnForExport("MOVIES_EILayer\\cellset\\celltype", AcousticImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AY + model.newColumnForExport("MOVIES_EILayer\\cellset\\depthstart", AcousticImportRow.PROPERTY_CELL_DEPTH_START, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//AZ + model.newColumnForExport("MOVIES_EILayer\\cellset\\depthend", AcousticImportRow.PROPERTY_CELL_DEPTH_END, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BA +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexstart");//BB +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\indexend");//BC + model.newColumnForExport("MOVIES_EILayer\\cellset\\datestart", AcousticImportRow.PROPERTY_CELL_DATE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BD + model.newColumnForExport("MOVIES_EILayer\\cellset\\dateend", AcousticImportRow.PROPERTY_CELL_DATE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BE + + model.newColumnForExport("MOVIES_EILayer\\cellset\\lat", AcousticImportRow.PROPERTY_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BF + model.newColumnForExport("MOVIES_EILayer\\cellset\\long", AcousticImportRow.PROPERTY_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BG + model.newColumnForExport("MOVIES_EILayer\\cellset\\volume", AcousticImportRow.PROPERTY_CELL_VOLUME, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BH + model.newColumnForExport("MOVIES_EILayer\\cellset\\area", AcousticImportRow.PROPERTY_CELL_SURFACE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BI +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\diststart");//BJ +// model.newIgnoredColumn("MOVIES_EILayer\\cellset\\distend");//BK + model.newColumnForExport("MOVIES_EILayer\\cellset\\thresholdup", AcousticImportRow.PROPERTY_E_ITHRESHOLD_HIGH, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BL + model.newColumnForExport("MOVIES_EILayer\\cellset\\thresholdlow", AcousticImportRow.PROPERTY_E_ITHRESHOLD_LOW, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BM +// model.newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN + model.newColumnForExport("MOVIES_EILayer\\eilayer\\sa", AcousticImportRow.PROPERTY_CELL_NASC, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BO +// model.newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP + model.newColumnForExport("MOVIES_EILayer\\eilayer\\ni", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BQ + model.newColumnForExport("MOVIES_EILayer\\eilayer\\nt", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BR +// model.newIgnoredColumn("MOVIES_EILayer\\boterr");//BR +// model.newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT +// model.newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU + model.newColumnForExport("MOVIES_EILayer\\sndset\\soundcelerity", AcousticImportRow.PROPERTY_SOUND_CELERITY);//BV + + model.newColumnForExport(AcousticImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); //E + + return model; + } + + @Override + public AcousticImportRow newEmptyInstance() { + return new AcousticImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java deleted file mode 100644 index 943a35e..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportModel.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Data; -import fr.ifremer.echobase.entities.data.DataAcquisition; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.references.AcousticInstrument; -import fr.ifremer.echobase.entities.references.DataQuality; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * To import acoustic datas (says {@link DataAcquisition}, - * {@link DataProcessing}, {@link Cell} and {@link Data}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class AcousticImportModel extends AbstractImportModel<AcousticImportRow> { - - public AcousticImportModel(char separator, - Map<String, AcousticInstrument> instrumentsById, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newMandatoryColumn("MOVIES_EILayer", AcousticImportRow.PROPERTY_EI_LAYER);//A - newIgnoredColumn("MOVIES_EILayer\\sndset");//B - newIgnoredColumn("MOVIES_EILayer\\sndset\\sndname");//C - newIgnoredColumn("MOVIES_EILayer\\sndset\\sndident");//D - newForeignKeyColumn("MOVIES_EILayer\\sndset\\softChannelId", AcousticImportRow.PROPERTY_ACOUSTIC_INSTRUMENT, AcousticInstrument.class, AcousticInstrument.PROPERTY_ID, instrumentsById); //E - newIgnoredColumn("MOVIES_EILayer\\sndset\\channelName");//F - newIgnoredColumn("MOVIES_EILayer\\sndset\\dataType");//G - newIgnoredColumn("MOVIES_EILayer\\sndset\\beamType");//H - newIgnoredColumn("MOVIES_EILayer\\sndset\\acousticFrequency");//I - newIgnoredColumn("MOVIES_EILayer\\sndset\\startSample");//J - newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAlongSteeringAngle");//K - newIgnoredColumn("MOVIES_EILayer\\sndset\\mainBeamAthwartSteeringAngle");//L - newMandatoryColumn("MOVIES_EILayer\\sndset\\absorptionCoef", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_ABSORPTION, EchoBaseCsvUtil.FLOAT);//M - newMandatoryColumn("MOVIES_EILayer\\sndset\\transmissionPower", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_POWER, EchoBaseCsvUtil.INTEGER);//N - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAlongAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ALONGSHIP, EchoBaseCsvUtil.FLOAT);//O - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamAthwartAngleSensitivity", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_BEAM_ANGLE_ATHWARTSHIP, EchoBaseCsvUtil.FLOAT);//P - newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAlong");//Q - newIgnoredColumn("MOVIES_EILayer\\sndset\\beam3dBWidthAthwart");//R - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamEquTwoWayAngle", AcousticImportRow.PROPERTY_TRANSDUCER_ACQUISITION_PSI, EchoBaseCsvUtil.FLOAT);//S - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamGain", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_GAIN, EchoBaseCsvUtil.FLOAT);//T - newMandatoryColumn("MOVIES_EILayer\\sndset\\beamSACorrection", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_SACORRECTION, EchoBaseCsvUtil.FLOAT);//U - newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinDepth");//V - newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMaxDepth");//W - newIgnoredColumn("MOVIES_EILayer\\sndset\\bottomDetectionMinLevel");//X - newIgnoredColumn("MOVIES_EILayer\\sndset\\AlongTXRXWeightId");//Y - newIgnoredColumn("MOVIES_EILayer\\sndset\\AthwartTXRXWeightId");//Z - newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAlongTXRXWeightId");//AA - newIgnoredColumn("MOVIES_EILayer\\sndset\\SplitBeamAthwartTXRXWeightId");//AB - newIgnoredColumn("MOVIES_EILayer\\sndset\\bandWidth");//AC - newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgminrange");//AD - newIgnoredColumn("MOVIES_EILayer\\sndset\\tvgmaxrange");//AE - newMandatoryColumn("MOVIES_EILayer\\sndset\\pulseduration", AcousticImportRow.PROPERTY_TRANSCEIVER_ACQUISITION_PULSE_LENGTH, EchoBaseCsvUtil.FLOAT);//AF - newIgnoredColumn("MOVIES_EILayer\\shipnav");//AG - newIgnoredColumn("MOVIES_EILayer\\shipnav\\lat");//AH - newIgnoredColumn("MOVIES_EILayer\\shipnav\\long");//AI - newIgnoredColumn("MOVIES_EILayer\\shipnav\\alt");//AJ - newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndspeed");//AK - newIgnoredColumn("MOVIES_EILayer\\shipnav\\gndcourse");//AL - newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfspeed");//AM - newIgnoredColumn("MOVIES_EILayer\\shipnav\\surfcourse");//AN - newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftspeed");//AO - newIgnoredColumn("MOVIES_EILayer\\shipnav\\driftcourse");//AP - newIgnoredColumn("MOVIES_EILayer\\shipnav\\heading");//AQ - newIgnoredColumn("MOVIES_EILayer\\shipnav\\roll");//AR - newIgnoredColumn("MOVIES_EILayer\\shipnav\\pitch");//AS - newIgnoredColumn("MOVIES_EILayer\\shipnav\\heave");//AT - newMandatoryColumn("MOVIES_EILayer\\shipnav\\depth", AcousticImportRow.PROPERTY_ESDU_CELL_DATA_DEPTH);//AU - newIgnoredColumn("MOVIES_EILayer\\shipnav\\draught");//AV - - // Cell elementary Datas - newIgnoredColumn("MOVIES_EILayer\\cellset");//AW - newMandatoryColumn("MOVIES_EILayer\\cellset\\cellnum", AcousticImportRow.PROPERTY_CELL_NUM, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AX - newMandatoryColumn("MOVIES_EILayer\\cellset\\celltype", AcousticImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//AY - newMandatoryColumn("MOVIES_EILayer\\cellset\\depthstart", AcousticImportRow.PROPERTY_CELL_DEPTH_START, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//AZ - newMandatoryColumn("MOVIES_EILayer\\cellset\\depthend", AcousticImportRow.PROPERTY_CELL_DEPTH_END, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BA - newIgnoredColumn("MOVIES_EILayer\\cellset\\indexstart");//BB - newIgnoredColumn("MOVIES_EILayer\\cellset\\indexend");//BC - newMandatoryColumn("MOVIES_EILayer\\cellset\\datestart", AcousticImportRow.PROPERTY_CELL_DATE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BD - newMandatoryColumn("MOVIES_EILayer\\cellset\\dateend", AcousticImportRow.PROPERTY_CELL_DATE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE);//BE - - newMandatoryColumn("MOVIES_EILayer\\cellset\\lat", AcousticImportRow.PROPERTY_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BF - newMandatoryColumn("MOVIES_EILayer\\cellset\\long", AcousticImportRow.PROPERTY_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT);//BG - newMandatoryColumn("MOVIES_EILayer\\cellset\\volume", AcousticImportRow.PROPERTY_CELL_VOLUME, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BH - newMandatoryColumn("MOVIES_EILayer\\cellset\\area", AcousticImportRow.PROPERTY_CELL_SURFACE, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BI - newIgnoredColumn("MOVIES_EILayer\\cellset\\diststart");//BJ - newIgnoredColumn("MOVIES_EILayer\\cellset\\distend");//BK - newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdup", AcousticImportRow.PROPERTY_E_ITHRESHOLD_HIGH, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BL - newMandatoryColumn("MOVIES_EILayer\\cellset\\thresholdlow", AcousticImportRow.PROPERTY_E_ITHRESHOLD_LOW, EchoBaseCsvUtil.PRIMITIVE_INTEGER);//BM - newIgnoredColumn("MOVIES_EILayer\\eilayer");//BN - newMandatoryColumn("MOVIES_EILayer\\eilayer\\sa", AcousticImportRow.PROPERTY_CELL_NASC, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER);//BO - newIgnoredColumn("MOVIES_EILayer\\eilayer\\sv");//BP - newMandatoryColumn("MOVIES_EILayer\\eilayer\\ni", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_ECHO_INTEGRATED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BQ - newMandatoryColumn("MOVIES_EILayer\\eilayer\\nt", AcousticImportRow.PROPERTY_CELL_NUMBER_OF_SAMPLES_RECORDED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER);//BR - newIgnoredColumn("MOVIES_EILayer\\boterr");//BR - newIgnoredColumn("MOVIES_EILayer\\boterr\\sa");//BT - newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU - newMandatoryColumn("MOVIES_EILayer\\sndset\\soundcelerity", AcousticImportRow.PROPERTY_SOUND_CELERITY);//BV - - newForeignKeyColumn(AcousticImportRow.PROPERTY_DATA_QUALITY, - DataQuality.class, - DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, - dataQualityMap); //E - } - - @Override - public AcousticImportRow newEmptyInstance() { - return new AcousticImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java index 7187740..fa78d6c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/AcousticImportRow.java @@ -26,7 +26,7 @@ import fr.ifremer.echobase.entities.references.DataQuality; import java.util.Date; /** - * Bean of a row for {@link AcousticImportModel} import. + * Bean of a row for {@link AcousticImportExportModel} import. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.java new file mode 100644 index 0000000..52e81c4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportExportModel.java @@ -0,0 +1,72 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link Sample} of total biometry. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class BiometrySampleImportExportModel extends EchoBaseImportExportModelSupport<BiometrySampleImportRow> { + + private BiometrySampleImportExportModel(char separator) { + super(separator); + } + + public static BiometrySampleImportExportModel forImport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + BiometrySampleImportExportModel model = new BiometrySampleImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, BiometrySampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, BiometrySampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + + model.newMandatoryColumn(BiometrySampleImportRow.PROPERTY_NUM_FISH, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + + model.newForeignKeyColumn("name", SampleData.PROPERTY_SAMPLE_DATA_TYPE, SampleDataType.class, SampleDataType.PROPERTY_NAME, importDataContext.getSampleDataTypesByName()); + model.newMandatoryColumn(SampleData.PROPERTY_DATA_LABEL); + model.newMandatoryColumn(SampleData.PROPERTY_DATA_VALUE, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + return model; + } + + public static BiometrySampleImportExportModel forExport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + BiometrySampleImportExportModel model = new BiometrySampleImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, BiometrySampleImportRow.PROPERTY_OPERATION, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, BiometrySampleImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(BiometrySampleImportRow.PROPERTY_NUM_FISH, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newColumnForExport("name", SampleData.PROPERTY_SAMPLE_DATA_TYPE, EchoBaseCsvUtil.SAMPLE_DATA_TYPE_FORMATTER); + model.newColumnForExport(SampleData.PROPERTY_DATA_LABEL); + model.newColumnForExport(SampleData.PROPERTY_DATA_VALUE, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + return model; + } + + @Override + public BiometrySampleImportRow newEmptyInstance() { + return new BiometrySampleImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java deleted file mode 100644 index 1e0a69a..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportModel.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link Sample} of total biometry. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class BiometrySampleImportModel extends AbstractImportModel<BiometrySampleImportRow> { - - public BiometrySampleImportModel(char separator, Map<String, Operation> operationMap, - Map<String, Species> speciesMap, - Map<String, SampleDataType> sampleDataTypeMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, BiometrySampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, BiometrySampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - - newMandatoryColumn(BiometrySampleImportRow.PROPERTY_NUM_FISH, EchoBaseCsvUtil.PRIMITIVE_INTEGER); - - newForeignKeyColumn("name", SampleData.PROPERTY_SAMPLE_DATA_TYPE, SampleDataType.class, SampleDataType.PROPERTY_NAME, sampleDataTypeMap); - newMandatoryColumn(SampleData.PROPERTY_DATA_LABEL); - newMandatoryColumn(SampleData.PROPERTY_DATA_VALUE, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - } - - @Override - public BiometrySampleImportRow newEmptyInstance() { - return new BiometrySampleImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java index 482c7e2..f05ef41 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/BiometrySampleImportRow.java @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.references.SampleDataType; import fr.ifremer.echobase.entities.references.Species; /** - * Bean used as a row for import of {@link BiometrySampleImportModel}. + * Bean used as a row for import of {@link BiometrySampleImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java index 3e7478e..af26fcc 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchoBaseImportExportModelSupport.java @@ -1,9 +1,41 @@ package fr.ifremer.echobase.services.service.importdata.csv; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.ResultAble; +import org.nuiton.csv.ext.AbstractImportExportModel; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.service.csv.TopiaCsvCommons; + +import java.util.List; +import java.util.Map; + /** * Created on 27/03/16. * * @author Tony Chemit - chemit@codelutin.com */ -public class EchoBaseImportExportModelSupport { +public abstract class EchoBaseImportExportModelSupport<E> extends AbstractImportExportModel<E> { + + protected EchoBaseImportExportModelSupport(char separator) { + super(separator); + } + + protected static <R extends ResultAble> void addResultsColumns(EchoBaseImportExportModelSupport<R> model, List<DataMetadata> dataMetadatas) { + for (DataMetadata metadata : dataMetadatas) { + model.newColumnForExport( + metadata.getName(), + EchoBaseCsvUtil.<R>newResultValueGetter(metadata), + EchoBaseCsvUtil.newResultValueFormatter(metadata, false)); + } + } + + public <E extends TopiaEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { + newMandatoryColumn(headerName, propertyName, TopiaCsvCommons.newForeignKeyValue(entityType, foreignKeyName, universe)); + } + + public <E extends TopiaEntity> void newForeignKeyColumn(String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { + newMandatoryColumn(propertyName, propertyName, TopiaCsvCommons.newForeignKeyValue(entityType, foreignKeyName, universe)); + } + } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java new file mode 100644 index 0000000..ed76667 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportExportModel.java @@ -0,0 +1,71 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import echotypes. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EchotypeImportExportModel extends EchoBaseImportExportModelSupport<EchotypeImportRow> { + + private EchotypeImportExportModel(char separator) { + super(separator); + } + + public static EchotypeImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + EchotypeImportExportModel model = new EchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newMandatoryColumn("echotypeName", Echotype.PROPERTY_NAME); + model.newMandatoryColumn("meaning", Echotype.PROPERTY_MEANING); + model.newForeignKeyColumn(EchotypeImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, importDataContext.getDepthStratumsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, Echotype.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + return model; + + } + + public static EchotypeImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + EchotypeImportExportModel model = new EchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport("echotypeName", Echotype.PROPERTY_NAME); + model.newColumnForExport("meaning", Echotype.PROPERTY_MEANING); + model.newColumnForExport(EchotypeImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, EchoBaseCsvUtil.DEPTH_STRATUM_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, Echotype.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + return model; + + } + + @Override + public EchotypeImportRow newEmptyInstance() { + return new EchotypeImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java deleted file mode 100644 index a82181a..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportModel.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import echotypes. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EchotypeImportModel extends AbstractImportModel<EchotypeImportRow> { - - public EchotypeImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, DepthStratum> depthStratumMap, - Map<String, Species> speciesMap) { - super(separator); - - newMandatoryColumn("echotypeName", Echotype.PROPERTY_NAME); - newMandatoryColumn("meaning", Echotype.PROPERTY_MEANING); - newForeignKeyColumn(EchotypeImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Echotype.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, depthStratumMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, Echotype.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - - } - - @Override - public EchotypeImportRow newEmptyInstance() { - return new EchotypeImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java index 4b4fe18..78332a1 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EchotypeImportRow.java @@ -29,20 +29,17 @@ import fr.ifremer.echobase.entities.references.Species; import java.io.Serializable; /** - * Bean used as a row for import of {@link EchotypeImportModel}. + * Bean used as a row for import of {@link EchotypeImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class EchotypeImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - - protected Voyage voyage; - + private static final long serialVersionUID = 1L; protected final Echotype echotype; + protected Voyage voyage; public EchotypeImportRow() { echotype = new EchotypeImpl(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java new file mode 100644 index 0000000..eb31871 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportExportModel.java @@ -0,0 +1,99 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and echotypes. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultByEchotypeAndSpeciesCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultByEchotypeAndSpeciesCategoryImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, + EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_VOYAGE + }; + + private EsduResultByEchotypeAndSpeciesCategoryImportExportModel(char separator) { + super(separator); + } + + public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeAndSpeciesCategoryImportExportModel model = new EsduResultByEchotypeAndSpeciesCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultByEchotypeAndSpeciesCategoryImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultByEchotypeAndSpeciesCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeAndSpeciesCategoryImportExportModel model = new EsduResultByEchotypeAndSpeciesCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultByEchotypeAndSpeciesCategoryImportRow newEmptyInstance() { + return new EsduResultByEchotypeAndSpeciesCategoryImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java deleted file mode 100644 index fd13b51..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportModel.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and echotypes. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultByEchotypeAndSpeciesCategoryImportModel extends AbstractImportModel<EsduResultByEchotypeAndSpeciesCategoryImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, - EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_VOYAGE - }; - - public EsduResultByEchotypeAndSpeciesCategoryImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Echotype> echotypeMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newForeignKeyColumn(EsduResultByEchotypeAndSpeciesCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultByEchotypeAndSpeciesCategoryImportRow>newResultValueSetter()); - } - - } - - @Override - public EsduResultByEchotypeAndSpeciesCategoryImportRow newEmptyInstance() { - return new EsduResultByEchotypeAndSpeciesCategoryImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java index 1f7c0cf..0272460 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeAndSpeciesCategoryImportRow.java @@ -21,7 +21,6 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; @@ -29,17 +28,18 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** * Bean used as a row for import of - * {@link EsduResultByEchotypeAndSpeciesCategoryImportModel}. + * {@link EsduResultByEchotypeAndSpeciesCategoryImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -62,11 +62,8 @@ public class EsduResultByEchotypeAndSpeciesCategoryImportRow implements EchoBase protected List<Result> result = Lists.newArrayList(); protected Species species; - - private SizeCategory sizeCategory; - protected DataQuality dataQuality; - + private SizeCategory sizeCategory; public void setVoyage(Voyage voyage) { this.voyage = voyage; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.java new file mode 100644 index 0000000..71a53a4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportExportModel.java @@ -0,0 +1,91 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and echotypes. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultByEchotypeImportExportModel extends EchoBaseImportExportModelSupport<EsduResultByEchotypeImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, + EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, + EsduResultByEchotypeImportRow.PROPERTY_VOYAGE + }; + + private EsduResultByEchotypeImportExportModel(char separator) { + super(separator); + } + + public static EsduResultByEchotypeImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeImportExportModel model = new EsduResultByEchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultByEchotypeImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultByEchotypeImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultByEchotypeImportExportModel model = new EsduResultByEchotypeImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultByEchotypeImportRow newEmptyInstance() { + return new EsduResultByEchotypeImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java deleted file mode 100644 index ef2ad10..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportModel.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and echotypes. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultByEchotypeImportModel extends AbstractImportModel<EsduResultByEchotypeImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, - EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, - EsduResultByEchotypeImportRow.PROPERTY_VOYAGE - }; - - public EsduResultByEchotypeImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Echotype> echotypeMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultByEchotypeImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newForeignKeyColumn(EsduResultByEchotypeImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultByEchotypeImportRow>newResultValueSetter()); - } - } - - @Override - public EsduResultByEchotypeImportRow newEmptyInstance() { - return new EsduResultByEchotypeImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java index 11b8785..7d80c82 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultByEchotypeImportRow.java @@ -21,22 +21,22 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** - * Bean used as a row for import of {@link EsduResultByEchotypeImportModel}. + * Bean used as a row for import of {@link EsduResultByEchotypeImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultByEchotypeImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultByEchotypeImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java new file mode 100644 index 0000000..97e9877 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportExportModel.java @@ -0,0 +1,97 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and species and size category. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultBySpeciesAndAgeCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultBySpeciesAndAgeCategoryImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, + EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_VOYAGE + }; + + private EsduResultBySpeciesAndAgeCategoryImportExportModel(char separator) { + super(separator); + } + + public static EsduResultBySpeciesAndAgeCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndAgeCategoryImportExportModel model = new EsduResultBySpeciesAndAgeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY); + model.newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultBySpeciesAndAgeCategoryImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultBySpeciesAndAgeCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndAgeCategoryImportExportModel model = new EsduResultBySpeciesAndAgeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY); + model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultBySpeciesAndAgeCategoryImportRow newEmptyInstance() { + return new EsduResultBySpeciesAndAgeCategoryImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java deleted file mode 100644 index 65c6be0..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportModel.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and species and size category. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultBySpeciesAndAgeCategoryImportModel extends AbstractImportModel<EsduResultBySpeciesAndAgeCategoryImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, - EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_VOYAGE - }; - - public EsduResultBySpeciesAndAgeCategoryImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Species> speciesMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY); - newMandatoryColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_AGE_CATEGORY_MEANING); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(EsduResultBySpeciesAndAgeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultBySpeciesAndAgeCategoryImportRow>newResultValueSetter()); - } - } - - @Override - public EsduResultBySpeciesAndAgeCategoryImportRow newEmptyInstance() { - return new EsduResultBySpeciesAndAgeCategoryImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java index f4599b5..46194f7 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndAgeCategoryImportRow.java @@ -21,23 +21,23 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** * Bean used as a row for import of - * {@link EsduResultBySpeciesAndAgeCategoryImportModel}. + * {@link EsduResultBySpeciesAndAgeCategoryImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultBySpeciesAndAgeCategoryImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultBySpeciesAndAgeCategoryImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -58,13 +58,10 @@ public class EsduResultBySpeciesAndAgeCategoryImportRow implements EchoBaseCsvUt protected List<Result> result = Lists.newArrayList(); protected Species species; - + protected DataQuality dataQuality; private String ageCategory; - private String ageCategoryMeaning; - protected DataQuality dataQuality; - public void setVoyage(Voyage voyage) { this.voyage = voyage; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java new file mode 100644 index 0000000..88977da --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportExportModel.java @@ -0,0 +1,97 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import {@link Result} for esdu cell and species and size category. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class EsduResultBySpeciesAndSizeCategoryImportExportModel extends EchoBaseImportExportModelSupport<EsduResultBySpeciesAndSizeCategoryImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, + EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_VOYAGE + }; + + private EsduResultBySpeciesAndSizeCategoryImportExportModel(char separator) { + super(separator); + } + + public static EsduResultBySpeciesAndSizeCategoryImportExportModel forImport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndSizeCategoryImportExportModel model = new EsduResultBySpeciesAndSizeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueParser()); + model.newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY); + model.newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + model.newMandatoryColumn( + name, + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<EsduResultBySpeciesAndSizeCategoryImportRow>newResultValueSetter()); + } + return model; + + } + + public static EsduResultBySpeciesAndSizeCategoryImportExportModel forExport(VoyageResultsImportDataContext importDataContext, + List<DataMetadata> dataMetadatas) { + + EsduResultBySpeciesAndSizeCategoryImportExportModel model = new EsduResultBySpeciesAndSizeCategoryImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_CELL, importDataContext.getCellValueFormatter()); + model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY); + model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public EsduResultBySpeciesAndSizeCategoryImportRow newEmptyInstance() { + return new EsduResultBySpeciesAndSizeCategoryImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java deleted file mode 100644 index 90c1e9a..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportModel.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and species and size category. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class EsduResultBySpeciesAndSizeCategoryImportModel extends AbstractImportModel<EsduResultBySpeciesAndSizeCategoryImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, - EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_VOYAGE - }; - - public EsduResultBySpeciesAndSizeCategoryImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Species> speciesMap, - Voyage voyage, - Map<String, Cell> esduCellMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(EchoBaseCsvUtil.CELL_NAME, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_CELL, EchoBaseCsvUtil.newCellValueParser(voyage, esduCellMap)); - newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY); - newMandatoryColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SIZE_CATEGORY_MEANING); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(EsduResultBySpeciesAndSizeCategoryImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<EsduResultBySpeciesAndSizeCategoryImportRow>newResultValueSetter()); - } - } - - @Override - public EsduResultBySpeciesAndSizeCategoryImportRow newEmptyInstance() { - return new EsduResultBySpeciesAndSizeCategoryImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java index a709de5..eb84326 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/EsduResultBySpeciesAndSizeCategoryImportRow.java @@ -21,23 +21,23 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** * Bean used as a row for import of - * {@link EsduResultBySpeciesAndSizeCategoryImportModel}. + * {@link EsduResultBySpeciesAndSizeCategoryImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class EsduResultBySpeciesAndSizeCategoryImportRow implements EchoBaseCsvUtil.ResultAble { +public class EsduResultBySpeciesAndSizeCategoryImportRow implements ResultAble { public static final String PROPERTY_VOYAGE = "voyage"; @@ -58,13 +58,10 @@ public class EsduResultBySpeciesAndSizeCategoryImportRow implements EchoBaseCsvU protected List<Result> result = Lists.newArrayList(); protected Species species; - + protected DataQuality dataQuality; private String sizeCategory; - private String sizeCategoryMeaning; - protected DataQuality dataQuality; - public void setVoyage(Voyage voyage) { this.voyage = voyage; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.java new file mode 100644 index 0000000..586b80b --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportExportModel.java @@ -0,0 +1,72 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Model to import {@link GearMetadataValue}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class GearMetadataValueImportExportModel extends EchoBaseImportExportModelSupport<GearMetadataValueImportRow> { + + + private GearMetadataValueImportExportModel(char separator) { + super(separator); + } + + public static GearMetadataValueImportExportModel forImport(VoyageOperationsImportDataContext importDataContext) { + + GearMetadataValueImportExportModel model = new GearMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, GearMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, GearMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn("metadataType", GearMetadataValue.PROPERTY_GEAR_METADATA, GearMetadata.class, GearMetadata.PROPERTY_NAME, importDataContext.getGearMetadatasByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, GearMetadataValue.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, importDataContext.getGearsByCasinoGearName()); + model.newMandatoryColumn("gearMetadataValue", GearMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + public static GearMetadataValueImportExportModel forExport(VoyageOperationsImportDataContext importDataContext) { + + GearMetadataValueImportExportModel model = new GearMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, GearMetadataValueImportRow.PROPERTY_VESSEL, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, GearMetadataValueImportRow.PROPERTY_OPERATION, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport("metadataType", GearMetadataValue.PROPERTY_GEAR_METADATA, EchoBaseCsvUtil.GEAR_METADATA_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.GEAR_CODE, GearMetadataValue.PROPERTY_GEAR, EchoBaseCsvUtil.GEAR_FORMATTER); + model.newColumnForExport("gearMetadataValue", GearMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + @Override + public GearMetadataValueImportRow newEmptyInstance() { + return new GearMetadataValueImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java deleted file mode 100644 index 7eea2ef..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportModel.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.GearMetadataValue; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.GearMetadata; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link GearMetadataValue}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class GearMetadataValueImportModel extends AbstractImportModel<GearMetadataValueImportRow> { - - - public GearMetadataValueImportModel(char separator, - Map<String, Vessel> vesselMap, - Map<String, GearMetadata> gearMetadataMap, - Map<String, Gear> gearMap, - Map<String, Operation> operationMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, GearMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, GearMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - - newForeignKeyColumn("metadataType", GearMetadataValue.PROPERTY_GEAR_METADATA, GearMetadata.class, GearMetadata.PROPERTY_NAME, gearMetadataMap); - newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, GearMetadataValue.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, gearMap); - newMandatoryColumn("gearMetadataValue", GearMetadataValue.PROPERTY_DATA_VALUE); - - } - - @Override - public GearMetadataValueImportRow newEmptyInstance() { - return new GearMetadataValueImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java index 0ef4984..d06614a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/GearMetadataValueImportRow.java @@ -29,7 +29,7 @@ import fr.ifremer.echobase.entities.references.GearMetadata; import fr.ifremer.echobase.entities.references.Vessel; /** - * Bean used as a row for import of {@link GearMetadataValueImportModel}. + * Bean used as a row for import of {@link GearMetadataValueImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -39,13 +39,10 @@ public class GearMetadataValueImportRow { public static final String PROPERTY_VESSEL = Transect.PROPERTY_VESSEL; public static final String PROPERTY_OPERATION = Transect.PROPERTY_OPERATION; - + protected final GearMetadataValue gearMetadataValue; protected Vessel vessel; - protected Operation operation; - protected final GearMetadataValue gearMetadataValue; - public GearMetadataValueImportRow() { gearMetadataValue = new GearMetadataValueImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java new file mode 100644 index 0000000..424af2c --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportExportModel.java @@ -0,0 +1,75 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.LengthAgeKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link LengthAgeKey}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class LengthAgeKeyImportExportModel extends EchoBaseImportExportModelSupport<LengthAgeKeyImportRow> { + + private LengthAgeKeyImportExportModel(char separator) { + super(separator); + } + + public static LengthAgeKeyImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthAgeKeyImportExportModel model = new LengthAgeKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(LengthAgeKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_AGE, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_PERCENT_AT_AGE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(LengthAgeKey.PROPERTY_METADATA); + model.newForeignKeyColumn(LengthAgeKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, importDataContext.getStratasByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + return model; + + } + + public static LengthAgeKeyImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthAgeKeyImportExportModel model = new LengthAgeKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(LengthAgeKeyImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(LengthAgeKey.PROPERTY_AGE, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newColumnForExport(LengthAgeKey.PROPERTY_PERCENT_AT_AGE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(LengthAgeKey.PROPERTY_METADATA); + model.newColumnForExport(LengthAgeKey.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + return model; + + } + + @Override + public LengthAgeKeyImportRow newEmptyInstance() { + return new LengthAgeKeyImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java deleted file mode 100644 index 1fe4921..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportModel.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.LengthAgeKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Strata; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link LengthAgeKey}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class LengthAgeKeyImportModel extends AbstractImportModel<LengthAgeKeyImportRow> { - - public LengthAgeKeyImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Strata> strataMap, - Map<String, Species> speciesMap) { - super(separator); - - newForeignKeyColumn(LengthAgeKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - - newMandatoryColumn(LengthAgeKey.PROPERTY_AGE, EchoBaseCsvUtil.PRIMITIVE_INTEGER); - newMandatoryColumn(LengthAgeKey.PROPERTY_PERCENT_AT_AGE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(LengthAgeKey.PROPERTY_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(LengthAgeKey.PROPERTY_METADATA); - newForeignKeyColumn(LengthAgeKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, strataMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthAgeKey.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - } - - @Override - public LengthAgeKeyImportRow newEmptyInstance() { - return new LengthAgeKeyImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java index 4beb6ce..f231dd9 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthAgeKeyImportRow.java @@ -29,20 +29,17 @@ import fr.ifremer.echobase.entities.references.Strata; import java.io.Serializable; /** - * Bean used as a row for import of {@link LengthAgeKeyImportModel}. + * Bean used as a row for import of {@link LengthAgeKeyImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class LengthAgeKeyImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - - protected Voyage voyage; - + private static final long serialVersionUID = 1L; protected final LengthAgeKey lengthAgeKey; + protected Voyage voyage; public LengthAgeKeyImportRow() { lengthAgeKey = new LengthAgeKeyImpl(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java new file mode 100644 index 0000000..8efeaaa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportExportModel.java @@ -0,0 +1,74 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.LengthWeightKey; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link LengthWeightKey}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class LengthWeightKeyImportExportModel extends EchoBaseImportExportModelSupport<LengthWeightKeyImportRow> { + + private LengthWeightKeyImportExportModel(char separator) { + super(separator); + } + + public static LengthWeightKeyImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthWeightKeyImportExportModel model = new LengthWeightKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newMandatoryColumn("aParameter", LengthWeightKey.PROPERTY_APARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn("bParameter", LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthWeightKeyImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(LengthWeightKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, importDataContext.getStratasByName()); + return model; + + } + + public static LengthWeightKeyImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext) { + + LengthWeightKeyImportExportModel model = new LengthWeightKeyImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport("aParameter", LengthWeightKey.PROPERTY_APARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport("bParameter", LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(LengthWeightKeyImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(LengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, LengthWeightKeyImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(LengthWeightKey.PROPERTY_STRATA, EchoBaseCsvUtil.STRATA_FORMATTER); + return model; + + } + + @Override + public LengthWeightKeyImportRow newEmptyInstance() { + return new LengthWeightKeyImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java deleted file mode 100644 index c256543..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportModel.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.LengthWeightKey; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.Strata; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link LengthWeightKey}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class LengthWeightKeyImportModel extends AbstractImportModel<LengthWeightKeyImportRow> { - - public LengthWeightKeyImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Strata> strataMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, Species> speciesMap) { - super(separator); - newMandatoryColumn("aParameter", LengthWeightKey.PROPERTY_APARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn("bParameter", LengthWeightKey.PROPERTY_BPARAMETER, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - - newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(LengthWeightKeyImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, LengthWeightKeyImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(LengthWeightKey.PROPERTY_STRATA, Strata.class, Strata.PROPERTY_NAME, strataMap); - } - - @Override - public LengthWeightKeyImportRow newEmptyInstance() { - return new LengthWeightKeyImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java index f08012c..4427979 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/LengthWeightKeyImportRow.java @@ -30,29 +30,22 @@ import fr.ifremer.echobase.entities.references.Strata; import java.io.Serializable; /** - * Bean used as a row for import of {@link LengthWeightKeyImportModel}. + * Bean used as a row for import of {@link LengthWeightKeyImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class LengthWeightKeyImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_SPECIES = "species"; - public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory"; - + private static final long serialVersionUID = 1L; + protected final LengthWeightKey lengthWeightKey; protected Species species; - protected SizeCategory sizeCategory; - protected Voyage voyage; - protected final LengthWeightKey lengthWeightKey; - public LengthWeightKeyImportRow() { lengthWeightKey = new LengthWeightKeyImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java new file mode 100644 index 0000000..4a31ee6 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportExportModel.java @@ -0,0 +1,109 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +import java.util.List; + +/** + * Model to import cells of type 'Map'. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class MapCellImportExportModel extends EchoBaseImportExportModelSupport<MapCellImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + MapCellImportRow.PROPERTY_NAME, + Species.PROPERTY_BARACOUDA_CODE, + MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, + MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, + MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, + MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, + MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, + MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, + MapCellImportRow.PROPERTY_VOYAGE, + MapCellImportRow.PROPERTY_SIZE_CATEGORY, + MapCellImportRow.PROPERTY_AGE_CATEGORY, + MapCellImportRow.PROPERTY_DATA_QUALITY + }; + protected final CellType cellType; + + private MapCellImportExportModel(char separator, CellType cellType) { + super(separator); + this.cellType = cellType; + + } + + public static MapCellImportExportModel forImport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext, List<DataMetadata> dataMetadatas) { + + MapCellImportExportModel model = new MapCellImportExportModel(importDataContext.getCsvSeparator(), importDataContext.getMapCellType()); + model.newForeignKeyColumn(MapCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_NAME); + model.newForeignKeyColumn(MapCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + + for (DataMetadata metadata : dataMetadatas) { + model.newMandatoryColumn( + metadata.getName(), + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<MapCellImportRow>newResultValueSetter()); + } + return model; + + } + + public static MapCellImportExportModel forExport(VoyageImportDataContext<VoyageResultsImportConfiguration> importDataContext, List<DataMetadata> dataMetadatas) { + + MapCellImportExportModel model = new MapCellImportExportModel(importDataContext.getCsvSeparator(), importDataContext.getMapCellType()); + model.newColumnForExport(MapCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(MapCellImportRow.PROPERTY_NAME); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + + addResultsColumns(model, dataMetadatas); + return model; + + } + + @Override + public MapCellImportRow newEmptyInstance() { + return new MapCellImportRow(cellType); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java deleted file mode 100644 index 8d3addd..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportModel.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import cells of type 'Map'. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class MapCellImportModel extends AbstractImportModel<MapCellImportRow> { - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - MapCellImportRow.PROPERTY_NAME, - Species.PROPERTY_BARACOUDA_CODE, - MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, - MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, - MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, - MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, - MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, - MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, - MapCellImportRow.PROPERTY_VOYAGE, - MapCellImportRow.PROPERTY_SIZE_CATEGORY, - MapCellImportRow.PROPERTY_AGE_CATEGORY, - MapCellImportRow.PROPERTY_DATA_QUALITY - }; - - protected final CellType cellType; - - public MapCellImportModel(char separator, - CellType cellType, - Map<String, Voyage> voyageMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - this.cellType = cellType; - - newForeignKeyColumn(MapCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(MapCellImportRow.PROPERTY_NAME); - newForeignKeyColumn(MapCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - - for (DataMetadata metadata : dataMetadatas) { - newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<MapCellImportRow>newResultValueSetter()); - } - } - - public MapCellImportModel(char separator, - CellType cellType, - Map<String, Voyage> voyageMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, AgeCategory> ageCategoryMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - this.cellType = cellType; - - newForeignKeyColumn(MapCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(MapCellImportRow.PROPERTY_NAME); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, MapCellImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(MapCellImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(MapCellImportRow.PROPERTY_AGE_CATEGORY, AgeCategory.class, AgeCategory.PROPERTY_NAME, ageCategoryMap); - newForeignKeyColumn(MapCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_CELL_DEPTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LONGITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_LATITUDE_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(MapCellImportRow.PROPERTY_DATA_GRID_DEPTH_LAG, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - - for (DataMetadata metadata : dataMetadatas) { - newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<MapCellImportRow>newResultValueSetter()); - } - } - - @Override - public MapCellImportRow newEmptyInstance() { - return new MapCellImportRow(cellType); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java index 6169077..fc9d300 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/MapCellImportRow.java @@ -21,7 +21,6 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.CellImpl; import fr.ifremer.echobase.entities.data.Result; @@ -31,16 +30,17 @@ import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** - * Bean used as a row for import of {@link MapCellImportModel}. + * Bean used as a row for import of {@link MapCellImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { +public class MapCellImportRow implements ResultAble { public static final String PROPERTY_NAME = "name"; @@ -67,11 +67,8 @@ public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { public static final String PROPERTY_DATA_GRID_DEPTH_LAG = "gridDepthLag"; public static final String PROPERTY_DATA_QUALITY = "dataQuality"; - - protected Voyage voyage; - protected final Cell cell; - + protected Voyage voyage; protected List<Result> result = Lists.newArrayList(); protected Species species; @@ -107,18 +104,34 @@ public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { return voyage; } + public void setVoyage(Voyage voyage) { + this.voyage = voyage; + } + public Species getSpecies() { return species; } + public void setSpecies(Species species) { + this.species = species; + } + public SizeCategory getSizeCategory() { return sizeCategory; } + public void setSizeCategory(SizeCategory sizeCategory) { + this.sizeCategory = sizeCategory; + } + public AgeCategory getAgeCategory() { return ageCategory; } + public void setAgeCategory(AgeCategory ageCategory) { + this.ageCategory = ageCategory; + } + public List<Result> getResult() { return result; } @@ -127,70 +140,54 @@ public class MapCellImportRow implements EchoBaseCsvUtil.ResultAble { return gridCellLongitude; } - public float getGridCellLatitude() { - return gridCellLatitude; - } - - public float getGridCellDepth() { - return gridCellDepth; - } - - public float getGridLongitudeLag() { - return gridLongitudeLag; - } - - public float getGridLatitudeLag() { - return gridLatitudeLag; - } - - public float getGridDepthLag() { - return gridDepthLag; - } - - public void setName(String name) { - getCell().setName(name); - } - - public void setVoyage(Voyage voyage) { - this.voyage = voyage; - } - - public void setSpecies(Species species) { - this.species = species; - } - - public void setSizeCategory(SizeCategory sizeCategory) { - this.sizeCategory = sizeCategory; - } - - public void setAgeCategory(AgeCategory ageCategory) { - this.ageCategory = ageCategory; - } - public void setGridCellLongitude(float GridCellLongitude) { this.gridCellLongitude = GridCellLongitude; } + public float getGridCellLatitude() { + return gridCellLatitude; + } + public void setGridCellLatitude(float GridCellLatitude) { this.gridCellLatitude = GridCellLatitude; } + public float getGridCellDepth() { + return gridCellDepth; + } + public void setGridCellDepth(float GridCellDepth) { this.gridCellDepth = GridCellDepth; } + public float getGridLongitudeLag() { + return gridLongitudeLag; + } + public void setGridLongitudeLag(float GridLongitudeLag) { this.gridLongitudeLag = GridLongitudeLag; } + public float getGridLatitudeLag() { + return gridLatitudeLag; + } + public void setGridLatitudeLag(float GridLatitudeLag) { this.gridLatitudeLag = GridLatitudeLag; } + public float getGridDepthLag() { + return gridDepthLag; + } + public void setGridDepthLag(float GridDepthLag) { this.gridDepthLag = GridDepthLag; } + public void setName(String name) { + getCell().setName(name); + } + @Override public void addResult(Result result) { this.result.add(result); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java new file mode 100644 index 0000000..526b69e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportExportModel.java @@ -0,0 +1,84 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Model to import {@link Operation}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class OperationImportExportModel extends EchoBaseImportExportModelSupport<OperationImportRow> { + + private OperationImportExportModel(char separator) { + super(separator); + } + + public static OperationImportExportModel forImport(VoyageOperationsImportDataContext importDataContext) { + + OperationImportExportModel model = new OperationImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, Operation.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, importDataContext.getGearsByCasinoGearName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Operation.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, importDataContext.getDepthStratumsById()); + model.newMandatoryColumn(EchoBaseCsvUtil.OPERATION_ID, Operation.PROPERTY_ID); + model.newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + public static OperationImportExportModel forExport(VoyageOperationsImportDataContext importDataContext) { + + OperationImportExportModel model = new OperationImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, OperationImportRow.PROPERTY_VESSEL, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.GEAR_CODE, Operation.PROPERTY_GEAR, EchoBaseCsvUtil.GEAR_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Operation.PROPERTY_DEPTH_STRATUM, EchoBaseCsvUtil.DEPTH_STRATUM_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, Operation.PROPERTY_ID); + model.newColumnForExport(Operation.PROPERTY_MID_HAUL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_MID_HAUL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Operation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + @Override + public OperationImportRow newEmptyInstance() { + return new OperationImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java deleted file mode 100644 index 430c6d5..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportModel.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link Operation}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class OperationImportModel extends AbstractImportModel<OperationImportRow> { - - public OperationImportModel(char separator, - Map<String, Vessel> vesselMap, - Map<String, Gear> gearMap, - Map<String, DepthStratum> depthStratumMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - - newForeignKeyColumn(EchoBaseCsvUtil.GEAR_CODE, Operation.PROPERTY_GEAR, Gear.class, Gear.PROPERTY_CASINO_GEAR_NAME, gearMap); - newForeignKeyColumn(EchoBaseCsvUtil.DEPTH_STRATUM_ID, Operation.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, depthStratumMap); - newMandatoryColumn(EchoBaseCsvUtil.OPERATION_ID, Operation.PROPERTY_ID); - newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_MID_HAUL_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Operation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - } - - @Override - public OperationImportRow newEmptyInstance() { - return new OperationImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java index 48496ab..c81bada 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationImportRow.java @@ -30,7 +30,7 @@ import fr.ifremer.echobase.entities.references.Vessel; import java.util.Date; /** - * Bean used as a row for import of {@link OperationImportModel}. + * Bean used as a row for import of {@link OperationImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -38,10 +38,8 @@ import java.util.Date; public class OperationImportRow { public static final String PROPERTY_VESSEL = Transect.PROPERTY_VESSEL; - - protected Vessel vessel; - protected final Operation operation; + protected Vessel vessel; public OperationImportRow() { operation = new OperationImpl(); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java new file mode 100644 index 0000000..0c5a0b4 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportExportModel.java @@ -0,0 +1,68 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageOperationsImportDataContext; + +/** + * Model to import {@link OperationMetadataValue}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class OperationMetadataValueImportExportModel extends EchoBaseImportExportModelSupport<OperationMetadataValueImportRow> { + + private OperationMetadataValueImportExportModel(char separator) { + super(separator); + } + + public static OperationMetadataValueImportExportModel forImport(VoyageOperationsImportDataContext importDataContext) { + + OperationMetadataValueImportExportModel model = new OperationMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, OperationMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn("metadataType", OperationMetadataValue.PROPERTY_OPERATION_METADATA, OperationMetadata.class, OperationMetadata.PROPERTY_NAME, importDataContext.getOperationMetadatasByName()); + model.newMandatoryColumn("operationMetadataValue", OperationMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + public static OperationMetadataValueImportExportModel forExport(VoyageOperationsImportDataContext importDataContext) { + + OperationMetadataValueImportExportModel model = new OperationMetadataValueImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, OperationMetadataValueImportRow.PROPERTY_VESSEL, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, OperationMetadataValueImportRow.PROPERTY_OPERATION, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport("metadataType", OperationMetadataValue.PROPERTY_OPERATION_METADATA, EchoBaseCsvUtil.OPERATION_FMETADATA_ORMATTER); + model.newColumnForExport("operationMetadataValue", OperationMetadataValue.PROPERTY_DATA_VALUE); + return model; + + } + + @Override + public OperationMetadataValueImportRow newEmptyInstance() { + return new OperationMetadataValueImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java deleted file mode 100644 index 2b03c00..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportModel.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.OperationMetadataValue; -import fr.ifremer.echobase.entities.references.OperationMetadata; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link OperationMetadataValue}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class OperationMetadataValueImportModel extends AbstractImportModel<OperationMetadataValueImportRow> { - - public OperationMetadataValueImportModel(char separator, - Map<String, Vessel> vesselMap, - Map<String, OperationMetadata> operationMetadataMap, - Map<String, Operation> operationMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, OperationMetadataValueImportRow.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, OperationMetadataValueImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - - newForeignKeyColumn("metadataType", OperationMetadataValue.PROPERTY_OPERATION_METADATA, OperationMetadata.class, OperationMetadata.PROPERTY_NAME, operationMetadataMap); - newMandatoryColumn("operationMetadataValue", OperationMetadataValue.PROPERTY_DATA_VALUE); - } - - @Override - public OperationMetadataValueImportRow newEmptyInstance() { - return new OperationMetadataValueImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java index 6a12174..24bdcc2 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/OperationMetadataValueImportRow.java @@ -28,7 +28,7 @@ import fr.ifremer.echobase.entities.references.OperationMetadata; import fr.ifremer.echobase.entities.references.Vessel; /** - * Bean used as a row for import of {@link OperationMetadataValueImportModel}. + * Bean used as a row for import of {@link OperationMetadataValueImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -38,13 +38,10 @@ public class OperationMetadataValueImportRow { public static final String PROPERTY_VESSEL = Transect.PROPERTY_VESSEL; public static final String PROPERTY_OPERATION = Transect.PROPERTY_OPERATION; - + protected final OperationMetadataValue operationMetadataValue; protected Operation operation; - protected Vessel vessel; - protected final OperationMetadataValue operationMetadataValue; - public OperationMetadataValueImportRow() { operationMetadataValue = new OperationMetadataValueImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java new file mode 100644 index 0000000..215903e --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportExportModel.java @@ -0,0 +1,64 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +/** + * Model to import cells associations from region cells and esdu cells. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class RegionCellAssociationImportExportModel extends EchoBaseImportExportModelSupport<RegionCellAssociationImportRow> { + + private RegionCellAssociationImportExportModel(char separator) { + super(separator); + } + + public static RegionCellAssociationImportExportModel forImport(VoyageResultsImportDataContext importDataContext) { + + RegionCellAssociationImportExportModel model = new RegionCellAssociationImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellAssociationImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn("regionName", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, Cell.class, Cell.PROPERTY_NAME, importDataContext.getEsduCellsByName()); + model.newMandatoryColumn("esduName", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, importDataContext.newCellValueParser()); + return model; + + } + + public static RegionCellAssociationImportExportModel forExport(VoyageResultsImportDataContext importDataContext) { + + RegionCellAssociationImportExportModel model = new RegionCellAssociationImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellAssociationImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport("regionName", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, EchoBaseCsvUtil.CELL_FORMATTER); + model.newColumnForExport("esduName", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, importDataContext.newCellValueFormatter()); + return model; + + } + + @Override + public RegionCellAssociationImportRow newEmptyInstance() { + return new RegionCellAssociationImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java deleted file mode 100644 index c7785e1..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportModel.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Voyage; -import org.nuiton.csv.ValueParser; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import cells associations from region cells and esdu cells. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class RegionCellAssociationImportModel extends AbstractImportModel<RegionCellAssociationImportRow> { - - public RegionCellAssociationImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Cell> regionCellMap, - ValueParser<Cell> cellParser) { - super(separator); - newForeignKeyColumn(RegionCellAssociationImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn("regionName", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, Cell.class, Cell.PROPERTY_NAME, regionCellMap); - newMandatoryColumn("esduName", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, cellParser); - - } - - @Override - public RegionCellAssociationImportRow newEmptyInstance() { - return new RegionCellAssociationImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java index 1a21f2f..c62ab4a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellAssociationImportRow.java @@ -24,7 +24,7 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Voyage; /** - * Bean used as a row for import of {@link RegionCellAssociationImportModel}. + * Bean used as a row for import of {@link RegionCellAssociationImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -50,22 +50,22 @@ public class RegionCellAssociationImportRow { return voyage; } - public Cell getRegionCell() { - return regionCell; - } - - public Cell getEsduCell() { - return esduCell; - } - public void setVoyage(Voyage voyage) { this.voyage = voyage; } + public Cell getRegionCell() { + return regionCell; + } + public void setRegionCell(Cell regionCell) { this.regionCell = regionCell; } + public Cell getEsduCell() { + return esduCell; + } + public void setEsduCell(Cell esduCell) { this.esduCell = esduCell; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java new file mode 100644 index 0000000..f27cbaa --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportExportModel.java @@ -0,0 +1,71 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +/** + * Model to import cells (with type "region"). + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class RegionCellImportExportModel extends EchoBaseImportExportModelSupport<RegionCellImportRow> { + + private RegionCellImportExportModel(char separator) { + super(separator); + } + + public static RegionCellImportExportModel forImport(VoyageResultsImportDataContext importDataContext) { + + RegionCellImportExportModel model = new RegionCellImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_CELL_TYPE, CellType.class, CellType.PROPERTY_ID, importDataContext.getRegionCellTypesById()); + model.newForeignKeyColumn(RegionCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + model.newMandatoryColumn(RegionCellImportRow.PROPERTY_NAME); + model.newMandatoryColumn("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); + model.newMandatoryColumn("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + public static RegionCellImportExportModel forExport(VoyageResultsImportDataContext importDataContext) { + + RegionCellImportExportModel model = new RegionCellImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(RegionCellImportRow.PROPERTY_CELL_TYPE, EchoBaseCsvUtil.CELL_TYPE_FORMATTER); + model.newColumnForExport(RegionCellImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + model.newColumnForExport(RegionCellImportRow.PROPERTY_NAME); + model.newColumnForExport("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); + model.newColumnForExport("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + @Override + public RegionCellImportRow newEmptyInstance() { + return new RegionCellImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java deleted file mode 100644 index bb13862..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportModel.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.DataQuality; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import cells (with type "region"). - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class RegionCellImportModel extends AbstractImportModel<RegionCellImportRow> { - - public RegionCellImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, CellType> cellTypeMap, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(RegionCellImportRow.PROPERTY_CELL_TYPE, CellType.class, CellType.PROPERTY_ID, cellTypeMap); - newForeignKeyColumn(RegionCellImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - newMandatoryColumn(RegionCellImportRow.PROPERTY_NAME); - newMandatoryColumn("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); - newMandatoryColumn("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - } - - @Override - public RegionCellImportRow newEmptyInstance() { - return new RegionCellImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java index d1a0678..ffaa87c 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellImportRow.java @@ -25,7 +25,7 @@ import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataQuality; /** - * Bean used as a row for import of {@link RegionCellImportModel}. + * Bean used as a row for import of {@link RegionCellImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -63,38 +63,38 @@ public class RegionCellImportRow { return voyage; } - public CellType getCellType() { - return cellType; + public void setVoyage(Voyage voyage) { + this.voyage = voyage; } - public String getName() { - return name; + public CellType getCellType() { + return cellType; } - public String getDataCoordinate() { - return dataCoordinate; + public void setCellType(CellType cellType) { + this.cellType = cellType; } - public float getDataSurface() { - return dataSurface; + public String getName() { + return name; } public void setName(String name) { this.name = name; } - public void setVoyage(Voyage voyage) { - this.voyage = voyage; - } - - public void setCellType(CellType cellType) { - this.cellType = cellType; + public String getDataCoordinate() { + return dataCoordinate; } public void setDataCoordinate(String dataCoordinate) { this.dataCoordinate = dataCoordinate; } + public float getDataSurface() { + return dataSurface; + } + public void setDataSurface(float dataSurface) { this.dataSurface = dataSurface; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java new file mode 100644 index 0000000..7b7afd8 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportExportModel.java @@ -0,0 +1,96 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImportDataContext; + +import java.util.List; + +/** + * Model to import results of cell of type 'Region'. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class RegionCellResultImportExportModel extends EchoBaseImportExportModelSupport<RegionCellResultImportRow> { + + public static final String[] COLUMN_NAMES_TO_EXCLUDE = { + EchoBaseCsvUtil.CELL_NAME, + Species.PROPERTY_BARACOUDA_CODE, + RegionCellResultImportRow.PROPERTY_VOYAGE, + RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, + RegionCellResultImportRow.PROPERTY_ECHOTYPE, + RegionCellResultImportRow.PROPERTY_DATA_QUALITY + }; + + private RegionCellResultImportExportModel(char separator) { + super(separator); + } + + public static RegionCellResultImportExportModel forImport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { + + RegionCellResultImportExportModel model = new RegionCellResultImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.CELL_NAME, RegionCellResultImportRow.PROPERTY_CELL, Cell.class, Cell.PROPERTY_NAME, importDataContext.getVoyageRegionsByName()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, importDataContext.getVoyageEchotypesByName()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, RegionCellResultImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); + + for (DataMetadata metadata : dataMetadatas) { + model.newMandatoryColumn( + metadata.getName(), + EchoBaseCsvUtil.newResultValueParser(metadata, false), + EchoBaseCsvUtil.<RegionCellResultImportRow>newResultValueSetter()); + } + return model; + + } + + public static RegionCellResultImportExportModel forExport(VoyageResultsImportDataContext importDataContext, List<DataMetadata> dataMetadatas) { + + RegionCellResultImportExportModel model = new RegionCellResultImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.CELL_NAME, RegionCellResultImportRow.PROPERTY_CELL, EchoBaseCsvUtil.CELL_FORMATTER); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_ECHOTYPE, EchoBaseCsvUtil.ECHOTYPE_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, RegionCellResultImportRow.PROPERTY_SPECIES, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(RegionCellResultImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); + + addResultsColumns(model, dataMetadatas); + + return model; + + } + + @Override + public RegionCellResultImportRow newEmptyInstance() { + return new RegionCellResultImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java deleted file mode 100644 index 8e2f5c0..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportModel.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.List; -import java.util.Map; - -/** - * Model to import results of cell of type 'Region'. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class RegionCellResultImportModel extends AbstractImportModel<RegionCellResultImportRow> { - - - public static final String[] COLUMN_NAMES_TO_EXCLUDE = { - EchoBaseCsvUtil.CELL_NAME, - Species.PROPERTY_BARACOUDA_CODE, - RegionCellResultImportRow.PROPERTY_VOYAGE, - RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, - RegionCellResultImportRow.PROPERTY_ECHOTYPE, - RegionCellResultImportRow.PROPERTY_DATA_QUALITY - }; - - public RegionCellResultImportModel( - char separator, - Map<String, Voyage> voyageMap, - Map<String, Cell> regionCellMap, - Map<String, Echotype> echotypeMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - List<DataMetadata> dataMetadatas, - Map<String, DataQuality> dataQualityMap) { - super(separator); - - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(EchoBaseCsvUtil.CELL_NAME, RegionCellResultImportRow.PROPERTY_CELL, Cell.class, Cell.PROPERTY_NAME, regionCellMap); - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, RegionCellResultImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(RegionCellResultImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, dataQualityMap); - - for (DataMetadata metadata : dataMetadatas) { - newMandatoryColumn( - metadata.getName(), - EchoBaseCsvUtil.newResultValueParser(metadata, false), - EchoBaseCsvUtil.<RegionCellResultImportRow>newResultValueSetter()); - } - } - - @Override - public RegionCellResultImportRow newEmptyInstance() { - return new RegionCellResultImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java index da4dbb1..52fcf43 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/RegionCellResultImportRow.java @@ -21,7 +21,6 @@ package fr.ifremer.echobase.services.service.importdata.csv; import com.google.common.collect.Lists; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; @@ -29,16 +28,17 @@ import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.ResultAble; import java.util.List; /** - * Bean used as a row for import of {@link RegionCellResultImportModel}. + * Bean used as a row for import of {@link RegionCellResultImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ -public class RegionCellResultImportRow implements EchoBaseCsvUtil.ResultAble { +public class RegionCellResultImportRow implements ResultAble { public static final String PROPERTY_NAME = "name"; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java new file mode 100644 index 0000000..c1de923 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportExportModel.java @@ -0,0 +1,87 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link SampleData}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class SubSampleImportExportModel extends EchoBaseImportExportModelSupport<SubSampleImportRow> { + + private SubSampleImportExportModel(char separator) { + super(separator); + } + + public static SubSampleImportExportModel forImport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + SubSampleImportExportModel model = new SubSampleImportExportModel(importDataContext.getCsvSeparator()); + model.newIgnoredColumn("subHaul"); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, SubSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, SubSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(SubSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newForeignKeyColumn(SubSampleImportRow.PROPERTY_SEX_CATEGORY, SexCategory.class, SexCategory.PROPERTY_NAME, importDataContext.getSexCategoriesByName()); + model.newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_NUMBER_AT_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_WEIGHT_AT_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_LENGTH_CLASS); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_UNITS); + model.newMandatoryColumn(SubSampleImportRow.PROPERTY_ROUND, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + return model; + + } + + public static SubSampleImportExportModel forExport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + SubSampleImportExportModel model = new SubSampleImportExportModel(importDataContext.getCsvSeparator()); +// model.newIgnoredColumn("subHaul"); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_SEX_CATEGORY, EchoBaseCsvUtil.SEX_CATEGORY_FORMATTER); + model.newColumnForExport(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.PRIMITIVE_INTEGER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_NUMBER_AT_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(SubSampleImportRow.PROPERTY_WEIGHT_AT_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(SubSampleImportRow.PROPERTY_LENGTH_CLASS); + model.newColumnForExport(SubSampleImportRow.PROPERTY_UNITS); + model.newColumnForExport(SubSampleImportRow.PROPERTY_ROUND, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + return model; + + } + + @Override + public SubSampleImportRow newEmptyInstance() { + return new SubSampleImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java deleted file mode 100644 index 2c25e55..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportModel.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link SampleData}. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class SubSampleImportModel extends AbstractImportModel<SubSampleImportRow> { - - public SubSampleImportModel(char separator, - Map<String, Operation> operationMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, SexCategory> sexCategoryMap) { - super(separator); - - newIgnoredColumn("subHaul"); - - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, SubSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, SubSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(SubSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - newForeignKeyColumn(SubSampleImportRow.PROPERTY_SEX_CATEGORY, SexCategory.class, SexCategory.PROPERTY_NAME, sexCategoryMap); - - newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.PRIMITIVE_INTEGER); - - newMandatoryColumn(SubSampleImportRow.PROPERTY_NUMBER_AT_LENGTH, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(SubSampleImportRow.PROPERTY_WEIGHT_AT_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(SubSampleImportRow.PROPERTY_LENGTH_CLASS); - newMandatoryColumn(SubSampleImportRow.PROPERTY_UNITS); - newMandatoryColumn(SubSampleImportRow.PROPERTY_ROUND, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); - } - - @Override - public SubSampleImportRow newEmptyInstance() { - return new SubSampleImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java index 31f6ba9..1774c8f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/SubSampleImportRow.java @@ -28,7 +28,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; /** - * Bean used as a row for import of {@link SubSampleImportModel}. + * Bean used as a row for import of {@link SubSampleImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -54,17 +54,11 @@ public class SubSampleImportRow { public static final String PROPERTY_UNITS = "units"; public static final String PROPERTY_ROUND = "round"; - + protected final Sample sample; protected Operation operation; - protected Species species; - protected SizeCategory sizeCategory; - protected SexCategory sexCategory; - - protected final Sample sample; - protected float numberAtLength; protected Float weightAtLength; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java new file mode 100644 index 0000000..22c6ecf --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportExportModel.java @@ -0,0 +1,79 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import {@link Sample} of total type. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class TotalSampleImportExportModel extends EchoBaseImportExportModelSupport<TotalSampleImportRow> { + + private TotalSampleImportExportModel(char separator) { + super(separator); + } + + public static TotalSampleImportExportModel forImport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + TotalSampleImportExportModel model = new TotalSampleImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, TotalSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, importDataContext.getVoyageOperationsById()); + model.newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, TotalSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, importDataContext.getSpeciesByBaracoudaCode()); + model.newForeignKeyColumn(TotalSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, importDataContext.getSizeCategoriesByName()); + model.newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_WEIGHT, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_NO_PER_KG, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newMandatoryColumn(TotalSampleImportRow.PROPERTY_SORTED_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + public static TotalSampleImportExportModel forExport(VoyageImportDataContext<VoyageCatchesImportConfiguration> importDataContext) { + + TotalSampleImportExportModel model = new TotalSampleImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(EchoBaseCsvUtil.OPERATION_ID, EchoBaseCsvUtil.OPERATION_FORMATTER); + model.newColumnForExport(Species.PROPERTY_BARACOUDA_CODE, EchoBaseCsvUtil.SPECIES_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_SIZE_CATEGORY, EchoBaseCsvUtil.SIZE_CATEGORY_FORMATTER); + model.newColumnForExport(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_MEAN_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_MEAN_WEIGHT, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_NO_PER_KG, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); + model.newColumnForExport(TotalSampleImportRow.PROPERTY_SORTED_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + return model; + + } + + @Override + public TotalSampleImportRow newEmptyInstance() { + return new TotalSampleImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java deleted file mode 100644 index f2499d1..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportModel.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import {@link Sample} of total type. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class TotalSampleImportModel extends AbstractImportModel<TotalSampleImportRow> { - - public TotalSampleImportModel(char separator, - Map<String, Operation> operationMap, - Map<String, Species> speciesMap, - Map<String, SizeCategory> sizeCategoryMap) { - super(separator); - - newForeignKeyColumn(EchoBaseCsvUtil.OPERATION_ID, TotalSampleImportRow.PROPERTY_OPERATION, Operation.class, Operation.PROPERTY_ID, operationMap); - newForeignKeyColumn(Species.PROPERTY_BARACOUDA_CODE, TotalSampleImportRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newForeignKeyColumn(TotalSampleImportRow.PROPERTY_SIZE_CATEGORY, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); - - newMandatoryColumn(Sample.PROPERTY_SAMPLE_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Sample.PROPERTY_NUMBER_SAMPLED, EchoBaseCsvUtil.NA_TO_INTEGER_PARSER_FORMATTER); - - newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_LENGTH, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(TotalSampleImportRow.PROPERTY_MEAN_WEIGHT, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(TotalSampleImportRow.PROPERTY_NO_PER_KG, EchoBaseCsvUtil.NA_TO_FLOAT_PARSER_FORMATTER); - newMandatoryColumn(TotalSampleImportRow.PROPERTY_SORTED_WEIGHT, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - } - - @Override - public TotalSampleImportRow newEmptyInstance() { - return new TotalSampleImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java index f383d99..1ad6dea 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TotalSampleImportRow.java @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; /** - * Bean used as a row for import of {@link TotalSampleImportModel}. + * Bean used as a row for import of {@link TotalSampleImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -49,23 +49,15 @@ public class TotalSampleImportRow { public static final String PROPERTY_NO_PER_KG = "noPerKg"; public static final String PROPERTY_SORTED_WEIGHT = "sortedWeight"; - + protected final Sample sample; protected Float meanLength; - protected Float meanWeight; - protected Float noPerKg; - protected float sortedWeight; - protected Operation operation; - protected Species species; - protected SizeCategory sizeCategory; - protected final Sample sample; - public TotalSampleImportRow() { sample = new SampleImpl(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java new file mode 100644 index 0000000..f57bb0f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportExportModel.java @@ -0,0 +1,93 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Transect; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import transects. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class TransectImportExportModel extends EchoBaseImportExportModelSupport<TransectImportRow> { + + private TransectImportExportModel(char separator) { + super(separator); + } + + public static TransectImportExportModel forImport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransectImportExportModel model = new TransectImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(TransectImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newForeignKeyColumn(EchoBaseCsvUtil.VESSEL_NAME, Transect.PROPERTY_VESSEL, Vessel.class, Vessel.PROPERTY_NAME, importDataContext.getVesselsByName()); + model.newMandatoryColumn(Transect.PROPERTY_TITLE); + model.newMandatoryColumn(Transect.PROPERTY_TRANSECT_ABSTRACT); + model.newMandatoryColumn(Transect.PROPERTY_STRATUM); + model.newMandatoryColumn(Transect.PROPERTY_COMMENT); + model.newMandatoryColumn(Transect.PROPERTY_DATE_CREATED, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newMandatoryColumn(Transect.PROPERTY_LINESTRING); + return model; + + } + + public static TransectImportExportModel forExport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransectImportExportModel model = new TransectImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(TransectImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(EchoBaseCsvUtil.VESSEL_NAME, EchoBaseCsvUtil.VESSEL_FORMATTER); + model.newColumnForExport(Transect.PROPERTY_TITLE); + model.newColumnForExport(Transect.PROPERTY_TRANSECT_ABSTRACT); + model.newColumnForExport(Transect.PROPERTY_STRATUM); + model.newColumnForExport(Transect.PROPERTY_COMMENT); + model.newColumnForExport(Transect.PROPERTY_DATE_CREATED, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transect.PROPERTY_TIME_COVERAGE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transect.PROPERTY_TIME_COVERAGE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LON_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LAT_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LON_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_LAT_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); + model.newColumnForExport(Transect.PROPERTY_LINESTRING); + return model; + + } + + @Override + public TransectImportRow newEmptyInstance() { + return new TransectImportRow(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java deleted file mode 100644 index 31363f7..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportModel.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Transect; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Vessel; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import transects. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class TransectImportModel extends AbstractImportModel<TransectImportRow> { - - public TransectImportModel(char separator, - Map<String, Voyage> voyageMap, - Map<String, Vessel> vesselMap) { - super(separator); - newForeignKeyColumn( - TransectImportRow.PROPERTY_VOYAGE, - Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - - newForeignKeyColumn( - EchoBaseCsvUtil.VESSEL_NAME, Transect.PROPERTY_VESSEL, - Vessel.class, Vessel.PROPERTY_NAME, vesselMap); - - newMandatoryColumn(Transect.PROPERTY_TITLE); - newMandatoryColumn(Transect.PROPERTY_TRANSECT_ABSTRACT); - newMandatoryColumn(Transect.PROPERTY_STRATUM); - newMandatoryColumn(Transect.PROPERTY_COMMENT); - - newMandatoryColumn(Transect.PROPERTY_DATE_CREATED, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_START, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transect.PROPERTY_TIME_COVERAGE_END, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MIN, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LON_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_LAT_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_GEOSPATIAL_VERTICAL_MAX, EchoBaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn(Transect.PROPERTY_LINESTRING); - } - - @Override - public TransectImportRow newEmptyInstance() { - return new TransectImportRow(); - } - -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java index 67a2a6d..4f79dfa 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransectImportRow.java @@ -29,17 +29,15 @@ import java.io.Serializable; import java.util.Date; /** - * Bean used as a row for import of {@link TransectImportModel}. + * Bean used as a row for import of {@link TransectImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 */ public class TransectImportRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String PROPERTY_VOYAGE = "voyage"; - + private static final long serialVersionUID = 1L; protected Voyage voyage; protected Transect transect; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java new file mode 100644 index 0000000..50ef71f --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportExportModel.java @@ -0,0 +1,71 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Transit; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import Transits. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class TransitImportExportModel extends EchoBaseImportExportModelSupport<TransitImportRow> { + + private TransitImportExportModel(char separator) { + super(separator); + } + + public static TransitImportExportModel forImport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransitImportExportModel model = new TransitImportExportModel(importDataContext.getCsvSeparator()); + model.newForeignKeyColumn(TransitImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, importDataContext.getVoyagesByName()); + model.newMandatoryColumn(Transit.PROPERTY_DESCRIPTION); + model.newMandatoryColumn(Transit.PROPERTY_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transit.PROPERTY_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Transit.PROPERTY_START_LOCALITY); + model.newMandatoryColumn(Transit.PROPERTY_END_LOCALITY); + return model; + + } + + public static TransitImportExportModel forExport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + TransitImportExportModel model = new TransitImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(TransitImportRow.PROPERTY_VOYAGE, EchoBaseCsvUtil.VOYAGE_FORMATTER); + model.newColumnForExport(Transit.PROPERTY_DESCRIPTION); + model.newColumnForExport(Transit.PROPERTY_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transit.PROPERTY_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Transit.PROPERTY_START_LOCALITY); + model.newColumnForExport(Transit.PROPERTY_END_LOCALITY); + return model; + + } + + @Override + public TransitImportRow newEmptyInstance() { + return new TransitImportRow(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java deleted file mode 100644 index 3ea2234..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportModel.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Transit; -import fr.ifremer.echobase.entities.data.Voyage; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -import java.util.Map; - -/** - * Model to import Transits. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class TransitImportModel extends AbstractImportModel<TransitImportRow> { - - public TransitImportModel(char separator, - Map<String, Voyage> voyageMap) { - super(separator); - newForeignKeyColumn(TransitImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newMandatoryColumn(Transit.PROPERTY_DESCRIPTION); - newMandatoryColumn(Transit.PROPERTY_START_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transit.PROPERTY_END_TIME, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Transit.PROPERTY_START_LOCALITY); - newMandatoryColumn(Transit.PROPERTY_END_LOCALITY); - } - - @Override - public TransitImportRow newEmptyInstance() { - return new TransitImportRow(); - } -} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java index ebc1f7f..90ec738 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/TransitImportRow.java @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.data.Voyage; import java.util.Date; /** - * Bean used as a row for import of {@link TransitImportModel}. + * Bean used as a row for import of {@link TransitImportExportModel}. * * @author Tony Chemit - chemit@codelutin.com * @since 0.3 @@ -35,11 +35,8 @@ import java.util.Date; public class TransitImportRow { public static final String PROPERTY_VOYAGE = "voyage"; - - protected Voyage voyage; - protected final Transit transit; - + protected Voyage voyage; protected String description; protected String relatedActivity; diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java new file mode 100644 index 0000000..8bd44cf --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportExportModel.java @@ -0,0 +1,69 @@ +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.service.importdata.csv; + +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.data.VoyageImpl; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.contexts.VoyageImportDataContext; + +/** + * Model to import Voyages. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 0.3 + */ +public class VoyageImportExportModel extends EchoBaseImportExportModelSupport<Voyage> { + + private VoyageImportExportModel(char separator) { + super(separator); + } + + public static VoyageImportExportModel forImport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + VoyageImportExportModel model = new VoyageImportExportModel(importDataContext.getCsvSeparator()); + model.newMandatoryColumn(Voyage.PROPERTY_NAME); + model.newMandatoryColumn(Voyage.PROPERTY_START_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Voyage.PROPERTY_END_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newMandatoryColumn(Voyage.PROPERTY_START_PORT); + model.newMandatoryColumn(Voyage.PROPERTY_END_PORT); + return model; + + } + + public static VoyageImportExportModel forExport(VoyageImportDataContext<VoyageCommonsImportConfiguration> importDataContext) { + + VoyageImportExportModel model = new VoyageImportExportModel(importDataContext.getCsvSeparator()); + model.newColumnForExport(Voyage.PROPERTY_NAME); + model.newColumnForExport(Voyage.PROPERTY_START_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Voyage.PROPERTY_END_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); + model.newColumnForExport(Voyage.PROPERTY_START_PORT); + model.newColumnForExport(Voyage.PROPERTY_END_PORT); + return model; + + } + + @Override + public Voyage newEmptyInstance() { + return new VoyageImpl(); + } +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java deleted file mode 100644 index 2c399cd..0000000 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageImportModel.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services.service.importdata.csv; - -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.data.VoyageImpl; -import org.nuiton.topia.service.csv.in.AbstractImportModel; - -/** - * Model to import Voyages. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 0.3 - */ -public class VoyageImportModel extends AbstractImportModel<Voyage> { - - public VoyageImportModel(char separator) { - super(separator); - newMandatoryColumn(Voyage.PROPERTY_NAME); - newMandatoryColumn(Voyage.PROPERTY_START_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Voyage.PROPERTY_END_DATE, EchoBaseCsvUtil.IMPORT_DAY_TIME_ECHOBASE); - newMandatoryColumn(Voyage.PROPERTY_START_PORT); - newMandatoryColumn(Voyage.PROPERTY_END_PORT); - } - - @Override - public Voyage newEmptyInstance() { - return new VoyageImpl(); - } -} diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java index 51c1468..304f35a 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/FixCellsIT.java @@ -22,12 +22,12 @@ package fr.ifremer.echobase.services; */ import com.google.common.collect.Sets; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.service.UserDbPersistenceService; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.CellPositionReference; import fr.ifremer.echobase.services.service.importdata.ImportDataService; import fr.ifremer.echobase.services.service.importdata.ImportException; @@ -118,7 +118,7 @@ public class FixCellsIT extends EchoBaseTestServiceSupport { protected void importMissingEsduCells() throws IOException, ImportException { - AcousticImportConfiguration conf = new AcousticImportConfiguration(getLocale()); + VoyageAcousticsImportConfiguration conf = new VoyageAcousticsImportConfiguration(getLocale()); prepareInputFile(conf.getMoviesFile(), "/missingEsduCells.csv.gz"); conf.setCellPositionReference(CellPositionReference.START); @@ -158,13 +158,13 @@ Seens years 2003 :: 26595 } - protected void doImport(AcousticImportConfiguration conf, int... years) throws ImportException { + protected void doImport(VoyageAcousticsImportConfiguration conf, int... years) throws ImportException { System.gc(); ImportDataService service = newService(ImportDataService.class); - service.doImportAcoustics(conf, createFakeUser()); + service.doImportVoyageAcoustics(conf, createFakeUser()); System.gc(); } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java index 1846336..5736efa 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AbstractImportDataServiceIT.java @@ -24,7 +24,7 @@ import com.google.common.base.Charsets; import com.google.common.collect.Collections2; import com.google.common.collect.Sets; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.CellTopiaDao; @@ -48,6 +48,7 @@ import fr.ifremer.echobase.entities.references.CellTypeTopiaDao; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseTestServiceSupport; import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -110,7 +111,7 @@ public abstract class AbstractImportDataServiceIT extends EchoBaseTestServiceSup assertNbEntities(Echotype.class, fixtures.NB_ECHOTYPE()); } - protected <M extends AbstractImportConfiguration> Set<ImportDataFileResult> doImport(M conf, ImportDataService.ImportDataAction<M> importDataAction, int nbResults) throws ImportException { + protected <M extends VoyageImportDataConfigurationSupport> Set<ImportDataFileResult> doImport(M conf, ImportDataService.ImportDataAction<M> importDataAction, int nbResults) throws ImportException { ImportDataService service = newService(ImportDataService.class); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java index 1f5f463..7e2d45e 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/AcousticImportServiceIT.java @@ -25,6 +25,7 @@ import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataProcessing; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -53,7 +54,7 @@ public class AcousticImportServiceIT extends AbstractImportDataServiceIT { Cell.class, Data.class); - AcousticImportConfiguration conf = new AcousticImportConfiguration(getLocale()); + VoyageAcousticsImportConfiguration conf = new VoyageAcousticsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setVesselId(fixtures.VESSEL_ID()); @@ -76,7 +77,7 @@ public class AcousticImportServiceIT extends AbstractImportDataServiceIT { prepareInputFile(conf.getMoviesFile(), getImportPath("movies.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.AcousticImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageAcousticsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_CELL()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java index 197f0b1..723ae69 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceIT.java @@ -24,6 +24,7 @@ import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -49,7 +50,7 @@ public class CatchesImportServiceIT extends AbstractImportDataServiceIT { assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); @@ -57,7 +58,7 @@ public class CatchesImportServiceIT extends AbstractImportDataServiceIT { prepareInputFile(conf.getSubSampleFile(), getImportPath("subsample.csv.gz")); prepareInputFile(conf.getBiometrySampleFile(), getImportPath("biometrysample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_SAMPLE_TOTAL()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java index 794f248..7ddb31b 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyBiometrySampleIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -48,13 +49,13 @@ public class CatchesImportServiceOnlyBiometrySampleIT extends AbstractImportData assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); prepareInputFile(conf.getBiometrySampleFile(), getImportPath("biometrysample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_SAMPLE_BIOMETRY()); assertCsvImportResult(result, 0, Sample.class, fixtures.NB_SAMPLE_BIOMETRY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java index 2a8442c..f2c36e1 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlySubSampleIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -48,13 +49,13 @@ public class CatchesImportServiceOnlySubSampleIT extends AbstractImportDataServi assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); prepareInputFile(conf.getSubSampleFile(), getImportPath("subsample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_SAMPLE_UNSORTED()); assertCsvImportResult(result, 0, Sample.class, fixtures.NB_SAMPLE_UNSORTED()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java index 28b4073..47027a9 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CatchesImportServiceOnlyTotalSampleIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.data.Sample; import fr.ifremer.echobase.entities.data.SampleData; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; import org.junit.Test; import java.util.Set; @@ -48,13 +49,13 @@ public class CatchesImportServiceOnlyTotalSampleIT extends AbstractImportDataSer assertImportOperations(); assertNoEntities(Sample.class, SampleData.class); - CatchesImportConfiguration conf = new CatchesImportConfiguration(getLocale()); + VoyageCatchesImportConfiguration conf = new VoyageCatchesImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); prepareInputFile(conf.getTotalSampleFile(), getImportPath("totalsample.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CatchesImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCatchesImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_SAMPLE_TOTAL()); assertCsvImportResult(result, 0, Sample.class, fixtures.NB_SAMPLE_TOTAL()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java index 8e2118a..54048c1 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonAllImportServiceIT.java @@ -25,6 +25,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -53,7 +54,7 @@ public class CommonAllImportServiceIT extends AbstractImportDataServiceIT { // import with mode all (voyage / transit / transect) - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setAreaOfOperationId(fixtures.AREA_OF_OPERATION_ID()); conf.setDatum(fixtures.DATUM()); @@ -70,7 +71,7 @@ public class CommonAllImportServiceIT extends AbstractImportDataServiceIT { conf.setImportType(ImportType.COMMON_ALL); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_VOYAGE()); assertCsvImportResult(result, 0, Voyage.class, fixtures.NB_VOYAGE()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java index b950161..d5df2ea 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransectImportServiceIT.java @@ -24,6 +24,7 @@ import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -49,7 +50,7 @@ public class CommonTransectImportServiceIT extends AbstractImportDataServiceIT { assertImportCommonData(); - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setDatum(fixtures.DATUM()); conf.setVoyageId(getVoyageId()); @@ -66,7 +67,7 @@ public class CommonTransectImportServiceIT extends AbstractImportDataServiceIT { transit.clearTransect(); } - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_TRANSECT()); assertCsvImportResult(result, 0, Transect.class, fixtures.NB_TRANSECT()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java index e9ad1ce..ab82331 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonTransitImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -59,7 +60,7 @@ public class CommonTransitImportServiceIT extends AbstractImportDataServiceIT { // import common data with mode transit - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setTransitRelatedActivity(fixtures.TRANSIT_RELATED_ACTIVITY()); @@ -68,7 +69,7 @@ public class CommonTransitImportServiceIT extends AbstractImportDataServiceIT { conf.setImportType(ImportType.COMMON_TRANSIT); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_TRANSIT()); assertCsvImportResult(result, 0, Transit.class, fixtures.NB_TRANSIT()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java index 9e473ad..fc643c5 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/CommonVoyageImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class CommonVoyageImportServiceIT extends AbstractImportDataServiceIT { // import with mode voyage - CommonImportConfiguration conf = new CommonImportConfiguration(getLocale()); + VoyageCommonsImportConfiguration conf = new VoyageCommonsImportConfiguration(getLocale()); conf.setAreaOfOperationId(fixtures.AREA_OF_OPERATION_ID()); conf.setDatum(fixtures.DATUM()); @@ -65,7 +66,7 @@ public class CommonVoyageImportServiceIT extends AbstractImportDataServiceIT { conf.setImportType(ImportType.COMMON_VOYAGE); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.CommonImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageCommonsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_VOYAGE()); assertCsvImportResult(result, 0, Voyage.class, fixtures.NB_VOYAGE()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java index e0cb551..1d45c56 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/OperationImportServiceIT.java @@ -24,6 +24,7 @@ import fr.ifremer.echobase.entities.data.GearMetadataValue; import fr.ifremer.echobase.entities.data.Operation; import fr.ifremer.echobase.entities.data.OperationMetadataValue; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -51,7 +52,7 @@ public class OperationImportServiceIT extends AbstractImportDataServiceIT { OperationMetadataValue.class, GearMetadataValue.class); - OperationImportConfiguration conf = new OperationImportConfiguration(getLocale()); + VoyageOperationsImportConfiguration conf = new VoyageOperationsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); @@ -62,7 +63,7 @@ public class OperationImportServiceIT extends AbstractImportDataServiceIT { prepareInputFile(conf.getGearMetadataFile(), getImportPath("gearmetadatavalue.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.OperationsImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageOperationsImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_OPERATION()); assertCsvImportResult(result, 0, Operation.class, fixtures.NB_OPERATION()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java index b15fac5..5c73646 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsEsduCellImportServiceIT.java @@ -20,7 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata; -import fr.ifremer.echobase.csv.EchoBaseCsvUtil; +import fr.ifremer.echobase.services.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Result; @@ -29,6 +29,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -58,7 +59,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -71,7 +72,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 43533); @@ -89,7 +90,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -102,7 +103,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 357291); @@ -121,7 +122,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -134,7 +135,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 68108); assertCsvImportResult(result, 0, Result.class, 68108); @@ -153,7 +154,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -166,7 +167,7 @@ public class ResultsEsduCellImportServiceIT extends AbstractImportDataServiceIT conf.setDataProcessingId(getDataProcessingId()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 10021); assertCsvImportResult(result, 0, Category.class, 14); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java index 2706777..3dc9e42 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapFishCellImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class ResultsMapFishCellImportServiceIT extends AbstractImportDataService assertNoEntities(Result.class, Data.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -62,7 +63,7 @@ public class ResultsMapFishCellImportServiceIT extends AbstractImportDataService prepareInputFile(conf.getMapsFile(), getImportPath("mapsFish.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 380); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java index dcb54db..f42e5e4 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsMapOtherCellImportServiceIT.java @@ -26,6 +26,7 @@ import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class ResultsMapOtherCellImportServiceIT extends AbstractImportDataServic assertNoEntities(Result.class, Data.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -62,7 +63,7 @@ public class ResultsMapOtherCellImportServiceIT extends AbstractImportDataServic prepareInputFile(conf.getMapsFile(), getImportPath("mapsOther.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, 380); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java index 504e32a..8658503 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsRegionCellImportServiceIT.java @@ -27,6 +27,7 @@ import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.references.SpeciesCategory; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -55,7 +56,7 @@ public class ResultsRegionCellImportServiceIT extends AbstractImportDataServiceI assertNoEntities(Result.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); @@ -72,7 +73,7 @@ public class ResultsRegionCellImportServiceIT extends AbstractImportDataServiceI conf.getVoyageId(), conf.getRegionAssociationFile()); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 3); assertNbIDs(result, 0, 10); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java index 297e83a..98cc11c 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceIT.java @@ -25,6 +25,7 @@ import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.LengthAgeKey; import fr.ifremer.echobase.entities.data.LengthWeightKey; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -54,7 +55,7 @@ public class ResultsVoyageImportServiceIT extends AbstractImportDataServiceIT { assertNoEntities(LengthWeightKey.class); assertNoEntities(Echotype.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); @@ -65,7 +66,7 @@ public class ResultsVoyageImportServiceIT extends AbstractImportDataServiceIT { getImportPath("lengthWeightKey.csv.gz")); prepareInputFile(conf.getEchotypeFile(), getImportPath("echotype.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 3); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 3); assertNbIDs(result, 0, fixtures.NB_LENGTH_AGE_KEY()); assertCsvImportResult(result, 0, LengthAgeKey.class, fixtures.NB_LENGTH_AGE_KEY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java index 9d6122e..422751c 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyEchotypeIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -50,14 +51,14 @@ public class ResultsVoyageImportServiceOnlyEchotypeIT extends AbstractImportData assertNoEntities(Echotype.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); prepareInputFile(conf.getEchotypeFile(), getImportPath("echotype.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_ECHOTYPE()); assertCsvImportResult(result, 0, Echotype.class, fixtures.NB_ECHOTYPE()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java index ee8cee9..afa853b 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthAgeKeyIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.LengthAgeKey; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -50,7 +51,7 @@ public class ResultsVoyageImportServiceOnlyLengthAgeKeyIT extends AbstractImport assertNoEntities(LengthAgeKey.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); @@ -58,7 +59,7 @@ public class ResultsVoyageImportServiceOnlyLengthAgeKeyIT extends AbstractImport prepareInputFile(conf.getLengthAgeKeyFile(), getImportPath("lengthAgeKey.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_LENGTH_AGE_KEY()); assertCsvImportResult(result, 0, LengthAgeKey.class, fixtures.NB_LENGTH_AGE_KEY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java index dab283c..3acfab2 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/ResultsVoyageImportServiceOnlyLengthWeightKeyIT.java @@ -23,6 +23,7 @@ package fr.ifremer.echobase.services.service.importdata; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.LengthWeightKey; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import org.junit.Test; import java.util.Set; @@ -50,7 +51,7 @@ public class ResultsVoyageImportServiceOnlyLengthWeightKeyIT extends AbstractImp assertNoEntities(LengthWeightKey.class); - ResultsImportConfiguration conf = new ResultsImportConfiguration(getLocale()); + VoyageResultsImportConfiguration conf = new VoyageResultsImportConfiguration(getLocale()); conf.setVoyageId(getVoyageId()); conf.setImportType(ImportType.RESULT_VOYAGE); @@ -58,7 +59,7 @@ public class ResultsVoyageImportServiceOnlyLengthWeightKeyIT extends AbstractImp prepareInputFile(conf.getLengthWeightKeyFile(), getImportPath("lengthWeightKey.csv.gz")); - Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.ResultsImportDataAction(), 1); + Set<ImportDataFileResult> result = doImport(conf, new ImportDataService.VoyageResultsImportDataAction(), 1); assertNbIDs(result, 0, fixtures.NB_LENGTH_WEIGHT_KEY()); assertCsvImportResult(result, 0, LengthWeightKey.class, fixtures.NB_LENGTH_WEIGHT_KEY()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java index f35112c..9ed63dc 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java @@ -75,13 +75,13 @@ import fr.ifremer.echobase.entities.references.Strata; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.services.EchoBaseTestServiceSupport; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; -import fr.ifremer.echobase.services.service.importdata.AbstractImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.AcousticImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.CatchesImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.CommonImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageImportDataConfigurationSupport; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageAcousticsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCatchesImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageCommonsImportConfiguration; import fr.ifremer.echobase.services.service.importdata.ImportDataService; -import fr.ifremer.echobase.services.service.importdata.OperationImportConfiguration; -import fr.ifremer.echobase.services.service.importdata.ResultsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageOperationsImportConfiguration; +import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import fr.ifremer.echobase.services.service.removedata.RemoveDataConfiguration; import fr.ifremer.echobase.services.service.removedata.RemoveDataService; import org.apache.commons.collections4.CollectionUtils; @@ -383,7 +383,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonVoyage1Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_VOYAGE, "Common/Voyage1", voyage1Id, @@ -408,7 +408,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonVoyage2Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_VOYAGE, "Common/Voyage2", voyage2Id, @@ -435,7 +435,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransit1Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSIT, "Common/Transit1", voyage1Id, @@ -462,7 +462,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransit2Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSIT, "Common/Transit2", voyage2Id, @@ -497,7 +497,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransect1Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSECT, "Common/Transect1", voyage1Id, @@ -531,7 +531,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS persistenceContext.commit(); importCommonTransect2Id = createImport( - new CommonImportConfiguration(getLocale()), + new VoyageCommonsImportConfiguration(getLocale()), ImportType.COMMON_TRANSECT, "Common/Transect2", voyage2Id, @@ -569,7 +569,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS operation.addGearMetadataValue(gearMetadataValue); importOperation1Id = createImport( - new OperationImportConfiguration(getLocale()), + new VoyageOperationsImportConfiguration(getLocale()), ImportType.OPERATION, "Operation1", voyage1Id, @@ -629,7 +629,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS biometrySample.addSampleData(biometrySampleData); importCatches1Id = createImport( - new CatchesImportConfiguration(getLocale()), + new VoyageCatchesImportConfiguration(getLocale()), ImportType.CATCHES, "Catches1", voyage1Id, @@ -673,7 +673,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS elementaryCell.addData(elementaryData); importAcoustic1Id = createImport( - new AcousticImportConfiguration(getLocale()), + new VoyageAcousticsImportConfiguration(getLocale()), ImportType.ACOUSTIC, "Acoustic1", voyage1Id, @@ -711,7 +711,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS voyage.addLengthWeightKey(lengthWeightKey); importResultVoyage1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_VOYAGE, "ResultsVoyage1", voyage1Id, @@ -735,7 +735,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS cell.addResult(result); importResultEsdu1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_ESDU, "ResultsEsdu1", voyage1Id, @@ -767,7 +767,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS region.addResult(result); importResultRegion1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_REGION, "ResultsRegion1", voyage1Id, @@ -795,7 +795,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS map.addResult(result); importResultMapFish1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_MAP_FISH, "ResultsMapFish1", voyage1Id, @@ -822,18 +822,18 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS map.addResult(result); importResultMapOther1Id = createImport( - new ResultsImportConfiguration(getLocale()), + new VoyageResultsImportConfiguration(getLocale()), ImportType.RESULT_MAP_OTHER, "ResultsMapOther1", voyage1Id, map); } - private <C extends AbstractImportConfiguration> String createImport(C importConf, - ImportType importType, - String importNote, - String voyageId, - TopiaEntity... importIds) { + private <C extends VoyageImportDataConfigurationSupport> String createImport(C importConf, + ImportType importType, + String importNote, + String voyageId, + TopiaEntity... importIds) { importConf.setImportType(importType); importConf.setImportNotes(importNote); importConf.setVoyageId(voyageId); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.