r423 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services/importdata main/java/fr/ifremer/echobase/services/importdata/csv test/java/fr/ifremer/echobase/services/importdata
Author: tchemit Date: 2012-03-28 12:15:53 +0200 (Wed, 28 Mar 2012) New Revision: 423 Url: http://forge.codelutin.com/repositories/revision/echobase/423 Log: fix region import Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportRow.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportServiceIT.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java 2012-03-28 10:15:25 UTC (rev 422) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java 2012-03-28 10:15:53 UTC (rev 423) @@ -117,27 +117,18 @@ InputFile inputFile, Voyage voyage) throws ImportException { + CellType cellSurfaceType = getEntityByProperty( + CellType.class, CellType.PROPERTY_ID, "RegionSURF"); + Preconditions.checkNotNull(cellSurfaceType); - CellType cellType = getEntityByProperty( - CellType.class, CellType.PROPERTY_ID, "Region"); - Preconditions.checkNotNull(cellType); + CellType cellBottomType = getEntityByProperty( + CellType.class, CellType.PROPERTY_ID, "RegionCLAS"); + Preconditions.checkNotNull(cellBottomType); DataMetadata dataXMeta = getEntityByProperty( - DataMetadata.class, DataMetadata.PROPERTY_NAME, "LongitudeEnd"); + DataMetadata.class, DataMetadata.PROPERTY_NAME, "Coordinate"); Preconditions.checkNotNull(dataXMeta); - DataMetadata dataYMeta = getEntityByProperty( - DataMetadata.class, DataMetadata.PROPERTY_NAME, "LatitudeEnd"); - Preconditions.checkNotNull(dataYMeta); - - DataMetadata dataDepthSurfaceMeta = getEntityByProperty( - DataMetadata.class, DataMetadata.PROPERTY_NAME, "DepthRefSurfaceEnd"); - Preconditions.checkNotNull(dataDepthSurfaceMeta); - - DataMetadata dataDepthBottomMeta = getEntityByProperty( - DataMetadata.class, DataMetadata.PROPERTY_NAME, "DepthRefBottomEnd"); - Preconditions.checkNotNull(dataDepthBottomMeta); - DataMetadata dataSurfaceMeta = getEntityByProperty( DataMetadata.class, DataMetadata.PROPERTY_NAME, "Surface"); Preconditions.checkNotNull(dataSurfaceMeta); @@ -152,7 +143,6 @@ RegionCellImportModel csvModel = new RegionCellImportModel( serviceContext.getConfiguration().getCsvSeparator(), - cellType, voyageMap, depthStratumMap ); @@ -174,61 +164,55 @@ EchoBaseImport.newImport(csvModel, reader); int rowNumber = 0; + Cell cell = null; + configuration.incrementsProgression(); for (RegionCellImportRow row : importer) { rowNumber++; configuration.incrementsProgression(); - Cell cell = create(dao, row.getCell()); + if (cell == null || !row.getName().equals(cell.getName())) { - voyage.addPostCell(cell); - importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell); + // new cell to create + String depthStratumId = row.getDepthStratum().getId(); + CellType cellType; + if ("SURF".equals(depthStratumId)) { - createCellData(dataDao, - cell, - dataXMeta, - String.valueOf(row.getDataX()), - importResult - ); + cellType = cellSurfaceType; + } else if ("CLAS".equals(depthStratumId)) { + cellType = cellBottomType; - createCellData(dataDao, - cell, - dataYMeta, - String.valueOf(row.getDataY()), - importResult - ); + } else { + throw new ImportException( + "[Line " + rowNumber + + "] Depth stratum should be 'SURF' or 'CLAS', " + + "but was " + depthStratumId); + } - String depthStratumId = row.getDepthStratum().getId(); + cell = create(dao); - DataMetadata depth = null; + cell.setName(row.getName()); + cell.setCellType(cellType); + voyage.addPostCell(cell); + importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell); - if ("SURF".equals(depthStratumId)) { - - depth = dataDepthSurfaceMeta; - } else if ("CLAS".equals(depthStratumId)) { - depth = dataDepthBottomMeta; - - } else { - throw new ImportException( - "[Line " + rowNumber + - "] Depth stratum should be 'SURF' or 'CLAS', " + - "but was " + depthStratumId); + // add surface data + createCellData(dataDao, + cell, + dataSurfaceMeta, + String.valueOf(row.getDataSurface()), + importResult + ); } + // add coordinate data createCellData(dataDao, cell, - depth, - String.valueOf(row.getDataZ()), + dataXMeta, + row.getDataCoordinate(), importResult ); - - createCellData(dataDao, - cell, - dataSurfaceMeta, - String.valueOf(row.getDataSurface()), - importResult - ); } return importResult; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportModel.java 2012-03-28 10:15:25 UTC (rev 422) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportModel.java 2012-03-28 10:15:53 UTC (rev 423) @@ -26,7 +26,6 @@ import fr.ifremer.echobase.csv.AbstractImportModel; 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.DepthStratum; import java.util.Map; @@ -39,14 +38,10 @@ */ public class RegionCellImportModel extends AbstractImportModel<RegionCellImportRow> { - protected final CellType cellType; - public RegionCellImportModel(char separator, - CellType cellType, Map<String, Voyage> voyageMap, Map<String, DepthStratum> depthStramMap) { super(separator); - this.cellType = cellType; newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); newForeignKeyColumn(RegionCellImportRow.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, depthStramMap); @@ -61,7 +56,6 @@ @Override public RegionCellImportRow newEmptyInstance() { RegionCellImportRow row = new RegionCellImportRow(); - row.getCell().setCellType(cellType); return row; } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportRow.java 2012-03-28 10:15:25 UTC (rev 422) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportRow.java 2012-03-28 10:15:53 UTC (rev 423) @@ -23,8 +23,6 @@ */ package fr.ifremer.echobase.services.importdata.csv; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.CellImpl; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.DepthStratum; @@ -54,7 +52,7 @@ protected DepthStratum depthStratum; - protected final Cell cell; + protected String name; protected float dataX; @@ -65,13 +63,8 @@ protected float dataSurface; public RegionCellImportRow() { - this.cell = new CellImpl(); } - public Cell getCell() { - return cell; - } - public Voyage getVoyage() { return voyage; } @@ -80,24 +73,20 @@ return depthStratum; } - public float getDataX() { - return dataX; + public String getName() { + return name; } - public float getDataY() { - return dataY; + public String getDataCoordinate() { + return dataX + "," + dataY + "," + dataZ; } - public float getDataZ() { - return dataZ; - } - public float getDataSurface() { return dataSurface; } public void setName(String name) { - getCell().setName(name); + this.name = name; } public void setVoyage(Voyage voyage) { Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportServiceIT.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportServiceIT.java 2012-03-28 10:15:25 UTC (rev 422) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportServiceIT.java 2012-03-28 10:15:53 UTC (rev 423) @@ -24,9 +24,12 @@ package fr.ifremer.echobase.services.importdata; import fr.ifremer.echobase.csv.CsvFileImportResult; +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; 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.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.services.FakeEchoBaseServiceContext; import org.junit.Test; @@ -74,11 +77,16 @@ // prepareInputFile(conf.getRegionsFile(), // getImportPath("regionResults.csv.gz")); + //TODO Remove this when referentiel is ok + create(getDAO(EchoBaseEntityEnum.CellType), CellType.PROPERTY_NAME, "RegionSURF"); + create(getDAO(EchoBaseEntityEnum.CellType), CellType.PROPERTY_NAME, "RegionCLAS"); + create(getDAO(EchoBaseEntityEnum.DataMetadata), DataMetadata.PROPERTY_NAME, "Coordinate"); + List<CsvFileImportResult> result; result = doImport(conf, ResultsRegionCellImportService.class, 1); - assertCsvImportResult(result, 0, Cell.class, 228); - assertCsvImportResult(result, 0, Data.class, 228 * 4); + assertCsvImportResult(result, 0, Cell.class, 10); + assertCsvImportResult(result, 0, Data.class, 238); //assertCsvImportResult(result,1, Result.class, 0); //assertCsvImportResult(result,2, Result.class, 0); }
participants (1)
-
tchemit@users.forge.codelutin.com