This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit e72336a61f11ae4ce75b6aa5425506f0019150d8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat May 14 12:21:02 2016 +0200 Ajout d'une colonne *label* dans l'import acoustic pour y mettre le numéro de radiale (See #8222) --- .../entities/references/DataMetadataImpl.java | 2 + .../actions/VoyageAcousticsImportAction.java | 33 +++++++++++++++-- .../csv/VoyageAcousticImportExportModel.java | 6 ++- .../importdata/csv/VoyageAcousticImportRow.java | 43 +++++++++++++++++++--- 4 files changed, 72 insertions(+), 12 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/DataMetadataImpl.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/DataMetadataImpl.java index 51215f4..e0671f3 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/DataMetadataImpl.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/DataMetadataImpl.java @@ -41,6 +41,8 @@ public class DataMetadataImpl extends DataMetadataAbstract { public static final String GRID_DEPTH_LAG = "GridDepthLag"; + public static final String RADIAL_NUMBER = "RadialNumber"; + private static final long serialVersionUID = 1L; @Override diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java index 6d574a1..3cec007 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/actions/VoyageAcousticsImportAction.java @@ -40,6 +40,7 @@ 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.DataMetadata; +import fr.ifremer.echobase.entities.references.DataMetadataImpl; import fr.ifremer.echobase.entities.references.DataQuality; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.io.InputFile; @@ -417,7 +418,10 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction Preconditions.checkNotNull(dataAcquisition); Preconditions.checkNotNull(dataProcessing); - VoyageAcousticImportRow esduRow = VoyageAcousticImportRow.ofEsduCell(processingTemplate, dataAcquisition, dataProcessing, esduCell); + DataMetadata radialNumberDataMetadata = dataMetadataProvider.getRadialNumberDataMetadata(); + Preconditions.checkNotNull(radialNumberDataMetadata); + + VoyageAcousticImportRow esduRow = VoyageAcousticImportRow.ofEsduCell(processingTemplate, dataAcquisition, dataProcessing, esduCell, radialNumberDataMetadata); ImmutableMap<DataMetadata, Data> esduCellDataByMeta = Maps.uniqueIndex(esduCell.getData(), Datas.TO_DATA_METADATA); @@ -484,7 +488,7 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction for (Cell elementaryCell : elementaryCells) { - VoyageAcousticImportRow elementaryRow = VoyageAcousticImportRow.ofElementaryCell(processingTemplate, dataAcquisition, dataProcessing, elementaryCell); + VoyageAcousticImportRow elementaryRow = VoyageAcousticImportRow.ofElementaryCell(processingTemplate, dataAcquisition, dataProcessing, elementaryCell, radialNumberDataMetadata); ImmutableMap<DataMetadata, Data> elementaryCellDataByMeta = Maps.uniqueIndex(elementaryCell.getData(), Datas.TO_DATA_METADATA); @@ -588,7 +592,8 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction private void createEsduCellData(Cell cell, VoyageAcousticImportRow row, DataQuality dataQuality, - ImportDataFileResult importResult, int rowNumber) { + ImportDataFileResult importResult, + int rowNumber) { String dataValue; @@ -642,13 +647,20 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction createCellData(cell, dataMetadataProvider.getNumberOfSamplesEchoIntegratedDataMetadata(), dataValue, dataQuality, importResult, false, rowNumber); } + // create RadialNumber data + if (row.getLabel() != null) { + dataValue = row.getLabel(); + createCellData(cell, dataMetadataProvider.getRadialNumberDataMetadata(), dataValue, dataQuality, importResult, false, rowNumber); + } + } private void createElementaryCellData(Cell cell, boolean surface, VoyageAcousticImportRow row, DataQuality dataQuality, - ImportDataFileResult importResult, int rowNumber) { + ImportDataFileResult importResult, + int rowNumber) { String dataValue; @@ -696,6 +708,13 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction dataValue = String.valueOf(row.getCellNumberOfSamplesEchoIntegrated()); createCellData(cell, dataMetadataProvider.getNumberOfSamplesEchoIntegratedDataMetadata(), dataValue, dataQuality, importResult, false, rowNumber); } + + // create RadialNumber data + if (row.getLabel() != null) { + dataValue = row.getLabel(); + createCellData(cell, dataMetadataProvider.getRadialNumberDataMetadata(), dataValue, dataQuality, importResult, false, rowNumber); + } + } private DataAcquisition createDataAcquisition(AcousticInstrument instrument, @@ -816,6 +835,7 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction public static class DataMetadataProvider { + private final DataMetadata radialNumberDataMetadata; private final DataMetadata latitudeDataMetadata; private final DataMetadata longitudeDataMetadata; private final DataMetadata esduStartDepthDataMetadata; @@ -834,6 +854,7 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction public DataMetadataProvider(VoyageAcousticsImportDataContext importDataContext) { String suffix = importDataContext.getConfiguration().getCellPositionReference().getMetadataNameSuffix(); Map<String, DataMetadata> dataMetadatasByName = importDataContext.getDataMetadatasByName(); + radialNumberDataMetadata= dataMetadatasByName.get(DataMetadataImpl.RADIAL_NUMBER); latitudeDataMetadata = dataMetadatasByName.get("Latitude" + suffix); longitudeDataMetadata = dataMetadatasByName.get("Longitude" + suffix); esduStartDepthDataMetadata = dataMetadatasByName.get("ESDUstartDepth"); @@ -850,6 +871,10 @@ public class VoyageAcousticsImportAction extends VoyageAcousticsImportDataAction depthRefBottomEndDataMetadata = dataMetadatasByName.get("DepthRefBottomEnd"); } + public DataMetadata getRadialNumberDataMetadata() { + return radialNumberDataMetadata; + } + public DataMetadata getLatitudeDataMetadata() { return latitudeDataMetadata; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportExportModel.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportExportModel.java index 389b8c2..c3b4a93 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportExportModel.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportExportModel.java @@ -124,7 +124,8 @@ public class VoyageAcousticImportExportModel extends EchoBaseImportExportModelSu model.newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU model.newMandatoryColumn("MOVIES_EILayer\\sndset\\soundcelerity", VoyageAcousticImportRow.PROPERTY_SOUND_CELERITY);//BV - model.newForeignKeyColumn(VoyageAcousticImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); //E + model.newForeignKeyColumn(VoyageAcousticImportRow.PROPERTY_DATA_QUALITY, DataQuality.class, DataQuality.PROPERTY_QUALITY_DATA_FLAG_VALUES, importDataContext.getDataQualitiesByName()); //BW + model.newMandatoryColumn(VoyageAcousticImportRow.PROPERTY_LABEL, EchoBaseCsvUtil.NA_TO_STRING_PARSER_FORMATTER); //BX return model; } @@ -211,7 +212,8 @@ public class VoyageAcousticImportExportModel extends EchoBaseImportExportModelSu // model.newIgnoredColumn("MOVIES_EILayer\\boterr\\ni");//BU model.newColumnForExport("MOVIES_EILayer\\sndset\\soundcelerity", VoyageAcousticImportRow.PROPERTY_SOUND_CELERITY);//BV - model.newColumnForExport(VoyageAcousticImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); //E + model.newColumnForExport(VoyageAcousticImportRow.PROPERTY_DATA_QUALITY, EchoBaseCsvUtil.DATA_QUALITY_FORMATTER); //BW + model.newColumnForExport(VoyageAcousticImportRow.PROPERTY_LABEL, EchoBaseCsvUtil.NA_TO_STRING_PARSER_FORMATTER); //BX return model; } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportRow.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportRow.java index c1480c0..cd526a8 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportRow.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/importdata/csv/VoyageAcousticImportRow.java @@ -21,13 +21,17 @@ 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.DataMetadata; import fr.ifremer.echobase.entities.references.DataQuality; import org.apache.commons.lang3.StringUtils; +import java.util.Collection; import java.util.Date; +import java.util.Optional; /** * Bean of a row for {@link VoyageAcousticImportExportModel} import. @@ -93,6 +97,8 @@ public class VoyageAcousticImportRow { public static final String PROPERTY_DATA_QUALITY = "dataQuality"; + public static final String PROPERTY_LABEL = "label"; + protected String eiLayer; protected String esduCellDataDepth; @@ -149,12 +155,20 @@ public class VoyageAcousticImportRow { protected AcousticInstrument acousticInstrument; + /** + * Radial number data (See https://forge.codelutin.com/issues/8222) + * + * @since 4.0 + */ + protected String label; + public static VoyageAcousticImportRow ofEsduCell(String processingTemplate, DataAcquisition dataAcquisition, DataProcessing dataProcessing, - Cell esduCell) { + Cell esduCell, + DataMetadata radialNumberDataMetadata) { - VoyageAcousticImportRow row = of(processingTemplate, dataAcquisition, dataProcessing, esduCell); + VoyageAcousticImportRow row = of(processingTemplate, dataAcquisition, dataProcessing, esduCell, radialNumberDataMetadata); // esdu cell row.setCellType(4); @@ -166,8 +180,9 @@ public class VoyageAcousticImportRow { public static VoyageAcousticImportRow ofElementaryCell(String processingTemplate, DataAcquisition dataAcquisition, DataProcessing dataProcessing, - Cell elementaryCell) { - VoyageAcousticImportRow row = of(processingTemplate, dataAcquisition, dataProcessing, elementaryCell); + Cell elementaryCell, + DataMetadata radialNumberDataMetadata) { + VoyageAcousticImportRow row = of(processingTemplate, dataAcquisition, dataProcessing, elementaryCell, radialNumberDataMetadata); // elementary cell String elementaryCellName = elementaryCell.getName(); @@ -193,7 +208,8 @@ public class VoyageAcousticImportRow { private static VoyageAcousticImportRow of(String processingTemplate, DataAcquisition dataAcquisition, DataProcessing dataProcessing, - Cell cell) { + Cell cell, + DataMetadata radialNumberDataMetadata) { VoyageAcousticImportRow row = new VoyageAcousticImportRow(); row.setAcousticInstrument(dataAcquisition.getAcousticInstrument()); row.setDataQuality(cell.getDataQuality()); @@ -222,9 +238,16 @@ public class VoyageAcousticImportRow { row.setTransducerAcquisitionBeamAngleAlongship(dataProcessing.getTransducerProcessingBeamAngleAlongship()); String dataProcessingId = dataProcessing.getId(); - row.setEiLayer(StringUtils.substring(dataProcessingId,0, - processingTemplate.length())); + row.setEiLayer(StringUtils.substring(dataProcessingId, 0, -processingTemplate.length())); row.setSoundCelerity(dataProcessing.getEchosounderSoundSpeed()); + Collection<Data> cellData = cell.getData(); + Optional<Data> optionalRadialNumberData = cellData.stream().filter(data -> data.getDataMetadata().equals(radialNumberDataMetadata)).findFirst(); + if (optionalRadialNumberData.isPresent()) { + Data data = optionalRadialNumberData.get(); + String dataValue = data.getDataValue(); + row.setLabel(dataValue); + } return row; } @@ -244,6 +267,14 @@ public class VoyageAcousticImportRow { this.acousticInstrument = acousticInstrument; } + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + public Date getCellDateStart() { return cellDateStart; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.