r424 - in trunk: echobase-entities/src/main/java/fr/ifremer/echobase echobase-entities/src/main/java/fr/ifremer/echobase/entities/data echobase-entities/src/main/xmi echobase-services/src/main/java/fr/ifremer/echobase/services/importdata echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv echobase-services/src/test/java/fr/ifremer/echobase/services/importdata echobase-services/src/test/resources/import-data/result/esdu echobase-services/src/test/resources/import-da
Author: tchemit Date: 2012-03-28 14:00:42 +0200 (Wed, 28 Mar 2012) New Revision: 424 Url: http://forge.codelutin.com/repositories/revision/echobase/424 Log: add region association import + fix esdu echotype + species cateogry import Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBasePredicates.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/data/VoyageImpl.java trunk/echobase-entities/src/main/xmi/echobase.zargo 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/RegionCellAssociationImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportRow.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/AbstractImportDataServiceIT.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportServiceIT.java trunk/echobase-services/src/test/resources/import-data/result/esdu/byEchotypeAndSpeciesCategory.csv.gz trunk/echobase-services/src/test/resources/import-data/result/region/regions.csv.gz trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBasePredicates.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBasePredicates.java 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBasePredicates.java 2012-03-28 12:00:42 UTC (rev 424) @@ -24,10 +24,15 @@ package fr.ifremer.echobase; import com.google.common.base.Predicate; +import com.google.common.collect.Sets; +import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.CellType; import fr.ifremer.echobase.entities.references.SizeCategory; +import java.util.Set; + /** * Keep usefull precidates on model. * @@ -50,6 +55,52 @@ } }; + public static final Predicate<CellType> IS_REGION_CELL_TYPE = new Predicate<CellType>() { + + public final Set<String> acceptedNames = Sets.newHashSet( + "RegionCLAS", "RegionSURF" + ); + + @Override + public boolean apply(CellType input) { + boolean result = acceptedNames.contains(input.getId()); + return result; + } + }; + + public static final Predicate<CellType> IS_MAP_CELL_TYPE = new Predicate<CellType>() { + + public final Set<String> acceptedNames = Sets.newHashSet( + "Map" + ); + + @Override + public boolean apply(CellType input) { + boolean result = acceptedNames.contains(input.getId()); + return result; + } + }; + + public static final Predicate<Cell> IS_REGION_CELL = new Predicate<Cell>() { + @Override + public boolean apply(Cell input) { + CellType cellType = input.getCellType(); + boolean result = cellType != null && + IS_REGION_CELL_TYPE.apply(cellType); + return result; + } + }; + + public static final Predicate<Cell> IS_MAP_CELL = new Predicate<Cell>() { + @Override + public boolean apply(Cell input) { + CellType cellType = input.getCellType(); + boolean result = cellType != null && + IS_MAP_CELL_TYPE.apply(cellType); + return result; + } + }; + public static Predicate<Echotype> newEchotypeByNamePredicate(String name) { return new EchotypeByNamePredicate(name); } Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/data/VoyageImpl.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/data/VoyageImpl.java 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/data/VoyageImpl.java 2012-03-28 12:00:42 UTC (rev 424) @@ -28,6 +28,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ifremer.echobase.EchoBaseFunctions; +import fr.ifremer.echobase.EchoBasePredicates; import fr.ifremer.echobase.entities.references.Vessel; import java.util.Collection; @@ -146,4 +147,28 @@ } return result; } + + @Override + public Collection<Cell> getRegionCells() { + Collection<Cell> result; + if (isPostCellEmpty()) { + result = Lists.newArrayList(); + } else { + result = Collections2.filter(getPostCell(), + EchoBasePredicates.IS_REGION_CELL); + } + return result; + } + + @Override + public Collection<Cell> getMapCells() { + Collection<Cell> result; + if (isPostCellEmpty()) { + result = Lists.newArrayList(); + } else { + result = Collections2.filter(getPostCell(), + EchoBasePredicates.IS_MAP_CELL); + } + return result; + } } Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo =================================================================== (Binary files differ) 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:53 UTC (rev 423) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java 2012-03-28 12:00:42 UTC (rev 424) @@ -39,7 +39,6 @@ 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.DepthStratum; import fr.ifremer.echobase.services.ImportException; import fr.ifremer.echobase.services.importdata.csv.RegionCellAssociationImportModel; import fr.ifremer.echobase.services.importdata.csv.RegionCellAssociationImportRow; @@ -93,13 +92,11 @@ importResult, user); inputFile = configuration.getRegionAssociationFile(); - if (inputFile.hasFile()) { - importResult = importRegionAssociationFile( - configuration, - inputFile, - voyage); - addResultAndLog(result, inputFile, importResult, user); - } + importResult = importRegionAssociationFile( + configuration, + inputFile, + voyage); + addResultAndLog(result, inputFile, importResult, user); inputFile = configuration.getRegionResultFile(); if (inputFile.hasFile()) { @@ -125,9 +122,10 @@ CellType.class, CellType.PROPERTY_ID, "RegionCLAS"); Preconditions.checkNotNull(cellBottomType); - DataMetadata dataXMeta = getEntityByProperty( - DataMetadata.class, DataMetadata.PROPERTY_NAME, "Coordinate"); - Preconditions.checkNotNull(dataXMeta); + DataMetadata dataCoordinateMeta = getEntityByProperty( + DataMetadata.class, DataMetadata.PROPERTY_NAME, + "RegionEnvCoordinates"); + Preconditions.checkNotNull(dataCoordinateMeta); DataMetadata dataSurfaceMeta = getEntityByProperty( DataMetadata.class, DataMetadata.PROPERTY_NAME, "Surface"); @@ -137,14 +135,15 @@ Map<String, Voyage> voyageMap = Maps.uniqueIndex(Arrays.asList( voyage), EchoBaseFunctions.VOYAGE_NAME); - Map<String, DepthStratum> depthStratumMap = getEntitiesMap( - DepthStratum.class, - EchoBaseFunctions.DEPTH_STRATUM_ID); + // authorize only to use region* cell types + Map<String, CellType> cellTypeMap = Maps.uniqueIndex( + Arrays.asList(cellSurfaceType, cellBottomType), + EchoBaseFunctions.CELL_TYPE_ID); RegionCellImportModel csvModel = new RegionCellImportModel( serviceContext.getConfiguration().getCsvSeparator(), voyageMap, - depthStratumMap + cellTypeMap ); if (log.isInfoEnabled()) { @@ -162,38 +161,19 @@ try { EchoBaseImport<RegionCellImportRow> importer = EchoBaseImport.newImport(csvModel, reader); - int rowNumber = 0; Cell cell = null; configuration.incrementsProgression(); for (RegionCellImportRow row : importer) { - - rowNumber++; configuration.incrementsProgression(); if (cell == null || !row.getName().equals(cell.getName())) { - // new cell to create - String depthStratumId = row.getDepthStratum().getId(); - CellType cellType; - if ("SURF".equals(depthStratumId)) { - - cellType = cellSurfaceType; - } else if ("CLAS".equals(depthStratumId)) { - cellType = cellBottomType; - - } else { - throw new ImportException( - "[Line " + rowNumber + - "] Depth stratum should be 'SURF' or 'CLAS', " + - "but was " + depthStratumId); - } - cell = create(dao); cell.setName(row.getName()); - cell.setCellType(cellType); + cell.setCellType(row.getCellType()); voyage.addPostCell(cell); importResult.incrementsNumberCreated(EchoBaseEntityEnum.Cell); @@ -209,7 +189,7 @@ // add coordinate data createCellData(dataDao, cell, - dataXMeta, + dataCoordinateMeta, row.getDataCoordinate(), importResult ); @@ -223,48 +203,57 @@ } } - private void createCellData(DataDAO dao, - Cell cell, - DataMetadata dataMetaData, - String dataValue, - CsvFileImportResult importResult) { - - Data data = create(dao); - data.setDataMetadata(dataMetaData); - data.setDataValue(dataValue); - cell.addData(data); - - importResult.incrementsNumberCreated(EchoBaseEntityEnum.Data); - } - protected CsvFileImportResult importRegionAssociationFile(ResultsImportConfiguration configuration, InputFile inputFile, Voyage voyage) throws ImportException { - RegionCellAssociationImportModel csvModel = new RegionCellAssociationImportModel( - serviceContext.getConfiguration().getCsvSeparator()); if (log.isInfoEnabled()) { - log.info("Starts import of Map cells from file " + + log.info("Starts import of Region cells association from file " + inputFile.getFileName()); } + // authorize only the selected voyage to be imported + Map<String, Voyage> voyageMap = Maps.uniqueIndex(Arrays.asList( + voyage), EchoBaseFunctions.VOYAGE_NAME); + + Map<String, Cell> regionsMap = Maps.uniqueIndex( + voyage.getRegionCells(), EchoBaseFunctions.CELL_BY_NAME); + + RegionCellAssociationImportModel csvModel = new RegionCellAssociationImportModel( + serviceContext.getConfiguration().getCsvSeparator(), + voyage, + voyageMap, + regionsMap, + getDAO(Cell.class, CellDAO.class)); + CsvFileImportResult importResult = new CsvFileImportResult( inputFile.getFileName()); - CellDAO dao = getDAO(Cell.class, CellDAO.class); - Reader reader = getInputFileReader(inputFile); try { EchoBaseImport<RegionCellAssociationImportRow> importer = EchoBaseImport.newImport(csvModel, reader); + int rowNumber = 0; + configuration.incrementsProgression(); for (RegionCellAssociationImportRow row : importer) { + rowNumber++; configuration.incrementsProgression(); - //TODO Do me + Cell regionCell = row.getRegionCell(); + Cell esduCell = row.getEsduCell(); + regionCell.addChilds(esduCell); + if (rowNumber % 100 == 0) { + if (log.isInfoEnabled()) { + log.info("Treat row " + rowNumber + " for esdu cell " + + esduCell.getName()); + } + } + + importResult.incrementsNumberUpdated(EchoBaseEntityEnum.Cell); } @@ -316,5 +305,19 @@ } } + private void createCellData(DataDAO dao, + Cell cell, + DataMetadata dataMetaData, + String dataValue, + CsvFileImportResult importResult) { + Data data = create(dao); + data.setDataMetadata(dataMetaData); + data.setDataValue(dataValue); + cell.addData(data); + + importResult.incrementsNumberCreated(EchoBaseEntityEnum.Data); + } + + } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportModel.java 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportModel.java 2012-03-28 12:00:42 UTC (rev 424) @@ -24,7 +24,13 @@ package fr.ifremer.echobase.services.importdata.csv; import fr.ifremer.echobase.csv.AbstractImportModel; +import fr.ifremer.echobase.csv.EchobaseCsvUtil; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellDAO; +import fr.ifremer.echobase.entities.data.Voyage; +import java.util.Map; + /** * Model to import cells associations from region cells and esdu cells. * @@ -33,8 +39,16 @@ */ public class RegionCellAssociationImportModel extends AbstractImportModel<RegionCellAssociationImportRow> { - public RegionCellAssociationImportModel(char separator) { + public RegionCellAssociationImportModel(char separator, + Voyage voyage, + Map<String, Voyage> voyageMap, + Map<String, Cell> regionCellMap, + CellDAO cellDAO) { super(separator); + newForeignKeyColumn(RegionCellAssociationImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); + newForeignKeyColumn("region.name", RegionCellAssociationImportRow.PROPERTY_REGION_CELL, Cell.class, Cell.PROPERTY_NAME, regionCellMap); + newMandatoryColumn("esdu.name", RegionCellAssociationImportRow.PROPERTY_ESDU_CELL, EchobaseCsvUtil.newCellValueParser(voyage, cellDAO)); + } @Override Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportRow.java 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellAssociationImportRow.java 2012-03-28 12:00:42 UTC (rev 424) @@ -24,6 +24,7 @@ package fr.ifremer.echobase.services.importdata.csv; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Voyage; /** * Bean used as a row for import of {@link RegionCellAssociationImportModel}. @@ -33,36 +34,42 @@ */ 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; + protected Cell esduCell; - protected Cell regionSurfaceCell; + protected Cell regionCell; - protected Cell regionBottomCell; - public RegionCellAssociationImportRow() { } - public Cell getEsduCell() { - return esduCell; + public Voyage getVoyage() { + return voyage; } - public void setEsduCell(Cell esduCell) { - this.esduCell = esduCell; + public Cell getRegionCell() { + return regionCell; } - public Cell getRegionSurfaceCell() { - return regionSurfaceCell; + public Cell getEsduCell() { + return esduCell; } - public void setRegionSurfaceCell(Cell regionSurfaceCell) { - this.regionSurfaceCell = regionSurfaceCell; + public void setVoyage(Voyage voyage) { + this.voyage = voyage; } - public Cell getRegionBottomCell() { - return regionBottomCell; + public void setRegionCell(Cell regionCell) { + this.regionCell = regionCell; } - public void setRegionBottomCell(Cell regionBottomCell) { - this.regionBottomCell = regionBottomCell; + public void setEsduCell(Cell esduCell) { + this.esduCell = esduCell; } } 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:53 UTC (rev 423) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportModel.java 2012-03-28 12:00:42 UTC (rev 424) @@ -26,7 +26,7 @@ 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.DepthStratum; +import fr.ifremer.echobase.entities.references.CellType; import java.util.Map; @@ -40,16 +40,14 @@ public RegionCellImportModel(char separator, Map<String, Voyage> voyageMap, - Map<String, DepthStratum> depthStramMap) { + Map<String, CellType> cellTypeMap) { super(separator); newForeignKeyColumn(RegionCellImportRow.PROPERTY_VOYAGE, Voyage.class, Voyage.PROPERTY_NAME, voyageMap); - newForeignKeyColumn(RegionCellImportRow.PROPERTY_DEPTH_STRATUM, DepthStratum.class, DepthStratum.PROPERTY_ID, depthStramMap); + newForeignKeyColumn(RegionCellImportRow.PROPERTY_CELL_TYPE, CellType.class, CellType.PROPERTY_ID, cellTypeMap); newMandatoryColumn(RegionCellImportRow.PROPERTY_NAME); - newMandatoryColumn("x", RegionCellImportRow.PROPERTY_DATA_X, EchobaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn("y", RegionCellImportRow.PROPERTY_DATA_Y, EchobaseCsvUtil.PRIMITIVE_FLOAT); - newMandatoryColumn("z", RegionCellImportRow.PROPERTY_DATA_Z, EchobaseCsvUtil.PRIMITIVE_FLOAT); + newMandatoryColumn("regionEnvCoordinates", RegionCellImportRow.PROPERTY_DATA_COORDINATE); newMandatoryColumn("surface", RegionCellImportRow.PROPERTY_DATA_SURFACE, EchobaseCsvUtil.PRIMITIVE_FLOAT); } 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:53 UTC (rev 423) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/csv/RegionCellImportRow.java 2012-03-28 12:00:42 UTC (rev 424) @@ -24,7 +24,7 @@ package fr.ifremer.echobase.services.importdata.csv; import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.CellType; /** * Bean used as a row for import of {@link RegionCellImportModel}. @@ -38,28 +38,20 @@ public static final String PROPERTY_VOYAGE = "voyage"; - public static final String PROPERTY_DEPTH_STRATUM = "depthStratum"; + public static final String PROPERTY_CELL_TYPE = "cellType"; - public static final String PROPERTY_DATA_X = "dataX"; + public static final String PROPERTY_DATA_COORDINATE = "dataCoordinate"; - public static final String PROPERTY_DATA_Y = "dataY"; - - public static final String PROPERTY_DATA_Z = "dataZ"; - public static final String PROPERTY_DATA_SURFACE = "dataSurface"; protected Voyage voyage; - protected DepthStratum depthStratum; + protected CellType cellType; protected String name; - protected float dataX; + protected String dataCoordinate; - protected float dataY; - - protected float dataZ; - protected float dataSurface; public RegionCellImportRow() { @@ -69,8 +61,8 @@ return voyage; } - public DepthStratum getDepthStratum() { - return depthStratum; + public CellType getCellType() { + return cellType; } public String getName() { @@ -78,7 +70,7 @@ } public String getDataCoordinate() { - return dataX + "," + dataY + "," + dataZ; + return dataCoordinate; } public float getDataSurface() { @@ -93,22 +85,14 @@ this.voyage = voyage; } - public void setDepthStratum(DepthStratum depthStratum) { - this.depthStratum = depthStratum; + public void setCellType(CellType cellType) { + this.cellType = cellType; } - public void setDataX(float dataX) { - this.dataX = dataX; + public void setDataCoordinate(String dataCoordinate) { + this.dataCoordinate = dataCoordinate; } - public void setDataY(float dataY) { - this.dataY = dataY; - } - - public void setDataZ(float dataZ) { - this.dataZ = dataZ; - } - public void setDataSurface(float dataSurface) { this.dataSurface = dataSurface; } Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java 2012-03-28 12:00:42 UTC (rev 424) @@ -23,10 +23,17 @@ */ package fr.ifremer.echobase.services.importdata; +import com.google.common.collect.Collections2; +import com.google.common.collect.Sets; +import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.csv.AbstractImportModel; import fr.ifremer.echobase.csv.CsvFileImportResult; +import fr.ifremer.echobase.csv.EchoBaseImport; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellDAO; import fr.ifremer.echobase.entities.data.Data; import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataProcessing; @@ -51,7 +58,11 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.TimeLog; +import java.io.File; +import java.io.Reader; import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; /** * Abstrac import data test. @@ -198,4 +209,142 @@ throw new EchoBaseTechnicalException("Could not create entity", e); } } + + protected void addMissingEsduCells(String esduColumnName, + String voyageId, + InputFile inputFile) throws TopiaException { + + ResultsImportService service = + getService(ResultsImportService.class); + Voyage voyage = getEntityById(Voyage.class, voyageId); + Transit transit; + Transect transect; + DataAcquisition dataAcquisition; + DataProcessing dataProcessing; + + if (voyage.isTransitEmpty()) { + + // create a fake transit + transit = create(getDAO(Transit.class)); + voyage.addTransit(transit); + } else { + transit = voyage.getTransit().get(0); + } + + if (transit.isTransectEmpty()) { + + // create a fake transect + transect = create(getDAO(Transect.class)); + transit.addTransect(transect); + } else { + transect = transit.getTransect().get(0); + } + + if (transect.isDataAcquisitionEmpty()) { + + // create a fake dataAcquisition + dataAcquisition = create(getDAO(DataAcquisition.class)); + transect.addDataAcquisition(dataAcquisition); + } else { + dataAcquisition = transect.getDataAcquisition().iterator().next(); + } + + if (dataAcquisition.isDataProcessingEmpty()) { + + // creates a fake dataProcessing + dataProcessing = create(getDAO(DataProcessing.class)); + dataAcquisition.addDataProcessing(dataProcessing); + } else { + dataProcessing = dataAcquisition.getDataProcessing().iterator().next(); + } + + CellDAO dao = (CellDAO) getDAO(Cell.class); + + Set<String> cellsNames; + + if (dataProcessing.isCellEmpty()) { + cellsNames = Sets.newHashSet(); + } else { + cellsNames = Sets.newHashSet(Collections2.transform( + dataProcessing.getCell(), EchoBaseFunctions.CELL_BY_NAME)); + } + + ResultEdsuImportMockImportModel csvModel = new ResultEdsuImportMockImportModel( + serviceContext.getConfiguration().getCsvSeparator(), + esduColumnName, + inputFile.getFile()); + + Reader reader = service.getInputFileReader(inputFile); + try { + EchoBaseImport<ResultEdsuImportMockImportModelRow> importer = + EchoBaseImport.newImport(csvModel, reader); + + for (ResultEdsuImportMockImportModelRow row : importer) { + + String esduCellId = row.getName(); + + if (!cellsNames.contains(esduCellId)) { + + if (log.isDebugEnabled()) { + log.debug("Adding missing esdu cell with name " + + esduCellId); + } + + Cell cell = dao.create(Cell.PROPERTY_NAME, esduCellId); + dataProcessing.addCell(cell); + cellsNames.add(esduCellId); + } + } + + flushTransaction(); + } finally { + + + service.closeReader(reader, inputFile); + } + } + + public static class ResultEdsuImportMockImportModel extends AbstractImportModel<ResultEdsuImportMockImportModelRow> { + + public ResultEdsuImportMockImportModel(char separator, + String esduColumnName, + File file) { + super(separator); + + newMandatoryColumn(esduColumnName, "name"); + + String[] header = EchoBaseImport.getHeader(file, separator); + + for (String columnHeader : header) { + + if (!esduColumnName.equals(columnHeader) && + !("\"" + esduColumnName + "\"").equals(columnHeader)) { + Matcher matcher = ResultsEsduCellImportService.REMOVE_DOUBLE_QUOTES_PATTERN.matcher(columnHeader); + if (matcher.matches()) { + newIgnoredColumn(matcher.group(1)); + } else { + newIgnoredColumn(columnHeader); + } + } + } + } + + @Override + public ResultEdsuImportMockImportModelRow newEmptyInstance() { + return new ResultEdsuImportMockImportModelRow(); + } + } + + public static class ResultEdsuImportMockImportModelRow { + + protected String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } } Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java 2012-03-28 12:00:42 UTC (rev 424) @@ -23,23 +23,11 @@ */ package fr.ifremer.echobase.services.importdata; -import com.google.common.collect.Collections2; -import com.google.common.collect.Sets; -import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.InputFile; -import fr.ifremer.echobase.csv.AbstractImportModel; import fr.ifremer.echobase.csv.CsvFileImportResult; -import fr.ifremer.echobase.csv.EchoBaseImport; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.CellDAO; -import fr.ifremer.echobase.entities.data.DataAcquisition; -import fr.ifremer.echobase.entities.data.DataProcessing; import fr.ifremer.echobase.entities.data.Result; -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.AgeCategory; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.SizeCategory; @@ -48,13 +36,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Test; -import org.nuiton.topia.TopiaException; -import java.io.File; -import java.io.Reader; import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; /** * Test import of esdu results. @@ -78,7 +61,7 @@ } @Test - public void doImportEsduResultByEchotype() throws Exception { + public void doImportByEchotype() throws Exception { assertImportCommonData(); assertImportOperations(); @@ -97,7 +80,7 @@ InputFile inputFile = conf.getEsduByEchotypeFile(); prepareInputFile(inputFile, getImportPath("byEchotype.csv.gz")); - addMissingEsduCells(conf.getVoyageId(), inputFile); + addMissingEsduCells("name", conf.getVoyageId(), inputFile); List<CsvFileImportResult> result; result = doImport(conf, ResultsEsduCellImportService.class, 1); @@ -108,7 +91,7 @@ } @Test - public void doImportEsduResultByEchotypeAndSpecies() throws Exception { + public void doImportByEchotypeAndSpecies() throws Exception { assertImportCommonData(); assertImportOperations(); @@ -128,7 +111,7 @@ prepareInputFile(inputFile, getImportPath("byEchotypeAndSpeciesCategory.csv.gz")); - addMissingEsduCells(conf.getVoyageId(), inputFile); + addMissingEsduCells("name", conf.getVoyageId(), inputFile); //TODO Remove this when referentiel is ok create(getDAO(EchoBaseEntityEnum.DataMetadata), DataMetadata.PROPERTY_NAME, "SigmaSp"); @@ -143,7 +126,7 @@ } @Test - public void doImportEsduResultBySpeciesAndSizeCategory() throws Exception { + public void doImportBySpeciesAndSizeCategory() throws Exception { assertImportCommonData(); assertImportOperations(); @@ -163,7 +146,7 @@ prepareInputFile(intputFile, getImportPath("bySpeciesAndSizeCategory.csv.gz")); - addMissingEsduCells(conf.getVoyageId(), intputFile); + addMissingEsduCells("name", conf.getVoyageId(), intputFile); List<CsvFileImportResult> result; result = doImport(conf, ResultsEsduCellImportService.class, 1); @@ -175,7 +158,7 @@ } @Test - public void doImportEsduResultBySpeciesAndAgeCategory() throws Exception { + public void doImportBySpeciesAndAgeCategory() throws Exception { assertImportCommonData(); assertImportOperations(); @@ -195,7 +178,7 @@ prepareInputFile(inputFile, getImportPath("bySpeciesAndAgeCategory.csv.gz")); - addMissingEsduCells(conf.getVoyageId(), inputFile); + addMissingEsduCells("name", conf.getVoyageId(), inputFile); List<CsvFileImportResult> result; result = doImport(conf, ResultsEsduCellImportService.class, 1); @@ -206,138 +189,5 @@ assertCsvImportResult(result, 0, SpeciesCategory.class, 14, 0, 471); } - protected void addMissingEsduCells(String voyageId, - InputFile inputFile) throws TopiaException { - ResultsImportService service = - getService(ResultsImportService.class); - Voyage voyage = getEntityById(Voyage.class, voyageId); - Transit transit; - Transect transect; - DataAcquisition dataAcquisition; - DataProcessing dataProcessing; - - if (voyage.isTransitEmpty()) { - - // create a fake transit - transit = create(getDAO(Transit.class)); - voyage.addTransit(transit); - } else { - transit = voyage.getTransit().get(0); - } - - if (transit.isTransectEmpty()) { - - // create a fake transect - transect = create(getDAO(Transect.class)); - transit.addTransect(transect); - } else { - transect = transit.getTransect().get(0); - } - - if (transect.isDataAcquisitionEmpty()) { - - // create a fake dataAcquisition - dataAcquisition = create(getDAO(DataAcquisition.class)); - transect.addDataAcquisition(dataAcquisition); - } else { - dataAcquisition = transect.getDataAcquisition().iterator().next(); - } - - if (dataAcquisition.isDataProcessingEmpty()) { - - // creates a fake dataProcessing - dataProcessing = create(getDAO(DataProcessing.class)); - dataAcquisition.addDataProcessing(dataProcessing); - } else { - dataProcessing = dataAcquisition.getDataProcessing().iterator().next(); - } - - CellDAO dao = (CellDAO) getDAO(Cell.class); - - Set<String> cellsNames; - - if (dataProcessing.isCellEmpty()) { - cellsNames = Sets.newHashSet(); - } else { - cellsNames = Sets.newHashSet(Collections2.transform( - dataProcessing.getCell(), EchoBaseFunctions.CELL_BY_NAME)); - } - - ResultEdsuImportMockImportModel csvModel = new ResultEdsuImportMockImportModel( - serviceContext.getConfiguration().getCsvSeparator(), - inputFile.getFile()); - - Reader reader = service.getInputFileReader(inputFile); - try { - EchoBaseImport<ResultEdsuImportMockImportModelRow> importer = - EchoBaseImport.newImport(csvModel, reader); - - for (ResultEdsuImportMockImportModelRow row : importer) { - - String esduCellId = row.getName(); - - if (!cellsNames.contains(esduCellId)) { - - if (log.isDebugEnabled()) { - log.debug("Adding missing esdu cell with name " + - esduCellId); - } - - Cell cell = dao.create(Cell.PROPERTY_NAME, esduCellId); - dataProcessing.addCell(cell); - cellsNames.add(esduCellId); - } - } - - flushTransaction(); - } finally { - - - service.closeReader(reader, inputFile); - } - } - - public static class ResultEdsuImportMockImportModel extends AbstractImportModel<ResultEdsuImportMockImportModelRow> { - - public ResultEdsuImportMockImportModel(char separator, File file) { - super(separator); - - newMandatoryColumn("name"); - - String[] header = EchoBaseImport.getHeader(file, separator); - - for (String columnHeader : header) { - - if (!"name".equals(columnHeader) && - !"\"name\"".equals(columnHeader)) { - Matcher matcher = ResultsEsduCellImportService.REMOVE_DOUBLE_QUOTES_PATTERN.matcher(columnHeader); - if (matcher.matches()) { - newIgnoredColumn(matcher.group(1)); - } else { - newIgnoredColumn(columnHeader); - } - } - } - } - - @Override - public ResultEdsuImportMockImportModelRow newEmptyInstance() { - return new ResultEdsuImportMockImportModelRow(); - } - - } - - public static class ResultEdsuImportMockImportModelRow { - - protected String name; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - } } \ No newline at end of file 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:53 UTC (rev 423) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportServiceIT.java 2012-03-28 12:00:42 UTC (rev 424) @@ -72,22 +72,26 @@ prepareInputFile(conf.getRegionsFile(), getImportPath("regions.csv.gz")); //TODO Use this -// prepareInputFile(conf.getRegionAssociationFile(), -// getImportPath("regionAssociations.csv.gz")); + prepareInputFile(conf.getRegionAssociationFile(), + getImportPath("regionAssociations.csv.gz")); // 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"); + create(getDAO(EchoBaseEntityEnum.DataMetadata), DataMetadata.PROPERTY_NAME, "RegionEnvCoordinates"); + addMissingEsduCells("esdu.name", + conf.getVoyageId(), + conf.getRegionAssociationFile()); + List<CsvFileImportResult> result; - result = doImport(conf, ResultsRegionCellImportService.class, 1); + result = doImport(conf, ResultsRegionCellImportService.class, 2); - assertCsvImportResult(result, 0, Cell.class, 10); + assertCsvImportResult(result, 0, Cell.class, 10, 0, 2083); assertCsvImportResult(result, 0, Data.class, 238); - //assertCsvImportResult(result,1, Result.class, 0); + assertCsvImportResult(result, 1, Cell.class, 0, 4146, 2083); //assertCsvImportResult(result,2, Result.class, 0); } Modified: trunk/echobase-services/src/test/resources/import-data/result/esdu/byEchotypeAndSpeciesCategory.csv.gz =================================================================== (Binary files differ) Modified: trunk/echobase-services/src/test/resources/import-data/result/region/regions.csv.gz =================================================================== (Binary files differ) Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-28 10:15:53 UTC (rev 423) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2012-03-28 12:00:42 UTC (rev 424) @@ -1,258 +1,25 @@ -echobase.action.applySqlQuery=Appliquer la requête -echobase.action.backToUserList=Retour à la liste des utilisateurs -echobase.action.cancel=Annuler -echobase.action.cloneSqlQuery=Cloner -echobase.action.configureImport=Configurer l'import -echobase.action.create=Créer -echobase.action.createEmbeddedApplication=Créer l'application -echobase.action.createMission=Créer la mission -echobase.action.createNewMission=Créer une nouvelle mission -echobase.action.createSqlQuery=Enregistrer -echobase.action.delete=Suppression -echobase.action.deleteSqlQuery=Supprimer -echobase.action.downloadEmbeddedApplicationFile=Télécharger l'application embarquée -echobase.action.downloadExportDbFile=Télécharger le fichier d'export de la base complête -echobase.action.export=Exporter -echobase.action.exportSqlData=Exporter les données -echobase.action.exportTable=Exporter -echobase.action.generateSqlQuery=Générer la requète -echobase.action.import=Importer -echobase.action.importTable=Importer -echobase.action.locale.english=Anglais -echobase.action.locale.french=Français -echobase.action.login=Connection -echobase.action.logout=Déconnexion -echobase.action.newLibreOfficeQuery=Nouvelle requète Libre office -echobase.action.newQuery=Nouvelle requète -echobase.action.reloadSqlQuery=Recharger -echobase.action.reset=Annuler -echobase.action.return=Retour -echobase.action.save=Sauvegarder -echobase.action.saveSqlQuery=Mettre à jour -echobase.action.toEnglish=Utiliser la version anglaise -echobase.action.toFrench=Utiliser la version française -echobase.action.usingEnglish=Version anglaise utilisé -echobase.action.usingFrench=Version française utilisé -echobase.common.acousticDensityUnit=acousticDensityUnit -echobase.common.acquisitionSoftwareVersionER60=acquisitionSoftwareVersion (ER60 instrument) -echobase.common.acquisitionSoftwareVersionME70=acquisitionSoftwareVersion (ME70 instrument) -echobase.common.addDataAcquisition=Toujours créer des DataAcqusitions -echobase.common.admin=Administrateur -echobase.common.cellPositionReference=cellPositionReference -echobase.common.digitThreshold=digitThreshold -echobase.common.echosounderSoundSpeed=echosounderSoundSpeed -echobase.common.email=Email -echobase.common.entityType=Type d'entité -echobase.common.importDataMode=Type d'import -echobase.common.importError=Message d'erreur -echobase.common.importFileName=Nom du fichier importé -echobase.common.importMode=Type d'import -echobase.common.importResult=Résultat de l'import -echobase.common.inProgress=en cours... -echobase.common.jdbcLogin=Login de connexion -echobase.common.jdbcPassword=Mot de passe -echobase.common.jdbcUrl=Url de connexion -echobase.common.loggedDataDatatype=loggedDataDatatype -echobase.common.loggedDataFormat=loggedDataFormat -echobase.common.nbCreatedObjects=Nombre d'objets crées -echobase.common.notes=notes -echobase.common.password=Mot de passe -echobase.common.pingDutyCycle=pingDutyCycle -echobase.common.processingDescription=processingDescription -echobase.common.processingTemplate=processingTemplate -echobase.common.resultLabel=Result label -echobase.common.soundSpeedCalculationsER60=soundSpeedCalculations (ER60 instrument) -echobase.common.soundSpeedCalculationsME70=soundSpeedCalculations (ME70 instrument) -echobase.common.sounderConstant=sounderConstant -echobase.common.transceiverAcquisitionAbsorptionDescription=transceiverAcquisitionAbsorptionDescription -echobase.common.transectBinUnitsPingAxis=BinUnitsPingAxis (transect) -echobase.common.transectGeospatialVerticalPositive=GeospatialVerticalPositive (transect) -echobase.common.transectLicence=Licence (transect) -echobase.common.transitRelatedActivity=RelatedActivity (transit) -echobase.common.user=Utilisateur -echobase.common.voyageDescription=Description -echobase.confirm.delete.query=Confirmer la suppression de la requète suivante -echobase.error.bad.password=Mot de passe incorrrect -echobase.error.email.already.used=Nom d'utilisateur déjà pris -echobase.error.export.description.requiredstring=La description de l'export est obligatoire -echobase.error.export.name.requiredstring=Le nom de l'export est obligatoire -echobase.error.export.sqlQuery.forbidden.alter.word=La requète contient le mot 'ALTER', ce qui est interdit -echobase.error.export.sqlQuery.forbidden.delete.word=La requète contient le mot 'DELETE', ce qui est interdit -echobase.error.export.sqlQuery.forbidden.drop.word=La requète contient le mot 'DROP', ce qui est interdit -echobase.error.export.sqlQuery.forbidden.insert.word=La requète contient le mot 'INSERT', ce qui est interdit -echobase.error.export.sqlQuery.forbidden.update.word=La requète contient le mot 'UPDATE', ce qui est interdit -echobase.error.export.sqlQuery.requiredstring=La requête de l'export est obligatoire -echobase.error.export.sqlQuery.wrongformat=La requêtes n'est pas valide -echobase.error.import.acousticDensityUnit.required=acousticDensityUnit non renseigné -echobase.error.import.acquisitionSoftwareVersionER60.required=acquisitionSoftwareVersionER60 non renseigné -echobase.error.import.acquisitionSoftwareVersionME70.required=acquisitionSoftwareVersionME70 non renseigné -echobase.error.import.areaOfOperation.required=La sélection d'une zone d'opération est obligatoire -echobase.error.import.biometrySampleFile.required=La sélection d'un fichier BiometrySample est obligatoire -echobase.error.import.cellPositionReference.required=La sélection d'un cellPositionReference est obligatoire -echobase.error.import.datum.required=Datum de la campagne non rengeigné -echobase.error.import.digitThreshold.required=digitThreshold non renseigné -echobase.error.import.echosounderSoundSpeed.required=echosounderSoundSpeed non renseigné -echobase.error.import.echotypeFile.required=La sélection d'un fichier Echotype est obligatoire -echobase.error.import.esduByEchotypeAndSpeciesCategoryFile.required=La sélection d'un fichier d'import est obligatoire -echobase.error.import.esduByEchotypeFile.required=La sélection d'un fichier d'import est obligatoire -echobase.error.import.esduBySpeciesAndAgeCategoryFile.required=La sélection d'un fichier d'import est obligatoire -echobase.error.import.esduBySpeciesAndSizeCategoryFile.required=La sélection d'un fichier d'import est obligatoire -echobase.error.import.gearMetadataFile.required=La sélection d'un fichier GearMetadata est obligatoire -echobase.error.import.importMode.required=Le mode d'import est obligatoire -echobase.error.import.lengthWeightKeyFile.required=La sélection d'un fichier lengthWeightKey est obligatoire -echobase.error.import.loggedDataDatatype.required=loggedDataDatatype non renseigné -echobase.error.import.loggedDataFormat.required=loggedDataFormat non renseigné -echobase.error.import.mapResultFile.required=La sélection d'un fichier de résultats de Carte est obligatoire -echobase.error.import.mapsFile.required=La sélection d'un fichier Carte est obligatoire -echobase.error.import.mission.required=La sélection d'une mission est obligatoire -echobase.error.import.missionAbstract.required=Le résumé de la mission est obligatoire -echobase.error.import.missionName.required=Le nom de la mission est obligatoire -echobase.error.import.moviesFile.required=La sélection d'un fichier Movies est obligatoire -echobase.error.import.notes.required=Note des DataProcessing non renseigné -echobase.error.import.operationFile.required=La sélection d'un fichier Operation est obligatoire -echobase.error.import.operationMetadataFile.required=La sélection d'un fichier OperationMetadata est obligatoire -echobase.error.import.pingDutyCycle.required=pingDutyCycle non renseigné -echobase.error.import.processingDescription.required=processingDescription non renseigné -echobase.error.import.processingTemplate.required=processingTemplate non renseigné -echobase.error.import.regionAssociationFile.required=La sélection d'un fichier d'association de Région est obligatoire -echobase.error.import.regionResultFile.required=La sélection d'un fichier de résultats de Région est obligatoire -echobase.error.import.regionsFile.required=La sélection d'un fichier Region est obligatoire -echobase.error.import.resultImportFile.required=Veuillez sélectionner au moins un fichier à importer -echobase.error.import.resultLabel.required=Le champs ResultLabel est obligatoire -echobase.error.import.soundSpeedCalculationsER60.required=soundSpeedCalculationsER60 non renseigné -echobase.error.import.soundSpeedCalculationsME70.required=soundSpeedCalculationsME70 non renseigné -echobase.error.import.sounderConstant.required=sounderConstant non renseigné -echobase.error.import.subSampleFile.required=La sélection d'un fichier SubSample est obligatoire -echobase.error.import.totalSampleFile.required=La sélection d'un fichier Sample est obligatoire -echobase.error.import.transceiverAcquisitionAbsorptionDescription.required=transceiverAcquisitionAbsorptionDescription non renseigné -echobase.error.import.transectBinUnitsPingAxis.required=BinUnitsPingAxis des transtects non rengeigné -echobase.error.import.transectFile.required=La sélection d'un fichier Transect est obligatoire -echobase.error.import.transectGeospatialVerticalPositive.required=GeospatialVerticalPositive des transtects non rengeigné -echobase.error.import.transectLicence.required=Licence des transtects non rengeigné -echobase.error.import.transit.required=La sélection d'un transit est obligatoire -echobase.error.import.transitFile.required=La sélection d'un fichier Transit est obligatoire -echobase.error.import.transitRelatedActivity.required=RelatedActivity des transits non rengeigné -echobase.error.import.vessel.required=La sélection d'un navire est obligatoire -echobase.error.import.voyage.required=La sélection d'une campagne est obligatoire -echobase.error.import.voyageDescription.required=Description de la campagne non rengeigné -echobase.error.import.voyageFile.required=La sélection d'un fichier Voyage est obligatoire -echobase.error.importFile.required=Fichier d'import obligatoire -echobase.error.importHistorical.input.required=Le fichier d'import est obligatoire -echobase.error.invalid.sql=Requète non valide \: %s -echobase.error.login.unknown=Utilisateur inconnu -echobase.error.login.wrongLogin=Le login est déjà utilisé -echobase.error.mission.name.already.exist=Nom de mission déjà utilisé -echobase.error.no.embeddedApplication.configurationFound=La configuration de création d'application embarquée non trouvée -echobase.error.no.embeddedApplication.exportFileFound=L'application embarquée générée non trouvée -echobase.error.no.exportDb.configurationFound=La configuration de l'export de la base non trouvée -echobase.error.no.exportDb.exportFileFound=L'archive d'export de la base non trouvée -echobase.error.query.name.already.exists=Nom de requète déjà utilisé -echobase.error.required.email=L'email est obligatoire -echobase.error.required.password=Le mot de passe est obligatoire -echobase.error.warlocation.notFound=L'application n'a pas été trouvé à l'emplacement suivant %s -echobase.header.request.result=Résultat de la requête sql -echobase.header.user.gridTitle=Liste des utilisateurs -echobase.info.dbeditor.propertyDiffsResult=Résultat d'import de données -echobase.info.import.failed=L'import a échoué. -echobase.info.import.succeded=L'import a réussi. -echobase.info.new.sqlQuery.inprogress=Nouvelle requète en cours de création -echobase.info.no.sqlQuery.saved=Aucune requête d'export sql enregistrée -echobase.info.no.sqlQuery.selected=Aucune requête d'export sql sélectionnée -echobase.info.no.table.selected=Aucune table sélectionnée -echobase.info.no.voyagee.found=Aucune campagne à exporter -echobase.info.sqlQuery.not.modifiable=Vous ne pouvez pas modifier la requète sélectionnée -echobase.info.user.create=L'utilisateur '%s' a été créée -echobase.info.user.delete=L'utilisateur '%s' a été supprimé -echobase.info.user.update=L'utilisateur '%s' a été mis à jour -echobase.information.create.mission=Si la mission n'existe, suivez le lien pour en créer une nouvelle. -echobase.information.mission.created=La mission %s a été créée -echobase.label.admin.user.create=Création d'un utilisateur -echobase.label.admin.user.delete=Suppression d'un utilisateur -echobase.label.admin.user.edit=Mise à jour d'un utilisateur -echobase.label.createIfNotFound=Créer les entités non trouvées en base -echobase.label.embeddedApplicationFileName=Nom de l'archive à télécharger -echobase.label.embeddedWarFileName=Nom du war à utiliser -echobase.label.exportAsSeen=Exporter "comme à l'écran" -echobase.label.exportDbFileName=Nom du fichier d'export -echobase.label.exportFileName=Nom du fichier d'export -echobase.label.import.accoustique=Fichier accoustique -echobase.label.import.events=Fichier evenements -echobase.label.import.lectureAgeGen=Fichier lecture age -echobase.label.import.pecherie=Fichier pecherie -echobase.label.import.typeEchoSpecies=Fichier espèces -echobase.label.importFile=Fichier à importer -echobase.label.info.changePassword=Changement du mot de passe -echobase.label.language=Language -echobase.label.locale.english=Anglais -echobase.label.locale.french=Français -echobase.label.login=Connexion -echobase.label.numberOfCreatedEntities=Nombre d'entitiés créées -echobase.label.numberOfUpdatedEntities=Nombre d'entitiés mises à jour -echobase.label.query.description=Description -echobase.label.query.name=Nom -echobase.label.query.sql=SQL -echobase.label.sqlQueries=Requêtes enregistrées -echobase.label.user.login=Utilisateur \: %s -echobase.label.voyageToSelect=Voyage à exporter -echobase.legend.connectionToDb.detail=Détail de la connection à la base de données -echobase.legend.dbeditor.edit=Edition de '%s' -echobase.legend.dbeditor.show=Visualisation de '%s' -echobase.legend.embeddedApplication.configuration=Configuration de l'application embarquée -echobase.legend.exportDb.configuration.files=Configuration de l'export -echobase.legend.importData.configuration.files=Choix des fichiers d'import -echobase.legend.importData.configuration.mission=Configurer la mission -echobase.legend.importData.configuration.mission.resume=Résumé de la mission à utiliser -echobase.legend.importData.configuration.resume=Résumé de la configuration d'import -echobase.legend.importData.configuration.selectImportType=Sélection du type d'import -echobase.legend.importData.configure=Configurer l'import -echobase.legend.importData.configure.CommonData.selectMission=Sélection de la mission -echobase.legend.importData.createMission=Caractéristiques de la nouvelle mission -echobase.legend.importData.result.resume=Résultat -echobase.legend.importDb.configuration.files=Choix du fichier d'import de la base complête (fichier zip) -echobase.legend.importFileResult=Résultat de l'import %s -echobase.legend.libreOfficeQuery=Requète "libre office" -echobase.legend.sqlQuery.configuration=Configuration de la requête -echobase.legend.sqlQuery.result=Résultats de la requête -echobase.menu.connectToDbInformations=Informations de connection à la base de données -echobase.menu.createEmbeddedApplication=Créer une application embarquée -echobase.menu.editData=Modifier les données -echobase.menu.export=Exporter des données -echobase.menu.exportDb=Exporter une base complête -echobase.menu.importData=Importer des données -echobase.menu.importDb=Importer une base complête -echobase.menu.logs=Journal des modifications -echobase.menu.users=Gérer les utilisateurs -echobase.menu.viewData=Visualiser les données -echobase.message.askAdministratorPassword=Demander à un administrateur le mot de passe pour l'utilisateur donné -echobase.message.no.row.selected=Aucune donnée sélectionnée -echobase.message.noEntrySelection=Aucune entrée sélectionnée -echobase.message.warnEmbeddedApplicationInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de la création de l'application embarquée. -echobase.message.warnExportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de l'export. -echobase.message.warnImportInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de l'import. -echobase.title.confirm.deleteQuery=Supprimer une requète -echobase.title.connectToDbInformations=Informations de connection à la base de données -echobase.title.createEmbeddedApplication=Création de l'application embarquée -echobase.title.createMission=Créer une mission -echobase.title.dbEditor=Modification de la base -echobase.title.embeddedApplicationProgress=Création de l'application embarquée en cours -echobase.title.embeddedApplicationResult=Résultat de la création de l'application embarquée -echobase.title.entityModificationLogs=Journal des modifications -echobase.title.export=Export Sql -echobase.title.exportDb=Export complet de la base -echobase.title.exportDbProgress=Export complêt de la base de données en cours -echobase.title.exportDbResult=Résultat de l'export complêt de la base de données -echobase.title.exportTable=Exporter une table -echobase.title.importData=Import de données -echobase.title.importData.configuration=Configuration d'un import de données -echobase.title.importData.selectImportType=Sélection du type d'import -echobase.title.importDataProgress=Import de données en cours -echobase.title.importDataResult=Résultats de l'import de données -echobase.title.importDb=Import de données historiques -echobase.title.importDbProgress=Import de données en cours -echobase.title.importDbResult=Résultats de l'import de données -echobase.title.importTable=Importer une table -echobase.title.login=Connexion -echobase.title.modification.detail=Détail de la modification -echobase.title.newLibreOfficeQuery=Importer une requète Libre-office -echobase.title.users=Adminitration des utilisateurs -echobase.title.welcome=Bienvenue dans EchoBase +echobase.error.bad.password= +echobase.error.email.already.used= +echobase.error.invalid.sql= +echobase.error.login.unknown= +echobase.error.mission.name.already.exist= +echobase.error.no.embeddedApplication.configurationFound= +echobase.error.no.embeddedApplication.exportFileFound= +echobase.error.no.exportDb.configurationFound= +echobase.error.no.exportDb.exportFileFound= +echobase.error.query.name.already.exists= +echobase.error.required.email= +echobase.error.required.password= +echobase.error.warlocation.notFound= +echobase.info.import.failed= +echobase.info.import.succeded= +echobase.info.new.sqlQuery.inprogress= +echobase.info.no.sqlQuery.saved= +echobase.info.no.sqlQuery.selected= +echobase.info.no.table.selected= +echobase.info.no.voyagee.found= +echobase.info.sqlQuery.not.modifiable= +echobase.info.user.create= +echobase.info.user.delete= +echobase.info.user.update= +echobase.information.mission.created=
participants (1)
-
tchemit@users.forge.codelutin.com