Author: tchemit Date: 2012-03-16 11:08:35 +0100 (Fri, 16 Mar 2012) New Revision: 366 Url: http://forge.codelutin.com/repositories/revision/echobase/366 Log: les imports de r?\195?\169sultas continuent... Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java Removed: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic.h2.db.gz trunk/echobase-services/src/test/resources/log4j.properties Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java (from rev 362, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java) =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java 2012-03-16 10:08:35 UTC (rev 366) @@ -0,0 +1,101 @@ +/* + * #%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 com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.data.CellDAO; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import org.nuiton.util.csv.ImportRuntimeException; + +import java.util.List; +import java.util.Map; + +/** + * Model to import {@link Result} for esdu cell and echotypes. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class AcousticResultByEchotypeAndSpeciesCategoryImportModel extends CsvModelUtil.AbstractImportModel<AcousticResultByEchotypeAndSpeciesCategoryImportModelRow> { + + public static List<DataMetadata> getMetas(Map<String, DataMetadata> dataMetadataMap, + String... headers) { + + List<String> metadataNames = Lists.newArrayList(headers); + metadataNames.remove(AcousticResultByEchotypeImportModelRow.PROPERTY_ECHOTYPE); + metadataNames.remove("name"); + + List<DataMetadata> result = Lists.newArrayList(); + + for (String header : headers) { + + DataMetadata dataMetadata = dataMetadataMap.get(header); + if (dataMetadata == null) { + throw new ImportRuntimeException( + "Could not find dataMetadata with name [" + header + "]"); + } + result.add(dataMetadata); + } + return result; + } + + public AcousticResultByEchotypeAndSpeciesCategoryImportModel( + char separator, + Map<String, Echotype> echotypeMap, + Map<String, Species> speciesMap, + Map<String, SizeCategory> sizeCategoryMap, + Map<String, AgeCategory> ageCategoryMap, + Voyage voyage, + CellDAO cellDAO, + List<DataMetadata> dataMetadatas) { + super(separator); + + newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); + newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); + newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_LENGTH, SizeCategory.class, SizeCategory.PROPERTY_NAME, sizeCategoryMap); + newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_AGE, AgeCategory.class, AgeCategory.PROPERTY_NAME, ageCategoryMap); + newMandatoryColumn("name", AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.PROPERTY_CELL, CsvModelUtil.newCellValueParser(voyage, cellDAO)); + + + for (DataMetadata metadata : dataMetadatas) { + String name = metadata.getName(); + newMandatoryColumn( + name, + CsvModelUtil.newResultValueParser(metadata), + CsvModelUtil.<AcousticResultByEchotypeAndSpeciesCategoryImportModelRow>newResultValueSetter()); + } + } + + @Override + public AcousticResultByEchotypeAndSpeciesCategoryImportModelRow newEmptyInstance() { + return new AcousticResultByEchotypeAndSpeciesCategoryImportModelRow(); + } + +} \ No newline at end of file Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java (from rev 362, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java) =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.java 2012-03-16 10:08:35 UTC (rev 366) @@ -0,0 +1,74 @@ +/* + * #%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.references.AgeCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; + +/** + * Bean used as a row for import of + * {@link AcousticResultByEchotypeAndSpeciesCategoryImportModel}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class AcousticResultByEchotypeAndSpeciesCategoryImportModelRow extends AcousticResultByEchotypeImportModelRow { + + public static final String PROPERTY_SPECIES = "species"; + + public static final String PROPERTY_LENGTH = "length"; + + public static final String PROPERTY_AGE = "age"; + + protected Species species; + + private SizeCategory length; + + private AgeCategory age; + + public Species getSpecies() { + return species; + } + + public void setSpecies(Species species) { + this.species = species; + } + + public SizeCategory getLength() { + return length; + } + + public void setLength(SizeCategory length) { + this.length = length; + } + + public AgeCategory getAge() { + return age; + } + + public void setAge(AgeCategory age) { + this.age = age; + } +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesCategoryImportModelRow.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/csv/AcousticResultByEchotypeAndSpeciesImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModel.java 2012-03-16 10:08:35 UTC (rev 366) @@ -1,95 +0,0 @@ -/* - * #%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 com.google.common.collect.Lists; -import fr.ifremer.echobase.entities.data.CellDAO; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.Species; -import org.nuiton.util.csv.ImportRuntimeException; - -import java.util.List; -import java.util.Map; - -/** - * Model to import {@link Result} for esdu cell and echotypes. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public class AcousticResultByEchotypeAndSpeciesImportModel extends CsvModelUtil.AbstractImportModel<AcousticResultByEchotypeAndSpeciesImportModelRow> { - - public static List<DataMetadata> getMetas(Map<String, DataMetadata> dataMetadataMap, - String... headers) { - - List<String> metadataNames = Lists.newArrayList(headers); - metadataNames.remove(AcousticResultByEchotypeImportModelRow.PROPERTY_ECHOTYPE); - metadataNames.remove("name"); - - List<DataMetadata> result = Lists.newArrayList(); - - for (String header : headers) { - - DataMetadata dataMetadata = dataMetadataMap.get(header); - if (dataMetadata == null) { - throw new ImportRuntimeException( - "Could not find dataMetadata with name [" + header + "]"); - } - result.add(dataMetadata); - } - return result; - } - - public AcousticResultByEchotypeAndSpeciesImportModel( - char separator, - Map<String, Echotype> echotypeMap, - Map<String, Species> speciesMap, - Voyage voyage, - CellDAO cellDAO, - List<DataMetadata> dataMetadatas) { - super(separator); - - newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesImportModelRow.PROPERTY_ECHOTYPE, Echotype.class, Echotype.PROPERTY_NAME, echotypeMap); - newForeignKeyColumn(AcousticResultByEchotypeAndSpeciesImportModelRow.PROPERTY_SPECIES, Species.class, Species.PROPERTY_BARACOUDA_CODE, speciesMap); - newMandatoryColumn("name", AcousticResultByEchotypeAndSpeciesImportModelRow.PROPERTY_CELL, CsvModelUtil.newCellValueParser(voyage, cellDAO)); - - - for (DataMetadata metadata : dataMetadatas) { - String name = metadata.getName(); - newMandatoryColumn( - name, - CsvModelUtil.newResultValueParser(metadata), - CsvModelUtil.<AcousticResultByEchotypeAndSpeciesImportModelRow>newResultValueSetter()); - } - } - - @Override - public AcousticResultByEchotypeAndSpeciesImportModelRow newEmptyInstance() { - return new AcousticResultByEchotypeAndSpeciesImportModelRow(); - } - -} \ No newline at end of file Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/AcousticResultByEchotypeAndSpeciesImportModelRow.java 2012-03-16 10:08:35 UTC (rev 366) @@ -1,48 +0,0 @@ -/* - * #%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.references.Species; - -/** - * Bean used as a row for import of {@link AcousticResultByEchotypeAndSpeciesImportModel}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public class AcousticResultByEchotypeAndSpeciesImportModelRow extends AcousticResultByEchotypeImportModelRow { - - public static final String PROPERTY_SPECIES = "species"; - - protected Species species; - - public Species getSpecies() { - return species; - } - - public void setSpecies(Species species) { - this.species = species; - } - -} Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-03-16 10:08:35 UTC (rev 366) @@ -34,8 +34,7 @@ import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.CategoryDAO; import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.references.ProcessedAge; -import fr.ifremer.echobase.entities.references.ProcessedLength; +import fr.ifremer.echobase.entities.references.AgeCategory; import fr.ifremer.echobase.entities.references.SexCategory; import fr.ifremer.echobase.entities.references.SizeCategory; import fr.ifremer.echobase.entities.references.Species; @@ -210,10 +209,13 @@ protected SpeciesCategory getSpeciesCategory(SpeciesCategoryDAO speciesCategoryDAO, Species species, SizeCategory sizeCategory, - SexCategory sexCategory) { + AgeCategory ageCategory, + SexCategory sexCategory, + CsvFileImportResult importResult) { SpeciesCategory category = findByProperties( speciesCategoryDAO, SpeciesCategory.PROPERTY_SPECIES, species, + SpeciesCategory.PROPERTY_AGE_CATEGORY, ageCategory, SpeciesCategory.PROPERTY_SIZE_CATEGORY, sizeCategory, SpeciesCategory.PROPERTY_SEX_CATEGORY, sexCategory ); @@ -226,32 +228,43 @@ category.setSpecies(species); category.setSizeCategory(sizeCategory); category.setSexCategory(sexCategory); + importResult.incrementsNumberCreated(EchoBaseEntityEnum.SpeciesCategory); } return category; } - protected Category getResultCategory(CategoryDAO speciesCategoryDAO, + protected Category getResultCategory(CategoryDAO categoryDAO, + SpeciesCategoryDAO speciesCategoryDAO, Echotype echotype, Species species, - ProcessedLength processedLength, - ProcessedAge processedAge) { + SizeCategory sizeCategory, + AgeCategory ageCategory, + CsvFileImportResult importResult) { + + // get species categorie first + + SpeciesCategory speciesCategory = getSpeciesCategory( + speciesCategoryDAO, + species, + sizeCategory, + ageCategory, + null, + importResult); + Category category = findByProperties( - speciesCategoryDAO, + categoryDAO, Category.PROPERTY_ECHOTYPE, echotype, - Category.PROPERTY_SPECIES, species, - Category.PROPERTY_PROCESSED_LENGTH, processedLength, - Category.PROPERTY_PROCESSED_AGE, processedAge + Category.PROPERTY_SPECIES_CATEGORY, speciesCategory ); if (category == null) { // create it - category = create(speciesCategoryDAO); + category = create(categoryDAO); category.setEchotype(echotype); - category.setSpecies(species); - category.setProcessedLength(processedLength); - category.setProcessedAge(processedAge); + category.setSpeciesCategory(speciesCategory); + importResult.incrementsNumberCreated(EchoBaseEntityEnum.Category); } return category; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticDataImportService.java 2012-03-16 10:08:35 UTC (rev 366) @@ -187,6 +187,7 @@ Reader reader = getInputFileReader(inputFile); Locale locale = getLocale(); + String dataProcessingId = null; try { Import<AcousticDataImportModelRow> importer = EchoBaseImport.newImport(csvModel, reader); @@ -199,6 +200,13 @@ rowNumber++; + if (dataProcessingId==null) { + + // compute once for all the common dataprocessing id used + // for hole the movies file + dataProcessingId = row.getEiLayer()+ configuration.getProcessingTemplate(); + } + Date startDate = row.getCellDateStart(); // get transect to use @@ -288,6 +296,7 @@ // create data processing dataProcessing = createDataProcessing( configuration, + dataProcessingId, softwareVersion, soundSpeedCalculations, row, @@ -521,6 +530,7 @@ } private DataProcessing createDataProcessing(AcousticDataImportConfiguration configuration, + String id, String softwareVersion, String soundSpeedCalculations, AcousticDataImportModelRow row, @@ -536,12 +546,10 @@ String acousticDensityUnit = configuration.getAcousticDensityUnit(); String notes = configuration.getNotes(); - String processingId = row.getEiLayer() + processingTemplate; - DataProcessing dataProcessing = create(dataProcessingDAO); // fill from manual configuration - dataProcessing.setId(processingId); + dataProcessing.setId(id); dataProcessing.setProcessingTemplate(processingTemplate); dataProcessing.setProcessingDescription(processingDescription); dataProcessing.setSounderConstant(sounderConstant); @@ -568,9 +576,9 @@ row.getTransceiverAcquisitionGain(); Float transceiverAcquisitionSacorrection = row.getTransceiverAcquisitionSacorrection(); -// Float eIThreshold = row.getEiThreshold(); + int eIThreshold = row.getMaxEIthr(); -// dataProcessing.setEiThreshold(eIThreshold); + dataProcessing.setEiThreshold(eIThreshold); dataProcessing.setTransceiverProcessingSacorrection(transceiverAcquisitionSacorrection); dataProcessing.setTransceiverProcessingAbsorption(transceiverAcquisitionAbsorption); dataProcessing.setTransceiverProcessingGain(transceiverAcquisitionGain); @@ -578,7 +586,6 @@ dataProcessing.setTransducerProcessingBeamAngleAthwartship(transducerAcquisitionBeamAngleAthwartship); dataProcessing.setTransducerProcessingBeamAngleAlongship(transducerAcquisitionBeamAngleAlongship); - return dataProcessing; } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesDataImportService.java 2012-03-16 10:08:35 UTC (rev 366) @@ -203,7 +203,9 @@ speciesCategoryDAO, species, sizeCategory, - null + null, + null, + importResult ); SampleType sampleType; @@ -360,7 +362,9 @@ speciesCategoryDAO, species, sizeCategory, - sexCategory + null, + sexCategory, + importResult ); // find the sample with this category @@ -470,7 +474,9 @@ speciesCategoryDAO, species, null, - null + null, + null, + importResult ); sample.setSpeciesCategory(category); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportService.java 2012-03-16 10:08:35 UTC (rev 366) @@ -42,6 +42,7 @@ import fr.ifremer.echobase.entities.data.LengthWeightKeyDAO; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.AgeCategory; import fr.ifremer.echobase.entities.references.DataMetadata; import fr.ifremer.echobase.entities.references.DepthStratum; import fr.ifremer.echobase.entities.references.SizeCategory; @@ -52,8 +53,8 @@ import fr.ifremer.echobase.services.ImportException; import fr.ifremer.echobase.services.configurations.ResultsImportConfiguration; import fr.ifremer.echobase.services.configurations.ResultsImportMode; -import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesImportModel; -import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesImportModelRow; +import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesCategoryImportModel; +import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeAndSpeciesCategoryImportModelRow; import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeImportModel; import fr.ifremer.echobase.services.csv.AcousticResultByEchotypeImportModelRow; import fr.ifremer.echobase.services.csv.CsvFileImportResult; @@ -338,8 +339,11 @@ // find speciesCategory SpeciesCategory speciesCategory = getSpeciesCategory( speciesCategoryDAO, - species, sizeCategory, - null + species, + sizeCategory, + null, + null, + importResult ); lengthWeightKey.setSpeciesCategory(speciesCategory); @@ -517,7 +521,7 @@ Map<String, Echotype> echotypeMap = Maps.uniqueIndex( voyage.getEchotype(), EchoBaseFunctions.ECHOTYPE_NAME); - + List<DataMetadata> metas = AcousticResultByEchotypeImportModel.getMetas( getLocale(), dataMetadataMap, header); @@ -532,6 +536,8 @@ metas); CategoryDAO categoryDAO = (CategoryDAO) getDAO(Category.class); + SpeciesCategoryDAO speciesCategoryDAO = + getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class); Reader reader = getInputFileReader(inputFile); try { @@ -543,10 +549,12 @@ Cell cell = row.getCell(); Category category = getResultCategory(categoryDAO, + speciesCategoryDAO, row.getEchotype(), null, null, - null); + null, + importResult); List<Result> results = row.getResult(); @@ -602,15 +610,27 @@ Species.class, EchoBaseFunctions.SPECIES_BARACOUDA_CODE); + Map<String, SizeCategory> sizeCategoryMap = getEntitiesMap( + SizeCategory.class, + EchoBaseFunctions.SIZE_CATEGORY_NAME); + + Map<String, AgeCategory> ageCategoryMap = getEntitiesMap( + AgeCategory.class, + EchoBaseFunctions.AGE_CATEGORY_NAME); List<DataMetadata> metas = AcousticResultByEchotypeImportModel.getMetas(getLocale(), dataMetadataMap, header); CellDAO cellDAO = (CellDAO) getDAO(Cell.class); - AcousticResultByEchotypeAndSpeciesImportModel csvModel = new AcousticResultByEchotypeAndSpeciesImportModel( + SpeciesCategoryDAO speciesCategoryDAO = + getDAO(SpeciesCategory.class, SpeciesCategoryDAO.class); + + AcousticResultByEchotypeAndSpeciesCategoryImportModel csvModel = new AcousticResultByEchotypeAndSpeciesCategoryImportModel( serviceContext.getConfiguration().getCsvSeparator(), echotypeMap, speciesMap, + sizeCategoryMap, + ageCategoryMap, voyage, cellDAO, metas); @@ -619,18 +639,20 @@ Reader reader = getInputFileReader(inputFile); try { - EchoBaseImport<AcousticResultByEchotypeAndSpeciesImportModelRow> importer = + EchoBaseImport<AcousticResultByEchotypeAndSpeciesCategoryImportModelRow> importer = EchoBaseImport.newImport(csvModel, reader); - for (AcousticResultByEchotypeAndSpeciesImportModelRow row : importer) { + for (AcousticResultByEchotypeAndSpeciesCategoryImportModelRow row : importer) { Cell cell = row.getCell(); Category category = getResultCategory(categoryDAO, + speciesCategoryDAO, row.getEchotype(), row.getSpecies(), - null, - null); + row.getLength(), + row.getAge(), + importResult); List<Result> results = row.getResult(); 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-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-03-16 10:08:35 UTC (rev 366) @@ -10,7 +10,6 @@ echobase.common.commonDataImportMode.all=Import Voyage / Transit / Transects echobase.common.commonDataImportMode.transect=Import Transects echobase.common.echotypeFile=Fichier echotype -echobase.importError.dataMetadata.notFound=Une colonne de Metadata nommée %s non trouvée (valeurs existantes : %s) echobase.common.gearMetadataFile=Fichier Méta-données d'engin echobase.common.importDataMode.accousticData=Import des données accoustiques echobase.common.importDataMode.catchesData=Import des données de pêche @@ -35,6 +34,7 @@ echobase.common.transitFile=Fichier des transits echobase.common.voyageFile=Fichier des voyages echobase.importError.can.only.import.one.voyage.atime=Vous ne pouvez pas importer plus d'un voyage à la fois. +echobase.importError.dataMetadata.notFound=Une colonne de Metadata nommée %s non trouvée (valeurs existantes \: %s) echobase.importError.duplicate.sample=L'opération %s ne peut pas contenir deux échantillons de même type %s, espèce %s et taille %s echobase.importError.esduCell.notfound=Un nouveau dataAquisition pour la campagne %s, navire %s, instrument %s doit être crée mais il reste des cellules élémentaires non rattachées à une cellule ESDU (ligne %s) echobase.importError.fromFile=Erreur lors de l'import du fichier %s \: %s Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduImportServiceIT.java 2012-03-16 10:08:35 UTC (rev 366) @@ -100,7 +100,7 @@ conf.setResultLabel("resultLabel"); conf.setVoyageId(getVoyageId()); - conf.setImportMode(ResultsImportMode.ACOUSTIC_BY_ECHOTYPE); + conf.setImportMode(ResultsImportMode.ACOUSTIC_BY_ECHOTYPE_AND_SPECIES); prepareInputFile(conf.getAcousticByEchotypeFile(), getImportPath("acousticResultByEchotypeAndSpecies.csv")); Modified: trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic-and-voyage-result.h2.db.gz =================================================================== (Binary files differ) Modified: trunk/echobase-services/src/test/resources/import-data/echobase-0.3-catches-and-acoustic.h2.db.gz =================================================================== (Binary files differ) Modified: trunk/echobase-services/src/test/resources/log4j.properties =================================================================== --- trunk/echobase-services/src/test/resources/log4j.properties 2012-03-16 10:07:43 UTC (rev 365) +++ trunk/echobase-services/src/test/resources/log4j.properties 2012-03-16 10:08:35 UTC (rev 366) @@ -30,4 +30,4 @@ # package level log4j.logger.fr.ifremer.echobase=INFO -#log4j.logger.fr.ifremer.echobase.services.importdata.AcousticDataImportService=DEBUG +log4j.logger.fr.ifremer.echobase.services.importdata.AcousticDataImportService=DEBUG