r306 - in trunk: echobase-entities/src/main/java/fr/ifremer/echobase echobase-services/src/main/java/fr/ifremer/echobase/services echobase-services/src/main/java/fr/ifremer/echobase/services/configurations echobase-services/src/main/java/fr/ifremer/echobase/services/csv echobase-services/src/main/resources/i18n echobase-services/src/test/java/fr/ifremer/echobase/services echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders echobase-tools/src/test/java/fr/ifremer/echobase/tools e
Author: tchemit Date: 2012-02-04 10:20:28 +0100 (Sat, 04 Feb 2012) New Revision: 306 Url: http://forge.codelutin.com/repositories/revision/echobase/306 Log: - prepare on structures for data import - reformat code - rename EchoBaseServiceContextImpl to DefaultEchoBaseServiceContext - add some code to avoid nasty TopiaException everywhere (but should be done in Topia instead) Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportException.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModelRow.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModelRow.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModelRow.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModelRow.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModelRow.java Removed: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AccousticDataImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/TransitImportModelRow.java trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/AreaOfOperationLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/CellLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/DataProcessingLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EchotypeCategoryLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleDataTypeLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SpeciesCategoryLoader.java trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAccousticData.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVessels.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseFunctions.java 2012-02-04 09:20:28 UTC (rev 306) @@ -37,8 +37,10 @@ import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.EchotypeCategory; import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearMetadata; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.entities.references.OperationEvent; +import fr.ifremer.echobase.entities.references.OperationMetadata; import fr.ifremer.echobase.entities.references.ReferenceDatum; import fr.ifremer.echobase.entities.references.ReferenceDatumType; import fr.ifremer.echobase.entities.references.SampleDataType; @@ -248,6 +250,20 @@ } }; + public static final Function<OperationMetadata, String> OPERATION_METADATA_NAME = new Function<OperationMetadata, String>() { + @Override + public String apply(OperationMetadata input) { + return input.getName(); + } + }; + + public static final Function<GearMetadata, String> GEAR_METADATA_TYPE = new Function<GearMetadata, String>() { + @Override + public String apply(GearMetadata input) { + return input.getType(); + } + }; + public static String getSpeciesCategoryKey(Species species, SizeCategory sizeCategory, SexCategory sexCategory) { String key = species.getBaracoudaCode(); if (sizeCategory != null) { Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractImportDataService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -23,12 +23,22 @@ */ package fr.ifremer.echobase.services; +import com.google.common.base.Function; +import com.google.common.collect.Maps; +import fr.ifremer.echobase.EchoBaseTechnicalException; import fr.ifremer.echobase.InputFile; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.services.configurations.AbstractImportConfiguration; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaEntity; +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; +import java.io.Reader; +import java.util.List; import java.util.Map; /** @@ -40,5 +50,68 @@ public abstract class AbstractImportDataService<M extends AbstractImportConfiguration> extends EchoBaseServiceSupport { public abstract Map<InputFile, CsvImportResult> startImport(M configuration, - EchoBaseUser user) throws IOException, TopiaException; + EchoBaseUser user) throws ImportException; + + + protected Reader getInputFileReader(InputFile inputFile) throws EchoBaseTechnicalException { + try { + Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + return reader; + } catch (FileNotFoundException e) { + throw new EchoBaseTechnicalException( + "Could not find import file " + inputFile.getFile(), e); + } + } + + protected void closeReader(Reader reader, InputFile inputFile) { + try { + reader.close(); + } catch (IOException e) { + throw new EchoBaseTechnicalException("Could not close reader on file " + inputFile.getFile(), e); + } + } + + protected <E extends TopiaEntity, K> Map<K, E> getEntitiesMap(Class<E> entityType, Function<E, K> function) { + List<E> allVoyages = getEntities(entityType); + Map<K, E> voyageMap = Maps.uniqueIndex( + allVoyages, function); + return voyageMap; + } + + protected <E extends TopiaEntity> E create(TopiaDAO<E> dao) { + try { + E result = dao.create(); + return result; + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not create entity", e); + } + } + + protected <E extends TopiaEntity> E create(TopiaDAO<E> dao, E entity) { + try { + E result = dao.create(entity); + return result; + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not create entity", e); + } + } + + protected <E extends TopiaEntity> E create(TopiaDAO<E> dao, Object... properties) { + try { + E result = dao.create(properties); + return result; + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not create entity", e); + } + } + + protected <E extends TopiaEntity> E findByProperties(TopiaDAO<E> dao, String propertyName, Object value, + Object... others) { + try { + E result = dao.findByProperties(propertyName, value, others); + return result; + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not obtain query db", e); + } + } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AccousticDataImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AccousticDataImportService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AccousticDataImportService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -46,17 +46,13 @@ import fr.ifremer.echobase.services.configurations.AccousticDataImportConfiguration; import fr.ifremer.echobase.services.csv.AcousticDataImportModel; import fr.ifremer.echobase.services.csv.AcousticDataImportModelRow; -import org.nuiton.topia.TopiaException; import org.nuiton.util.csv.Import; +import org.nuiton.util.csv.ImportRuntimeException; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; import java.io.Reader; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.List; import java.util.Map; /** @@ -69,36 +65,26 @@ @Override public Map<InputFile, CsvImportResult> startImport(AccousticDataImportConfiguration configuration, - EchoBaseUser user) throws IOException, TopiaException { + EchoBaseUser user) throws ImportException { Map<InputFile, CsvImportResult> result = Maps.newHashMap(); - Transit transit = getEntityById(Transit.class, configuration.getTransitId()); - Vessel vessel = getEntityById(Vessel.class, configuration.getVesselId()); + Transit transit = getEntityById(Transit.class, + configuration.getTransitId()); + Vessel vessel = getEntityById(Vessel.class, + configuration.getVesselId()); // find out the correct transect to use Transect transect = transit.getTransect(vessel); - List<AcousticInstrument> acousticInstruments = getEntities(AcousticInstrument.class); - Map<String, AcousticInstrument> acousticInstrumentsById = Maps.uniqueIndex( - acousticInstruments, EchoBaseFunctions.ACOUSTIC_INSTRUMENT_ID); - - List<CellType> cellTypes = getEntities(CellType.class); - Map<String, CellType> cellTypesById = Maps.uniqueIndex( - cellTypes, EchoBaseFunctions.CELL_TYPE_ID); - - List<DataMetadata> dataMetadatas = getEntities(DataMetadata.class); - Map<String, DataMetadata> dataMetadatasByName = Maps.uniqueIndex( - dataMetadatas, EchoBaseFunctions.DATA_METADATA_NAME); - - CellType esduCellType = cellTypesById.get("Esdu"); + CellType esduCellType = getEntityByProperty( + CellType.class, CellType.PROPERTY_ID, "Esdu"); Preconditions.checkNotNull(esduCellType); - CellType elementaryCellType = cellTypesById.get("Elementary"); + CellType elementaryCellType = getEntityByProperty( + CellType.class, CellType.PROPERTY_ID, "Elementary"); Preconditions.checkNotNull(elementaryCellType); importMoviesFile(transect, - acousticInstrumentsById, - dataMetadatasByName, esduCellType, elementaryCellType, configuration, @@ -110,31 +96,38 @@ new SimpleDateFormat("yyyy-MM-dd hh:mm:ss'Z'"); private void importMoviesFile(Transect transect, - Map<String, AcousticInstrument> instrumentsById, - Map<String, DataMetadata> dataMetadatasByName, CellType esduCellType, CellType elementaryCellType, AccousticDataImportConfiguration configuration, - InputFile inputFile) throws TopiaException, IOException { + InputFile inputFile) throws ImportException { - AcousticDataImportModel csvModel = new AcousticDataImportModel(serviceContext.getConfiguration().getCsvSeparator()); + Map<String, AcousticInstrument> instrumentsById = + getEntitiesMap(AcousticInstrument.class, + EchoBaseFunctions.ACOUSTIC_INSTRUMENT_ID); + Map<String, DataMetadata> dataMetadatasByName = getEntitiesMap( + DataMetadata.class, EchoBaseFunctions.DATA_METADATA_NAME); + + AcousticDataImportModel csvModel = new AcousticDataImportModel( + getCsvSeparator()); + DataAcquisitionDAO dataAcquisitionDAO = - (DataAcquisitionDAO) getDAO(DataAcquisition.class); + getDAO(DataAcquisition.class, DataAcquisitionDAO.class); DataProcessingDAO dataProcessingDAO = - (DataProcessingDAO) getDAO(DataProcessing.class); - CellDAO cellDAO = (CellDAO) getDAO(Cell.class); - DataDAO dataDAO = (DataDAO) getDAO(Data.class); + getDAO(DataProcessing.class, DataProcessingDAO.class); + CellDAO cellDAO = getDAO(Cell.class, CellDAO.class); + DataDAO dataDAO = getDAO(Data.class, DataDAO.class); boolean addDataAcquisition = configuration.isAddDataAcquisition(); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + Reader reader = getInputFileReader(inputFile); try { - Import<AcousticDataImportModelRow> importer = Import.newImport(csvModel, reader); + Import<AcousticDataImportModelRow> importer = + Import.newImport(csvModel, reader); DataAcquisition dataAcquisition = null; DataProcessing dataProcessing = null; Cell esduCell = null; - Cell elementaryCell = null; + Cell elementaryCell; for (AcousticDataImportModelRow row : importer) { // Build the row acoustic instrument @@ -216,9 +209,9 @@ // this is a esdu cell row // create esdu cell - esduCell = cellDAO.create( - Cell.PROPERTY_CELL_TYPE, esduCellType, - Cell.PROPERTY_NAME, esduCellId + esduCell = create(cellDAO, + Cell.PROPERTY_CELL_TYPE, esduCellType, + Cell.PROPERTY_NAME, esduCellId ); // add it to data processing @@ -246,9 +239,9 @@ // create the elementary cell - elementaryCell = cellDAO.create( - Cell.PROPERTY_CELL_TYPE, elementaryCellType, - Cell.PROPERTY_NAME, elementaryCellId + elementaryCell = create(cellDAO, + Cell.PROPERTY_CELL_TYPE, elementaryCellType, + Cell.PROPERTY_NAME, elementaryCellId ); // add it to esdu cell @@ -283,16 +276,18 @@ } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } } - private void createEsduCellData(AccousticDataImportConfiguration configuration, - Cell cell, - Map<String, DataMetadata> dataMetadatasByName, - AcousticDataImportModelRow row, - DataDAO dao) throws TopiaException { + protected void createEsduCellData(AccousticDataImportConfiguration configuration, + Cell cell, + Map<String, DataMetadata> dataMetadatasByName, + AcousticDataImportModelRow row, + DataDAO dao) { DataMetadata dataMetadata; Data data; @@ -304,35 +299,35 @@ // create Latitude data dataMetadata = dataMetadatasByName.get("Latitude" + suffix); dataValue = row.getEsduCellDataLatitude(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); // create Longitude data dataMetadata = dataMetadatasByName.get("Longitude" + suffix); dataValue = row.getEsduCellDataLongitude(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); // create Depth data dataMetadata = dataMetadatasByName.get("DepthRefSurface" + suffix); dataValue = row.getEsduCellDataDepth(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); // create Time data dataMetadata = dataMetadatasByName.get("Time" + suffix); dataValue = cellDateFormat.format(row.getCellDateStart()); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); // create AcousticDensity data dataMetadata = dataMetadatasByName.get("sa"); dataValue = row.getEsduCellDataAcousticDensity(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); } @@ -341,7 +336,7 @@ Cell cell, Map<String, DataMetadata> dataMetadatasByName, AcousticDataImportModelRow row, - DataDAO dao) throws TopiaException { + DataDAO dao) { DataMetadata dataMetadata; Data data; @@ -370,21 +365,21 @@ // create depth start data dataMetadata = dataMetadatasByName.get(startMeta); dataValue = row.getCellDepthStart(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); // create depth end data dataMetadata = dataMetadatasByName.get(endMeta); dataValue = row.getCellDepthEnd(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); // create acoustic density data dataMetadata = dataMetadatasByName.get("sa"); dataValue = row.getCellSa(); - data = dao.create(Data.PROPERTY_DATA_METADATA, dataMetadata); + data = create(dao, Data.PROPERTY_DATA_METADATA, dataMetadata); data.setDataValue(dataValue); cell.addData(data); @@ -395,7 +390,7 @@ String softwareVersion, String soundSpeedCalculations, AcousticDataImportModelRow row, - DataAcquisitionDAO dataAcquisitionDAO) throws TopiaException { + DataAcquisitionDAO dataAcquisitionDAO) { String transceiverAcquisitionAbsorptionDescription = configuration.getTransceiverAcquisitionAbsorptionDescription(); @@ -404,7 +399,7 @@ String pingDutyCycle = configuration.getPingDutyCycle(); String echosounderSoundSpeed = configuration.getEchosounderSoundSpeed(); - DataAcquisition dataAcquisition = dataAcquisitionDAO.create(); + DataAcquisition dataAcquisition = create(dataAcquisitionDAO); // fill from manual configuration dataAcquisition.setAcousticInstrument(instrument); @@ -450,7 +445,7 @@ String softwareVersion, String soundSpeedCalculations, AcousticDataImportModelRow row, - DataProcessingDAO dataProcessingDAO) throws TopiaException { + DataProcessingDAO dataProcessingDAO) { String transceiverAcquisitionAbsorptionDescription = configuration.getTransceiverAcquisitionAbsorptionDescription(); @@ -462,7 +457,7 @@ String acousticDensityUnit = configuration.getAcousticDensityUnit(); String notes = configuration.getNotes(); - DataProcessing dataProcessing = dataProcessingDAO.create(); + DataProcessing dataProcessing = create(dataProcessingDAO); // fill from manual configuration dataProcessing.setProcessingTemplate(processingTemplate); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CatchesDataImportService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -26,14 +26,25 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.InputFile; import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.GearMetadataValueDAO; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.OperationDAO; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.services.configurations.CatchesDataImportConfiguration; +import fr.ifremer.echobase.services.csv.SampleDataImportModel; +import fr.ifremer.echobase.services.csv.SampleDataImportModelRow; +import fr.ifremer.echobase.services.csv.SampleImportModel; +import fr.ifremer.echobase.services.csv.SampleImportModelRow; +import org.nuiton.util.csv.Import; +import org.nuiton.util.csv.ImportRuntimeException; +import java.io.Reader; import java.util.Map; /** - * Service to launch a "catches data" import. + * Service to launch a "catches sample data" import. * * @author tchemit <chemit@codelutin.com> * @since 0.3 @@ -42,7 +53,7 @@ @Override public Map<InputFile, CsvImportResult> startImport(CatchesDataImportConfiguration configuration, - EchoBaseUser user) { + EchoBaseUser user) throws ImportException { Map<InputFile, CsvImportResult> result = Maps.newHashMap(); Voyage voyage = getEntityById(Voyage.class, @@ -58,12 +69,60 @@ return result; } - private void importSampleFile(InputFile inputFile, Voyage voyage, Vessel vessel) { - char csvSeparator = serviceContext.getConfiguration().getCsvSeparator(); + private void importSampleFile(InputFile inputFile, + Voyage voyage, + Vessel vessel) throws ImportException { + + SampleImportModel csvModel = new SampleImportModel(getCsvSeparator()); + + OperationDAO dao = getDAO(Operation.class, OperationDAO.class); + GearMetadataValueDAO metadataValuedao = + getDAO(GearMetadataValue.class, GearMetadataValueDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<SampleImportModelRow> importer = + Import.newImport(csvModel, reader); + + for (SampleImportModelRow row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } - private void importSampleDataFile(InputFile inputFile, Voyage voyage, Vessel vessel) { - char csvSeparator = serviceContext.getConfiguration().getCsvSeparator(); + private void importSampleDataFile(InputFile inputFile, + Voyage voyage, + Vessel vessel) throws ImportException { + + SampleDataImportModel csvModel = new SampleDataImportModel(getCsvSeparator()); + + OperationDAO dao = getDAO(Operation.class, OperationDAO.class); + GearMetadataValueDAO metadataValuedao = + getDAO(GearMetadataValue.class, GearMetadataValueDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<SampleDataImportModelRow> importer = + Import.newImport(csvModel, reader); + + for (SampleDataImportModelRow row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/CommonDataImportService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -30,8 +30,11 @@ import fr.ifremer.echobase.InputFile; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Transect; +import fr.ifremer.echobase.entities.data.TransectDAO; import fr.ifremer.echobase.entities.data.Transit; +import fr.ifremer.echobase.entities.data.TransitDAO; import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.data.VoyageDAO; import fr.ifremer.echobase.entities.references.AreaOfOperation; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.entities.references.MissionDAO; @@ -44,18 +47,16 @@ import fr.ifremer.echobase.services.csv.TransitImportModelRow; import fr.ifremer.echobase.services.csv.VoyageImportModel; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.util.csv.Import; import org.nuiton.util.csv.ImportModel; +import org.nuiton.util.csv.ImportRuntimeException; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; import java.io.Reader; import java.util.Date; -import java.util.List; import java.util.Map; +import static org.nuiton.i18n.I18n._; + /** * Service to launch a "common data" import. * @@ -66,7 +67,7 @@ @Override public Map<InputFile, CsvImportResult> startImport(CommonDataImportConfiguration configuration, - EchoBaseUser user) throws IOException, TopiaException { + EchoBaseUser user) throws ImportException { Map<InputFile, CsvImportResult> result = Maps.newHashMap(); @@ -84,61 +85,51 @@ getEntityById(AreaOfOperation.class, configuration.getAreaOfOperationId()); - importVoyageFile(configuration.getVoyageFile(), mission, areaOfOperation, configuration.getVoyageDescription(), configuration.getDatum()); - List<Voyage> allVoyages = getEntities(Voyage.class); - Map<String, Voyage> voyageMap = Maps.uniqueIndex( - allVoyages, EchoBaseFunctions.VOYAGE_NAME); importTransitFile(configuration.getTransitFile(), - voyageMap, configuration.getTransitRelatedActivity()); + importTransectFile(configuration.getTransectFile(), vessel, - voyageMap, configuration); - - } break; case TRANSECT: { - List<Voyage> allVoyages = getEntities(Voyage.class); - Map<String, Voyage> voyageMap = Maps.uniqueIndex( - allVoyages, EchoBaseFunctions.VOYAGE_NAME); + importTransectFile(configuration.getTransectFile(), vessel, - voyageMap, configuration); } break; } - commitTransaction("Could not commit transaction of common data import"); return result; } + public Mission createMission(Mission mission) throws MissionNameAlreadyExistException { - + Preconditions.checkNotNull(mission); - + try { - MissionDAO dao = (MissionDAO) getDAO(Mission.class); + MissionDAO dao = getDAO(Mission.class, MissionDAO.class); // check mission name is unique - boolean exists = dao.existByProperties(Mission.PROPERTY_NAME, + boolean exists = dao.existByProperties(Mission.PROPERTY_NAME, mission.getName()); - + if (exists) { throw new MissionNameAlreadyExistException(); } - Mission result = dao.create(mission); + Mission result = create(dao, mission); commitTransaction("Could not create mission " + mission.getName()); return result; @@ -151,43 +142,57 @@ Mission mission, AreaOfOperation areaOfOperation, String voyageDescription, - String datum) throws IOException, TopiaException { + String datum) throws ImportException { + VoyageDAO dao = getDAO(Voyage.class, VoyageDAO.class); - ImportModel<Voyage> csvModel = new VoyageImportModel(serviceContext.getConfiguration().getCsvSeparator()); + ImportModel<Voyage> csvModel = + new VoyageImportModel(getCsvSeparator()); - TopiaDAO<Voyage> dao = getDAO(Voyage.class); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + + Reader reader = getInputFileReader(inputFile); + Import<Voyage> importer = Import.newImport(csvModel, reader); try { - Import<Voyage> importer = Import.newImport(csvModel, reader); for (Voyage voyage : importer) { - voyage.setMission(mission); - voyage.setAreaOfOperation(areaOfOperation); - voyage.setDescription(voyageDescription); - voyage.setDatum(datum); - dao.create(voyage); + Voyage createdVoyage = create(dao); + + createdVoyage.setMission(mission); + createdVoyage.setAreaOfOperation(areaOfOperation); + createdVoyage.setDescription(voyageDescription); + createdVoyage.setDatum(datum); + createdVoyage.setName(voyage.getName()); + createdVoyage.setStartDate(voyage.getStartDate()); + createdVoyage.setEndDate(voyage.getEndDate()); + createdVoyage.setStartPort(voyage.getStartPort()); + createdVoyage.setEndPort(voyage.getEndPort()); } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } } protected void importTransitFile(InputFile inputFile, - Map<String, Voyage> voyageMap, - String relatedActivity) throws TopiaException, IOException { - TransitImportModel csvModel = new TransitImportModel(serviceContext.getConfiguration().getCsvSeparator(), voyageMap); + String relatedActivity) throws ImportException { - TopiaDAO<Transit> dao = getDAO(Transit.class); + Map<String, Voyage> voyageMap = getEntitiesMap( + Voyage.class, EchoBaseFunctions.VOYAGE_NAME); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + TransitImportModel csvModel = new TransitImportModel(getCsvSeparator(), voyageMap); + + TransitDAO dao = getDAO(Transit.class, TransitDAO.class); + + Reader reader = getInputFileReader(inputFile); try { - Import<TransitImportModelRow> importer = Import.newImport(csvModel, reader); + Import<TransitImportModelRow> importer = + Import.newImport(csvModel, reader); for (TransitImportModelRow row : importer) { Voyage voyage = row.getVoyage(); - Transit transit = dao.create(); + Transit transit = create(dao); transit.setDescription(row.getDescription()); transit.setStartLocality(row.getStartLocality()); @@ -199,27 +204,31 @@ voyage.addTransit(transit); } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } } private void importTransectFile(InputFile inputFile, Vessel vessel, - Map<String, Voyage> voyageMap, CommonDataImportConfiguration configuration - ) throws TopiaException, IOException { + ) throws ImportException { + Map<String, Voyage> voyageMap = getEntitiesMap( + Voyage.class, EchoBaseFunctions.VOYAGE_NAME); + String datum = configuration.getDatum(); String license = configuration.getTransectLicence(); String geospatialVerticalPositive = configuration.getTransectGeospatialVerticalPositive(); String binUnitsPingAxis = configuration.getTransectBinUnitsPingAxis(); - TransectImportModel csvModel = new TransectImportModel(serviceContext.getConfiguration().getCsvSeparator(), voyageMap); + TransectImportModel csvModel = new TransectImportModel(getCsvSeparator(), voyageMap); - TopiaDAO<Transect> dao = getDAO(Transect.class); + TransectDAO dao = getDAO(Transect.class, TransectDAO.class); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + Reader reader = getInputFileReader(inputFile); try { Import<TransectImportModelRow> importer = Import.newImport(csvModel, reader); @@ -232,14 +241,13 @@ Transit transit = voyage.getTransit(timeCoverageStart, timeCoverageEnd); if (transit == null) { - throw new EchoBaseTechnicalException( - "Could not find transit for voyage " + voyage.getName() + " between " + timeCoverageStart + " and " + timeCoverageEnd); + throw new ImportException( + _("echobase.importError.no.transit.between.date", + voyage.getName(), timeCoverageStart, timeCoverageEnd)); } - Transect transect = dao.create( - Transect.PROPERTY_VESSEL, vessel - ); - + Transect transect = create(dao); + transect.setVessel(vessel); transect.setTitle(row.getTitle()); transect.setTransectAbstract(row.getTransectAbstract()); transect.setComment(row.getComment()); @@ -265,8 +273,10 @@ transit.addTransect(transect); } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } } Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java (from rev 305, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java) =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,122 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services; + +import com.google.common.base.Preconditions; +import fr.ifremer.echobase.EchoBaseConfiguration; +import fr.ifremer.echobase.entities.meta.DbMeta; +import org.nuiton.topia.TopiaContext; + +import java.util.Locale; + +/** + * Instances of this class will be given to service factory. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class DefaultEchoBaseServiceContext implements EchoBaseServiceContext { + + protected TopiaContext transaction; + + protected EchoBaseServiceFactory serviceFactory; + + protected EchoBaseConfiguration configuration; + + protected Locale locale; + + protected DbMeta dbMeta; + + public static EchoBaseServiceContext newContext( + EchoBaseServiceContext serviceContext, + TopiaContext transaction) { + return newContext(serviceContext.getLocale(), + transaction, + serviceContext.getConfiguration(), + serviceContext.getDbMeta(), + serviceContext.getServiceFactory() + ); + } + + public static EchoBaseServiceContext newContext( + Locale locale, + TopiaContext transaction, + EchoBaseConfiguration configuration, + DbMeta dbMeta, + EchoBaseServiceFactory serviceFactory) { + return new DefaultEchoBaseServiceContext(locale, + transaction, + configuration, + dbMeta, + serviceFactory); + } + + protected DefaultEchoBaseServiceContext(Locale locale, + TopiaContext transaction, + EchoBaseConfiguration configuration, + DbMeta dbMeta, + EchoBaseServiceFactory serviceFactory) { + this.locale = locale; + this.transaction = transaction; + this.configuration = configuration; + this.dbMeta = dbMeta; + this.serviceFactory = serviceFactory; + } + + @Override + public TopiaContext getTransaction() { + Preconditions.checkNotNull(transaction); + return transaction; + } + + @Override + public void setTransaction(TopiaContext transaction) { + this.transaction = transaction; + } + + @Override + public Locale getLocale() { + return locale; + } + + @Override + public <E extends EchoBaseService> E newService(Class<E> clazz) { + return serviceFactory.newService(clazz, this); + } + + @Override + public EchoBaseConfiguration getConfiguration() { + return configuration; + } + + @Override + public DbMeta getDbMeta() { + return dbMeta; + } + + @Override + public EchoBaseServiceFactory getServiceFactory() { + return serviceFactory; + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContextImpl.java 2012-02-04 09:20:28 UTC (rev 306) @@ -1,122 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.echobase.services; - -import com.google.common.base.Preconditions; -import fr.ifremer.echobase.EchoBaseConfiguration; -import fr.ifremer.echobase.entities.meta.DbMeta; -import org.nuiton.topia.TopiaContext; - -import java.util.Locale; - -/** - * Instances of this class will be given to service factory. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class EchoBaseServiceContextImpl implements EchoBaseServiceContext { - - protected TopiaContext transaction; - - protected EchoBaseServiceFactory serviceFactory; - - protected EchoBaseConfiguration configuration; - - protected Locale locale; - - protected DbMeta dbMeta; - - public static EchoBaseServiceContext newContext( - EchoBaseServiceContext serviceContext, - TopiaContext transaction) { - return newContext(serviceContext.getLocale(), - transaction, - serviceContext.getConfiguration(), - serviceContext.getDbMeta(), - serviceContext.getServiceFactory() - ); - } - - public static EchoBaseServiceContext newContext( - Locale locale, - TopiaContext transaction, - EchoBaseConfiguration configuration, - DbMeta dbMeta, - EchoBaseServiceFactory serviceFactory) { - return new EchoBaseServiceContextImpl(locale, - transaction, - configuration, - dbMeta, - serviceFactory); - } - - protected EchoBaseServiceContextImpl(Locale locale, - TopiaContext transaction, - EchoBaseConfiguration configuration, - DbMeta dbMeta, - EchoBaseServiceFactory serviceFactory) { - this.locale = locale; - this.transaction = transaction; - this.configuration = configuration; - this.dbMeta = dbMeta; - this.serviceFactory = serviceFactory; - } - - @Override - public TopiaContext getTransaction() { - Preconditions.checkNotNull(transaction); - return transaction; - } - - @Override - public void setTransaction(TopiaContext transaction) { - this.transaction = transaction; - } - - @Override - public Locale getLocale() { - return locale; - } - - @Override - public <E extends EchoBaseService> E newService(Class<E> clazz) { - return serviceFactory.newService(clazz, this); - } - - @Override - public EchoBaseConfiguration getConfiguration() { - return configuration; - } - - @Override - public DbMeta getDbMeta() { - return dbMeta; - } - - @Override - public EchoBaseServiceFactory getServiceFactory() { - return serviceFactory; - } -} Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-02-04 09:20:28 UTC (rev 306) @@ -58,12 +58,12 @@ this.serviceContext = serviceContext; } - public <E extends TopiaEntity> List<E> getEntities(EchoBaseEntityEnum entityType) { + public final <E extends TopiaEntity> List<E> getEntities(EchoBaseEntityEnum entityType) { Class<E> contract = (Class<E>) entityType.getContract(); return getEntities(contract); } - public <E extends TopiaEntity> List<E> getEntities(Class<E> entityType) { + public final <E extends TopiaEntity> List<E> getEntities(Class<E> entityType) { Preconditions.checkNotNull(entityType); try { List<E> result = getDAO(entityType).findAll(); @@ -74,7 +74,7 @@ } } - public <E extends TopiaEntity> E getEntityById(Class<E> entityType, String id) { + public final <E extends TopiaEntity> E getEntityById(Class<E> entityType, String id) { Preconditions.checkNotNull(entityType); Preconditions.checkArgument(StringUtils.isNotEmpty(id)); try { @@ -87,23 +87,42 @@ } } - protected TopiaContext getTransaction() { + public final <E extends TopiaEntity> E getEntityByProperty(Class<E> entityType, + String propertyId, + Object propertyValue) { + Preconditions.checkNotNull(entityType); + Preconditions.checkArgument(StringUtils.isNotEmpty(propertyId)); + try { + E result = getDAO(entityType).findByProperty(propertyId, propertyValue); + return result; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException( + "Could not obtain data of property [" + propertyId + "] for type " + + entityType, eee); + } + } + + protected final TopiaContext getTransaction() { return serviceContext.getTransaction(); } - protected Locale getLocale() { + protected final Locale getLocale() { return serviceContext.getLocale(); } - protected DbMeta getDbMeta() { + protected final DbMeta getDbMeta() { return serviceContext.getDbMeta(); } - protected EchoBaseConfiguration getConfiguration() { + protected final EchoBaseConfiguration getConfiguration() { return serviceContext.getConfiguration(); } - protected <E extends EchoBaseService> E getService(Class<E> serviceClass) { + protected char getCsvSeparator() { + return getConfiguration().getCsvSeparator(); + } + + protected final <E extends EchoBaseService> E getService(Class<E> serviceClass) { if (services == null) { services = Maps.newHashMap(); } @@ -115,20 +134,31 @@ return service; } - protected <E extends TopiaEntity> TopiaDAO<E> getDAO(EchoBaseEntityEnum entityEnum) throws TopiaException { + protected final <E extends TopiaEntity> TopiaDAO<E> getDAO(EchoBaseEntityEnum entityEnum) { TopiaDAO<E> dao = getDAO((Class<E>) entityEnum.getContract()); return dao; } - protected <E extends TopiaEntity> TopiaDAO<E> getDAO(Class<E> entityType) throws TopiaException { - TopiaDAO<E> dao = EchoBaseDAOHelper.<E, TopiaDAO<E>>getDAO( - getTransaction(), - entityType); + protected final <E extends TopiaEntity> TopiaDAO<E> getDAO(Class<E> entityType) { + try { + TopiaDAO<E> dao = EchoBaseDAOHelper.<E, TopiaDAO<E>>getDAO( + getTransaction(), + entityType); - return dao; + return dao; + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not obtain dao for type " + entityType, e); + } } - public void commitTransaction(String errorMessage) { + protected final <E extends TopiaEntity, D extends TopiaDAO<E>> D getDAO(Class<E> entityType, Class<D> daoType) { + TopiaDAO<E> dao = getDAO( + entityType); + Preconditions.checkState(daoType.isAssignableFrom(dao.getClass())); + return (D) dao; + } + + public final void commitTransaction(String errorMessage) { try { getTransaction().commitTransaction(); } catch (TopiaException eee) { @@ -136,7 +166,7 @@ } } - protected void flushTransaction() throws TopiaException { + protected final void flushTransaction() throws TopiaException { TopiaContextImplementor tx = (TopiaContextImplementor) getTransaction(); tx.getHibernate().flush(); } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EmbeddedApplicationService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -185,8 +185,8 @@ // create new service context (with new transaction) EchoBaseServiceContext newServiceContext = - EchoBaseServiceContextImpl.newContext(serviceContext, - topiaContext); + DefaultEchoBaseServiceContext.newContext(serviceContext, + topiaContext); // get user service from h2 db UserService userService = Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -164,7 +164,7 @@ static class MyImportToMap extends ImportToMap { public static MyImportToMap newImportToMap(ImportModel<Map<String, Object>> model, - Reader reader) { + Reader reader) { return new MyImportToMap(model, reader); } Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportException.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportException.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportException.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,53 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services; + +import fr.ifremer.echobase.InputFile; +import org.nuiton.util.csv.ImportRuntimeException; + +import static org.nuiton.i18n.I18n._; + +/** + * Exception when a import new data failed. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class ImportException extends Exception { + + private static final long serialVersionUID = 1L; + + public ImportException(String message) { + super(message); + } + + public ImportException(String message, Throwable cause) { + super(message, cause); + } + + public ImportException(InputFile inputfile, ImportRuntimeException importError) { + this(_("echobase.importError.fromFile", inputfile.getFile(), + importError.getMessage()), importError); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportException.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/OperationImportService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -24,14 +24,30 @@ package fr.ifremer.echobase.services; import com.google.common.collect.Maps; +import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.InputFile; import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.GearMetadataValueDAO; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.OperationDAO; +import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.entities.data.OperationMetadataValueDAO; import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.OperationMetadata; import fr.ifremer.echobase.entities.references.Vessel; import fr.ifremer.echobase.services.configurations.OperationImportConfiguration; -import org.nuiton.topia.TopiaException; +import fr.ifremer.echobase.services.csv.GearMetadataValueImportModel; +import fr.ifremer.echobase.services.csv.GearMetadataValueImportModelRow; +import fr.ifremer.echobase.services.csv.OperationImportModel; +import fr.ifremer.echobase.services.csv.OperationImportModelRow; +import fr.ifremer.echobase.services.csv.OperationMetadataValueImportModel; +import fr.ifremer.echobase.services.csv.OperationMetadataValueImportModelRow; +import org.nuiton.util.csv.Import; +import org.nuiton.util.csv.ImportRuntimeException; -import java.io.IOException; +import java.io.Reader; import java.util.Map; /** @@ -42,10 +58,9 @@ */ public class OperationImportService extends AbstractImportDataService<OperationImportConfiguration> { - @Override public Map<InputFile, CsvImportResult> startImport(OperationImportConfiguration configuration, - EchoBaseUser user) throws IOException, TopiaException { + EchoBaseUser user) throws ImportException { Map<InputFile, CsvImportResult> result = Maps.newHashMap(); @@ -55,13 +70,13 @@ Voyage voyage = getEntityById(Voyage.class, configuration.getVoyageId()); - importOperationFile(configuration.getOperationFile(), voyage, vessel); importOperationMetadataFile(configuration.getOperationMetadataFile(), voyage, vessel); - importgearMetadataFile(configuration.getGearMetadataFile(), voyage, + importGearMetadataFile(configuration.getGearMetadataFile(), + voyage, vessel); commitTransaction("Could not commit transaction of operation import"); @@ -70,22 +85,94 @@ protected void importOperationFile(InputFile inputFile, Voyage voyage, - Vessel vessel) { - char csvSeparator = getConfiguration().getCsvSeparator(); + Vessel vessel) throws ImportException { + OperationImportModel csvModel = + new OperationImportModel(getCsvSeparator()); + + OperationDAO dao = getDAO(Operation.class, OperationDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<OperationImportModelRow> importer = + Import.newImport(csvModel, reader); + + for (OperationImportModelRow row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } protected void importOperationMetadataFile(InputFile inputFile, Voyage voyage, - Vessel vessel) { - char csvSeparator = getConfiguration().getCsvSeparator(); + Vessel vessel) throws ImportException { + Map<String, OperationMetadata> operationMetadatasByName = + getEntitiesMap(OperationMetadata.class, + EchoBaseFunctions.OPERATION_METADATA_NAME); + + OperationMetadataValueImportModel csvModel = + new OperationMetadataValueImportModel(getCsvSeparator()); + + OperationDAO dao = getDAO(Operation.class, OperationDAO.class); + OperationMetadataValueDAO metadataValuedao = + getDAO(OperationMetadataValue.class, + OperationMetadataValueDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<OperationMetadataValueImportModelRow> importer = + Import.newImport(csvModel, reader); + + for (OperationMetadataValueImportModelRow row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } - protected void importgearMetadataFile(InputFile inputFile, + protected void importGearMetadataFile(InputFile inputFile, Voyage voyage, - Vessel vessel) { - char csvSeparator = getConfiguration().getCsvSeparator(); + Vessel vessel) throws ImportException { + Map<String, GearMetadata> gearMetadatasByType = + getEntitiesMap(GearMetadata.class, EchoBaseFunctions.GEAR_METADATA_TYPE); + + GearMetadataValueImportModel csvModel = + new GearMetadataValueImportModel(getCsvSeparator()); + + OperationDAO dao = getDAO(Operation.class, OperationDAO.class); + GearMetadataValueDAO metadataValuedao = + getDAO(GearMetadataValue.class, GearMetadataValueDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<GearMetadataValueImportModelRow> importer = + Import.newImport(csvModel, reader); + + for (GearMetadataValueImportModelRow row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ResultsImportService.java 2012-02-04 09:20:28 UTC (rev 306) @@ -29,11 +29,14 @@ import fr.ifremer.echobase.EchoBasePredicates; import fr.ifremer.echobase.InputFile; 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.Voyage; import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.Echotype; import fr.ifremer.echobase.entities.references.LengthAgeKey; import fr.ifremer.echobase.entities.references.LengthWeightKey; +import fr.ifremer.echobase.entities.references.LengthWeightKeyDAO; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; import fr.ifremer.echobase.entities.references.SpeciesCategory; @@ -47,15 +50,14 @@ import fr.ifremer.echobase.services.csv.LengthAgeKeyImportModelRow; import fr.ifremer.echobase.services.csv.LengthWeightKeyImportModel; import fr.ifremer.echobase.services.csv.LengthWeightKeyImportModelRow; -import org.nuiton.topia.TopiaException; +import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModel; +import fr.ifremer.echobase.services.csv.RegionCellAssociationImportModelRow; +import fr.ifremer.echobase.services.csv.RegionCellImportModel; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.util.csv.Import; +import org.nuiton.util.csv.ImportRuntimeException; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; import java.io.Reader; -import java.util.List; import java.util.Map; /** @@ -67,59 +69,41 @@ public class ResultsImportService extends AbstractImportDataService<ResultsImportConfiguration> { @Override - public Map<InputFile, CsvImportResult> startImport(ResultsImportConfiguration configuration, EchoBaseUser user) throws IOException, TopiaException { + public Map<InputFile, CsvImportResult> startImport(ResultsImportConfiguration configuration, EchoBaseUser user) throws ImportException { Map<InputFile, CsvImportResult> result = Maps.newHashMap(); + ResultsImportMode importMode = configuration.getImportMode(); - ResultsImportMode importMode = configuration.getImportMode(); switch (importMode) { case VOYAGE: - List<Voyage> allVoyages = getEntities(Voyage.class); - Map<String, Voyage> voyageMap = Maps.uniqueIndex( - allVoyages, EchoBaseFunctions.VOYAGE_NAME); + Map<String, Voyage> voyageMap = getEntitiesMap( + Voyage.class, EchoBaseFunctions.VOYAGE_NAME); - List<Species> allSpecies = - getEntities(Species.class); - Map<String, Species> speciesMap = Maps.uniqueIndex( - allSpecies, EchoBaseFunctions.SPECIES_BARACOUDA_CODE); + Map<String, Species> speciesMap = getEntitiesMap( + Species.class, + EchoBaseFunctions.SPECIES_BARACOUDA_CODE); if (configuration.canImportLengthAgeKeyFile()) { - List<Strata> allStratas = - getEntities(Strata.class); - Map<String, Strata> strataMap = Maps.uniqueIndex( - allStratas, EchoBaseFunctions.STRATA_BY_NAME); importLenthAgeKey(configuration.getLengthAgeKeyFile(), voyageMap, - strataMap, speciesMap ); } if (configuration.canImportLengthWeightKeyFile()) { - List<SizeCategory> allSizeCategorys = - getEntities(SizeCategory.class); - Map<String, SizeCategory> sizeCategoryMap = Maps.uniqueIndex( - allSizeCategorys, EchoBaseFunctions.SIZE_CATEGORY_NAME); importLenghtWeightKey(configuration.getLengthWeightKeyFile(), voyageMap, - sizeCategoryMap, speciesMap ); } if (configuration.canImportEchotypeFile()) { - List<DepthStratum> allDepthStratums = - getEntities(DepthStratum.class); - Map<String, DepthStratum> depthStratumMap = Maps.uniqueIndex( - allDepthStratums, EchoBaseFunctions.DEPTH_STRATUM_ID); - importEchotypeFile(configuration.getEchotypeFile(), voyageMap, - depthStratumMap, speciesMap ); } @@ -136,30 +120,76 @@ return result; } - protected void importRegionsFile(InputFile inputFile) { + protected void importRegionsFile(InputFile inputFile) throws ImportException { + RegionCellImportModel csvModel = new RegionCellImportModel( + serviceContext.getConfiguration().getCsvSeparator()); + + CellDAO dao = getDAO(Cell.class, CellDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<Cell> importer = + Import.newImport(csvModel, reader); + + for (Cell row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } - protected void importAssociationFile(InputFile inputFile) { + protected void importAssociationFile(InputFile inputFile) throws ImportException { + RegionCellAssociationImportModel csvModel = new RegionCellAssociationImportModel( + serviceContext.getConfiguration().getCsvSeparator()); + + CellDAO dao = getDAO(Cell.class, CellDAO.class); + + Reader reader = getInputFileReader(inputFile); + try { + Import<RegionCellAssociationImportModelRow> importer = + Import.newImport(csvModel, reader); + + for (RegionCellAssociationImportModelRow row : importer) { + + //TODO + + } + + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); + } finally { + closeReader(reader, inputFile); + } } protected void importLenghtWeightKey(InputFile inputFile, Map<String, Voyage> voyageMap, - Map<String, SizeCategory> sizeCategoryMap, - Map<String, Species> speciesMap) throws TopiaException, IOException { + Map<String, Species> speciesMap) throws ImportException { + Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap( + SizeCategory.class, + EchoBaseFunctions.SIZE_CATEGORY_NAME); + LengthWeightKeyImportModel csvModel = new LengthWeightKeyImportModel( serviceContext.getConfiguration().getCsvSeparator(), voyageMap, sizeCategoryMap, speciesMap); - TopiaDAO<LengthWeightKey> dao = getDAO(LengthWeightKey.class); + LengthWeightKeyDAO dao = getDAO(LengthWeightKey.class, + LengthWeightKeyDAO.class); SpeciesCategoryDAO speciesCategoryDAO = - (SpeciesCategoryDAO) getDAO(SpeciesCategory.class); + getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + Reader reader = getInputFileReader(inputFile); try { Import<LengthWeightKeyImportModelRow> importer = Import.newImport(csvModel, reader); @@ -168,7 +198,7 @@ Voyage voyage = row.getVoyage(); - LengthWeightKey lengthWeightKey = dao.create(); + LengthWeightKey lengthWeightKey = create(dao); lengthWeightKey.setAParameter(row.getaParameter()); lengthWeightKey.setBParameter(row.getbParameter()); @@ -179,7 +209,8 @@ SizeCategory sizeCategory = row.getSizeCategory(); // find speciesCategory - SpeciesCategory speciesCategory = speciesCategoryDAO.findByProperties( + SpeciesCategory speciesCategory = findByProperties( + speciesCategoryDAO, SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory, SpeciesCategory.PROPERTY_SPECIES, species ); @@ -187,9 +218,9 @@ if (speciesCategory == null) { // not found, creates it - speciesCategory = speciesCategoryDAO.create( - SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory, - SpeciesCategory.PROPERTY_SPECIES, species + speciesCategory = create(speciesCategoryDAO, + SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory, + SpeciesCategory.PROPERTY_SPECIES, species ); } @@ -197,29 +228,31 @@ // attach it to voyage voyage.addLengthWeightKey(lengthWeightKey); - } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } - } protected void importLenthAgeKey(InputFile inputFile, Map<String, Voyage> voyageMap, - Map<String, Strata> startaMap, - Map<String, Species> speciesMap) throws IOException, TopiaException { + Map<String, Species> speciesMap) throws ImportException { + Map<String, Strata> strataMap = getEntitiesMap( + Strata.class, EchoBaseFunctions.STRATA_BY_NAME); + LengthAgeKeyImportModel csvModel = new LengthAgeKeyImportModel( serviceContext.getConfiguration().getCsvSeparator(), voyageMap, - startaMap, + strataMap, speciesMap); TopiaDAO<LengthAgeKey> dao = getDAO(LengthAgeKey.class); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + Reader reader = getInputFileReader(inputFile); try { Import<LengthAgeKeyImportModelRow> importer = Import.newImport(csvModel, reader); @@ -228,7 +261,7 @@ Voyage voyage = row.getVoyage(); - LengthAgeKey lengthAgeKey = dao.create(); + LengthAgeKey lengthAgeKey = create(dao); lengthAgeKey.setAge(row.getAge()); lengthAgeKey.setLength(row.getLength()); @@ -242,16 +275,21 @@ } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } } private void importEchotypeFile(InputFile inputFile, Map<String, Voyage> voyageMap, - Map<String, DepthStratum> depthStratumMap, - Map<String, Species> speciesMap) throws TopiaException, IOException { + Map<String, Species> speciesMap) throws ImportException { + Map<String, DepthStratum> depthStratumMap = getEntitiesMap( + DepthStratum.class, + EchoBaseFunctions.DEPTH_STRATUM_ID); + EchotypeImportModel csvModel = new EchotypeImportModel( serviceContext.getConfiguration().getCsvSeparator(), voyageMap, @@ -260,7 +298,7 @@ TopiaDAO<Echotype> dao = getDAO(Echotype.class); - Reader reader = new BufferedReader(new FileReader(inputFile.getFile())); + Reader reader = getInputFileReader(inputFile); try { Import<EchotypeImportModelRow> importer = Import.newImport(csvModel, reader); @@ -284,9 +322,9 @@ if (echotype == null) { // creates it - echotype = dao.create( - Echotype.PROPERTY_NAME, echotypeName, - Echotype.PROPERTY_MEANING, row.getMeaning() + echotype = create(dao, + Echotype.PROPERTY_NAME, echotypeName, + Echotype.PROPERTY_MEANING, row.getMeaning() ); DepthStratum depthStratum = row.getDepthStratum(); @@ -308,8 +346,10 @@ } } + } catch (ImportRuntimeException e) { + throw new ImportException(inputFile, e); } finally { - reader.close(); + closeReader(reader, inputFile); } } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/configurations/AbstractEchobaseActionConfiguration.java 2012-02-04 09:20:28 UTC (rev 306) @@ -48,6 +48,8 @@ private long endTime; + private Exception error; + public final int getNbSteps() { return nbSteps; } @@ -86,6 +88,14 @@ this.endTime = endTime; } + public Exception getError() { + return error; + } + + public void setError(Exception error) { + this.error = error; + } + public String getActionTime() { long sTime = getStartTime(); long eTime = getEndTime(); Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,44 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.GearMetadataValue; + +/** + * Model to import {@link GearMetadataValue}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class GearMetadataValueImportModel extends CsvModelUtil.AbstractImportModel<GearMetadataValueImportModelRow> { + + public GearMetadataValueImportModel(char separator) { + super(separator); + } + + @Override + public GearMetadataValueImportModelRow newEmptyInstance() { + return new GearMetadataValueImportModelRow(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,38 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +/** + * Bean used as a row for import of {@link OperationMetadataValueImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class GearMetadataValueImportModelRow { + + + public GearMetadataValueImportModelRow() { + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/GearMetadataValueImportModelRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,44 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Operation; + +/** + * Model to import {@link Operation}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class OperationImportModel extends CsvModelUtil.AbstractImportModel<OperationImportModelRow> { + + public OperationImportModel(char separator) { + super(separator); + } + + @Override + public OperationImportModelRow newEmptyInstance() { + return new OperationImportModelRow(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,38 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +/** + * Bean used as a row for import of {@link OperationImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class OperationImportModelRow { + + + public OperationImportModelRow() { + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationImportModelRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,44 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.OperationMetadataValue; + +/** + * Model to import {@link OperationMetadataValue}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class OperationMetadataValueImportModel extends CsvModelUtil.AbstractImportModel<OperationMetadataValueImportModelRow> { + + public OperationMetadataValueImportModel(char separator) { + super(separator); + } + + @Override + public OperationMetadataValueImportModelRow newEmptyInstance() { + return new OperationMetadataValueImportModelRow(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,38 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +/** + * Bean used as a row for import of {@link OperationMetadataValueImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class OperationMetadataValueImportModelRow { + + + public OperationMetadataValueImportModelRow() { + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/OperationMetadataValueImportModelRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,42 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +/** + * Model to import cells associations from region cells and esdu cells. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class RegionCellAssociationImportModel extends CsvModelUtil.AbstractImportModel<RegionCellAssociationImportModelRow> { + + public RegionCellAssociationImportModel(char separator) { + super(separator); + } + + @Override + public RegionCellAssociationImportModelRow newEmptyInstance() { + return new RegionCellAssociationImportModelRow(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,41 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellImpl; + +/** + * Bean used as a row for import of {@link RegionCellAssociationImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class RegionCellAssociationImportModelRow { + + + public RegionCellAssociationImportModelRow() { + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellAssociationImportModelRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,45 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.CellImpl; + +/** + * Model to import cells (with type "region"). + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class RegionCellImportModel extends CsvModelUtil.AbstractImportModel<Cell> { + + public RegionCellImportModel(char separator) { + super(separator); + } + + @Override + public Cell newEmptyInstance() { + return new CellImpl(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/RegionCellImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,44 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.SampleData; + +/** + * Model to import {@link SampleData}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class SampleDataImportModel extends CsvModelUtil.AbstractImportModel<SampleDataImportModelRow> { + + public SampleDataImportModel(char separator) { + super(separator); + } + + @Override + public SampleDataImportModelRow newEmptyInstance() { + return new SampleDataImportModelRow(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,38 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +/** + * Bean used as a row for import of {@link SampleDataImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class SampleDataImportModelRow { + + + public SampleDataImportModelRow() { + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleDataImportModelRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModel.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,44 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +import fr.ifremer.echobase.entities.data.Sample; + +/** + * Model to import {@link Sample}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class SampleImportModel extends CsvModelUtil.AbstractImportModel<SampleImportModelRow> { + + public SampleImportModel(char separator) { + super(separator); + } + + @Override + public SampleImportModelRow newEmptyInstance() { + return new SampleImportModelRow(); + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -0,0 +1,38 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase.services.csv; + +/** + * Bean used as a row for import of {@link SampleImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class SampleImportModelRow { + + + public SampleImportModelRow() { + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/SampleImportModelRow.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/TransitImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/TransitImportModelRow.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/TransitImportModelRow.java 2012-02-04 09:20:28 UTC (rev 306) @@ -29,11 +29,11 @@ import java.util.Date; /** -* Bean used as a row for import of {@link TransitImportModel}. -* -* @author tchemit <chemit@codelutin.com> -* @since 0.3 -*/ + * Bean used as a row for import of {@link TransitImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ public class TransitImportModelRow { public static final String PROPERTY_VOYAGE = "voyage"; Modified: trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties =================================================================== --- trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-02-04 09:20:28 UTC (rev 306) @@ -25,3 +25,5 @@ echobase.common.transectFile=Fichier des transects echobase.common.transitFile=Fichier des transits echobase.common.voyageFile=Fichier des voyages +echobase.importError.fromFile=Erreur lors de l'import du fichier %s \: %s +echobase.importError.no.transit.between.date=Pas de transit trouvé pour le voyage %s entre les dates %s et %s Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/AbstractEchoBaseServiceTest.java 2012-02-04 09:20:28 UTC (rev 306) @@ -94,7 +94,7 @@ } protected <E extends EchoBaseService> E getService(Class<E> clazz) throws Exception { - EchoBaseServiceContext serviceContext = EchoBaseServiceContextImpl.newContext( + EchoBaseServiceContext serviceContext = DefaultEchoBaseServiceContext.newContext( Locale.getDefault(), getTransaction(), getConfig(), Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/AreaOfOperationLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/AreaOfOperationLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/AreaOfOperationLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -72,7 +72,7 @@ dao.create(AreaOfOperation.PROPERTY_NAME, codeZone); if (log.isInfoEnabled()) { log.info("Created areaOfOperation : " + - areaOfOperation.getName()); + areaOfOperation.getName()); } } } Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/CellLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/CellLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/CellLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -177,18 +177,27 @@ Map<Integer, DataQuality> dataQualitiesById; DataMetadata surfaceMetadata; + DataMetadata esduLatitudeMetadata; + DataMetadata esduLongitudeMetadata; + DataMetadata esduDepthMetadata; + DataMetadata esduTimeMetadata; + DataMetadata elementaryStartSurfaceDepthMetadata; + DataMetadata elementaryEndSurfaceDepthMetadata; + DataMetadata elementaryStartBottomDepthMetadata; + DataMetadata elementaryEndBottonDepthMetadata; private DataQuality nullDataQuality; TopiaDAO<Cell> dao; + TopiaDAO<Data> dataDao; String dataProcessingId; @@ -371,15 +380,15 @@ String prefix = "[" + dataProcessingId + "] "; log.info(prefix + "Found " + nbRegionData + " region datas for " + - nbRegionCells + " regions cells."); + nbRegionCells + " regions cells."); log.info(prefix + "Found " + nbEsduData + " esdu datas for " + - nbEsduCells + " esdu cells."); + nbEsduCells + " esdu cells."); log.info(prefix + "Found " + nbElementaryData + - " elementary datas for " + nbElementaryCells + - " elementary cells."); + " elementary datas for " + nbElementaryCells + + " elementary cells."); log.info(prefix + "Total data " + (nbRegionData + nbEsduData + - nbElementaryData) + " for " + (nbRegionCells + nbEsduCells + - nbElementaryCells) + " cells"); + nbElementaryData) + " for " + (nbRegionCells + nbEsduCells + + nbElementaryCells) + " cells"); } } @@ -502,7 +511,7 @@ int qualityId = flagAsDouble.intValue(); DataQuality dataQuality = dataQualitiesById.get(qualityId); Preconditions.checkNotNull(dataQuality, "Could not find " + - "dataQuality with id " + qualityId); + "dataQuality with id " + qualityId); Cell esduCell = dao.create( Cell.PROPERTY_CELL_TYPE, esduCellType, Cell.PROPERTY_NAME, cellStringId, Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/DataProcessingLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/DataProcessingLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/DataProcessingLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -72,7 +72,7 @@ for (Map<String, Object> row : db.getTable("EI_CONFIGURATION")) { String voyageName = (String) row.get("CAMPAGNE"); - Voyage voyage = getFK(voyagesByName,voyageName); + Voyage voyage = getFK(voyagesByName, voyageName); Transit transit = voyage.getTransit().iterator().next(); Transect transect = transit.getTransect().iterator().next(); Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EchotypeCategoryLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EchotypeCategoryLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EchotypeCategoryLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -74,7 +74,7 @@ dao.create(EchotypeCategory.PROPERTY_NAME, code); if (log.isInfoEnabled()) { log.info("Created EchotypeCategory : " + - areaOfOperation.getName()); + areaOfOperation.getName()); } } } Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -326,7 +326,7 @@ public void copyStreamToFile(File file, FileType fileType) throws IOException { String path = "/csv/" + fileType.name().toLowerCase() + "/" + - file.getName(); + file.getName(); InputStream stream = getClass().getResourceAsStream(path); try { Preconditions.checkNotNull(stream, @@ -495,7 +495,7 @@ } catch (Exception eee) { throw new EchoBaseTechnicalException( "Could not import entities of type " + - tableMeta.getSource(), eee); + tableMeta.getSource(), eee); } finally { importer.close(); Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -123,25 +123,33 @@ //SONDE OperationMetadata meanWaterDepthOperationMeta; + //JOUR_NUIT OperationMetadata dielPeriodOperationMeta; + //SONDEDEB OperationMetadata startWaterDepthOperationMeta; + //SONDEFIN OperationMetadata endWaterDepthOperationMeta; //LFUNES GearMetadata cableLengthGearMeta; + //VMIN GearMetadata minSpeedGearMeta; + //VMAX GearMetadata maxSpeedGearMeta; TopiaDAO<Operation> dao; + TopiaDAO<OperationMetadataValue> operationMetadataValueDAO; + TopiaDAO<GearMetadataValue> gearMetadataValueDAO; Map<String, DepthStratum> depthStratumByName; + Map<String, Gear> gearByCasinoGearName; @Override @@ -261,7 +269,7 @@ DepthStratum depthStratum = null; String depthStratumId = (String) row.get("STA_IMAGES"); if (StringUtils.isBlank(depthStratumId) || - "nul".equals(depthStratumId)) { + "nul".equals(depthStratumId)) { messages.add("No depthStraum defined"); } else { depthStratum = getFK(depthStratumByName, depthStratumId.trim()); Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleDataTypeLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleDataTypeLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleDataTypeLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -50,12 +50,12 @@ /* raptriBiometryDataType;sampleDataTypeMeaningEng;sampleDataType;sampleDataTypeMeaningFr;Units;Precision */ - model.addDefaultColumn(SampleDataType.PROPERTY_RAPTRI_BIOMETRY_DATA_TYPE,int.class); - model.newMandatoryColumn("sampleDataTypeMeaningEng",SampleDataType.PROPERTY_MEANING_EN); + model.addDefaultColumn(SampleDataType.PROPERTY_RAPTRI_BIOMETRY_DATA_TYPE, int.class); + model.newMandatoryColumn("sampleDataTypeMeaningEng", SampleDataType.PROPERTY_MEANING_EN); model.newMandatoryColumn("sampleDataType", SampleDataType.PROPERTY_NAME); - model.newMandatoryColumn("sampleDataTypeMeaningFr",SampleDataType.PROPERTY_MEANING_FR); - model.newMandatoryColumn("Units",SampleDataType.PROPERTY_UNITS); - model.newMandatoryColumn("Precision",SampleDataType.PROPERTY_PRECISION); + model.newMandatoryColumn("sampleDataTypeMeaningFr", SampleDataType.PROPERTY_MEANING_FR); + model.newMandatoryColumn("Units", SampleDataType.PROPERTY_UNITS); + model.newMandatoryColumn("Precision", SampleDataType.PROPERTY_PRECISION); return model; } } \ No newline at end of file Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SampleLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -111,12 +111,16 @@ } protected SampleDataDAO sampleDataDAO; + protected SpeciesCategoryDAO speciesCategoryDAO; + protected TopiaDAO<Sample> dao; protected Map<String, SizeCategory> sizeCategoryByName; + protected Map<String, SexCategory> sexCategoryByName; + protected Map<String, SpeciesCategory> speciesCategoryByName; @Override Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SpeciesCategoryLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SpeciesCategoryLoader.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/SpeciesCategoryLoader.java 2012-02-04 09:20:28 UTC (rev 306) @@ -136,8 +136,8 @@ if (log.isInfoEnabled()) { log.info("Create speciesCategory speciesBaracoudaCode/size : " + - species.getBaracoudaCode() + "/" + - (sizeCategory == null ? null : sizeCategory.getName())); + species.getBaracoudaCode() + "/" + + (sizeCategory == null ? null : sizeCategory.getName())); } } return speciesCategory; @@ -162,8 +162,8 @@ if (log.isInfoEnabled()) { log.info("Create speciesCategory speciesBaracoudaCode/sex : " + - species.getBaracoudaCode() + "/" + - (sexCategory == null ? null : sexCategory.getName())); + species.getBaracoudaCode() + "/" + + (sexCategory == null ? null : sexCategory.getName())); } } return speciesCategory; @@ -188,7 +188,7 @@ if (log.isInfoEnabled()) { log.info("Create speciesCategory speciesBaracoudaCode : " + - species.getBaracoudaCode()); + species.getBaracoudaCode()); } } return speciesCategory; Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java =================================================================== --- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java 2012-02-04 09:20:28 UTC (rev 306) @@ -29,7 +29,7 @@ import fr.ifremer.echobase.entities.meta.DbMeta; import fr.ifremer.echobase.services.EchoBaseService; import fr.ifremer.echobase.services.EchoBaseServiceContext; -import fr.ifremer.echobase.services.EchoBaseServiceContextImpl; +import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -92,7 +92,7 @@ topiaContext = factory.newEmbeddedDatabase(testdir); - serviceContext = EchoBaseServiceContextImpl.newContext( + serviceContext = DefaultEchoBaseServiceContext.newContext( Locale.getDefault(), topiaContext, configuration, Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2012-02-04 09:20:28 UTC (rev 306) @@ -30,7 +30,7 @@ import fr.ifremer.echobase.entities.EchoBaseUserImpl; import fr.ifremer.echobase.entities.meta.DbMeta; import fr.ifremer.echobase.services.EchoBaseServiceContext; -import fr.ifremer.echobase.services.EchoBaseServiceContextImpl; +import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceFactory; import fr.ifremer.echobase.services.UserService; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; @@ -176,7 +176,7 @@ TopiaContext transaction = rootContext.beginTransaction(); try { - EchoBaseServiceContext serviceContext = EchoBaseServiceContextImpl.newContext( + EchoBaseServiceContext serviceContext = DefaultEchoBaseServiceContext.newContext( Locale.getDefault(), transaction, configuration, Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2012-02-04 09:20:28 UTC (rev 306) @@ -158,7 +158,7 @@ if (o != null && !type.isInstance(o)) { throw new ClassCastException( "parameter " + key + " should be of type " + - type.getName() + " but was " + o.getClass().getName()); + type.getName() + " but was " + o.getClass().getName()); } return (T) o; } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2012-02-04 09:20:28 UTC (rev 306) @@ -31,7 +31,7 @@ import fr.ifremer.echobase.services.DecoratorService; import fr.ifremer.echobase.services.EchoBaseService; import fr.ifremer.echobase.services.EchoBaseServiceContext; -import fr.ifremer.echobase.services.EchoBaseServiceContextImpl; +import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceFactory; import fr.ifremer.echobase.ui.EchoBaseApplicationContext; import fr.ifremer.echobase.ui.EchoBaseSession; @@ -144,7 +144,7 @@ */ protected EchoBaseServiceContext getServiceContext() { if (serviceContext == null) { - serviceContext = EchoBaseServiceContextImpl.newContext( + serviceContext = DefaultEchoBaseServiceContext.newContext( getLocale(), getTransaction(), getConfiguration(), Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java 2012-02-04 09:20:28 UTC (rev 306) @@ -23,8 +23,8 @@ */ package fr.ifremer.echobase.ui.actions.embeddedApplication; +import fr.ifremer.echobase.services.EmbeddedApplicationService; import fr.ifremer.echobase.services.configurations.EmbeddedApplicationConfiguration; -import fr.ifremer.echobase.services.EmbeddedApplicationService; import fr.ifremer.echobase.ui.actions.AbstractWaitAndExecAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -60,7 +60,7 @@ protected void startAction(EmbeddedApplicationConfiguration model) throws Exception { if (log.isInfoEnabled()) { log.info("Start build of embedded application to file " + - model.getFileName()); + model.getFileName()); } service.createEmbeddedApplication(model); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAccousticData.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAccousticData.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAccousticData.java 2012-02-04 09:20:28 UTC (rev 306) @@ -28,7 +28,6 @@ import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.services.configurations.AccousticDataImportConfiguration; import fr.ifremer.echobase.services.configurations.CellPositionReference; -import fr.ifremer.echobase.services.configurations.CommonDataImportMode; import java.io.File; import java.util.Map; Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVessels.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVessels.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVessels.java 2012-02-04 09:20:28 UTC (rev 306) @@ -27,7 +27,6 @@ import com.google.common.collect.Maps; 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.Vessel; import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java 2012-02-02 23:46:23 UTC (rev 305) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java 2012-02-04 09:20:28 UTC (rev 306) @@ -62,7 +62,7 @@ protected void startAction(ImportDbConfiguration model) throws Exception { if (log.isInfoEnabled()) { log.info("Start imports with file " + - model.getInput().getFileName()); + model.getInput().getFileName()); } service.importDb(model, getEchoBaseSession().getEchoBaseUser());
participants (1)
-
tchemit@users.forge.codelutin.com