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 47649ae66721626d0d8eb7a9d645565df2a32456 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Apr 4 07:41:44 2016 +0200 Region import ok \o/ (See #8170) --- ...VoyageResultsRegionAssociationImportAction.java | 38 +++++++- .../actions/VoyageResultsRegionImportAction.java | 86 +++++++++++++++-- .../VoyageResultsRegionResultsImportAction.java | 106 ++++++++++++++++++++- .../RegionCellAssociationImportExportModel.java | 12 ++- .../csv/RegionCellAssociationImportRow.java | 10 +- .../importdata/csv/RegionCellImportRow.java | 22 ++++- .../importdata/csv/RegionCellResultImportRow.java | 28 +++++- .../VoyageResultsRegionCellImportServiceIT.java | 57 ++++++++--- .../result/region/regionAssociations_small.csv.gz | Bin 0 -> 296 bytes 9 files changed, 323 insertions(+), 36 deletions(-) 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 index a686530..675c085 100644 --- 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 @@ -1,7 +1,9 @@ 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.Cell; +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; @@ -11,6 +13,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; +import java.util.LinkedHashMap; +import java.util.Map; + /** * Created on 25/03/16. * @@ -36,6 +41,8 @@ public class VoyageResultsRegionAssociationImportAction extends VoyageResultsImp return RegionCellAssociationImportExportModel.forExport(importDataContext); } + private final Map<String, String> esduCellDataIdToRegionCellId = new LinkedHashMap<>(); + @Override protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { @@ -54,7 +61,13 @@ public class VoyageResultsRegionAssociationImportAction extends VoyageResultsImp Cell regionCell = row.getRegionCell(); Cell esduCell = row.getEsduCell(); regionCell.addChilds(esduCell); - result.incrementsNumberUpdated(EchoBaseUserEntityEnum.Cell); + + if (!esduCellDataIdToRegionCellId.containsValue(regionCell.getTopiaId())) { + result.incrementsNumberUpdated(EchoBaseUserEntityEnum.Cell); + } + + addProcessedRow(result, row); + esduCellDataIdToRegionCellId.put(esduCell.getTopiaId(), regionCell.getTopiaId()); } @@ -65,7 +78,28 @@ public class VoyageResultsRegionAssociationImportAction extends VoyageResultsImp @Override protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - // TODO + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage voyage = persistenceService.getVoyage(voyageId); + + for (Map.Entry<String, String> entry : esduCellDataIdToRegionCellId.entrySet()) { + + String esduCellId = entry.getKey(); + String regionCellId = entry.getValue(); + + if (log.isInfoEnabled()) { + log.info("Treat imported esduCell association: " + esduCellId + " to regionCell: " + regionCellId); + } + + Cell esduCell = persistenceService.getCell(esduCellId); + Preconditions.checkNotNull(esduCell); + + Cell regionCell = persistenceService.getCell(regionCellId); + Preconditions.checkNotNull(regionCell); + + RegionCellAssociationImportRow row = RegionCellAssociationImportRow.of(voyage, regionCell, esduCell); + addImportedRow(result, row); + + } } 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 index 87466e2..e021356 100644 --- 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 @@ -1,9 +1,16 @@ package fr.ifremer.echobase.services.service.importdata.actions; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Data; +import fr.ifremer.echobase.entities.data.Datas; 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; @@ -13,6 +20,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; +import java.util.Map; +import java.util.TreeMap; + /** * Created on 25/03/16. * @@ -38,6 +48,8 @@ public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActi return RegionCellImportExportModel.forExport(importDataContext); } + private final Map<String, String> cellDataCoordinateIdToCellId = new TreeMap<>(); + @Override protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { @@ -58,11 +70,18 @@ public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActi for (RegionCellImportRow row : importer) { doFlushTransaction(++rowNumber); + + DataQuality dataQuality = row.getDataQuality(); + if (cell == null || !row.getName().equals(cell.getName())) { cell = persistenceService.createCell(row.getCellType(), row.getName()); voyage.addPostCell(cell); + if (log.isInfoEnabled()) { + log.info("Create new region cell: " + cell); + } + // collect ids result.addId(EchoBaseUserEntityEnum.Cell, cell); @@ -70,16 +89,25 @@ public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActi createCellData(cell, dataSurfaceMeta, String.valueOf(row.getDataSurface()), - row.getDataQuality(), - result); + dataQuality, + result, + true); + } // add coordinate data - createCellData(cell, - dataCoordinateMeta, - row.getDataCoordinate(), - row.getDataQuality(), - result); + Data cellData = createCellData(cell, + dataCoordinateMeta, + row.getDataCoordinate(), + dataQuality, + result, + true); + + cellDataCoordinateIdToCellId.put(cellData.getTopiaId(), cell.getTopiaId()); + + + addProcessedRow(result, row); + } } @@ -89,7 +117,49 @@ public class VoyageResultsRegionImportAction extends VoyageResultsImportDataActi @Override protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - // TODO + DataMetadata dataCoordinateMeta = importDataContext.getRegionEnvCoordinateMeta(); + DataMetadata dataSurfaceMeta = importDataContext.getSurfaceMeta(); + + Predicate<Data> dataPredicate = Datas.newPredicateByDataMetadata(dataSurfaceMeta); + + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage voyage = persistenceService.getVoyage(voyageId); + + for (String cellDataId : filterIds(Data.class, result.getIds())) { + + String cellId = cellDataCoordinateIdToCellId.get(cellDataId); + if (cellId == null) { + + // Treat only coordindate data, since there is exactly one per row + // The surface data is the same for all rows of a same region cell + continue; + } + + if (log.isInfoEnabled()) { + log.info("Treat imported coordinate data: " + cellDataId + " for cell: " + cellId); + } + + Preconditions.checkNotNull(cellId); + + Cell cell = persistenceService.getCell(cellId); + Preconditions.checkNotNull(cell); + Preconditions.checkState(cell.isDataNotEmpty()); + + Data coordinateData = cell.getDataByTopiaId(cellDataId); + Preconditions.checkNotNull(coordinateData); + Preconditions.checkState(dataCoordinateMeta.equals(coordinateData.getDataMetadata())); + + Optional<Data> optionalSurfaceData = Iterables.tryFind(cell.getData(), dataPredicate); + Preconditions.checkState(optionalSurfaceData.isPresent()); + + String surfaceDataValue = optionalSurfaceData.get().getDataValue(); + Preconditions.checkNotNull(coordinateData); + + RegionCellImportRow row = RegionCellImportRow.of(voyage, cell, coordinateData, Float.valueOf(surfaceDataValue)); + + addImportedRow(result, row); + + } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java index 9e37f5e..be8dd7a 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageResultsRegionResultsImportAction.java @@ -1,7 +1,10 @@ package fr.ifremer.echobase.services.service.importdata.actions; +import com.google.common.base.Preconditions; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.service.importdata.ImportDataFileResult; @@ -13,7 +16,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; +import java.util.LinkedList; import java.util.List; +import java.util.Map; +import java.util.TreeMap; /** * Created on 25/03/16. @@ -44,6 +50,8 @@ public class VoyageResultsRegionResultsImportAction extends VoyageResultsImportD } + private final Map<String, String> resultIdToCellId = new TreeMap<>(); + @Override protected void performImport(VoyageResultsImportDataContext importDataContext, InputFile inputFile, ImportDataFileResult result) { @@ -71,7 +79,14 @@ public class VoyageResultsRegionResultsImportAction extends VoyageResultsImportD null, result); - addResults(row, cell, category, resultLabel, result, false, false); + String cellTopiaId = cell.getTopiaId(); + + List<Result> cellResults = addResults(row, cell, category, resultLabel, result, true, false); + for (Result cellResult : cellResults) { + resultIdToCellId.put(cellResult.getTopiaId(), cellTopiaId); + } + + addProcessedRow(result, row); } } @@ -81,7 +96,94 @@ public class VoyageResultsRegionResultsImportAction extends VoyageResultsImportD @Override protected void computeImportedExport(VoyageResultsImportDataContext importDataContext, ImportDataFileResult result) { - // TODO + String voyageId = importDataContext.getConfiguration().getVoyageId(); + Voyage voyage = persistenceService.getVoyage(voyageId); + + String lastCellId = null; + Category lastCategory = null; + + List<Result> cellResults = new LinkedList<>(); + for (String resultId : result.getIds()) { + + String cellId = resultIdToCellId.get(resultId); + + if (lastCellId != null && !lastCellId.equals(cellId)) { + + Preconditions.checkState(!cellResults.isEmpty(), "Can't flush a cell (" + lastCellId + " ) with no result..."); + + // flush current cell + Cell cell = persistenceService.getCell(lastCellId); + + if (log.isInfoEnabled()) { + log.info("Cell has changed, flushing " + cellResults.size() + " results for cell: " + cell + " with category " + lastCategory); + } + RegionCellResultImportRow row = RegionCellResultImportRow.of(voyage, cell, lastCategory, cellResults); + + addImportedRow(result, row); + + lastCellId = null; + cellResults.clear(); + + } + + if (lastCellId == null) { + + lastCellId = cellId; + lastCategory = null; + + + if (log.isInfoEnabled()) { + log.info("New result cell: " + cellId); + } + + } + + Result cellResult = persistenceService.getResult(resultId); + + if (lastCategory != null && !lastCategory.equals(cellResult.getCategory())) { + + Preconditions.checkState(!cellResults.isEmpty(), "Can't flush a cell (" + lastCellId + " ) with no result..."); + + // flush current cell + Cell cell = persistenceService.getCell(lastCellId); + + if (log.isInfoEnabled()) { + log.info("Cell result category has changed, flushing " + cellResults.size() + " results for cell: " + cell + " with category " + lastCategory); + } + + RegionCellResultImportRow row = RegionCellResultImportRow.of(voyage, cell, lastCategory, cellResults); + + addImportedRow(result, row); + + lastCategory = null; + cellResults.clear(); + + } + + if (lastCategory == null) { + + // first row for this category + lastCategory = cellResult.getCategory(); + + if (log.isInfoEnabled()) { + log.info("New result category: " + lastCategory + " for cell: " + lastCellId); + } + + } + + cellResults.add(cellResult); + + } + + if (!cellResults.isEmpty()) { + + // flush last cell + Cell cell = persistenceService.getCell(lastCellId); + + RegionCellResultImportRow row = RegionCellResultImportRow.of(voyage, cell, lastCategory, cellResults); + addImportedRow(result, row); + + } } 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 index 215903e..93f6b71 100644 --- 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 @@ -33,6 +33,10 @@ import fr.ifremer.echobase.services.service.importdata.contexts.VoyageResultsImp */ public class RegionCellAssociationImportExportModel extends EchoBaseImportExportModelSupport<RegionCellAssociationImportRow> { + public static final String HEADER_REGION_NAME = "regionName"; + public static final String HEADER_ESDU_NAME = "esduName"; + + private RegionCellAssociationImportExportModel(char separator) { super(separator); } @@ -41,8 +45,8 @@ public class RegionCellAssociationImportExportModel extends EchoBaseImportExport 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()); + model.newForeignKeyColumn(HEADER_REGION_NAME, RegionCellAssociationImportRow.PROPERTY_REGION_CELL, Cell.class, Cell.PROPERTY_NAME, importDataContext.getVoyageRegionsByName()); + model.newMandatoryColumn(HEADER_ESDU_NAME, RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, importDataContext.newCellValueParser()); return model; } @@ -51,8 +55,8 @@ public class RegionCellAssociationImportExportModel extends EchoBaseImportExport 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()); + model.newColumnForExport(HEADER_REGION_NAME, RegionCellAssociationImportRow.PROPERTY_REGION_CELL, EchoBaseCsvUtil.CELL_FORMATTER); + model.newColumnForExport(HEADER_ESDU_NAME, RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, importDataContext.newCellValueFormatter()); return model; } 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 c62ab4a..e2ebe59 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 @@ -32,9 +32,7 @@ import fr.ifremer.echobase.entities.data.Voyage; public class RegionCellAssociationImportRow { public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_ESDU_CELL = "esduCell"; - public static final String PROPERTY_REGION_CELL = "regionCell"; protected Voyage voyage; @@ -43,6 +41,14 @@ public class RegionCellAssociationImportRow { protected Cell regionCell; + public static RegionCellAssociationImportRow of(Voyage voyage, Cell regionCell, Cell esduCell) { + RegionCellAssociationImportRow row = new RegionCellAssociationImportRow(); + row.setVoyage(voyage); + row.setRegionCell(regionCell); + row.setEsduCell(esduCell); + return row; + } + public RegionCellAssociationImportRow() { } 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 ffaa87c..2cacb38 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 @@ -20,6 +20,8 @@ */ 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.Voyage; import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.DataQuality; @@ -32,18 +34,18 @@ import fr.ifremer.echobase.entities.references.DataQuality; */ public class RegionCellImportRow { - public static final String PROPERTY_NAME = "name"; + public static final String PROPERTY_NAME = Cell.PROPERTY_NAME; public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_CELL_TYPE = "cellType"; + public static final String PROPERTY_CELL_TYPE = Cell.PROPERTY_CELL_TYPE; + + public static final String PROPERTY_DATA_QUALITY = Data.PROPERTY_DATA_QUALITY; public static final String PROPERTY_DATA_COORDINATE = "dataCoordinate"; public static final String PROPERTY_DATA_SURFACE = "dataSurface"; - public static final String PROPERTY_DATA_QUALITY = "dataQuality"; - protected Voyage voyage; protected CellType cellType; @@ -106,4 +108,16 @@ public class RegionCellImportRow { public void setDataQuality(DataQuality dataQuality) { this.dataQuality = dataQuality; } + + public static RegionCellImportRow of(Voyage voyage, Cell cell, Data coordinateData, float surfaceDataValue) { + RegionCellImportRow row = new RegionCellImportRow(); + row.setVoyage(voyage); + row.setName(cell.getName()); + row.setCellType(cell.getCellType()); + row.setDataSurface(surfaceDataValue); + row.setDataCoordinate(coordinateData.getDataValue()); + row.setDataQuality(coordinateData.getDataQuality()); + return row; + } + } 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 52fcf43..6cbd0e9 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 @@ -20,7 +20,8 @@ */ package fr.ifremer.echobase.services.service.importdata.csv; -import com.google.common.collect.Lists; +import com.google.common.base.Preconditions; +import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.Result; @@ -30,6 +31,7 @@ import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.services.csv.ResultAble; +import java.util.ArrayList; import java.util.List; /** @@ -60,7 +62,7 @@ public class RegionCellResultImportRow implements ResultAble { protected Cell cell; - protected List<Result> result = Lists.newArrayList(); + protected final List<Result> result = new ArrayList<>(); protected Species species; @@ -84,6 +86,7 @@ public class RegionCellResultImportRow implements ResultAble { this.cell = cell; } + @Override public List<Result> getResult() { return result; } @@ -117,11 +120,32 @@ public class RegionCellResultImportRow implements ResultAble { this.voyage = voyage; } + @Override public DataQuality getDataQuality() { return dataQuality; } + @Override public void setDataQuality(DataQuality dataQuality) { this.dataQuality = dataQuality; } + + public static RegionCellResultImportRow of(Voyage voyage, Cell cell, Category category, List<Result> result) { + Preconditions.checkNotNull(voyage); + Preconditions.checkNotNull(cell); + Preconditions.checkNotNull(category); + Preconditions.checkNotNull(result); + Preconditions.checkArgument(!result.isEmpty()); + + RegionCellResultImportRow row = new RegionCellResultImportRow(); + row.setVoyage(voyage); + row.setCell(cell); + row.result.clear(); + row.result.addAll(result); + row.setSpecies(category.getSpeciesCategory().getSpecies()); + row.setSizeCategory(category.getSpeciesCategory().getSizeCategory()); + row.setEchotype(category.getEchotype()); + row.setDataQuality(result.get(0).getDataQuality()); + return row; + } } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsRegionCellImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsRegionCellImportServiceIT.java index 490e924..a81f21c 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsRegionCellImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageResultsRegionCellImportServiceIT.java @@ -20,6 +20,7 @@ */ package fr.ifremer.echobase.services.service.importdata; +import com.google.common.collect.Iterables; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; @@ -30,7 +31,6 @@ import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; import fr.ifremer.echobase.services.service.importdata.configurations.VoyageResultsImportConfiguration; import java.io.IOException; -import java.util.Set; /** * @author Tony Chemit - chemit@codelutin.com @@ -55,35 +55,68 @@ public class VoyageResultsRegionCellImportServiceIT extends VoyageResultsImportS VoyageResultsImportConfiguration configuration = super.createConfiguration(); configuration.setImportType(ImportType.RESULT_REGION); prepareInputFile(configuration.getRegionsFile(), getImportPath("regions.csv.gz")); - prepareInputFile(configuration.getRegionAssociationFile(), getImportPath("regionAssociations.csv.gz")); + prepareInputFile(configuration.getRegionAssociationFile(), getImportPath("regionAssociations_small.csv.gz")); prepareInputFile(configuration.getRegionResultFile(), getImportPath("regionResults.csv.gz")); addMissingEsduCells("esduName", configuration.getVoyageId(), configuration.getRegionAssociationFile()); + assertNbEntities(Cell.class, NB_ESDU_CELLS); + return configuration; } + public static final int NB_ESDU_CELLS = 22; + @Override protected void assertBeforeImport() { assertImportCommonData(); assertImportOperations(); assertImportSampleDatas(); assertImportVoyageResult(); - assertNoEntities(Result.class); + assertNoEntities(Cell.class); + assertNoEntities(Data.class); } @Override protected void assertAfertImport(ImportDataResult<VoyageResultsImportConfiguration> result) throws IOException { - Set<ImportDataFileResult> importDataFileResults = result.getImportResults(); - assertNbIds(importDataFileResults, 0, 10); - - assertCsvImportResult(importDataFileResults, 0, Cell.class, 10, 0, 2083); - assertCsvImportResult(importDataFileResults, 0, Data.class, 238); - assertCsvImportResult(importDataFileResults, 1, Cell.class, 0, 4146, 2083); - assertCsvImportResult(importDataFileResults, 2, Result.class, 2128); - assertCsvImportResult(importDataFileResults, 2, Category.class, 27); - assertCsvImportResult(importDataFileResults, 2, SpeciesCategory.class, 1, 0, 457); +// Set<ImportDataFileResult> importDataFileResults = result.getImportResults(); +// assertNbIds(importDataFileResults, 0, 10); + + int nbRegionCell = 10; + int nbRegionCellData = 238; + int nbRegionCellResult = 1873; + + int nbCell = NB_ESDU_CELLS + nbRegionCell; + + { + ImportDataFileResult importDataFileResult = Iterables.get(result.getImportResults(), 0); + assertCsvImportResultPerEntity(importDataFileResult, Cell.class, nbRegionCell, 0, nbCell); + assertCsvImportResultPerEntity(importDataFileResult, Data.class, nbRegionCellData, 0, nbRegionCellData); + assertCsvImportResult0(importDataFileResult, nbRegionCell + nbRegionCellData); + } + + { + ImportDataFileResult importDataFileResult = Iterables.get(result.getImportResults(), 1); + assertCsvImportResultPerEntity(importDataFileResult, Cell.class, 0, nbRegionCell, nbCell); + assertCsvImportResult0(importDataFileResult, 0); + } + + { + ImportDataFileResult importDataFileResult = Iterables.get(result.getImportResults(), 2); + assertCsvImportResultPerEntity(importDataFileResult, Result.class, nbRegionCellResult, 0, nbRegionCellResult); + assertCsvImportResultPerEntity(importDataFileResult, Category.class, 27, 0, 27); + assertCsvImportResultPerEntity(importDataFileResult, SpeciesCategory.class, 1, 0, 457); + assertCsvImportResult0(importDataFileResult, nbRegionCellResult); + } + + +// assertCsvImportResult(importDataFileResults, 0, Cell.class, 10, 0, 2083); +// assertCsvImportResult(importDataFileResults, 0, Data.class, 238); +// assertCsvImportResult(importDataFileResults, 1, Cell.class, 0, 4146, 2083); +// assertCsvImportResult(importDataFileResults, 2, Result.class, 2128); +// assertCsvImportResult(importDataFileResults, 2, Category.class, 27); +// assertCsvImportResult(importDataFileResults, 2, SpeciesCategory.class, 1, 0, 457); } diff --git a/echobase-services/src/test/resources/import-data/result/region/regionAssociations_small.csv.gz b/echobase-services/src/test/resources/import-data/result/region/regionAssociations_small.csv.gz new file mode 100644 index 0000000..bdcee15 Binary files /dev/null and b/echobase-services/src/test/resources/import-data/result/region/regionAssociations_small.csv.gz differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.