This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit f334d59dabd9a8bb4610e25099d881242d21d7c4 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Thu Jun 30 17:16:40 2016 +0200 Handle duplication on elementary cell (refs #2246) --- .../actions/ImportAcousticsActionSupport.java | 61 +++------------------ .../service/importdata/csv/AcousticImportRow.java | 19 +++++-- .../importdata/VoyageAcousticImportServiceIT.java | 2 +- .../import-data/acoustic/movies_small.csv.gz | Bin 7963 -> 7963 bytes .../resources/i18n/echobase-ui_en_GB.properties | 2 +- .../resources/i18n/echobase-ui_fr_FR.properties | 2 +- .../src/main/webapp/WEB-INF/includes/footer.jsp | 2 +- 7 files changed, 25 insertions(+), 63 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportAcousticsActionSupport.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportAcousticsActionSupport.java index 7fe92f2..f274a06 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportAcousticsActionSupport.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/ImportAcousticsActionSupport.java @@ -64,6 +64,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import fr.ifremer.echobase.entities.data.DataAcousticProvider; +import fr.ifremer.echobase.services.service.importdata.DuplicatedElementaryCellException; import java.util.Collection; /** @@ -78,8 +79,6 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf private final DateFormat cellDateFormat; private final DataMetadataProvider dataMetadataProvider; - private String lastEsduId; - public ImportAcousticsActionSupport(C importDataContext) { super(importDataContext, importDataContext.getConfiguration().getMoviesFile()); @@ -190,35 +189,9 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf int cellType = row.getCellType(); - String esduCellId = cellDateFormat.format(endDate); - - String previousLastEsduId = lastEsduId; - - if (lastEsduId == null || !lastEsduId.equals(esduCellId)) { - - lastEsduId = esduCellId; - // find a new esdu cell id - if (log.isDebugEnabled()) { - log.debug("row: " + rowNumber + " - detects new esduCellId:" + lastEsduId); - } - - } - - boolean isEsduCell = cellType == 4; - - if (isEsduCell) { - - if (!esduCellId.equals(previousLastEsduId)) { - - // This should not happen ? - if (log.isWarnEnabled()) { - log.warn("row: " + rowNumber + " A previous esduCellId was detected (" + previousLastEsduId + "); but the esdu id was never found."); - } - } - if (log.isDebugEnabled()) { - log.debug("row: " + rowNumber + " - found esdu cell:" + lastEsduId); - } - } + int cellNum = row.getCellNum(); + String cellDate = cellDateFormat.format(endDate); + String esduCellId = cellDate + "_" + cellNum; if (row.getCellNasc() == null) { @@ -231,13 +204,13 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf result.addNotImportedId(EchoBaseUserEntityEnum.Cell, id); continue; - } addProcessedRow(result, row); DataQuality dataQuality = row.getDataQuality(); + boolean isEsduCell = cellType == 4; if (isEsduCell) { if (log.isDebugEnabled()) { @@ -276,23 +249,15 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf createEsduCellData(esduCell, row, dataQuality, result, rowNumber); } else { - // this is a elementary cell row - - int cellNum = row.getCellNum(); - boolean surface = cellType == 0; - String elementaryCellId = cellNum + (surface ? "S" : "B"); + String elementaryCellId = cellDate + "_" + cellNum + "_" + (surface ? "S" : "B"); // check name does not exist boolean exists = persistenceService.containsCellByName(elementaryCellId); if (exists) { - //FIXME Revoir ça (See #2246) - if (log.isErrorEnabled()) { - log.error("Duplicated ElementaryCellException: " + rowNumber + " → " + elementaryCellId); - } -// throw new DuplicatedElementaryCellException(getLocale(), rowNumber, elementaryCellId, voyage.getName()); + throw new DuplicatedElementaryCellException(getLocale(), rowNumber, elementaryCellId, dataProvider); } if (log.isTraceEnabled()) { log.trace("[row " + rowNumber + "] elementary cell (" + elementaryCellId + ")"); @@ -312,13 +277,9 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf // create datas of the elementary cell createElementaryCellData(elementaryCell, surface, row, dataQuality, result, rowNumber); - } - } - } - } protected abstract DataAcousticProvider getDataProvider(C importDataContext, E row, int rowNumber); @@ -471,10 +432,7 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf } } - int esduRowCellNum = 0; - for (Cell elementaryCell : elementaryCells) { - E elementaryRow = (E) AcousticImportRow.ofElementaryCell(processingTemplate, dataAcquisition, dataProcessing, elementaryCell, radialNumberDataMetadata); ImmutableMap<DataMetadata, Data> elementaryCellDataByMeta = Maps.uniqueIndex(elementaryCell.getData(), Datas.TO_DATA_METADATA); @@ -547,13 +505,8 @@ public abstract class ImportAcousticsActionSupport<M extends ImportAcousticsConf elementaryRow.setEsduCellDataDepth(esduRow.getEsduCellDataDepth()); addImportedRow(result, elementaryRow); - - esduRowCellNum = elementaryRow.getCellNum() + 1; - } - esduRow.setCellNum(esduRowCellNum); - addImportedRow(result, esduRow); } 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 d8c4ee3..5377f1b 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 @@ -162,6 +162,12 @@ public class AcousticImportRow { */ protected String label; + // Format: <date> <integer>( [S|B])? + public static Integer getCellNum(String cellName) { + String[] splited = cellName.split("_"); + return Integer.valueOf(splited[1]); + } + public static AcousticImportRow ofEsduCell(String processingTemplate, DataAcquisition dataAcquisition, DataProcessing dataProcessing, @@ -171,6 +177,10 @@ public class AcousticImportRow { AcousticImportRow row = of(processingTemplate, dataAcquisition, dataProcessing, esduCell, radialNumberDataMetadata); // esdu cell + String cellName = esduCell.getName(); + Integer cellNum = getCellNum(cellName); + row.setCellNum(cellNum); + row.setCellType(4); row.setDataQuality(esduCell.getDataQuality()); @@ -185,20 +195,19 @@ public class AcousticImportRow { AcousticImportRow row = of(processingTemplate, dataAcquisition, dataProcessing, elementaryCell, radialNumberDataMetadata); // elementary cell - String elementaryCellName = elementaryCell.getName(); + String cellName = elementaryCell.getName(); + Integer cellNum = getCellNum(cellName); + row.setCellNum(cellNum); int cellType; - if (elementaryCellName.endsWith("S")) { - + if (cellName.endsWith("S")) { // surface cellType = 0; } else { - // bottom cellType = 1; } - Integer cellNum = Integer.valueOf(elementaryCellName.substring(0, elementaryCellName.length() - 1)); row.setCellType(cellType); row.setCellNum(cellNum); row.setDataQuality(elementaryCell.getDataQuality()); diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageAcousticImportServiceIT.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageAcousticImportServiceIT.java index aacf2ac..d1e0d57 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageAcousticImportServiceIT.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/importdata/VoyageAcousticImportServiceIT.java @@ -72,7 +72,7 @@ public class VoyageAcousticImportServiceIT extends AbstractImportDataServiceIT<V conf.setSoundSpeedCalculationsER60("soundSpeedCalculationsER60"); conf.setSoundSpeedCalculationsME70("soundSpeedCalculationsME70"); conf.setTransceiverAcquisitionAbsorptionDescription("transceiverAcquisitionAbsorptionDescription"); - prepareInputFile(conf.getMoviesFile(), getImportPath("movies_small.csv.gz")); + prepareInputFile(conf.getMoviesFile(), getImportPath("PELGAS2015-lite.csv.gz")); return conf; } diff --git a/echobase-services/src/test/resources/import-data/acoustic/movies_small.csv.gz b/echobase-services/src/test/resources/import-data/acoustic/movies_small.csv.gz index bd26598..16b0083 100644 Binary files a/echobase-services/src/test/resources/import-data/acoustic/movies_small.csv.gz and b/echobase-services/src/test/resources/import-data/acoustic/movies_small.csv.gz differ diff --git a/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties b/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties index c5e86c0..6ba21a3 100644 --- a/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties +++ b/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties @@ -64,7 +64,7 @@ echobase.common.authorEmail=Author email echobase.common.biometrySampleFile= echobase.common.cellMapsFishFile=Map cells file (Fishes) echobase.common.cellMapsOtherFile=Map cells file (Other) -echobase.common.cellPositionReference=cellPositionReference +echobase.common.cellPositionReference=Reference position for cell of echo-integration echobase.common.cellRegionAssociationFile= echobase.common.cellRegionResultFile= echobase.common.cellRegionsFile= diff --git a/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties b/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties index 41158fc..ae4882e 100644 --- a/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties +++ b/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties @@ -64,7 +64,7 @@ echobase.common.authorEmail=Courriel de l'auteur echobase.common.biometrySampleFile= echobase.common.cellMapsFishFile=Fichier des cellules Cartes (Poisson) echobase.common.cellMapsOtherFile=Fichier des cellules Cartes (Autre) -echobase.common.cellPositionReference=Référentiel géographique des cellules des cartes +echobase.common.cellPositionReference=Référentiel géographique des cellules d'écho-intégration echobase.common.cellRegionAssociationFile= echobase.common.cellRegionResultFile= echobase.common.cellRegionsFile= diff --git a/echobase-ui/src/main/webapp/WEB-INF/includes/footer.jsp b/echobase-ui/src/main/webapp/WEB-INF/includes/footer.jsp index 6df67f2..226d9b4 100644 --- a/echobase-ui/src/main/webapp/WEB-INF/includes/footer.jsp +++ b/echobase-ui/src/main/webapp/WEB-INF/includes/footer.jsp @@ -29,7 +29,7 @@ <li> <span style="font-size: 140%"> EchoBase <s:property value="#application.echobaseApplicationContext.configuration.applicationVersion"/> - © 2011-2012 + © 2011-2016 </span> <a href="http://www.ifremer.fr">Ifremer</a> <a href="http://www.codelutin.com" title="Code Lutin" target="_blank">Code -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.