This is an automated email from the git hooks/post-receive script. New commit to branch feature/6115_import_export_especes in repository tutti. See http://git.codelutin.com/tutti.git commit 9f1d4b6d30e873b84d292cd0f9ad7b63e8c8d91d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Jan 20 22:06:34 2016 +0100 Ajout de l'import-export des rtp en csv + nettoyage de code (See #6115) --- .../tutti/persistence/entities/protocol/Rtps.java | 12 + .../protocol/ProtocolImportExportService.java | 163 +++++++------ .../ifremer/tutti/service/protocol/SpeciesRow.java | 102 ++++++++- .../tutti/service/protocol/SpeciesRowModel.java | 103 +++++---- .../protocol/ProtocolImportExportServiceTest.java | 251 ++++++++++++--------- .../actions/ExportProtocolSpeciesAction.java | 7 +- 6 files changed, 401 insertions(+), 237 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/Rtps.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/Rtps.java new file mode 100644 index 0000000..1fd32a5 --- /dev/null +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/Rtps.java @@ -0,0 +1,12 @@ +package fr.ifremer.tutti.persistence.entities.protocol; + +public class Rtps extends AbstractRtps { + + public static Rtp newRtp(float a, float b) { + Rtp rtp = newRtp(); + rtp.setA(a); + rtp.setB(b); + return rtp; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java index f1d2154..c003fc3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java @@ -33,6 +33,7 @@ import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRowBean; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; +import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; @@ -74,16 +75,14 @@ import static org.nuiton.i18n.I18n.t; public class ProtocolImportExportService extends AbstractTuttiService { /** Logger. */ - private static final Log log = - LogFactory.getLog(ProtocolImportExportService.class); + private static final Log log = LogFactory.getLog(ProtocolImportExportService.class); public void exportProtocol(TuttiProtocol protocol, File file) { TuttiProtocols.toFile(protocol, file); } public TuttiProtocol importProtocol(File file) { - TuttiProtocol result = TuttiProtocols.fromFile(file); - return result; + return TuttiProtocols.fromFile(file); } public void importProtocolCaracteristic(File file, @@ -140,7 +139,7 @@ public class ProtocolImportExportService extends AbstractTuttiService { List<CaracteristicMappingRow> caracteristicMapping = protocol.getCaracteristicMapping(); if (caracteristicMapping == null) { - caracteristicMapping = new ArrayList<CaracteristicMappingRow>(); + caracteristicMapping = new ArrayList<>(); } Map<String, CaracteristicMappingRow> rowsByCaracteristicId = new HashMap<>(Maps.uniqueIndex(caracteristicMapping, @@ -271,21 +270,14 @@ public class ProtocolImportExportService extends AbstractTuttiService { } } - SpeciesRowModel csvModel = new SpeciesRowModel(getCsvSeparator(), - caracteristicMap, - speciesMap); - - Reader reader = null; - try { - reader = Files.newReader(file, Charsets.UTF_8); + SpeciesRowModel csvModel = SpeciesRowModel.forImport(getCsvSeparator(), caracteristicMap, speciesMap); - Import<SpeciesRow> importer = Import.newImport(csvModel, reader); + try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - try { + try (Import<SpeciesRow> importer = Import.newImport(csvModel, reader)) { Binder<SpeciesRow, SpeciesProtocol> binder = - BinderFactory.newBinder(SpeciesRow.class, - SpeciesProtocol.class); + BinderFactory.newBinder(SpeciesRow.class, SpeciesProtocol.class); for (SpeciesRow bean : importer) { @@ -305,38 +297,52 @@ public class ProtocolImportExportService extends AbstractTuttiService { sp = SpeciesProtocols.newSpeciesProtocol(); } binder.copy(bean, sp); - sp.setMandatorySampleCategoryId(Lists.newArrayList( - bean.getMandatorySampleCategoryId())); + sp.setMandatorySampleCategoryId(Lists.newArrayList(bean.getMandatorySampleCategoryId())); + + // Clean up rtp data + + if (sp.withRtpMale()) { + Rtp rtpMale = sp.getRtpMale(); + if (rtpMale.getA() == null && rtpMale.getB() == null) { + sp.setRtpMale(null); + } + } + if (sp.withRtpFemale()) { + Rtp rtpFemale = sp.getRtpFemale(); + if (rtpFemale.getA() == null && rtpFemale.getB() == null) { + sp.setRtpFemale(null); + } + } + if (sp.withRtpUndefined()) { + Rtp rtpUndefined = sp.getRtpUndefined(); + if (rtpUndefined.getA() == null && rtpUndefined.getB() == null) { + sp.setRtpUndefined(null); + } + } ids.put(id, sp); } } - importer.close(); - } finally { - IOUtils.closeQuietly(importer); } - reader.close(); + + List<SpeciesProtocol> values = Lists.newArrayList(ids.values()); + protocol.setSpecies(values); + + return result; } catch (ImportRuntimeException e) { throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.protocol.import.species.error", protocol.getName(), file), e); - - } finally { - IOUtils.closeQuietly(reader); } - List<SpeciesProtocol> values = Lists.newArrayList(ids.values()); - protocol.setSpecies(values); - - return result; } /** - * @param file - * @param protocol - * @param caracteristicMap - * @param speciesMap + * @param file file to import + * @param protocol existing protocol + * @param caracteristicMap dictonnary of caracteristics + * @param speciesMap dictionnary of species * @return The list of the species not imported because they are already in the species */ public List<Species> importProtocolBenthos(File file, @@ -373,21 +379,14 @@ public class ProtocolImportExportService extends AbstractTuttiService { } } - SpeciesRowModel csvModel = new SpeciesRowModel(getCsvSeparator(), - caracteristicMap, - speciesMap); + SpeciesRowModel csvModel = SpeciesRowModel.forImport(getCsvSeparator(), caracteristicMap, speciesMap); - Reader reader = null; - try { - reader = Files.newReader(file, Charsets.UTF_8); - - Import<SpeciesRow> importer = Import.newImport(csvModel, reader); + try (Reader reader = Files.newReader(file, Charsets.UTF_8)) { - try { + try (Import<SpeciesRow> importer = Import.newImport(csvModel, reader)) { Binder<SpeciesRow, SpeciesProtocol> binder = - BinderFactory.newBinder(SpeciesRow.class, - SpeciesProtocol.class); + BinderFactory.newBinder(SpeciesRow.class, SpeciesProtocol.class); for (SpeciesRow bean : importer) { @@ -408,25 +407,42 @@ public class ProtocolImportExportService extends AbstractTuttiService { } binder.copy(bean, sp); + // Clean up rtp data + + if (sp.withRtpMale()) { + Rtp rtpMale = sp.getRtpMale(); + if (rtpMale.getA() == null && rtpMale.getB() == null) { + sp.setRtpMale(null); + } + } + if (sp.withRtpFemale()) { + Rtp rtpFemale = sp.getRtpFemale(); + if (rtpFemale.getA() == null && rtpFemale.getB() == null) { + sp.setRtpFemale(null); + } + } + if (sp.withRtpUndefined()) { + Rtp rtpUndefined = sp.getRtpUndefined(); + if (rtpUndefined.getA() == null && rtpUndefined.getB() == null) { + sp.setRtpUndefined(null); + } + } + ids.put(id, sp); } } - importer.close(); - } finally { - IOUtils.closeQuietly(importer); + + List<SpeciesProtocol> values = Lists.newArrayList(ids.values()); + protocol.setBenthos(values); + } - reader.close(); + } catch (ImportRuntimeException e) { throw e; } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.protocol.import.benthos.error", protocol.getName(), file), e); - } finally { - IOUtils.closeQuietly(reader); } - List<SpeciesProtocol> values = Lists.newArrayList(ids.values()); - protocol.setBenthos(values); - return result; } @@ -457,26 +473,15 @@ public class ProtocolImportExportService extends AbstractTuttiService { List<SpeciesRow> rows = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(protocol)) { - rows = Lists.transform(protocol, new SpeciesProtocolToSpeciesRowFunction( - caracteristicMap, - speciesMap)); + rows = Lists.transform(protocol, new SpeciesProtocolToSpeciesRowFunction(caracteristicMap, speciesMap)); } - SpeciesRowModel csvModel = - new SpeciesRowModel(getCsvSeparator(), - caracteristicMap, - speciesMap); - - BufferedWriter writer = null; - try { - writer = Files.newWriter(file, Charsets.UTF_8); + SpeciesRowModel csvModel = SpeciesRowModel.forExport(getCsvSeparator()); + try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { Export export = Export.newExport(csvModel, rows); export.write(writer); - writer.close(); } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.protocol.export.species.error", file), e); - } finally { - IOUtils.closeQuietly(writer); } } @@ -491,26 +496,15 @@ public class ProtocolImportExportService extends AbstractTuttiService { List<SpeciesRow> rows = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(protocol)) { - rows = Lists.transform(protocol, new SpeciesProtocolToSpeciesRowFunction( - caracteristicMap, - speciesMap)); + rows = Lists.transform(protocol, new SpeciesProtocolToSpeciesRowFunction(caracteristicMap, speciesMap)); } - SpeciesRowModel csvModel = - new SpeciesRowModel(getCsvSeparator(), - caracteristicMap, - speciesMap); - - BufferedWriter writer = null; - try { - writer = Files.newWriter(file, Charsets.UTF_8); + SpeciesRowModel csvModel = SpeciesRowModel.forExport(getCsvSeparator()); + try (BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8)) { Export export = Export.newExport(csvModel, rows); export.write(writer); - writer.close(); } catch (Exception e) { throw new ApplicationTechnicalException(t("tutti.service.protocol.export.benthos.error", file), e); - } finally { - IOUtils.closeQuietly(writer); } } @@ -519,8 +513,7 @@ public class ProtocolImportExportService extends AbstractTuttiService { } - protected List<String> mergeIds(Collection<String> fromProtocol, - Collection<String> fromImport) { + protected List<String> mergeIds(Collection<String> fromProtocol, Collection<String> fromImport) { List<String> result = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(fromProtocol)) { @@ -529,7 +522,6 @@ public class ProtocolImportExportService extends AbstractTuttiService { result.add(s); } } - } for (String s : fromImport) { if (!result.contains(s)) { @@ -590,8 +582,7 @@ public class ProtocolImportExportService extends AbstractTuttiService { Map<String, Species> speciesMap) { this.speciesMap = speciesMap; this.caracteristicMap = caracteristicMap; - this.binder = BinderFactory.newBinder(SpeciesProtocol.class, - SpeciesRow.class); + this.binder = BinderFactory.newBinder(SpeciesProtocol.class, SpeciesRow.class); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java index cb6484e..4ccba57 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.protocol; * #L% */ +import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -71,6 +72,18 @@ public class SpeciesRow implements Serializable { public static final String PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID = "mandatorySampleCategoryId"; + public static final String PROPERTY_RTP_MALE_A = "rtpMaleA"; + + public static final String PROPERTY_RTP_MALE_B = "rtpMaleB"; + + public static final String PROPERTY_RTP_FEMALE_A = "rtpFemaleA"; + + public static final String PROPERTY_RTP_FEMALE_B = "rtpFemaleB"; + + public static final String PROPERTY_RTP_UNDEFINED_A = "rtpUndefinedA"; + + public static final String PROPERTY_RTP_UNDEFINED_B = "rtpUndefinedB"; + protected final SpeciesProtocol delegate; protected Species species; @@ -98,7 +111,7 @@ public class SpeciesRow implements Serializable { if (!StringUtils.isEmpty(name)) { boolean madeFromAReferentTaxon = isMadeFromAReferentTaxon(); setMadeFromAReferentTaxon(madeFromAReferentTaxon && - species != null && species.getName().equals(name)); + species != null && species.getName().equals(name)); } } @@ -110,7 +123,7 @@ public class SpeciesRow implements Serializable { if (!StringUtils.isEmpty(refTaxCode)) { boolean madeFromAReferentTaxon = isMadeFromAReferentTaxon(); setMadeFromAReferentTaxon(madeFromAReferentTaxon && - species != null && species.getRefTaxCode().equals(refTaxCode)); + species != null && species.getRefTaxCode().equals(refTaxCode)); } } @@ -203,4 +216,89 @@ public class SpeciesRow implements Serializable { public List<Integer> getMandatorySampleCategoryId() { return delegate.getMandatorySampleCategoryId(); } + + public boolean withRtpMale() { + return delegate.withRtpMale(); + } + + public boolean withRtpFemale() { + return delegate.withRtpFemale(); + } + + public boolean withRtpUndefined() { + return delegate.withRtpUndefined(); + } + + public Rtp getRtpMale() { + return delegate.getRtpMale(); + } + + public Rtp getRtpFemale() { + return delegate.getRtpFemale(); + } + + public Rtp getRtpUndefined() { + return delegate.getRtpUndefined(); + } + + public void setRtpMale(Rtp rtpMale) { + delegate.setRtpMale(rtpMale); + } + + public void setRtpFemale(Rtp rtpFemale) { + delegate.setRtpFemale(rtpFemale); + } + + public void setRtpUndefined(Rtp rtpUndefined) { + delegate.setRtpUndefined(rtpUndefined); + } + + public Float getRtpMaleA() { + return withRtpMale() ? getRtpMale().getA() : null; + } + + public Float getRtpMaleB() { + return withRtpMale() ? getRtpMale().getB() : null; + } + + public Float getRtpFemaleA() { + return withRtpFemale() ? getRtpFemale().getA() : null; + } + + public Float getRtpFemaleB() { + return withRtpFemale() ? getRtpFemale().getB() : null; + } + + public Float getRtpUndefinedA() { + return withRtpUndefined() ? getRtpUndefined().getA() : null; + } + + public Float getRtpUndefinedB() { + return withRtpUndefined() ? getRtpUndefined().getB() : null; + } + + public void setRtpMaleA(Float a) { + getRtpMale().setA(a); + } + + public void setRtpMaleB(Float b) { + getRtpMale().setB(b); + } + + public void setRtpFemaleA(Float a) { + getRtpFemale().setA(a); + } + + public void setRtpFemaleB(Float b) { + getRtpFemale().setB(b); + } + + public void setRtpUndefinedA(Float a) { + getRtpUndefined().setA(a); + } + + public void setRtpUndefinedB(Float b) { + getRtpUndefined().setB(b); + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java index ae2359c..b274703 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java @@ -23,6 +23,7 @@ package fr.ifremer.tutti.service.protocol; */ import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.protocol.Rtps; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; @@ -46,14 +47,37 @@ import static org.nuiton.i18n.I18n.t; */ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> { - public SpeciesRowModel(char separator, - Map<String, Caracteristic> caracteristicMap, - Map<String, Species> speciesMap) { - super(separator); + public static SpeciesRowModel forExport(char separator) { + + SpeciesRowModel result = new SpeciesRowModel(separator); + result.newColumnForExport(SpeciesRow.PROPERTY_SPECIES_REFERENCE_TAXON_ID, Common.INTEGER); + result.newColumnForExport(SpeciesRow.PROPERTY_SPECIES_REF_TAX_CODE); + result.newColumnForExport(SpeciesRow.PROPERTY_SPECIES_NAME); + result.newColumnForExport(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE); + result.newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_ID); + result.newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_PARAMETER_NAME); + result.newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_MATRIX_NAME); + result.newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); + result.newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_METHOD_NAME); + result.newColumnForExport(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.INTEGER_LIST_PARSER_FORMATTER); + result.newColumnForExport(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); + result.newColumnForExport(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN); + result.newColumnForExport(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN); + result.newColumnForExport(SpeciesRow.PROPERTY_RTP_MALE_A, Common.FLOAT); + result.newColumnForExport(SpeciesRow.PROPERTY_RTP_MALE_B, Common.FLOAT); + result.newColumnForExport(SpeciesRow.PROPERTY_RTP_FEMALE_A, Common.FLOAT); + result.newColumnForExport(SpeciesRow.PROPERTY_RTP_FEMALE_B, Common.FLOAT); + result.newColumnForExport(SpeciesRow.PROPERTY_RTP_UNDEFINED_A, Common.FLOAT); + result.newColumnForExport(SpeciesRow.PROPERTY_RTP_UNDEFINED_B, Common.FLOAT); + return result; + } - // import definition + public static SpeciesRowModel forImport(char separator, + Map<String, Caracteristic> caracteristicMap, + Map<String, Species> speciesMap) { - newMandatoryColumn( + SpeciesRowModel result = new SpeciesRowModel(separator); + result.newMandatoryColumn( SpeciesRow.PROPERTY_SPECIES_REFERENCE_TAXON_ID, SpeciesRow.PROPERTY_SPECIES, new ForeignKeyParserFormatter<Species>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, speciesMap) { @@ -74,48 +98,47 @@ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> } }); - newOptionalColumn(SpeciesRow.PROPERTY_SPECIES_REF_TAX_CODE); - newOptionalColumn(SpeciesRow.PROPERTY_SPECIES_NAME); + result.newOptionalColumn(SpeciesRow.PROPERTY_SPECIES_REF_TAX_CODE); + result.newOptionalColumn(SpeciesRow.PROPERTY_SPECIES_NAME); - newForeignKeyColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_ID, - SpeciesRow.PROPERTY_LENGTH_STEP_PMFM, - Caracteristic.class, - Caracteristic.PROPERTY_ID, - caracteristicMap); + result.newForeignKeyColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_ID, + SpeciesRow.PROPERTY_LENGTH_STEP_PMFM, + Caracteristic.class, + Caracteristic.PROPERTY_ID, + caracteristicMap); - newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_PARAMETER_NAME); - newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_MATRIX_NAME); - newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); - newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_METHOD_NAME); + result.newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_PARAMETER_NAME); + result.newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_MATRIX_NAME); + result.newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); + result.newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_METHOD_NAME); //FIXME See if really needed, otherwise just use the default String parser -// newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE); - newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE, new StringParserFormatter(null, true)); - newMandatoryColumn(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.INTEGER_LIST_PARSER_FORMATTER); - newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); - newMandatoryColumn(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN); - newMandatoryColumn(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN); - - // export definition - - newColumnForExport(SpeciesRow.PROPERTY_SPECIES_REFERENCE_TAXON_ID, Common.INTEGER); - newColumnForExport(SpeciesRow.PROPERTY_SPECIES_REF_TAX_CODE); - newColumnForExport(SpeciesRow.PROPERTY_SPECIES_NAME); - newColumnForExport(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE); - newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_ID); - newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_PARAMETER_NAME); - newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_MATRIX_NAME); - newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); - newColumnForExport(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_METHOD_NAME); - newColumnForExport(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.INTEGER_LIST_PARSER_FORMATTER); - newColumnForExport(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); - newColumnForExport(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN); - newColumnForExport(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN); +// result.newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE); + result.newMandatoryColumn(SpeciesRow.PROPERTY_SPECIES_SURVEY_CODE, new StringParserFormatter(null, true)); + result.newMandatoryColumn(SpeciesRow.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, TuttiCsvUtil.INTEGER_LIST_PARSER_FORMATTER); + result.newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); + result.newMandatoryColumn(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN); + result.newMandatoryColumn(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN); + result.newOptionalColumn(SpeciesRow.PROPERTY_RTP_MALE_A, Common.FLOAT); + result.newOptionalColumn(SpeciesRow.PROPERTY_RTP_MALE_B, Common.FLOAT); + result.newOptionalColumn(SpeciesRow.PROPERTY_RTP_FEMALE_A, Common.FLOAT); + result.newOptionalColumn(SpeciesRow.PROPERTY_RTP_FEMALE_B, Common.FLOAT); + result.newOptionalColumn(SpeciesRow.PROPERTY_RTP_UNDEFINED_A, Common.FLOAT); + result.newOptionalColumn(SpeciesRow.PROPERTY_RTP_UNDEFINED_B, Common.FLOAT); + return result; + } + + public SpeciesRowModel(char separator) { + super(separator); } @Override public SpeciesRow newEmptyInstance() { - return new SpeciesRow(); + SpeciesRow speciesRow = new SpeciesRow(); + speciesRow.setRtpMale(Rtps.newRtp()); + speciesRow.setRtpFemale(Rtps.newRtp()); + speciesRow.setRtpUndefined(Rtps.newRtp()); + return speciesRow; } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportServiceTest.java index c7a479f..f066012 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportServiceTest.java @@ -27,6 +27,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; +import fr.ifremer.tutti.persistence.entities.protocol.Rtps; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; @@ -57,8 +58,6 @@ public class ProtocolImportExportServiceTest { protected ProtocolImportExportService service; - public static final int VRAC_HORS_VRAC = 1428; - public static final int SIZE = 198; public static final int SEX = 196; @@ -69,77 +68,89 @@ public class ProtocolImportExportServiceTest { public static final String PROTOCOL_FILE_CONTENT = "id: 1\n" + - "name: protocolName\n" + - "benthos: \n" + - "- !SpeciesProtocol\n" + - " id: 21\n" + - " calcifySampleEnabled: true\n" + - " lengthStepPmfmId: 1394\n" + - " mandatorySampleCategoryId: \n" + - " - 174\n" + - " - 196\n" + - " speciesReferenceTaxonId: 11242\n" + - " speciesSurveyCode: cruiseCode1\n" + - " weightEnabled: true\n" + - "- !SpeciesProtocol\n" + - " id: 22\n" + - " calcifySampleEnabled: true\n" + - " countIfNoFrequencyEnabled: true\n" + - " lengthStepPmfmId: 323\n" + - " mandatorySampleCategoryId: \n" + - " - 1430\n" + - " - 174\n" + - " - 196\n" + - " - 198\n" + - " speciesReferenceTaxonId: 3835\n" + - " weightEnabled: true\n" + - "caracteristicMapping: \n" + - "- !CaracteristicMappingRow\n" + - " pmfmId: 114\n" + - " tab: VESSEL_USE_FEATURE\n" + - "- !CaracteristicMappingRow\n" + - " pmfmId: 228\n" + - " tab: VESSEL_USE_FEATURE\n" + - "- !CaracteristicMappingRow\n" + - " pmfmId: 821\n" + - " tab: VESSEL_USE_FEATURE\n" + - "- !CaracteristicMappingRow\n" + - " pmfmId: 21\n" + - " tab: GEAR_USE_FEATURE\n" + - "- !CaracteristicMappingRow\n" + - " pmfmId: 262\n" + - " tab: GEAR_USE_FEATURE\n" + - "comment: Commentaire\n" + - "individualObservationPmfmId: \n" + - "- 25\n" + - "- 26\n" + - "lengthClassesPmfmId: \n" + - "- 14\n" + - "- 18\n" + - "species: \n" + - "- !SpeciesProtocol\n" + - " id: 1\n" + - " calcifySampleEnabled: true\n" + - " lengthStepPmfmId: 1394\n" + - " mandatorySampleCategoryId: \n" + - " - 174\n" + - " - 196\n" + - " speciesReferenceTaxonId: 11242\n" + - " speciesSurveyCode: cruiseCode1\n" + - " weightEnabled: true\n" + - "- !SpeciesProtocol\n" + - " id: 2\n" + - " calcifySampleEnabled: true\n" + - " countIfNoFrequencyEnabled: true\n" + - " lengthStepPmfmId: 323\n" + - " mandatorySampleCategoryId: \n" + - " - 1430\n" + - " - 174\n" + - " - 196\n" + - " - 198\n" + - " speciesReferenceTaxonId: 3835\n" + - " weightEnabled: true\n" + - "version: 3"; + "name: protocolName\n" + + "benthos: \n" + + "- !SpeciesProtocol\n" + + " id: 21\n" + + " calcifySampleEnabled: true\n" + + " lengthStepPmfmId: 1394\n" + + " mandatorySampleCategoryId: \n" + + " - 174\n" + + " - 196\n" + + " speciesReferenceTaxonId: 11242\n" + + " speciesSurveyCode: cruiseCode1\n" + + " weightEnabled: true\n" + + "- !SpeciesProtocol\n" + + " id: 22\n" + + " calcifySampleEnabled: true\n" + + " countIfNoFrequencyEnabled: true\n" + + " lengthStepPmfmId: 323\n" + + " mandatorySampleCategoryId: \n" + + " - 1430\n" + + " - 174\n" + + " - 196\n" + + " - 198\n" + + " rtpFemale: !fr.ifremer.tutti.persistence.entities.protocol.RtpBean\n" + + " a: 22.0\n" + + " b: 33.0\n" + + " speciesReferenceTaxonId: 3835\n" + + " weightEnabled: true\n" + + "caracteristicMapping: \n" + + "- !CaracteristicMappingRow\n" + + " pmfmId: 114\n" + + " tab: VESSEL_USE_FEATURE\n" + + "- !CaracteristicMappingRow\n" + + " pmfmId: 228\n" + + " tab: VESSEL_USE_FEATURE\n" + + "- !CaracteristicMappingRow\n" + + " pmfmId: 821\n" + + " tab: VESSEL_USE_FEATURE\n" + + "- !CaracteristicMappingRow\n" + + " pmfmId: 21\n" + + " tab: GEAR_USE_FEATURE\n" + + "- !CaracteristicMappingRow\n" + + " pmfmId: 262\n" + + " tab: GEAR_USE_FEATURE\n" + + "comment: Commentaire\n" + + "individualObservationPmfmId: \n" + + "- 25\n" + + "- 26\n" + + "lengthClassesPmfmId: \n" + + "- 14\n" + + "- 18\n" + + "species: \n" + + "- !SpeciesProtocol\n" + + " id: 1\n" + + " calcifySampleEnabled: true\n" + + " lengthStepPmfmId: 1394\n" + + " mandatorySampleCategoryId: \n" + + " - 174\n" + + " - 196\n" + + " rtpFemale: !fr.ifremer.tutti.persistence.entities.protocol.RtpBean\n" + + " a: 2.0\n" + + " b: 3.0\n" + + " rtpMale: !fr.ifremer.tutti.persistence.entities.protocol.RtpBean\n" + + " a: 1.0\n" + + " b: 2.0\n" + + " rtpUndefined: !fr.ifremer.tutti.persistence.entities.protocol.RtpBean\n" + + " a: 3.0\n" + + " b: 4.0\n" + + " speciesReferenceTaxonId: 11242\n" + + " speciesSurveyCode: cruiseCode1\n" + + " weightEnabled: true\n" + + "- !SpeciesProtocol\n" + + " id: 2\n" + + " calcifySampleEnabled: true\n" + + " countIfNoFrequencyEnabled: true\n" + + " lengthStepPmfmId: 323\n" + + " mandatorySampleCategoryId: \n" + + " - 1430\n" + + " - 174\n" + + " - 196\n" + + " - 198\n" + + " speciesReferenceTaxonId: 3835\n" + + " weightEnabled: true\n" + + "version: 3"; public static final String PROTOCOL_CARACTERISTIC_FILE_CONTENT = "pmfmId;pmfmType;pmfmParameterName;pmfmMatrixName;pmfmFractionName;pmfmMethodName\n" + @@ -163,14 +174,14 @@ public class ProtocolImportExportServiceTest { "5;;parameterName5;matrixName5;fractionName5;methodName5"; public static final String PROTOCOL_SPECIES_FILE_CONTENT = - "speciesReferenceTaxonId;speciesRefTaxCode;speciesName;speciesSurveyCode;lengthStepPmfmId;lengthStepPmfmParameterName;lengthStepPmfmMatrixName;lengthStepPmfmFractionName;lengthStepPmfmMethodName;mandatorySampleCategoryId;weightEnabled;countIfNoFrequencyEnabled;calcifySampleEnabled\n" + - "1;speciesRefTaxCode1;speciesName1;cruiseCode1;2;parameterName2;matrixName2;fractionName2;methodName2;1430|198|174|196;Y;Y;Y\n" + - "2;speciesRefTaxCode2;speciesName2;;;;;;;1430|196;Y;Y;Y"; + "speciesReferenceTaxonId;speciesRefTaxCode;speciesName;speciesSurveyCode;lengthStepPmfmId;lengthStepPmfmParameterName;lengthStepPmfmMatrixName;lengthStepPmfmFractionName;lengthStepPmfmMethodName;mandatorySampleCategoryId;weightEnabled;countIfNoFrequencyEnabled;calcifySampleEnabled;rtpMaleA;rtpMaleB;rtpFemaleA;rtpFemaleB;rtpUndefinedA;rtpUndefinedB\n" + + "1;speciesRefTaxCode1;speciesName1;cruiseCode1;2;parameterName2;matrixName2;fractionName2;methodName2;1430|198|174|196;Y;Y;Y;1.0;2.0;2.0;3.0;3.0;4.0\n" + + "2;speciesRefTaxCode2;speciesName2;;;;;;;1430|196;Y;Y;Y;;;;;;"; public static final String PROTOCOL_BENTHOS_FILE_CONTENT = - "speciesReferenceTaxonId;speciesRefTaxCode;speciesName;speciesSurveyCode;lengthStepPmfmId;lengthStepPmfmParameterName;lengthStepPmfmMatrixName;lengthStepPmfmFractionName;lengthStepPmfmMethodName;mandatorySampleCategoryId;weightEnabled;countIfNoFrequencyEnabled;calcifySampleEnabled\n" + - "1;speciesRefTaxCode1;speciesName1;cruiseCode1;2;parameterName2;matrixName2;fractionName2;methodName2;1430|198|174|196;Y;Y;Y\n" + - "2;speciesRefTaxCode2;speciesName2;;;;;;;1430|196;Y;Y;Y"; + "speciesReferenceTaxonId;speciesRefTaxCode;speciesName;speciesSurveyCode;lengthStepPmfmId;lengthStepPmfmParameterName;lengthStepPmfmMatrixName;lengthStepPmfmFractionName;lengthStepPmfmMethodName;mandatorySampleCategoryId;weightEnabled;countIfNoFrequencyEnabled;calcifySampleEnabled;rtpMaleA;rtpMaleB;rtpFemaleA;rtpFemaleB;rtpUndefinedA;rtpUndefinedB\n" + + "1;speciesRefTaxCode1;speciesName1;cruiseCode1;2;parameterName2;matrixName2;fractionName2;methodName2;1430|198|174|196;Y;Y;Y;;;;;;\n" + + "2;speciesRefTaxCode2;speciesName2;;;;;;;1430|196;Y;Y;Y;;;22.0;33.0;;"; File datadirectory; @@ -219,6 +230,9 @@ public class ProtocolImportExportServiceTest { sp1.addMandatorySampleCategoryId(MATURITY); sp1.addMandatorySampleCategoryId(SEX); sp1.setWeightEnabled(true); + sp1.setRtpMale(Rtps.newRtp(1f, 2f)); + sp1.setRtpFemale(Rtps.newRtp(2f, 3f)); + sp1.setRtpUndefined(Rtps.newRtp(3f, 4f)); protocol.addSpecies(sp1); SpeciesProtocol sp2 = SpeciesProtocols.newSpeciesProtocol(); @@ -260,6 +274,7 @@ public class ProtocolImportExportServiceTest { bp2.addMandatorySampleCategoryId(SEX); bp2.addMandatorySampleCategoryId(SIZE); bp2.setWeightEnabled(true); + bp2.setRtpFemale(Rtps.newRtp(22f, 33f)); protocol.addBenthos(bp2); service.exportProtocol(protocol, exportFile); @@ -311,6 +326,15 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(sp1.containsMandatorySampleCategoryId(SEX)); Assert.assertFalse(sp1.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(sp1.isWeightEnabled()); + Assert.assertTrue(sp1.withRtpMale()); + Assert.assertTrue(sp1.withRtpFemale()); + Assert.assertTrue(sp1.withRtpUndefined()); + Assert.assertEquals(1f, sp1.getRtpMale().getA(), 0.01); + Assert.assertEquals(2f, sp1.getRtpMale().getB(), 0.01); + Assert.assertEquals(2f, sp1.getRtpFemale().getA(), 0.01); + Assert.assertEquals(3f, sp1.getRtpFemale().getB(), 0.01); + Assert.assertEquals(3f, sp1.getRtpUndefined().getA(), 0.01); + Assert.assertEquals(4f, sp1.getRtpUndefined().getB(), 0.01); SpeciesProtocol sp2 = protocol.getSpecies(1); Assert.assertNotNull(sp2); @@ -324,6 +348,9 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(sp2.containsMandatorySampleCategoryId(SEX)); Assert.assertTrue(sp2.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(sp2.isWeightEnabled()); + Assert.assertFalse(sp2.withRtpMale()); + Assert.assertFalse(sp2.withRtpFemale()); + Assert.assertFalse(sp2.withRtpUndefined()); Assert.assertNotNull(protocol.getBenthos()); Assert.assertEquals(2, protocol.sizeBenthos()); @@ -340,6 +367,9 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(b1.containsMandatorySampleCategoryId(SEX)); Assert.assertFalse(b1.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(b1.isWeightEnabled()); + Assert.assertFalse(b1.withRtpMale()); + Assert.assertFalse(b1.withRtpFemale()); + Assert.assertFalse(b1.withRtpUndefined()); SpeciesProtocol b2 = protocol.getBenthos(1); Assert.assertNotNull(b2); @@ -353,6 +383,11 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(b2.containsMandatorySampleCategoryId(SEX)); Assert.assertTrue(b2.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(b2.isWeightEnabled()); + Assert.assertFalse(b2.withRtpMale()); + Assert.assertFalse(b2.withRtpUndefined()); + Assert.assertTrue(b2.withRtpFemale()); + Assert.assertEquals(22f, b2.getRtpFemale().getA(), 0.01); + Assert.assertEquals(33f, b2.getRtpFemale().getB(), 0.01); } //FIXME @@ -368,9 +403,7 @@ public class ProtocolImportExportServiceTest { TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - service.importProtocolCaracteristic(file, - protocol, - caracteristicMap); + service.importProtocolCaracteristic(file, protocol, caracteristicMap); Assert.assertEquals(Lists.newArrayList("1"), protocol.getLengthClassesPmfmId()); @@ -395,9 +428,7 @@ public class ProtocolImportExportServiceTest { TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - service.importProtocolCaracteristic(file, - protocol, - caracteristicMap); + service.importProtocolCaracteristic(file, protocol, caracteristicMap); } @Test public void exportProtocolCaracteristic() throws Exception { @@ -417,9 +448,7 @@ public class ProtocolImportExportServiceTest { protocol.setIndividualObservationPmfmId(Lists.newArrayList("4")); Assert.assertFalse(file.exists()); - service.exportProtocolCaracteristic(file, - protocol, - caracteristicMap); + service.exportProtocolCaracteristic(file, protocol, caracteristicMap); Assert.assertTrue(file.exists()); @@ -458,10 +487,7 @@ public class ProtocolImportExportServiceTest { Map<String, Species> speciesMap = createSpecies(); Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - service.importProtocolSpecies(file, - protocol, - caracteristicMap, - speciesMap); + service.importProtocolSpecies(file, protocol, caracteristicMap, speciesMap); Assert.assertEquals(2, protocol.sizeSpecies()); @@ -477,6 +503,16 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(sp1.containsMandatorySampleCategoryId(SEX)); Assert.assertTrue(sp1.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(sp1.isWeightEnabled()); + Assert.assertTrue(sp1.isWeightEnabled()); + Assert.assertTrue(sp1.withRtpMale()); + Assert.assertTrue(sp1.withRtpFemale()); + Assert.assertTrue(sp1.withRtpUndefined()); + Assert.assertEquals(1f, sp1.getRtpMale().getA(), 0.01); + Assert.assertEquals(2f, sp1.getRtpMale().getB(), 0.01); + Assert.assertEquals(2f, sp1.getRtpFemale().getA(), 0.01); + Assert.assertEquals(3f, sp1.getRtpFemale().getB(), 0.01); + Assert.assertEquals(3f, sp1.getRtpUndefined().getA(), 0.01); + Assert.assertEquals(4f, sp1.getRtpUndefined().getB(), 0.01); SpeciesProtocol sp2 = protocol.getSpecies().get(1); Assert.assertNotNull(sp2); @@ -490,6 +526,9 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(sp2.containsMandatorySampleCategoryId(SEX)); Assert.assertFalse(sp2.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(sp2.isWeightEnabled()); + Assert.assertFalse(sp2.withRtpMale()); + Assert.assertFalse(sp2.withRtpFemale()); + Assert.assertFalse(sp2.withRtpUndefined()); } @Test @@ -516,6 +555,9 @@ public class ProtocolImportExportServiceTest { sp1.setCountIfNoFrequencyEnabled(true); sp1.setCalcifySampleEnabled(true); sp1.setLengthStepPmfmId("2"); + sp1.setRtpMale(Rtps.newRtp(1f, 2f)); + sp1.setRtpFemale(Rtps.newRtp(2f, 3f)); + sp1.setRtpUndefined(Rtps.newRtp(3f, 4f)); protocol.addSpecies(sp1); @@ -534,10 +576,7 @@ public class ProtocolImportExportServiceTest { protocol.addSpecies(sp2); Assert.assertFalse(file.exists()); - service.exportProtocolSpecies(file, - protocol.getSpecies(), - createCaracteristics(), - speciesMap); + service.exportProtocolSpecies(file, protocol.getSpecies(), createCaracteristics(), speciesMap); Assert.assertTrue(file.exists()); @@ -558,10 +597,7 @@ public class ProtocolImportExportServiceTest { Map<String, Species> speciesMap = createSpecies(); Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - service.importProtocolBenthos(file, - protocol, - caracteristicMap, - speciesMap); + service.importProtocolBenthos(file, protocol, caracteristicMap, speciesMap); Assert.assertEquals(2, protocol.sizeBenthos()); @@ -577,6 +613,9 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(sp1.containsMandatorySampleCategoryId(SEX)); Assert.assertTrue(sp1.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(sp1.isWeightEnabled()); + Assert.assertFalse(sp1.withRtpMale()); + Assert.assertFalse(sp1.withRtpFemale()); + Assert.assertFalse(sp1.withRtpUndefined()); SpeciesProtocol sp2 = protocol.getBenthos(1); Assert.assertNotNull(sp2); @@ -590,6 +629,12 @@ public class ProtocolImportExportServiceTest { Assert.assertTrue(sp2.containsMandatorySampleCategoryId(SEX)); Assert.assertFalse(sp2.containsMandatorySampleCategoryId(SIZE)); Assert.assertTrue(sp2.isWeightEnabled()); + Assert.assertFalse(sp2.withRtpMale()); + Assert.assertFalse(sp2.withRtpUndefined()); + Assert.assertTrue(sp2.withRtpFemale()); + Assert.assertEquals(22f, sp2.getRtpFemale().getA(), 0.01); + Assert.assertEquals(33f, sp2.getRtpFemale().getB(), 0.01); + } @Test @@ -632,14 +677,12 @@ public class ProtocolImportExportServiceTest { sp2.setCalcifySampleEnabled(true); sp2.setCountIfNoFrequencyEnabled(true); sp2.setLengthStepPmfmId(null); + sp2.setRtpFemale(Rtps.newRtp(22f, 33f)); protocol.addBenthos(sp2); Assert.assertFalse(file.exists()); - service.exportProtocolBenthos(file, - protocol.getBenthos(), - createCaracteristics(), - speciesMap); + service.exportProtocolBenthos(file, protocol.getBenthos(), createCaracteristics(), speciesMap); Assert.assertTrue(file.exists()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java index fd5727b..d1ecea2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolSpeciesAction.java @@ -101,16 +101,13 @@ public class ExportProtocolSpeciesAction extends LongActionSupport<EditProtocolU } } - // import - ProtocolImportExportService service = - getContext().getTuttiProtocolImportExportService(); + ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService(); service.exportProtocolSpecies(file, protocols, model.getAllCaracteristic(), model.getAllReferentSpeciesByTaxonId()); - sendMessage(t("tutti.flash.info.species.exported.from.protocol", - file)); + sendMessage(t("tutti.flash.info.species.exported.from.protocol", file)); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.