This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 9ec9d2e72efb59d121bb628cc4f51650f9add071 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed May 11 16:49:22 2016 +0200 Introduction d'un nouveau service qui fait les import-exports des caractéristiques du protocole + correction import/export maturités (See #8301) --- .../service/csv/StringSetParserFormatter.java | 58 +++++ .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 3 + .../FishingOperationImportService.java | 4 +- .../tutti/service/protocol/CaracteristicRow.java | 12 + .../service/protocol/CaracteristicRowModel.java | 60 +++-- .../ProtocolCaracteristicsImportExportService.java | 259 +++++++++++++++++++++ .../protocol/ProtocolImportExportService.java | 223 ------------------ ...tocolCaracteristicsImportExportServiceTest.java | 149 ++++++++++++ .../protocol/ProtocolImportExportServiceTest.java | 167 +++++++------ .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 5 + .../actions/ExportAllCaracteristicAction.java | 7 +- .../actions/ExportProtocolCaracteristicAction.java | 14 +- .../actions/ImportProtocolCaracteristicAction.java | 6 +- .../actions/LoadProtocolImportColumnsAction.java | 4 +- 14 files changed, 621 insertions(+), 350 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringSetParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringSetParserFormatter.java new file mode 100644 index 0000000..9bfad7f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringSetParserFormatter.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.service.csv; + +/* + * #%L + * Tutti :: Service + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2012 - 2015 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ValueParserFormatter; + +import java.text.ParseException; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5.1 + */ +public class StringSetParserFormatter implements ValueParserFormatter<Set<String>> { + + @Override + public String format(Set<String> value) { + return value.stream().collect(Collectors.joining("|")); + } + + @Override + public Set<String> parse(String value) throws ParseException { + Set<String> result = new LinkedHashSet<>(); + if (StringUtils.isNotBlank(value)) { + String[] split = value.split("\\s*\\|\\s*"); + Collections.addAll(result, split); + } + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java index 4e906e6..fd912e5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiCsvUtil.java @@ -37,6 +37,7 @@ import org.nuiton.csv.ValueParserFormatter; import java.io.Serializable; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -209,6 +210,8 @@ public class TuttiCsvUtil extends Common { public static final ValueParserFormatter<List<Integer>> INTEGER_LIST_PARSER_FORMATTER = new IntegerListParserFormatter(); + public static final ValueParserFormatter<Set<String>> STRING_SET_PARSER_FORMATTER = new StringSetParserFormatter(); + public static <E extends Enum<E>> ValueParserFormatter<E> newEnumByNameParserFormatter(Class<E> enumType, boolean mandatory) { return new fr.ifremer.tutti.service.csv.EnumByNameParserFormatter<>(enumType, mandatory); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/FishingOperationImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/FishingOperationImportService.java index 2b41bb8..5cdd365 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/FishingOperationImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/operationimport/FishingOperationImportService.java @@ -33,7 +33,7 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService; import org.apache.commons.lang3.StringUtils; import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Import2; @@ -75,7 +75,7 @@ public class FishingOperationImportService extends AbstractTuttiService { public void importCaracteristicsFromColumnFile(File columnsFile, FishingOperation fishingoperation) throws ImportFromColumnFileInvalidRowException, ImportFromColumnFileFishingOperationNotFoundException, ImportFromColumnFileMissingHeaderException, IOException { // Get import file headers - List<String> headers =getService(ProtocolImportExportService.class).loadProtocolCaracteristicsImportColumns(columnsFile); + List<String> headers =getService(ProtocolCaracteristicsImportExportService.class).loadProtocolCaracteristicsImportColumns(columnsFile); // Create import model ImportFromColumnFileModel importModel = new ImportFromColumnFileModel(';', new HashSet<>(headers), persistenceService, dataContext, fishingoperation); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRow.java index 3558c26..7b38ae9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRow.java @@ -25,6 +25,8 @@ import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import java.io.Serializable; +import java.util.LinkedHashSet; +import java.util.Set; /** * Bean used as a row for import of {@link Caracteristic}. @@ -50,10 +52,14 @@ public class CaracteristicRow implements Serializable { public static final String PROPERTY_PMFM = "pmfm"; + public static final String PROPERTY_MATURE_STATE_IDS = "matureStateIds";; + protected CaracteristicType pmfmType; protected Caracteristic pmfm; + protected Set<String> matureStateIds = new LinkedHashSet<>(); + public Caracteristic getPmfm() { return pmfm; } @@ -90,5 +96,11 @@ public class CaracteristicRow implements Serializable { return getPmfm().getFractionName(); } + public Set<String> getMatureStateIds() { + return matureStateIds; + } + public void setMatureStateIds(Set<String> matureStateIds) { + this.matureStateIds = matureStateIds; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java index 5380f0e..d45a1ff 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java @@ -24,8 +24,8 @@ package fr.ifremer.tutti.service.protocol; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.Map; @@ -37,34 +37,44 @@ import java.util.Map; */ public class CaracteristicRowModel extends AbstractTuttiImportExportModel<CaracteristicRow> { - public CaracteristicRowModel(char separator, Map<String, Caracteristic> caracteristicMap) { - super(separator); + public static CaracteristicRowModel forImport(char separator, Map<String, Caracteristic> caracteristicMap) { + + CaracteristicRowModel result = new CaracteristicRowModel(separator); + + result.newForeignKeyColumn(CaracteristicRow.PROPERTY_PMFM_ID, + CaracteristicRow.PROPERTY_PMFM, + Caracteristic.class, + Caracteristic.PROPERTY_ID, + caracteristicMap); + + result.newMandatoryColumn(CaracteristicRow.PROPERTY_PMFM_TYPE, + CaracteristicRow.PROPERTY_PMFM_TYPE, + TuttiCsvUtil.newEnumByNameParserFormatter(CaracteristicType.class, true)); - // import definition + result.newMandatoryColumn(CaracteristicRow.PROPERTY_MATURE_STATE_IDS, TuttiCsvUtil.STRING_SET_PARSER_FORMATTER); - newForeignKeyColumn(CaracteristicRow.PROPERTY_PMFM_ID, - CaracteristicRow.PROPERTY_PMFM, - Caracteristic.class, - Caracteristic.PROPERTY_ID, - caracteristicMap); + result.newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_PARAMETER_NAME); + result.newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_MATRIX_NAME); + result.newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_FRACTION_NAME); + result.newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_METHOD_NAME); - newMandatoryColumn(CaracteristicRow.PROPERTY_PMFM_TYPE, - CaracteristicRow.PROPERTY_PMFM_TYPE, - TuttiCsvUtil.newEnumByNameParserFormatter(CaracteristicType.class, true)); + return result; - newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_PARAMETER_NAME); - newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_MATRIX_NAME); - newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_FRACTION_NAME); - newIgnoredColumn(CaracteristicRow.PROPERTY_PMFM_METHOD_NAME); + } + + public static CaracteristicRowModel forExport(char separator) { + + CaracteristicRowModel result = new CaracteristicRowModel(separator); - // export definition + result.newColumnForExport(CaracteristicRow.PROPERTY_PMFM_ID); + result.newColumnForExport(CaracteristicRow.PROPERTY_PMFM_TYPE, TuttiCsvUtil.newEnumByNameParserFormatter(CaracteristicType.class, true)); + result.newColumnForExport(CaracteristicRow.PROPERTY_PMFM_PARAMETER_NAME); + result.newColumnForExport(CaracteristicRow.PROPERTY_PMFM_MATRIX_NAME); + result.newColumnForExport(CaracteristicRow.PROPERTY_PMFM_FRACTION_NAME); + result.newColumnForExport(CaracteristicRow.PROPERTY_PMFM_METHOD_NAME); + result.newColumnForExport(CaracteristicRow.PROPERTY_MATURE_STATE_IDS, TuttiCsvUtil.STRING_SET_PARSER_FORMATTER); + return result; - newColumnForExport(CaracteristicRow.PROPERTY_PMFM_ID); - newColumnForExport(CaracteristicRow.PROPERTY_PMFM_TYPE, TuttiCsvUtil.newEnumByNameParserFormatter(CaracteristicType.class, true)); - newColumnForExport(CaracteristicRow.PROPERTY_PMFM_PARAMETER_NAME); - newColumnForExport(CaracteristicRow.PROPERTY_PMFM_MATRIX_NAME); - newColumnForExport(CaracteristicRow.PROPERTY_PMFM_FRACTION_NAME); - newColumnForExport(CaracteristicRow.PROPERTY_PMFM_METHOD_NAME); } @Override @@ -72,4 +82,8 @@ public class CaracteristicRowModel extends AbstractTuttiImportExportModel<Caract return new CaracteristicRow(); } + private CaracteristicRowModel(char separator) { + super(separator); + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicsImportExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicsImportExportService.java new file mode 100644 index 0000000..0152f9f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicsImportExportService.java @@ -0,0 +1,259 @@ +package fr.ifremer.tutti.service.protocol; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; +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.MaturityCaracteristic; +import fr.ifremer.tutti.persistence.entities.protocol.MaturityCaracteristics; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.AbstractTuttiService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.csv.ext.CsvReaders; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 11/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5.1 + */ +public class ProtocolCaracteristicsImportExportService extends AbstractTuttiService { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ProtocolCaracteristicsImportExportService.class); + + public void importProtocolCaracteristic(File file, + TuttiProtocol protocol, + Map<String, Caracteristic> caracteristicMap) throws IOException { + if (log.isInfoEnabled()) { + log.info("Will import protocol caracteristic from file: " + file); + } + + List<String> lengthClassesPmfmIds = new ArrayList<>(protocol.getLengthClassesPmfmId()); + List<String> individualObservationPmfmId = new ArrayList<>(protocol.getIndividualObservationPmfmId()); + Map<String, MaturityCaracteristic> maturityCaracteristics = new LinkedHashMap<>(); + if (!protocol.isMaturityCaracteristicsEmpty()) { + maturityCaracteristics.putAll(Maps.uniqueIndex(protocol.getMaturityCaracteristics(), MaturityCaracteristic::getId)); + } + + Map<String, CaracteristicMappingRow> rowsByCaracteristicId = new LinkedHashMap<>(); + if (!protocol.isCaracteristicMappingEmpty()) { + rowsByCaracteristicId.putAll(Maps.uniqueIndex(protocol.getCaracteristicMapping(), CaracteristicMappingRow::getPmfmId)); + } + + try (Reader reader = Files.newReader(file, StandardCharsets.UTF_8)) { + + CaracteristicRowModel csvModel = CaracteristicRowModel.forImport(getCsvSeparator(), caracteristicMap); + try (Import<CaracteristicRow> importer = Import.newImport(csvModel, reader)) { + + for (CaracteristicRow bean : importer) { + + CaracteristicType caracteristicType = bean.getPmfmType(); + Caracteristic caracteristic = bean.getPmfm(); + String id = caracteristic.getId(); + switch (caracteristicType) { + + case INDIVIDUAL_OBSERVATION: + individualObservationPmfmId.add(id); + break; + case LENGTH_STEP: + lengthClassesPmfmIds.add(id); + break; + case MATURITY: + MaturityCaracteristic maturityCaracteristic = maturityCaracteristics.get(id); + if (maturityCaracteristic == null) { + maturityCaracteristic = MaturityCaracteristics.newMaturityCaracteristic(); + maturityCaracteristic.setId(id); + maturityCaracteristic.setMatureStateIds(bean.getMatureStateIds()); + maturityCaracteristics.put(id, maturityCaracteristic); + } + break; + + case VESSEL_USE_FEATURE: + case GEAR_USE_FEATURE: + CaracteristicMappingRow row = rowsByCaracteristicId.get(id); + if (row == null) { + row = new CaracteristicMappingRowBean(); + row.setPmfmId(id); + row.setTab(caracteristicType.name()); + rowsByCaracteristicId.put(id, row); + } + break; + + } + + } + + } + + } catch (ImportRuntimeException e) { + throw e; + } catch (Exception e) { + throw new ImportRuntimeException("Could not import protocol [" + protocol.getName() + "] caracteristic from file " + file, e); + } + + protocol.setLengthClassesPmfmId(lengthClassesPmfmIds); + protocol.setIndividualObservationPmfmId(individualObservationPmfmId); + protocol.setMaturityCaracteristics(new ArrayList<>(maturityCaracteristics.values())); + protocol.setCaracteristicMapping(new ArrayList<>(rowsByCaracteristicId.values())); + + } + + public void exportAllCaracteristic(File file, Map<String, Caracteristic> caracteristicMap) { + + if (log.isInfoEnabled()) { + log.info("Will export all caracteristics to file: " + file); + } + + PmfmIdToCaracteristicRowFunction function = new PmfmIdToCaracteristicRowFunction(caracteristicMap); + + List<CaracteristicRow> rows = caracteristicMap.keySet().stream().map(function).collect(Collectors.toList()); + + try (BufferedWriter writer = Files.newWriter(file, StandardCharsets.UTF_8)) { + + CaracteristicRowModel csvModel = CaracteristicRowModel.forExport(getCsvSeparator()); + Export export = Export.newExport(csvModel, rows); + export.write(writer); + + } catch (Exception e) { + throw new ImportRuntimeException(t("tutti.service.protocol.export.caracteristics.all.error", file), e); + } + + } + + public void exportProtocolCaracteristic(File file, + TuttiProtocol protocol, + Map<String, Caracteristic> caracteristicMap) { + + if (log.isInfoEnabled()) { + log.info("Will export all caracteristics to file: " + file); + } + + List<CaracteristicRow> rows = new ArrayList<>(); + + PmfmIdToCaracteristicRowFunction function = new PmfmIdToCaracteristicRowFunction(caracteristicMap); + + if (!protocol.isLengthClassesPmfmIdEmpty()) { + for (String pmfmId : protocol.getLengthClassesPmfmId()) { + + CaracteristicRow row = getCaracteristicRow(CaracteristicType.LENGTH_STEP, pmfmId, function); + rows.add(row); + + } + } + + if (!protocol.isIndividualObservationPmfmIdEmpty()) { + for (String pmfmId : protocol.getIndividualObservationPmfmId()) { + + CaracteristicRow row = getCaracteristicRow(CaracteristicType.INDIVIDUAL_OBSERVATION, pmfmId, function); + rows.add(row); + + } + + } + + if (!protocol.isMaturityCaracteristicsEmpty()) { + + for (MaturityCaracteristic maturityCaracteristic : protocol.getMaturityCaracteristics()) { + + CaracteristicRow row = getCaracteristicRow(CaracteristicType.MATURITY, maturityCaracteristic.getId(), function); + if (!maturityCaracteristic.isMatureStateIdsEmpty()) { + row.setMatureStateIds(new LinkedHashSet<>(maturityCaracteristic.getMatureStateIds())); + } + rows.add(row); + + } + + } + + if (!protocol.isCaracteristicMappingEmpty()) { + for (CaracteristicMappingRow mappingRow : protocol.getCaracteristicMapping()) { + + CaracteristicRow row = getCaracteristicRow(CaracteristicType.valueOf(mappingRow.getTab()), mappingRow.getPmfmId(), function); + rows.add(row); + + } + } + + try (BufferedWriter writer = Files.newWriter(file, StandardCharsets.UTF_8)) { + + CaracteristicRowModel csvModel = CaracteristicRowModel.forExport(getCsvSeparator()); + Export export = Export.newExport(csvModel, rows); + export.write(writer); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.protocol.export.caracteristics.protocol.error", protocol.getName(), file), e); + } + } + + public List<String> loadProtocolCaracteristicsImportColumns(File columnsFile) throws IOException { + + String[] headers = CsvReaders.getHeader(columnsFile, ';'); + List<String> result = new ArrayList<>(headers.length); + for (String header : headers) { + if ((header.startsWith("\"") && header.endsWith("\"")) || + (header.startsWith("'") && header.endsWith("'"))) { + header = header.substring(1, header.length() - 1); + } + result.add(header); + } + Collections.sort(result); + return result; + + } + + private CaracteristicRow getCaracteristicRow(CaracteristicType caracteristicType, String id, PmfmIdToCaracteristicRowFunction function) { + CaracteristicRow row = function.apply(id); + row.setPmfmType(caracteristicType); + return row; + } + + + private static class PmfmIdToCaracteristicRowFunction implements Function<String, CaracteristicRow> { + + private final Map<String, Caracteristic> caracteristicMap; + + public PmfmIdToCaracteristicRowFunction(Map<String, Caracteristic> caracteristicMap) { + this.caracteristicMap = caracteristicMap; + } + + @Override + public CaracteristicRow apply(String input) { + Caracteristic caracteristic = caracteristicMap.get(input); + Preconditions.checkNotNull(caracteristic, "Could not find a caracteristic with id: " + input); + CaracteristicRow result = new CaracteristicRow(); + result.setPmfm(caracteristic); + return result; + } + + } + + private char getCsvSeparator() { + return context.getConfig().getCsvSeparator(); + } + +} 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 305d03a..72b619d 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 @@ -24,16 +24,10 @@ package fr.ifremer.tutti.service.protocol; import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.protocol.CalcifiedPiecesSamplingDefinition; import fr.ifremer.tutti.persistence.entities.protocol.CalcifiedPiecesSamplingDefinitions; -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.MaturityCaracteristic; -import fr.ifremer.tutti.persistence.entities.protocol.MaturityCaracteristics; import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; @@ -48,19 +42,16 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Export; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; -import org.nuiton.csv.ext.CsvReaders; import org.nuiton.jaxx.application.ApplicationTechnicalException; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import java.io.BufferedWriter; import java.io.File; -import java.io.IOException; import java.io.Reader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.LinkedHashMap; @@ -70,7 +61,6 @@ import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.nuiton.i18n.I18n.t; @@ -93,170 +83,6 @@ public class ProtocolImportExportService extends AbstractTuttiService { return TuttiProtocols.fromFile(file); } - public void importProtocolCaracteristic(File file, - TuttiProtocol protocol, - Map<String, Caracteristic> caracteristicMap) throws IOException { - if (log.isInfoEnabled()) { - log.info("Will import protocol caracteristic from file: " + file); - } - - List<String> lengthClassesPmfmIds = new ArrayList<>(protocol.getLengthClassesPmfmId()); - List<String> individualObservationPmfmId = new ArrayList<>(protocol.getIndividualObservationPmfmId()); - Map<String, MaturityCaracteristic> maturityCaracteristics = new LinkedHashMap<>(); - if (!protocol.isMaturityCaracteristicsEmpty()) { - maturityCaracteristics.putAll(Maps.uniqueIndex(protocol.getMaturityCaracteristics(), MaturityCaracteristic::getId)); - } - - Map<String, CaracteristicMappingRow> rowsByCaracteristicId = new LinkedHashMap<>(); - if (!protocol.isCaracteristicMappingEmpty()) { - rowsByCaracteristicId.putAll(Maps.uniqueIndex(protocol.getCaracteristicMapping(), CaracteristicMappingRow::getPmfmId)); - } - - try (Reader reader = Files.newReader(file, StandardCharsets.UTF_8)) { - - CaracteristicRowModel csvModel = new CaracteristicRowModel(getCsvSeparator(), caracteristicMap); - try (Import<CaracteristicRow> importer = Import.newImport(csvModel, reader)) { - - for (CaracteristicRow bean : importer) { - - CaracteristicType caracteristicType = bean.getPmfmType(); - Caracteristic caracteristic = bean.getPmfm(); - String id = caracteristic.getId(); - switch (caracteristicType) { - - case INDIVIDUAL_OBSERVATION: - individualObservationPmfmId.add(id); - break; - case LENGTH_STEP: - lengthClassesPmfmIds.add(id); - break; - case MATURITY: - MaturityCaracteristic maturityCaracteristic = maturityCaracteristics.get(id); - if (maturityCaracteristic==null) { - maturityCaracteristic = MaturityCaracteristics.newMaturityCaracteristic(); - maturityCaracteristic.setId(id); - maturityCaracteristics.put(id, maturityCaracteristic); - } - break; - - case VESSEL_USE_FEATURE: - case GEAR_USE_FEATURE: - CaracteristicMappingRow row = rowsByCaracteristicId.get(id); - if (row == null) { - row = new CaracteristicMappingRowBean(); - row.setPmfmId(id); - row.setTab(caracteristicType.name()); - rowsByCaracteristicId.put(id, row); - } - break; - - } - - } - - } - - } catch (ImportRuntimeException e) { - throw e; - } catch (Exception e) { - throw new ImportRuntimeException("Could not import protocol [" + protocol.getName() + "] caracteristic from file " + file, e); - } - - protocol.setLengthClassesPmfmId(lengthClassesPmfmIds); - protocol.setIndividualObservationPmfmId(individualObservationPmfmId); - protocol.setMaturityCaracteristics(new ArrayList<>(maturityCaracteristics.values())); - protocol.setCaracteristicMapping(new ArrayList<>(rowsByCaracteristicId.values())); - - } - - public void exportAllCaracteristic(File file, Map<String, Caracteristic> caracteristicMap) { - - if (log.isInfoEnabled()) { - log.info("Will export all caracteristics to file: " + file); - } - - PmfmIdToCaracteristicRowFunction function = - new PmfmIdToCaracteristicRowFunction(caracteristicMap); - - List<CaracteristicRow> rows = caracteristicMap.keySet().stream().map(function).collect(Collectors.toList()); - - try (BufferedWriter writer = Files.newWriter(file, StandardCharsets.UTF_8)) { - - CaracteristicRowModel csvModel = new CaracteristicRowModel(getCsvSeparator(), caracteristicMap); - Export export = Export.newExport(csvModel, rows); - export.write(writer); - - } catch (Exception e) { - throw new ImportRuntimeException(t("tutti.service.protocol.export.caracteristics.all.error", file), e); - } - - } - - public void exportProtocolCaracteristic(File file, - TuttiProtocol protocol, - Map<String, Caracteristic> caracteristicMap) { - - if (log.isInfoEnabled()) { - log.info("Will export all caracteristics to file: " + file); - } - - List<CaracteristicRow> rows = getProtocolCaracteristicRowsToExport(protocol, caracteristicMap); - - try (BufferedWriter writer = Files.newWriter(file, StandardCharsets.UTF_8)) { - - CaracteristicRowModel csvModel = new CaracteristicRowModel(getCsvSeparator(), caracteristicMap); - Export export = Export.newExport(csvModel, rows); - export.write(writer); - - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.protocol.export.caracteristics.protocol.error", protocol.getName(), file), e); - } - } - - private List<CaracteristicRow> getCaracteristicRows(CaracteristicType caracteristicType, Stream<String> ids, PmfmIdToCaracteristicRowFunction function) { - - return ids.map(function) - .map(s -> { - s.setPmfmType(caracteristicType); - return s; - }) - .collect(Collectors.toList()); - } - - private CaracteristicRow getCaracteristicRow(CaracteristicType caracteristicType, String id, PmfmIdToCaracteristicRowFunction function) { - CaracteristicRow row = function.apply(id); - row.setPmfmType(caracteristicType); - return row; - } - - private List<CaracteristicRow> getProtocolCaracteristicRowsToExport(TuttiProtocol protocol, Map<String, Caracteristic> caracteristicMap) { - - List<CaracteristicRow> rows = new ArrayList<>(); - - PmfmIdToCaracteristicRowFunction function = new PmfmIdToCaracteristicRowFunction(caracteristicMap); - - if (!protocol.isLengthClassesPmfmIdEmpty()) { - rows.addAll(getCaracteristicRows(CaracteristicType.LENGTH_STEP, protocol.getLengthClassesPmfmId().stream(), function)); - } - - if (!protocol.isMaturityCaracteristicsEmpty()) { - rows.addAll(getCaracteristicRows(CaracteristicType.MATURITY, protocol.getMaturityCaracteristics().stream().map(MaturityCaracteristic::getId), function)); - } - - if (!protocol.isCaracteristicMappingEmpty()) { - for (CaracteristicMappingRow mappingRow : protocol.getCaracteristicMapping()) { - - rows.add(getCaracteristicRow(CaracteristicType.valueOf(mappingRow.getTab()), mappingRow.getPmfmId(), function)); - - } - } - - if (!protocol.isIndividualObservationPmfmIdEmpty()) { - rows.addAll(getCaracteristicRows(CaracteristicType.INDIVIDUAL_OBSERVATION, protocol.getIndividualObservationPmfmId().stream(), function)); - } - return rows; - } - public List<Species> importProtocolSpecies(File file, TuttiProtocol protocol, Map<String, Caracteristic> caracteristicMap, @@ -426,22 +252,6 @@ public class ProtocolImportExportService extends AbstractTuttiService { return result; } - public List<String> loadProtocolCaracteristicsImportColumns(File columnsFile) throws IOException { - - String[] headers = CsvReaders.getHeader(columnsFile, ';'); - List<String> result = new ArrayList<>(headers.length); - for (String header : headers) { - if ((header.startsWith("\"") && header.endsWith("\"")) || - (header.startsWith("'") && header.endsWith("'"))) { - header = header.substring(1, header.length() - 1); - } - result.add(header); - } - Collections.sort(result); - return result; - - } - public void exportProtocolSpecies(File file, List<SpeciesProtocol> protocol, Map<String, Caracteristic> caracteristicMap, @@ -700,20 +510,6 @@ public class ProtocolImportExportService extends AbstractTuttiService { return context.getConfig().getCsvSeparator(); } -// protected void mergeCaracteristicMappingRows(Multimap<CaracteristicType, String> ids, -// Map<String, CaracteristicMappingRow> rowsByCaracteristicId, -// CaracteristicType type) { -// for (String id : ids.get(type)) { -// CaracteristicMappingRow row = rowsByCaracteristicId.get(id); -// if (row == null) { -// row = new CaracteristicMappingRowBean(); -// row.setPmfmId(id); -// rowsByCaracteristicId.put(id, row); -// } -// row.setTab(type.name()); -// } -// } - protected void cleanRptData(SpeciesProtocol sp) { if (sp.withRtpMale()) { Rtp rtpMale = sp.getRtpMale(); @@ -778,25 +574,6 @@ public class ProtocolImportExportService extends AbstractTuttiService { } - private static class PmfmIdToCaracteristicRowFunction implements Function<String, CaracteristicRow> { - - private final Map<String, Caracteristic> caracteristicMap; - - public PmfmIdToCaracteristicRowFunction(Map<String, Caracteristic> caracteristicMap) { - this.caracteristicMap = caracteristicMap; - } - - @Override - public CaracteristicRow apply(String input) { - Caracteristic caracteristic = caracteristicMap.get(input); - Preconditions.checkNotNull(caracteristic, "Could not find a caracteristic with id: " + input); - CaracteristicRow result = new CaracteristicRow(); - result.setPmfm(caracteristic); - return result; - } - - } - private static class SpeciesProtocolToSpeciesRowFunction implements Function<SpeciesProtocol, SpeciesRow> { private final Map<String, Species> speciesMap; diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicsImportExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicsImportExportServiceTest.java new file mode 100644 index 0000000..17d3c0e --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicsImportExportServiceTest.java @@ -0,0 +1,149 @@ +package fr.ifremer.tutti.service.protocol; + +import com.google.common.base.Charsets; +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.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristics; +import fr.ifremer.tutti.service.ServiceDbResource; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.nuiton.csv.ImportRuntimeException; + +import java.io.File; +import java.util.Map; + +import static fr.ifremer.tutti.service.protocol.ProtocolImportExportServiceTest.ALL_CARACTERISTIC_FILE_CONTENT; +import static fr.ifremer.tutti.service.protocol.ProtocolImportExportServiceTest.PROTOCOL_CARACTERISTIC_FILE_BAD_CONTENT; +import static fr.ifremer.tutti.service.protocol.ProtocolImportExportServiceTest.PROTOCOL_CARACTERISTIC_FILE_CONTENT; + +/** + * Created on 11/05/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ProtocolCaracteristicsImportExportServiceTest { + + + @ClassRule + public static final ServiceDbResource dbResource = ServiceDbResource.writeDb("dbCGFS"); + + protected ProtocolCaracteristicsImportExportService service; + + protected File datadirectory; + + @Before + public void setUp() throws Exception { + + dbResource.getConfig().setCsvSeparator(';'); + + service = dbResource.getServiceContext().getService(ProtocolCaracteristicsImportExportService.class); + + datadirectory = dbResource.getConfig().getDataDirectory(); + } + + @Test + public void importProtocolCaracteristic() throws Exception { + + File file = new File(datadirectory, "importProtocolCaracteristic.csv"); + + Files.createParentDirs(file); + + Files.write(PROTOCOL_CARACTERISTIC_FILE_CONTENT, file, Charsets.UTF_8); + + TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); + Map<String, Caracteristic> caracteristicMap = createCaracteristics(); + + service.importProtocolCaracteristic(file, protocol, caracteristicMap); + + Assert.assertEquals(Lists.newArrayList("1"), + protocol.getLengthClassesPmfmId()); + Assert.assertEquals(Lists.newArrayList( + TuttiProtocols.caracteristicMappingRow("2", CaracteristicType.VESSEL_USE_FEATURE), + TuttiProtocols.caracteristicMappingRow("3", CaracteristicType.GEAR_USE_FEATURE) + ), + protocol.getCaracteristicMapping()); + Assert.assertEquals(Lists.newArrayList("4"), + protocol.getIndividualObservationPmfmId()); + } + + @Test(expected = ImportRuntimeException.class) + public void importProtocolCaracteristicMissingCaracteristicType() throws Exception { + + File file = new File(datadirectory, "importProtocolCaracteristicMissingCaracteristicType.csv"); + + Files.createParentDirs(file); + + Files.write(PROTOCOL_CARACTERISTIC_FILE_BAD_CONTENT, file, Charsets.UTF_8); + + TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); + Map<String, Caracteristic> caracteristicMap = createCaracteristics(); + + service.importProtocolCaracteristic(file, protocol, caracteristicMap); + } + + @Test + public void exportProtocolCaracteristic() throws Exception { + + File file = new File(datadirectory, "exportProtocolCaracteristic.csv"); + + Files.createParentDirs(file); + + Map<String, Caracteristic> caracteristicMap = createCaracteristics(); + TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); + + protocol.setLengthClassesPmfmId(Lists.newArrayList("1")); + protocol.setCaracteristicMapping(Lists.newArrayList( + TuttiProtocols.caracteristicMappingRow("2", CaracteristicType.VESSEL_USE_FEATURE), + TuttiProtocols.caracteristicMappingRow("3", CaracteristicType.GEAR_USE_FEATURE) + )); + protocol.setIndividualObservationPmfmId(Lists.newArrayList("4")); + + Assert.assertFalse(file.exists()); + service.exportProtocolCaracteristic(file, protocol, caracteristicMap); + + Assert.assertTrue(file.exists()); + + String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); + Assert.assertEquals(PROTOCOL_CARACTERISTIC_FILE_CONTENT, exportFileToString); + } + + @Test + public void exportAllCaracteristic() throws Exception { + + File file = new File(datadirectory, "exportAllCaracteristic.csv"); + + Files.createParentDirs(file); + + Map<String, Caracteristic> caracteristicMap = createCaracteristics(); + + Assert.assertFalse(file.exists()); + service.exportAllCaracteristic(file, caracteristicMap); + + Assert.assertTrue(file.exists()); + + String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); + Assert.assertEquals(ALL_CARACTERISTIC_FILE_CONTENT, exportFileToString); + } + + protected Map<String, Caracteristic> createCaracteristics() { + Map<String, Caracteristic> result = Maps.newTreeMap(); + for (int i = 1; i < 6; i++) { + Caracteristic c = Caracteristics.newCaracteristic(); + c.setId("" + i); + c.setParameterName("parameterName" + i); + c.setMatrixName("matrixName" + i); + c.setFractionName("fractionName" + i); + c.setMethodName("methodName" + i); + result.put(i + "", c); + } + return result; + } + +} \ No newline at end of file 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 e663643..4ab96b0 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 @@ -41,7 +41,6 @@ import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; -import org.nuiton.csv.ImportRuntimeException; import java.io.File; import java.util.Map; @@ -370,89 +369,89 @@ public class ProtocolImportExportServiceTest { Assert.assertEquals(33f, b2.getRtpFemale().getB(), 0.01); } - //FIXME - @Test - public void importProtocolCaracteristic() throws Exception { - - File file = new File(datadirectory, "importProtocolCaracteristic.csv"); - - Files.createParentDirs(file); - - Files.write(PROTOCOL_CARACTERISTIC_FILE_CONTENT, file, Charsets.UTF_8); - - TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); - Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - - service.importProtocolCaracteristic(file, protocol, caracteristicMap); - - Assert.assertEquals(Lists.newArrayList("1"), - protocol.getLengthClassesPmfmId()); - Assert.assertEquals(Lists.newArrayList( - TuttiProtocols.caracteristicMappingRow("2", CaracteristicType.VESSEL_USE_FEATURE), - TuttiProtocols.caracteristicMappingRow("3", CaracteristicType.GEAR_USE_FEATURE) - ), - protocol.getCaracteristicMapping()); - Assert.assertEquals(Lists.newArrayList("4"), - protocol.getIndividualObservationPmfmId()); - } - - @Test(expected = ImportRuntimeException.class) - public void importProtocolCaracteristicMissingCaracteristicType() throws Exception { - - File file = new File(datadirectory, "importProtocolCaracteristicMissingCaracteristicType.csv"); - - Files.createParentDirs(file); - - Files.write(PROTOCOL_CARACTERISTIC_FILE_BAD_CONTENT, file, Charsets.UTF_8); - - TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); - Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - - service.importProtocolCaracteristic(file, protocol, caracteristicMap); - } - @Test - public void exportProtocolCaracteristic() throws Exception { - - File file = new File(datadirectory, "exportProtocolCaracteristic.csv"); - - Files.createParentDirs(file); - - Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); - - protocol.setLengthClassesPmfmId(Lists.newArrayList("1")); - protocol.setCaracteristicMapping(Lists.newArrayList( - TuttiProtocols.caracteristicMappingRow("2", CaracteristicType.VESSEL_USE_FEATURE), - TuttiProtocols.caracteristicMappingRow("3", CaracteristicType.GEAR_USE_FEATURE) - )); - protocol.setIndividualObservationPmfmId(Lists.newArrayList("4")); - - Assert.assertFalse(file.exists()); - service.exportProtocolCaracteristic(file, protocol, caracteristicMap); - - Assert.assertTrue(file.exists()); - - String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); - Assert.assertEquals(PROTOCOL_CARACTERISTIC_FILE_CONTENT, exportFileToString); - } - - @Test - public void exportAllCaracteristic() throws Exception { - - File file = new File(datadirectory, "exportAllCaracteristic.csv"); - - Files.createParentDirs(file); - - Map<String, Caracteristic> caracteristicMap = createCaracteristics(); - - Assert.assertFalse(file.exists()); - service.exportAllCaracteristic(file, caracteristicMap); - - Assert.assertTrue(file.exists()); - - String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); - Assert.assertEquals(ALL_CARACTERISTIC_FILE_CONTENT, exportFileToString); - } +// //FIXME +// @Test +// public void importProtocolCaracteristic() throws Exception { +// +// File file = new File(datadirectory, "importProtocolCaracteristic.csv"); +// +// Files.createParentDirs(file); +// +// Files.write(PROTOCOL_CARACTERISTIC_FILE_CONTENT, file, Charsets.UTF_8); +// +// TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); +// Map<String, Caracteristic> caracteristicMap = createCaracteristics(); +// +// service.importProtocolCaracteristic(file, protocol, caracteristicMap); +// +// Assert.assertEquals(Lists.newArrayList("1"), +// protocol.getLengthClassesPmfmId()); +// Assert.assertEquals(Lists.newArrayList( +// TuttiProtocols.caracteristicMappingRow("2", CaracteristicType.VESSEL_USE_FEATURE), +// TuttiProtocols.caracteristicMappingRow("3", CaracteristicType.GEAR_USE_FEATURE) +// ), +// protocol.getCaracteristicMapping()); +// Assert.assertEquals(Lists.newArrayList("4"), +// protocol.getIndividualObservationPmfmId()); +// } +// +// @Test(expected = ImportRuntimeException.class) +// public void importProtocolCaracteristicMissingCaracteristicType() throws Exception { +// +// File file = new File(datadirectory, "importProtocolCaracteristicMissingCaracteristicType.csv"); +// +// Files.createParentDirs(file); +// +// Files.write(PROTOCOL_CARACTERISTIC_FILE_BAD_CONTENT, file, Charsets.UTF_8); +// +// TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); +// Map<String, Caracteristic> caracteristicMap = createCaracteristics(); +// +// service.importProtocolCaracteristic(file, protocol, caracteristicMap); +// } +// @Test +// public void exportProtocolCaracteristic() throws Exception { +// +// File file = new File(datadirectory, "exportProtocolCaracteristic.csv"); +// +// Files.createParentDirs(file); +// +// Map<String, Caracteristic> caracteristicMap = createCaracteristics(); +// TuttiProtocol protocol = TuttiProtocols.newTuttiProtocol(); +// +// protocol.setLengthClassesPmfmId(Lists.newArrayList("1")); +// protocol.setCaracteristicMapping(Lists.newArrayList( +// TuttiProtocols.caracteristicMappingRow("2", CaracteristicType.VESSEL_USE_FEATURE), +// TuttiProtocols.caracteristicMappingRow("3", CaracteristicType.GEAR_USE_FEATURE) +// )); +// protocol.setIndividualObservationPmfmId(Lists.newArrayList("4")); +// +// Assert.assertFalse(file.exists()); +// service.exportProtocolCaracteristic(file, protocol, caracteristicMap); +// +// Assert.assertTrue(file.exists()); +// +// String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); +// Assert.assertEquals(PROTOCOL_CARACTERISTIC_FILE_CONTENT, exportFileToString); +// } +// +// @Test +// public void exportAllCaracteristic() throws Exception { +// +// File file = new File(datadirectory, "exportAllCaracteristic.csv"); +// +// Files.createParentDirs(file); +// +// Map<String, Caracteristic> caracteristicMap = createCaracteristics(); +// +// Assert.assertFalse(file.exists()); +// service.exportAllCaracteristic(file, caracteristicMap); +// +// Assert.assertTrue(file.exists()); +// +// String exportFileToString = Files.toString(file, Charsets.UTF_8).trim(); +// Assert.assertEquals(ALL_CARACTERISTIC_FILE_CONTENT, exportFileToString); +// } @Test public void importProtocolSpecies() throws Exception { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index 9206978..e650447 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -48,6 +48,7 @@ import fr.ifremer.tutti.service.export.toconfirmreport.ToConfirmReportService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportService; import fr.ifremer.tutti.service.genericformat.GenericFormatImportService; import fr.ifremer.tutti.service.operationimport.FishingOperationImportService; +import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.psionimport.PsionImportService; import fr.ifremer.tutti.service.pupitri.PupitriExportService; @@ -690,6 +691,10 @@ public class TuttiUIContext extends AbstractBean implements Closeable, UIMessage return serviceContext.getService(ProtocolImportExportService.class); } + public ProtocolCaracteristicsImportExportService getProtocolCaracteristicsImportExportService() { + return serviceContext.getService(ProtocolCaracteristicsImportExportService.class); + } + public PupitriImportService getPupitriImportService() { return serviceContext.getService(PupitriImportService.class); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportAllCaracteristicAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportAllCaracteristicAction.java index a638635..2d9fc1e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportAllCaracteristicAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportAllCaracteristicAction.java @@ -23,11 +23,11 @@ package fr.ifremer.tutti.ui.swing.content.protocol.actions; */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; +import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -87,8 +87,7 @@ public class ExportAllCaracteristicAction extends LongActionSupport<EditProtocol } // export protocol caracteristics - ProtocolImportExportService service = - getContext().getTuttiProtocolImportExportService(); + ProtocolCaracteristicsImportExportService service = getContext().getProtocolCaracteristicsImportExportService(); service.exportAllCaracteristic(file, getModel().getAllCaracteristic()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java index 6efc909..8c26d66 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ExportProtocolCaracteristicAction.java @@ -24,11 +24,11 @@ package fr.ifremer.tutti.ui.swing.content.protocol.actions; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; +import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -91,14 +91,10 @@ public class ExportProtocolCaracteristicAction extends LongActionSupport<EditPro TuttiProtocol protocol = getModel().toEntity(); // export protocol caracteristics - ProtocolImportExportService service = - getContext().getTuttiProtocolImportExportService(); + ProtocolCaracteristicsImportExportService service = getContext().getProtocolCaracteristicsImportExportService(); - service.exportProtocolCaracteristic(file, - protocol, - getModel().getAllCaracteristic()); + service.exportProtocolCaracteristic(file, protocol, getModel().getAllCaracteristic()); - sendMessage(t("tutti.flash.info.caractristic.exported.from.protocol", - file)); + sendMessage(t("tutti.flash.info.caractristic.exported.from.protocol", file)); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java index 073f393..fe129ef 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/ImportProtocolCaracteristicAction.java @@ -25,12 +25,12 @@ package fr.ifremer.tutti.ui.swing.content.protocol.actions; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolCaracteristicsRowModel; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -96,7 +96,7 @@ public class ImportProtocolCaracteristicAction extends LongActionSupport<EditPro // bind to a protocol protocol = model.toEntity(); - ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService(); + ProtocolCaracteristicsImportExportService service = getContext().getProtocolCaracteristicsImportExportService(); service.importProtocolCaracteristic(file, protocol, model.getAllCaracteristic()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/LoadProtocolImportColumnsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/LoadProtocolImportColumnsAction.java index e4c9b5e..e8bdfea 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/LoadProtocolImportColumnsAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/LoadProtocolImportColumnsAction.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.ui.swing.content.protocol.actions; * #L% */ -import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; +import fr.ifremer.tutti.service.protocol.ProtocolCaracteristicsImportExportService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; @@ -70,7 +70,7 @@ public class LoadProtocolImportColumnsAction extends LongActionSupport<EditProto @Override public void doAction() throws Exception { - ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService(); + ProtocolCaracteristicsImportExportService service = getContext().getProtocolCaracteristicsImportExportService(); List<String> columns = service.loadProtocolCaracteristicsImportColumns(columnsFile); if (log.isInfoEnabled()) { log.info("Detected columns: "+columns); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.