This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 4260acc555b312891f1eafcedc5a702eab064103 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Feb 14 13:57:27 2015 +0100 unify parser formatter --- t | 75 ------------ .../catches/multipost/AccidentalCatchRowModel.java | 6 +- .../catches/multipost/MarineLitterRowModel.java | 6 +- .../catches/multipost/MultiPostImportService.java | 6 +- .../csv/AbstractTuttiImportExportModel.java | 24 ---- .../service/csv/CaracteristicParserFormatter.java | 47 +++++++ .../csv/CaracteristicTechnicalFormatter.java | 22 ---- .../service/csv/CaracteristicTechnicalParser.java | 43 ------- .../service/csv/CaracteristicValueFormatter.java | 43 ------- .../csv/CaracteristicValueParserFormatter.java | 114 +++++++++++++++++ .../csv/CaracteristicValueTechnicalFormatter.java | 43 ------- .../csv/CaracteristicValueTechnicalParser.java | 56 --------- .../fr/ifremer/tutti/service/csv/CsvProducer.java | 2 +- .../service/csv/DecoratorPropertyFormatter.java | 37 ------ .../csv/EntityListParserFormatterSupport.java | 52 ++++++++ .../tutti/service/csv/EntityNotFoundException.java | 39 ++++++ .../service/csv/EntityParserFormatterSupport.java | 86 +++++++++++++ .../csv/FishingOperationLocationFormatter.java | 19 --- .../FishingOperationLocationParserFormatter.java | 62 ++++++++++ ...FishingOperationLocationTechnicalFormatter.java | 19 --- .../FishingOperationLocationTechnicalParser.java | 56 --------- .../csv/FishingOperationStrataFormatter.java | 19 --- .../csv/FishingOperationStrataParserFormatter.java | 62 ++++++++++ .../FishingOperationStrataTechnicalFormatter.java | 19 --- .../csv/FishingOperationStrataTechnicalParser.java | 56 --------- .../csv/FishingOperationSubStrataFormatter.java | 19 --- .../FishingOperationSubStrataParserFormatter.java | 62 ++++++++++ ...ishingOperationSubStrataTechnicalFormatter.java | 19 --- .../FishingOperationSubStrataTechnicalParser.java | 56 --------- .../ifremer/tutti/service/csv/GearFormatter.java | 23 ---- .../tutti/service/csv/GearParserFormatter.java | 48 ++++++++ .../tutti/service/csv/GearTechnicalFormatter.java | 23 ---- .../tutti/service/csv/GearTechnicalParser.java | 46 ------- .../tutti/service/csv/HarbourFormatter.java | 23 ---- .../tutti/service/csv/HarbourParserFormatter.java | 48 ++++++++ .../service/csv/HarbourTechnicalFormatter.java | 23 ---- .../tutti/service/csv/HarbourTechnicalParser.java | 43 ------- .../tutti/service/csv/ListPersonFormatter.java | 24 ---- .../service/csv/ListPersonTechnicalFormatter.java | 25 ---- .../service/csv/ListPersonTechnicalParser.java | 52 -------- .../tutti/service/csv/ListVesselFormatter.java | 25 ---- .../service/csv/ListVesselTechnicalFormatter.java | 25 ---- .../service/csv/ListVesselTechnicalParser.java | 52 -------- .../service/csv/PersonListParserFormatter.java | 25 ++++ .../tutti/service/csv/PersonParserFormatter.java | 45 +++++++ .../tutti/service/csv/SpeciesParserFormatter.java | 65 ++++++++++ .../service/csv/SpeciesTechnicalFormatter.java | 23 ---- .../tutti/service/csv/SpeciesTechnicalParser.java | 43 ------- .../fr/ifremer/tutti/service/csv/TuttiCsvUtil.java | 135 +++++---------------- .../ifremer/tutti/service/csv/VesselFormatter.java | 23 ---- .../service/csv/VesselListParserFormatter.java | 25 ++++ .../tutti/service/csv/VesselParserFormatter.java | 49 ++++++++ .../service/csv/VesselTechnicalFormatter.java | 23 ---- .../tutti/service/csv/VesselTechnicalParser.java | 43 ------- .../service/export/sumatra/CatchRowModel.java | 2 +- .../genericformat/GenericFormatExportService.java | 1 - .../service/genericformat/GlobalExportContext.java | 8 +- .../service/genericformat/GlobalImportContext.java | 102 ++++++++-------- .../genericformat/csv/AccidentalCatchModel.java | 3 +- .../service/genericformat/csv/CatchModel.java | 15 ++- .../genericformat/csv/GearCaracteristicModel.java | 12 +- .../csv/IndividualObservationModel.java | 2 +- .../service/genericformat/csv/ParameterModel.java | 10 +- .../genericformat/csv/SpeciesExportModel.java | 2 +- .../tutti/service/protocol/SpeciesRowModel.java | 4 +- .../resources/i18n/tutti-service_en_GB.properties | 10 ++ .../resources/i18n/tutti-service_fr_FR.properties | 11 ++ 67 files changed, 965 insertions(+), 1365 deletions(-) diff --git a/t b/t deleted file mode 100644 index f495ebc..0000000 --- a/t +++ /dev/null @@ -1,75 +0,0 @@ -[1mdiff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m -[1mindex 6d08564..fbbca75 100644[m -[1m--- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m -[1m+++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java[m -[36m@@ -3,6 +3,7 @@[m [mpackage fr.ifremer.tutti.service.genericformat;[m - import fr.ifremer.tutti.persistence.entities.data.Program;[m - import fr.ifremer.tutti.service.PersistenceService;[m - import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser;[m -[32m+[m[32mimport fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser;[m - import fr.ifremer.tutti.service.csv.FishingOperationLocationTechnicalParser;[m - import fr.ifremer.tutti.service.csv.FishingOperationStrataTechnicalParser;[m - import fr.ifremer.tutti.service.csv.FishingOperationSubStrataTechnicalParser;[m -[36m@@ -10,7 +11,6 @@[m [mimport fr.ifremer.tutti.service.csv.GearTechnicalParser;[m - import fr.ifremer.tutti.service.csv.HarbourTechnicalParser;[m - import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser;[m - import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser;[m -[31m-import fr.ifremer.tutti.service.csv.ProgramTechnicalParser;[m - import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser;[m - import fr.ifremer.tutti.service.csv.VesselTechnicalParser;[m - [m -[36m@@ -24,8 +24,6 @@[m [mpublic class GlobalImportContext {[m - [m - private final VesselTechnicalParser vesselParser;[m - [m -[31m- private final ProgramTechnicalParser programParser;[m -[31m-[m - private final HarbourTechnicalParser harbourParser;[m - [m - private final GearTechnicalParser mandatoryGearParser;[m -[36m@@ -46,9 +44,12 @@[m [mpublic class GlobalImportContext {[m - [m - private final SpeciesTechnicalParser speciesParser;[m - [m -[32m+[m[32m private final CaracteristicValueTechnicalParser marineLitterCategoryValueParser;[m -[32m+[m -[32m+[m[32m private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser;[m -[32m+[m - public GlobalImportContext(PersistenceService persistenceService, Program program) {[m - this.vesselParser = new VesselTechnicalParser(persistenceService);[m -[31m- this.programParser = new ProgramTechnicalParser(persistenceService);[m - this.harbourParser = new HarbourTechnicalParser(persistenceService);[m - this.listPersonParser = new ListPersonTechnicalParser(persistenceService);[m - this.mandatoryGearParser = new GearTechnicalParser(persistenceService, true);[m -[36m@@ -59,16 +60,14 @@[m [mpublic class GlobalImportContext {[m - this.fishingOperationLocationParser = new FishingOperationLocationTechnicalParser(persistenceService, program.getZone().getId());[m - this.listVesselParser = new ListVesselTechnicalParser(persistenceService);[m - this.speciesParser = new SpeciesTechnicalParser(persistenceService);[m -[32m+[m[32m this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic());[m -[32m+[m[32m this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic());[m - }[m - [m - public VesselTechnicalParser getVesselParser() {[m - return vesselParser;[m - }[m - [m -[31m- public ProgramTechnicalParser getProgramParser() {[m -[31m- return programParser;[m -[31m- }[m -[31m-[m - public HarbourTechnicalParser getHarbourParser() {[m - return harbourParser;[m - }[m -[36m@@ -108,4 +107,12 @@[m [mpublic class GlobalImportContext {[m - public SpeciesTechnicalParser getSpeciesParser() {[m - return speciesParser;[m - }[m -[32m+[m -[32m+[m[32m public CaracteristicValueTechnicalParser getMarineLitterCategoryValueParser() {[m -[32m+[m[32m return marineLitterCategoryValueParser;[m -[32m+[m[32m }[m -[32m+[m -[32m+[m[32m public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() {[m -[32m+[m[32m return marineLitterSizeCategoryValueParser;[m -[32m+[m[32m }[m - }[m diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java index d488299..fa4a44b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java @@ -25,7 +25,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -55,7 +55,7 @@ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<Acci newSpeciesForeignKeyColumn(AccidentalCatchRow.SPECIES, species); newColumnForExport(AccidentalCatchRow.GENDER, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(AccidentalCatchRow.GENDER, new CaracteristicValueTechnicalParser(sexCaracteristic)); + newMandatoryColumn(AccidentalCatchRow.GENDER, CaracteristicValueParserFormatter.newParser(sexCaracteristic)); newColumnForImportExport(AccidentalCatchRow.WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); @@ -65,7 +65,7 @@ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<Acci newForeignKeyColumn(AccidentalCatchRow.LENGTH_STEP_CARACTERISTIC, Caracteristic.class, lengthStepCaracteristics); newColumnForExport(AccidentalCatchRow.DEAD_OR_ALIVE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(AccidentalCatchRow.DEAD_OR_ALIVE, new CaracteristicValueTechnicalParser(dedOrAliveCaracteristic)); + newMandatoryColumn(AccidentalCatchRow.DEAD_OR_ALIVE, CaracteristicValueParserFormatter.newParser(dedOrAliveCaracteristic)); newColumnForImportExport(AccidentalCatchRow.COMMENT); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java index 53ad530..d88360c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** @@ -43,10 +43,10 @@ public class MarineLitterRowModel extends AbstractTuttiImportExportModel<MarineL newColumnForImportExport(MarineLitterRow.BATCH_ID); newColumnForExport(MarineLitterRow.CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(MarineLitterRow.CATEGORY, new CaracteristicValueTechnicalParser(categoryCaracteristic)); + newMandatoryColumn(MarineLitterRow.CATEGORY, CaracteristicValueParserFormatter.newParser(categoryCaracteristic)); newColumnForExport(MarineLitterRow.SIZE_CATEGORY, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); - newMandatoryColumn(MarineLitterRow.SIZE_CATEGORY, new CaracteristicValueTechnicalParser(sizeCategoryCaracteristic)); + newMandatoryColumn(MarineLitterRow.SIZE_CATEGORY, CaracteristicValueParserFormatter.newParser(sizeCategoryCaracteristic)); newColumnForImportExport(MarineLitterRow.NUMBER, TuttiCsvUtil.INTEGER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index 61b3c11..efb9ef3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -60,7 +60,7 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -1109,7 +1109,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult IndividualObservationBatch batch = batches.get(caracteristicRow.getBatchId()); if (batch != null) { Caracteristic caracteristic = caracteristicRow.getCaracteristic(); - CaracteristicValueTechnicalParser parser = new CaracteristicValueTechnicalParser(caracteristic); + CaracteristicValueParserFormatter parser = CaracteristicValueParserFormatter.newParser(caracteristic); Serializable value = caracteristicRow.getValue(); try { parser.parse(String.valueOf(value)); @@ -1280,7 +1280,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult AccidentalBatch batch = batches.get(caracteristicRow.getBatchId()); if (batch != null) { Caracteristic caracteristic = caracteristicRow.getCaracteristic(); - CaracteristicValueTechnicalParser parser = new CaracteristicValueTechnicalParser(caracteristic); + CaracteristicValueParserFormatter parser = CaracteristicValueParserFormatter.newParser(caracteristic); Serializable value = caracteristicRow.getValue(); try { parser.parse(String.valueOf(value)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 97b22d8..9b05c7a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -8,7 +8,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Speciess; import org.nuiton.csv.ExportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ext.AbstractImportExportModel; -import org.nuiton.decorator.Decorator; import java.util.List; import java.util.Map; @@ -25,24 +24,6 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx super(separator); } - public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) { - return newColumnForExportByDecorator(headerName, propertyName, decorator, null); - } - - public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) { - DecoratorPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newDecoratorFormatter(decorator, defaultNullValue); - return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter); - } - - public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) { - return newColumnForExport(headerName, propertyName, formatterPropertyName, null); - } - - public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) { - BeanPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newBeanFormatter(formatterPropertyName, defaultNullValue); - return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter); - } - public <E extends TuttiEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) { newMandatoryColumn(headerName, propertyName, new ForeignKeyParserFormatter<>(entityType, foreignKeyName, universe)); } @@ -71,11 +52,6 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx return newNullableColumnForExport(headerName, propertyName, TuttiCsvUtil.STRING); } - public <T> ExportableColumn<M, T> newNullableColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) { - DecoratorPropertyFormatter<T> valueFormatter = TuttiCsvUtil.newDecoratorFormatter(decorator, ""); - return newNullableColumnForExport(headerName, propertyName, valueFormatter); - } - public <T> ExportableColumn<M, T> newIndexNullableColumnForExport(String headerName, String collectionName, int order, String propertyName, ValueFormatter<T> valueFormatter) { return modelBuilder.newColumnForExport(headerName, new BeanIndexNullableGetter<M, T>(collectionName, order, propertyName), valueFormatter); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java new file mode 100644 index 0000000..f8e1f9d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicParserFormatter.java @@ -0,0 +1,47 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CaracteristicParserFormatter extends EntityParserFormatterSupport<Caracteristic> { + + public static CaracteristicParserFormatter newFormatter() { + return new CaracteristicParserFormatter(false, null); + } + + public static CaracteristicParserFormatter newTechnicalFormatter() { + return new CaracteristicParserFormatter(true, null); + } + + public static CaracteristicParserFormatter newParser(PersistenceService persistenceService) { + return new CaracteristicParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected CaracteristicParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Caracteristic.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Caracteristic> getEntities() { + return persistenceService.getAllCaracteristic(); + } + + @Override + protected String formatBusiness(Caracteristic caracteristic) { + return caracteristic.getParameterName() + + " - " + caracteristic.getMatrixName() + + " - " + caracteristic.getFractionName() + + " - " + caracteristic.getMethodName(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java deleted file mode 100644 index cc478ca..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalFormatter.java +++ /dev/null @@ -1,22 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicTechnicalFormatter implements ValueFormatter<Caracteristic> { - - @Override - public String format(Caracteristic value) { - - String result = value == null ? "" : TuttiEntities.GET_ID.apply(value); - return result; - - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java deleted file mode 100644 index 3c93821..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicTechnicalParser implements ValueParser<Caracteristic> { - - private final PersistenceService persistenceService; - - private Map<String, Caracteristic> caracteristicsById; - - public CaracteristicTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Caracteristic parse(String value) throws ParseException { - - if (caracteristicsById == null) { - List<Caracteristic> caracteristics = persistenceService.getAllCaracteristic(); - caracteristicsById = TuttiEntities.splitById(caracteristics); - } - Caracteristic caracteristic = caracteristicsById.get(value); - - if (caracteristic == null) { - throw new ParseException("Could not found a caracteristic with id " + value, 0); - } - return caracteristic; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java deleted file mode 100644 index 5ff567a..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueFormatter.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import org.nuiton.csv.Common; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.csv.ValueParserFormatter; - -import java.io.Serializable; - -/** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public class CaracteristicValueFormatter implements ValueFormatter<Serializable> { - - ValueParserFormatter<Integer> integerDelegate = Common.INTEGER; - - ValueParserFormatter<Float> floatDelegate = Common.FLOAT; - - ValueParserFormatter<String> textDelegate = Common.STRING; - - @Override - public String format(Serializable value) { - if (value == null) { - return "NA"; - } - if (value instanceof Float) { - return floatDelegate.format((Float) value); - } - if (value instanceof Integer) { - return integerDelegate.format((Integer) value); - } - if (value instanceof String) { - return textDelegate.format((String) value); - } - // qualitive value - CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value; - String result = qv.getDescription(); // description contaisn name - description from db - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java new file mode 100644 index 0000000..e3edc75 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParserFormatter.java @@ -0,0 +1,114 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristics; +import org.nuiton.csv.Common; +import org.nuiton.csv.ValueParserFormatter; + +import java.io.Serializable; +import java.text.ParseException; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CaracteristicValueParserFormatter implements ValueParserFormatter<Serializable> { + + public static CaracteristicValueParserFormatter newFormatter() { + return new CaracteristicValueParserFormatter(false, null); + } + + public static CaracteristicValueParserFormatter newTechnicalFormatter() { + return new CaracteristicValueParserFormatter(true, null); + } + + public static CaracteristicValueParserFormatter newParser(Caracteristic caracteristic) { + return new CaracteristicValueParserFormatter(true, caracteristic); + } + + private final boolean technical; + + private final Caracteristic caracteristic; + + private final ValueParserFormatter<Integer> integerDelegate; + + private final ValueParserFormatter<Float> floatDelegate; + + private final ValueParserFormatter<String> textDelegate; + + protected CaracteristicValueParserFormatter(boolean technical, Caracteristic caracteristic) { + this.technical = technical; + this.caracteristic = caracteristic; + this.integerDelegate = Common.INTEGER; + this.floatDelegate = Common.FLOAT; + this.textDelegate = Common.STRING; + } + + @Override + public Serializable parse(String value) throws ParseException { + + Serializable result; + + if ("NA".equals(value)) { + + result = null; + + } else if (Caracteristics.isNumberCaracteristic(caracteristic)) { + + result = floatDelegate.parse(value); + + } else if (Caracteristics.isTextCaracteristic(caracteristic)) { + + result = value; + + } else { + + result = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value); + + } + + return result; + + } + + @Override + public String format(Serializable e) { + + String value; + + if (e == null) { + + value = "NA"; + + } else { + + if (e instanceof Float) { + + value = floatDelegate.format((Float) e); + + } else if (e instanceof Integer) { + + value = integerDelegate.format((Integer) e); + + } else if (e instanceof String) { + + value = textDelegate.format((String) e); + + } else { + + CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) e; + value = technical ? qv.getId() : qv.getDescription(); + + } + + } + + return value; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java deleted file mode 100644 index 69d71bf..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalFormatter.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import org.nuiton.csv.Common; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.csv.ValueParserFormatter; - -import java.io.Serializable; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicValueTechnicalFormatter implements ValueFormatter<Serializable> { - - ValueParserFormatter<Integer> integerDelegate = Common.INTEGER; - - ValueParserFormatter<Float> floatDelegate = Common.FLOAT; - - ValueParserFormatter<String> textDelegate = Common.STRING; - - @Override - public String format(Serializable value) { - if (value == null) { - return "NA"; - } - if (value instanceof Float) { - return floatDelegate.format((Float) value); - } - if (value instanceof Integer) { - return integerDelegate.format((Integer) value); - } - if (value instanceof String) { - return textDelegate.format((String) value); - } - // qualitive value - CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value; - String result = qv.getId(); - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java deleted file mode 100644 index bfcdd3c..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristics; -import org.nuiton.csv.Common; -import org.nuiton.csv.ValueParser; -import org.nuiton.csv.ValueParserFormatter; - -import java.io.Serializable; -import java.text.ParseException; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CaracteristicValueTechnicalParser implements ValueParser<Serializable> { - - private final Caracteristic caracteristic; - - ValueParserFormatter<Float> floatDelegate = Common.FLOAT; - - ValueParserFormatter<String> textDelegate = Common.STRING; - - public CaracteristicValueTechnicalParser(Caracteristic caracteristic) { - this.caracteristic = caracteristic; - } - - @Override - public Serializable parse(String value) throws ParseException { - - Serializable result; - - if ("NA".equals(value)) { - - result = null; - - } else if (Caracteristics.isNumberCaracteristic(caracteristic)) { - - result = floatDelegate.parse(value); - - } else if (Caracteristics.isTextCaracteristic(caracteristic)) { - - result = value; - - } else { - - // qualitative value - result = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value); - - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java index d7196c5..6b10808 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java @@ -34,7 +34,7 @@ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O> throw new ApplicationTechnicalException("file not found " + file, e); } - this.export = TuttiCsvUtil.newRepeatableExport(model); + this.export = new TuttiRepeatableExport<>(model); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java deleted file mode 100644 index 536cf39..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/DecoratorPropertyFormatter.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import org.nuiton.csv.ImportRuntimeException; -import org.nuiton.csv.ValueFormatter; -import org.nuiton.decorator.Decorator; - -import static org.nuiton.i18n.I18n.t; - -/** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ -public class DecoratorPropertyFormatter<E> implements ValueFormatter<E> { - - protected final String defaultNullValue; - - protected Decorator<E> decorator; - - public DecoratorPropertyFormatter(Decorator<E> decorator, String defaultNullValue) { - this.decorator = decorator; - this.defaultNullValue = defaultNullValue; - } - - @Override - public String format(E value) { - if (value == null) { - return defaultNullValue; - } - try { - return decorator.toString(value); - } catch (Exception e) { - throw new ImportRuntimeException(t("tutti.service.cvs.format.error", value), e); - } - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java new file mode 100644 index 0000000..14b80d9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityListParserFormatterSupport.java @@ -0,0 +1,52 @@ +package fr.ifremer.tutti.service.csv; + +import com.google.common.base.Joiner; +import fr.ifremer.tutti.persistence.entities.TuttiEntity; +import org.nuiton.csv.ValueParserFormatter; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public abstract class EntityListParserFormatterSupport<E extends TuttiEntity> implements ValueParserFormatter<List<E>> { + + private final EntityParserFormatterSupport<E> delegateParserFormatter; + + protected EntityListParserFormatterSupport(EntityParserFormatterSupport<E> delegateParserFormatter) { + this.delegateParserFormatter = delegateParserFormatter; + } + + @Override + public List<E> parse(String value) throws ParseException { + + List<E> list = new ArrayList<>(); + String[] ids = value.split("|"); + for (String id : ids) { + + E entity = delegateParserFormatter.parse(id); + list.add(entity); + + } + + return list; + + } + + @Override + public String format(List<E> entities) { + + List<String> ids = new ArrayList<>(); + for (E entity : entities) { + String id = delegateParserFormatter.format(entity); + ids.add(id); + } + return Joiner.on('|').join(ids); + + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java new file mode 100644 index 0000000..7e7d294 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityNotFoundException.java @@ -0,0 +1,39 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntity; +import org.nuiton.csv.ImportRuntimeException; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class EntityNotFoundException extends ImportRuntimeException { + + private static final long serialVersionUID = -1039504487290085439L; + + private final Class<? extends TuttiEntity> entityType; + + private final String id; + + public EntityNotFoundException(Class<? extends TuttiEntity> entityType, String id) { + this.entityType = entityType; + this.id = id; + } + + public Class<? extends TuttiEntity> getEntityType() { + return entityType; + } + + public String getId() { + return id; + } + + @Override + public String getMessage() { + return t("tutti.service.csv.parse.foreignEntityNotFound", entityType, id); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java new file mode 100644 index 0000000..4a17fbe --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EntityParserFormatterSupport.java @@ -0,0 +1,86 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.TuttiEntity; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ValueParserFormatter; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implements ValueParserFormatter<E> { + + protected final boolean technical; + + protected final Class<E> entityType; + + protected Map<String, E> entitiesById; + + protected EntityParserFormatterSupport(boolean technical, Class<E> entityType) { + this.technical = technical; + this.entityType = entityType; + } + + protected abstract List<E> getEntities(); + + protected abstract String formatBusiness(E e); + + protected Map<String, E> getEntitiesById() { + + if (entitiesById == null) { + + List<E> entities = getEntities(); + entitiesById = TuttiEntities.splitById(entities); + + } + return entitiesById; + + } + + @Override + public E parse(String value) throws ParseException { + + E result = null; + if (StringUtils.isNotBlank(value)) { + + // get entity from universe + result = getEntitiesById().get(value); + + if (result == null) { + + throw new EntityNotFoundException(entityType, value); + + } + } + return result; + + } + + @Override + public String format(E e) { + String value = ""; + if (e != null) { + + if (technical) { + value = formatTechnical(e); + } else { + value = formatBusiness(e); + } + + } + return value; + } + + protected String formatTechnical(E e) { + String value; + value = e.getId(); + return value; + } +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java deleted file mode 100644 index f590a25..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationLocationFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java new file mode 100644 index 0000000..3a55bb9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationParserFormatter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationLocationParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + public static FishingOperationLocationParserFormatter newFormatter() { + return new FishingOperationLocationParserFormatter(false, null, null); + } + + public static FishingOperationLocationParserFormatter newTechnicalFormatter() { + return new FishingOperationLocationParserFormatter(true, null, null); + } + + public static FishingOperationLocationParserFormatter newParser(PersistenceService persistenceService, String zoneId) { + return new FishingOperationLocationParserFormatter(true, persistenceService, zoneId); + } + + private final String zoneId; + + private final PersistenceService persistenceService; + + protected FishingOperationLocationParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { + super(technical, TuttiLocation.class); + this.zoneId = zoneId; + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllFishingOperationLocation(zoneId, null, null); + } + + @Override + protected String formatBusiness(TuttiLocation value) { + return TuttiLocations.GET_NAME.apply(value); + } + + @Override + public String format(TuttiLocation value) { + + String format; + if (!technical && value == null) { + format = "NA"; + } else { + format = super.format(value); + } + return format; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java deleted file mode 100644 index fd2c9dd..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationLocationTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java deleted file mode 100644 index 2b65ad5..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationLocationTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationLocationTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private final String zoneId; - - private Map<String, TuttiLocation> locationsByLabel; - - public FishingOperationLocationTechnicalParser(PersistenceService persistenceService, String zoneId) { - this.persistenceService = persistenceService; - this.zoneId = zoneId; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByLabel == null) { - List<TuttiLocation> locations = persistenceService.getAllFishingOperationLocation(zoneId, null, null); - locationsByLabel = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location; - if ("".equals(value)) { - - location = null; - - } else { - - location = locationsByLabel.get(value); - - if (location == null) { - throw new ParseException("Could not found a fishing operation location with label " + value, 0); - } - - } - - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java deleted file mode 100644 index 50deedb..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationStrataFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java new file mode 100644 index 0000000..2b66085 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationStrataParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + public static FishingOperationStrataParserFormatter newFormatter() { + return new FishingOperationStrataParserFormatter(false,null, null); + } + + public static FishingOperationStrataParserFormatter newTechnicalFormatter() { + return new FishingOperationStrataParserFormatter(true,null, null); + } + + public static FishingOperationStrataParserFormatter newParser(PersistenceService persistenceService, String zoneId) { + return new FishingOperationStrataParserFormatter(true,persistenceService, zoneId); + } + + private final String zoneId; + + private final PersistenceService persistenceService; + + protected FishingOperationStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { + super(technical, TuttiLocation.class); + this.zoneId = zoneId; + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllFishingOperationStrata(zoneId); + } + + @Override + protected String formatBusiness(TuttiLocation value) { + return TuttiLocations.GET_NAME.apply(value); + } + + @Override + public String format(TuttiLocation value) { + + String format; + if (!technical && value == null) { + format = "NA"; + } else { + format = super.format(value); + } + return format; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java deleted file mode 100644 index 078ae70..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationStrataTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java deleted file mode 100644 index 0d3fcef..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationStrataTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private final String zoneId; - - private Map<String, TuttiLocation> locationsByLabel; - - public FishingOperationStrataTechnicalParser(PersistenceService persistenceService, String zoneId) { - this.persistenceService = persistenceService; - this.zoneId = zoneId; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByLabel == null) { - List<TuttiLocation> locations = persistenceService.getAllFishingOperationStrata(zoneId); - locationsByLabel = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location; - if ("".equals(value)) { - - location = null; - - } else { - - location = locationsByLabel.get(value); - - if (location == null) { - throw new ParseException("Could not found a fishing operation stata with label " + value, 0); - } - - } - - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java deleted file mode 100644 index 4eb6fb1..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationSubStrataFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "NA" : TuttiLocations.GET_NAME.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java new file mode 100644 index 0000000..5135d94 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class FishingOperationSubStrataParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + public static FishingOperationSubStrataParserFormatter newFormatter() { + return new FishingOperationSubStrataParserFormatter(false, null, null); + } + + public static FishingOperationSubStrataParserFormatter newTechnicalFormatter() { + return new FishingOperationSubStrataParserFormatter(true, null, null); + } + + public static FishingOperationSubStrataParserFormatter newParser(PersistenceService persistenceService, String zoneId) { + return new FishingOperationSubStrataParserFormatter(true, persistenceService, zoneId); + } + + private final String zoneId; + + private final PersistenceService persistenceService; + + protected FishingOperationSubStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { + super(technical, TuttiLocation.class); + this.zoneId = zoneId; + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllFishingOperationSubStrata(zoneId, null); + } + + @Override + protected String formatBusiness(TuttiLocation value) { + return TuttiLocations.GET_NAME.apply(value); + } + + @Override + public String format(TuttiLocation value) { + + String format; + if (!technical && value == null) { + format = "NA"; + } else { + format = super.format(value); + } + return format; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java deleted file mode 100644 index 9e0b399..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalFormatter.java +++ /dev/null @@ -1,19 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationSubStrataTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - return value == null ? "" : TuttiLocations.GET_LABEL.apply(value); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java deleted file mode 100644 index 03d4f90..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataTechnicalParser.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class FishingOperationSubStrataTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private final String zoneId; - - private Map<String, TuttiLocation> locationsByLabel; - - public FishingOperationSubStrataTechnicalParser(PersistenceService persistenceService, String zoneId) { - this.persistenceService = persistenceService; - this.zoneId = zoneId; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByLabel == null) { - List<TuttiLocation> locations = persistenceService.getAllFishingOperationSubStrata(zoneId, null); - locationsByLabel = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location; - if ("".equals(value)) { - - location = null; - - } else { - - location = locationsByLabel.get(value); - - if (location == null) { - throw new ParseException("Could not found a fishing operation subStata with label " + value, 0); - } - - } - - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java deleted file mode 100644 index 7b8a06e..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GearFormatter implements ValueFormatter<Gear> { - - @Override - public String format(Gear value) { - String result = ""; - if (value != null) { - result = Gears.GET_NAME.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java new file mode 100644 index 0000000..4de0f60 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java @@ -0,0 +1,48 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GearParserFormatter extends EntityParserFormatterSupport<Gear> { + + public static GearParserFormatter newFormatter() { + return new GearParserFormatter(false, null); + } + + public static GearParserFormatter newTechnicalFormatter() { + return new GearParserFormatter(true, null); + } + + public static GearParserFormatter newParser(PersistenceService persistenceService) { + return new GearParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected GearParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Gear.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Gear> getEntities() { + return persistenceService.getAllGear(); + } + + @Override + protected String formatBusiness(Gear value) { + + String result = Gears.GET_NAME.apply(value); + return result; + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java deleted file mode 100644 index 5c152d2..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GearTechnicalFormatter implements ValueFormatter<Gear> { - - @Override - public String format(Gear value) { - String result = ""; - if (value != null) { - result = TuttiEntities.GET_ID.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java deleted file mode 100644 index 2b91dae..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearTechnicalParser.java +++ /dev/null @@ -1,46 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class GearTechnicalParser implements ValueParser<Gear> { - - private final PersistenceService persistenceService; - - private Map<String, Gear> gearsById; - - private boolean mandatory; - - public GearTechnicalParser(PersistenceService persistenceService, boolean mandatory) { - this.persistenceService = persistenceService; - this.mandatory = mandatory; - } - - @Override - public Gear parse(String value) throws ParseException { - - if (gearsById == null) { - List<Gear> gears = persistenceService.getAllGear(); - gearsById = TuttiEntities.splitById(gears); - } - Gear gear = gearsById.get(value); - - if (gear == null && mandatory) { - throw new ParseException("Could not found a gear with id " + value, 0); - } - return gear; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java deleted file mode 100644 index b2c2391..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since XXX - */ -public class HarbourFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - String result = ""; - if (value != null) { - result = TuttiLocations.GET_NAME.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java new file mode 100644 index 0000000..c3f124f --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourParserFormatter.java @@ -0,0 +1,48 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class HarbourParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { + + + public static HarbourParserFormatter newFormatter() { + return new HarbourParserFormatter(false,null); + } + public static HarbourParserFormatter newTechnicalFormatter() { + return new HarbourParserFormatter(true,null); + } + + public static HarbourParserFormatter newParser(PersistenceService persistenceService) { + return new HarbourParserFormatter(true,persistenceService); + } + + private final PersistenceService persistenceService; + + protected HarbourParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, TuttiLocation.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<TuttiLocation> getEntities() { + return persistenceService.getAllHarbour(); + } + + @Override + public String formatBusiness(TuttiLocation value) { + + String result = TuttiLocations.GET_NAME.apply(value); + return result; + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java deleted file mode 100644 index 413c83b..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since XXX - */ -public class HarbourTechnicalFormatter implements ValueFormatter<TuttiLocation> { - - @Override - public String format(TuttiLocation value) { - String result = ""; - if (value != null) { - result = TuttiLocations.GET_LABEL.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java deleted file mode 100644 index 77b1230..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/HarbourTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocations; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class HarbourTechnicalParser implements ValueParser<TuttiLocation> { - - private final PersistenceService persistenceService; - - private Map<String, TuttiLocation> locationsByName; - - public HarbourTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public TuttiLocation parse(String value) throws ParseException { - - if (locationsByName == null) { - List<TuttiLocation> locations = persistenceService.getAllHarbour(); - locationsByName = TuttiLocations.splitByLabel(locations); - } - TuttiLocation location = locationsByName.get(value); - - if (location == null) { - throw new ParseException("Could not found a harbour with label " + value, 0); - } - return location; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java deleted file mode 100644 index 086a7f5..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonFormatter.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListPersonFormatter implements ValueFormatter<List<Person>> { - - @Override - public String format(List<Person> value) { - List<String> fullNames = Lists.transform(value, Persons.GET_FULL_NAME); - return Joiner.on('|').join(fullNames); - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java deleted file mode 100644 index 552ff69..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalFormatter.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListPersonTechnicalFormatter implements ValueFormatter<List<Person>> { - - @Override - public String format(List<Person> value) { - List<String> ids = Lists.transform(value, TuttiEntities.newIdFunction()); - return Joiner.on('|').join(ids); - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java deleted file mode 100644 index b097fc1..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListPersonTechnicalParser.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Persons; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListPersonTechnicalParser implements ValueParser<List<Person>> { - - private final PersistenceService persistenceService; - - private Map<String, Person> personsById; - - public ListPersonTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public List<Person> parse(String value) throws ParseException { - - if (personsById == null) { - List<Person> allPerson = persistenceService.getAllPerson(); - personsById = TuttiEntities.splitById(allPerson); - } - - List<Person> persons = new ArrayList<>(); - String[] ids = value.split("|"); - for (String id : ids) { - Person person = personsById.get(id); - - if (person == null) { - throw new ParseException("Could not found a person with id " + value, 0); - } - persons.add(person); - } - - return persons; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java deleted file mode 100644 index 2cd846b..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselFormatter.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListVesselFormatter implements ValueFormatter<List<Vessel>> { - - @Override - public String format(List<Vessel> value) { - List<String> codes = Lists.transform(value, Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE); - return Joiner.on('|').join(codes); - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java deleted file mode 100644 index 55c5e3f..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalFormatter.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import org.nuiton.csv.ValueFormatter; - -import java.util.List; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListVesselTechnicalFormatter implements ValueFormatter<List<Vessel>> { - - @Override - public String format(List<Vessel> value) { - List<String> codes = Lists.transform(value, TuttiEntities.GET_ID); - return Joiner.on('|').join(codes); - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java deleted file mode 100644 index f2224cf..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListVesselTechnicalParser.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class ListVesselTechnicalParser implements ValueParser<List<Vessel>> { - - private final PersistenceService persistenceService; - - private Map<String, Vessel> vesselsById; - - public ListVesselTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public List<Vessel> parse(String value) throws ParseException { - - if (vesselsById == null) { - List<Vessel> allVessels = persistenceService.getAllVessel(); - vesselsById = Vessels.splitByRegistrationCode(allVessels); - } - - List<Vessel> vessels = new ArrayList<>(); - String[] immatriculations = value.split("|"); - for (String immatriculation : immatriculations) { - - Vessel vessel = vesselsById.get(immatriculation); - - if (vessel == null) { - throw new ParseException("Could not found a vessel with code " + value, 0); - } - vessels.add(vessel); - } - - return vessels; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java new file mode 100644 index 0000000..eaa1470 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonListParserFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Person; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class PersonListParserFormatter extends EntityListParserFormatterSupport<Person> { + + public static PersonListParserFormatter newFormatter() { + return new PersonListParserFormatter(null); + } + + public static PersonListParserFormatter newParser(PersonParserFormatter delegateParserFormatter) { + return new PersonListParserFormatter(delegateParserFormatter); + } + + protected PersonListParserFormatter(PersonParserFormatter delegateParserFormatter) { + super(delegateParserFormatter); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java new file mode 100644 index 0000000..e634a36 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/PersonParserFormatter.java @@ -0,0 +1,45 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Persons; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class PersonParserFormatter extends EntityParserFormatterSupport<Person> { + + public static PersonParserFormatter newFormatter() { + return new PersonParserFormatter(false,null); + } + + public static PersonParserFormatter newTechnicalFormatter() { + return new PersonParserFormatter(true,null); + } + + public static PersonParserFormatter newParser(PersistenceService persistenceService) { + return new PersonParserFormatter(true,persistenceService); + } + + private final PersistenceService persistenceService; + + protected PersonParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Person.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Person> getEntities() { + return persistenceService.getAllPerson(); + } + + @Override + protected String formatBusiness(Person person) { + return Persons.GET_FULL_NAME.apply(person); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java new file mode 100644 index 0000000..efcc029 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesParserFormatter.java @@ -0,0 +1,65 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; +import java.util.Map; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species> { + + public static SpeciesParserFormatter newFormatter() { + return new SpeciesParserFormatter(false, null); + } + + public static SpeciesParserFormatter newTechnicalFormatter() { + return new SpeciesParserFormatter(true, null); + } + + public static SpeciesParserFormatter newParser(PersistenceService persistenceService) { + return new SpeciesParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected SpeciesParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Species.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Species> getEntities() { + return persistenceService.getAllSpecies(); + } + + protected Map<String, Species> getEntitiesById() { + if (entitiesById == null) { + + List<Species> entities = getEntities(); + entitiesById = Speciess.splitReferenceSpeciesByReferenceTaxonId(entities); + + } + return entitiesById; + } + + @Override + public String format(Species value) { + String result = ""; + if (value != null) { + result = Speciess.GET_REFERECE_TAXON_ID.apply(value); + } + return result; + } + + @Override + protected String formatBusiness(Species species) { + return species.getName(); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java deleted file mode 100644 index 75626ee..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class SpeciesTechnicalFormatter implements ValueFormatter<Species> { - - @Override - public String format(Species value) { - String result = ""; - if (value != null) { - result = Speciess.GET_REFERECE_TAXON_ID.apply(value); - } - return result; - } -} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java deleted file mode 100644 index c54a9b0..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class SpeciesTechnicalParser implements ValueParser<Species> { - - private final PersistenceService persistenceService; - - private Map<String, Species> speciesByReferenceTaxonId; - - public SpeciesTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Species parse(String value) throws ParseException { - - if (speciesByReferenceTaxonId == null) { - List<Species> referentSpecies = persistenceService.getAllReferentSpecies(); - speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); - } - Species species = speciesByReferenceTaxonId.get(value); - - if (species == null) { - throw new ParseException("Could not found a referent species with referenceTaxonId " + value, 0); - } - return species; - - } -} 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 36ee9dc..06f1da8 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 @@ -22,7 +22,6 @@ package fr.ifremer.tutti.service.csv; * #L% */ -import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -32,21 +31,14 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.util.Weights; -import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.csv.Common; -import org.nuiton.csv.ExportModel; -import org.nuiton.csv.ImportRow; -import org.nuiton.csv.ImportableColumn; import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueParserFormatter; -import org.nuiton.decorator.Decorator; import java.io.Serializable; import java.text.ParseException; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -107,42 +99,6 @@ public class TuttiCsvUtil extends Common { } }; - public static ValueParserFormatter<Short> SHORT = new ShortParserFormatter(null, true); - - public static <E> void addCheckError(ImportRow<E> row, Throwable cause) { - - CheckImportErrorInfo<E> eCheckImportErrorInfo = new CheckImportErrorInfo<>(row, null, cause); - row.addError(eCheckImportErrorInfo); - - } - - public static class ShortParserFormatter extends NullableParserFormatter<Short> { - - public ShortParserFormatter(Short defaultValue, boolean nullAllowed) { - super(defaultValue, nullAllowed); - } - - @Override - public String format(Short value) { - String str = ""; - if (value != null) { - str = String.valueOf(value); - } - return str; - } - - @Override - protected Short parseNoneEmptyValue(String value) { - Float aFloat = Float.valueOf(value); - if (aFloat > Short.MAX_VALUE) { - // too big - throw new IllegalArgumentException(value + " is too big to be an short, should be a integer."); - } - return aFloat.shortValue(); - } - } - - public static final ValueParserFormatter<String> COMMENT_PARSER_FORMATTER = new ValueParserFormatter<String>() { @Override @@ -156,13 +112,13 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueFormatter<Species> SPECIES_NAME_FORMATTER = new ValueFormatter<Species>() { - @Override - public String format(Species s) { - Preconditions.checkNotNull(s, t("tutti.service.error.species.null")); - return s.getName(); - } - }; +// public static final ValueFormatter<Species> SPECIES_NAME_FORMATTER = new ValueFormatter<Species>() { +// @Override +// public String format(Species s) { +// Preconditions.checkNotNull(s, t("tutti.service.error.species.null")); +// return s.getName(); +// } +// }; public static final ValueFormatter<Species> SPECIES_SURVEY_CODE_FORMATTER = new ValueFormatter<Species>() { @Override @@ -200,96 +156,67 @@ public class TuttiCsvUtil extends Common { } }; - public static final ValueParserFormatter<Date> YEAR = new DateValue("yyyy"); - public static final ValueParserFormatter<Date> TIME = new DateValue("HH:mm"); - public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = new CaracteristicTechnicalFormatter(); + public static final ValueFormatter<Caracteristic> CARACTERISTIC_FORMATTER = CaracteristicParserFormatter.newFormatter(); - public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = new CaracteristicValueFormatter(); + public static final ValueFormatter<Caracteristic> CARACTERISTIC_TECHNICAL_FORMATTER = CaracteristicParserFormatter.newTechnicalFormatter(); - public static ValueFormatter<Serializable> CARACTERISTIC_VALUE_TECHNICAL_FORMATTER = new CaracteristicValueTechnicalFormatter(); + public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER = CaracteristicValueParserFormatter.newFormatter(); + + public static ValueFormatter<Serializable> CARACTERISTIC_VALUE_TECHNICAL_FORMATTER = CaracteristicValueParserFormatter.newTechnicalFormatter(); public static final ValueFormatter<Program> PROGRAM_FORMATTER = new ProgramFormatter(); - public static final ValueFormatter<Gear> GEAR_FORMATTER = new GearFormatter(); + public static final ValueFormatter<Gear> GEAR_FORMATTER = GearParserFormatter.newFormatter(); - public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = new GearTechnicalFormatter(); + public static final ValueFormatter<Gear> GEAR_TECHNICAL_FORMATTER = GearParserFormatter.newTechnicalFormatter(); public static final ValueFormatter<TuttiLocation> COUNTRY_FORMATTER = new CountryFormatter(); public static final ValueFormatter<TuttiLocation> PROGRAM_ZONE_FORMATTER = new ProgramZoneFormatter(); - public static final ValueFormatter<TuttiLocation> HARBOUR_FORMATTER = new HarbourFormatter(); + public static final ValueFormatter<TuttiLocation> HARBOUR_FORMATTER = HarbourParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> HARBOUR_TECHNICAL_FORMATTER = new HarbourTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> HARBOUR_TECHNICAL_FORMATTER = HarbourParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_FORMATTER = new FishingOperationStrataFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_FORMATTER = FishingOperationStrataParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER = new FishingOperationStrataTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_STRATA_TECHNICAL_FORMATTER = FishingOperationStrataParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_FORMATTER = new FishingOperationSubStrataFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_FORMATTER = FishingOperationSubStrataParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER = new FishingOperationSubStrataTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_SUB_STRATA_TECHNICAL_FORMATTER = FishingOperationSubStrataParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_FORMATTER = new FishingOperationLocationFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_FORMATTER = FishingOperationLocationParserFormatter.newFormatter(); - public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER = new FishingOperationLocationTechnicalFormatter(); + public static final ValueFormatter<TuttiLocation> FISHING_OPERATION_LOCATION_TECHNICAL_FORMATTER = FishingOperationLocationParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<Vessel> VESSEL_TECHNICAL_FORMATTER = new VesselTechnicalFormatter(); + public static final ValueFormatter<Vessel> VESSEL_FORMATTER = VesselParserFormatter.newFormatter(); - public static final ValueFormatter<Vessel> VESSEL_FORMATTER = new VesselFormatter(); + public static final ValueFormatter<Vessel> VESSEL_TECHNICAL_FORMATTER = VesselParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = new SpeciesTechnicalFormatter(); + public static final ValueFormatter<Species> SPECIES_FORMATTER = SpeciesParserFormatter.newFormatter(); - public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = new ListPersonFormatter(); + public static final ValueFormatter<Species> SPECIES_TECHNICAL_FORMATTER = SpeciesParserFormatter.newTechnicalFormatter(); - public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = new ListPersonTechnicalFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER = PersonListParserFormatter.newFormatter(); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = new ListVesselFormatter(); + public static final ValueFormatter<List<Person>> LIST_PERSON_TECHNICAL_FORMATTER = PersonListParserFormatter.newFormatter(); - public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = new ListVesselTechnicalFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_FORMATTER = VesselListParserFormatter.newFormatter(); - public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); + public static final ValueFormatter<List<Vessel>> LIST_VESSEL_TECHNICAL_FORMATTER = VesselListParserFormatter.newFormatter(); - public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName, String defaultNullValue) { - return new BeanPropertyFormatter<E>(propertyName, defaultNullValue); - } - - public static <E> DecoratorPropertyFormatter<E> newDecoratorFormatter(Decorator<E> decorator, String defaultNullValue) { - return new DecoratorPropertyFormatter<E>(decorator, defaultNullValue); - } - - public static <E> TuttiRepeatableExport<E> newRepeatableExport(ExportModel<E> model) { - return new TuttiRepeatableExport<E>(model); - } + public static final ValueParserFormatter<List<Integer>> LIST_INTEGER_PARSER_FORMATTER = new ListIntegerFormatter(); public static <E extends Enum<E>> ValueParserFormatter<E> newEnumByNameParserFormatter(Class<E> enumType, boolean mandatory) { return new fr.ifremer.tutti.service.csv.EnumByNameParserFormatter<E>(enumType, mandatory); } - public static <O> String rowErrorsToExceptionMessage(ImportRow<O> bean) { - - Set<String> errors = new HashSet<>(); - for (AbstractImportErrorInfo<O> errorInfo : bean.getErrors()) { - errors.add(t("tutti.csv.import.error.on.field", errorInfo.getField().getHeaderName(), errorInfo.getCause().getMessage())); - } - - String message = t("tutti.csv.import.error.on.row", bean.getLineNumber(), Joiner.on("\n").join(errors)); - return message; - - } - protected TuttiCsvUtil() { // no instance } - public static class CheckImportErrorInfo<E> extends AbstractImportErrorInfo<E> { - - public CheckImportErrorInfo(ImportRow<E> row, ImportableColumn<E, Object> field, Throwable cause) { - super(row, field, cause); - } - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java deleted file mode 100644 index 43cf7e2..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Vessels; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselFormatter implements ValueFormatter<Vessel> { - - @Override - public String format(Vessel value) { - String result = ""; - if (value != null) { - result = Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE.apply(value); - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java new file mode 100644 index 0000000..729dd22 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselListParserFormatter.java @@ -0,0 +1,25 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Vessel; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class VesselListParserFormatter extends EntityListParserFormatterSupport<Vessel> { + + public static VesselListParserFormatter newFormatter() { + return new VesselListParserFormatter(null); + } + + public static VesselListParserFormatter newParser(VesselParserFormatter delegateParserFormatter) { + return new VesselListParserFormatter(delegateParserFormatter); + } + + protected VesselListParserFormatter(VesselParserFormatter delegateParserFormatter) { + super(delegateParserFormatter); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java new file mode 100644 index 0000000..56de011 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselParserFormatter.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.Vessels; +import fr.ifremer.tutti.service.PersistenceService; + +import java.util.List; + +/** + * Created on 2/14/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class VesselParserFormatter extends EntityParserFormatterSupport<Vessel> { + + public static VesselParserFormatter newFormatter() { + return new VesselParserFormatter(false, null); + } + + public static VesselParserFormatter newTechnicalFormatter() { + return new VesselParserFormatter(true, null); + } + + public static VesselParserFormatter newParser(PersistenceService persistenceService) { + return new VesselParserFormatter(true, persistenceService); + } + + private final PersistenceService persistenceService; + + protected VesselParserFormatter(boolean technical, PersistenceService persistenceService) { + super(technical, Vessel.class); + this.persistenceService = persistenceService; + } + + @Override + protected List<Vessel> getEntities() { + return persistenceService.getAllVessel(); + } + + @Override + public String formatBusiness(Vessel value) { + + String result = Vessels.GET_REGISTRATION_CODE_OR_INTERNATIONAL_REGISTRATION_CODE.apply(value); + return result; + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java deleted file mode 100644 index 0748353..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import org.nuiton.csv.ValueFormatter; - -/** - * Created on 2/8/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselTechnicalFormatter implements ValueFormatter<Vessel> { - - @Override - public String format(Vessel value) { - String result = ""; - if (value != null) { - result = TuttiEntities.GET_ID.apply(value); - } - return result; - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java deleted file mode 100644 index 4a95d47..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/VesselTechnicalParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ifremer.tutti.service.csv; - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.PersistenceService; -import org.nuiton.csv.ValueParser; - -import java.text.ParseException; -import java.util.List; -import java.util.Map; - -/** - * Created on 2/5/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class VesselTechnicalParser implements ValueParser<Vessel> { - - private final PersistenceService persistenceService; - - private Map<String, Vessel> vesselsById; - - public VesselTechnicalParser(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - - @Override - public Vessel parse(String value) throws ParseException { - - if (vesselsById == null) { - List<Vessel> allVessels = persistenceService.getAllVessel(); - vesselsById = TuttiEntities.splitById(allVessels); - } - Vessel vessel = vesselsById.get(value); - - if (vessel == null) { - throw new ParseException("Could not found a vessel with code " + value, 0); - } - return vessel; - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java index a2001f6..7d6c5db 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchRowModel.java @@ -41,7 +41,7 @@ public class CatchRowModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport(t("tutti.service.exportSumatra.header.year"), CatchRow.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.YEAR); newColumnForExport(t("tutti.service.exportSumatra.header.station"), CatchRow.PROPERTY_STATION_NUMBER); newColumnForExport(t("tutti.service.exportSumatra.header.multirigAggregation"), CatchRow.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport(t("tutti.service.exportSumatra.header.genuisSpecies"), CatchRow.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport(t("tutti.service.exportSumatra.header.genuisSpecies"), CatchRow.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport(t("tutti.service.exportSumatra.header.surveySpecies"), CatchRow.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); newColumnForExport(t("tutti.service.exportSumatra.header.sign"), CatchRow.PROPERTY_SIGN); newColumnForExport(t("tutti.service.exportSumatra.header.sortedWeight"), CatchRow.PROPERTY_SORTED_WEIGHT, TuttiCsvUtil.PRIMITIVE_FLOAT); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 0dbdb3d..31c22b3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -315,7 +315,6 @@ public class GenericFormatExportService extends AbstractTuttiService { ';', persistenceService, weightComputingService, - decoratorService, context.getSampleCategoryModel()); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java index dc59950..0d77a89 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalExportContext.java @@ -7,7 +7,6 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.catches.WeightComputingService; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchModel; @@ -101,7 +100,6 @@ public class GlobalExportContext implements Closeable { char csvSeparator, PersistenceService persistenceService, WeightComputingService weightComputingService, - DecoratorService decoratorService, SampleCategoryModel sampleCategoryModel) { this.archive = archive; @@ -120,13 +118,13 @@ public class GlobalExportContext implements Closeable { Map<String, Species> speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); this.producerForSurvey = new CsvProducerForSurvey(archive.getSurveyPath(), SurveyModel.forExport(csvSeparator)); - this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(archive.getGearCaracteristicsPath(), GearCaracteristicModel.forExport(csvSeparator, decoratorService)); + this.producerForGearCaracteristics = new CsvProducerForGearCaracteristics(archive.getGearCaracteristicsPath(), GearCaracteristicModel.forExport(csvSeparator)); this.producerForOperation = new CsvProducerForOperation(archive.getOperationPath(), OperationModel.forExport(csvSeparator)); this.producerForIndividualObservation = new CsvProducerForIndividualObservation(archive.getIndividualObservationPath(), IndividualObservationModel.forExport(csvSeparator)); this.producerForSpecies = new CsvProducerForSpecies(archive.getSpeciesPath(), SpeciesExportModel.forExport(csvSeparator), speciesByReferenceTaxonId); - this.producerForCatch = new CsvProducerForCatch(archive.getCatchPath(), CatchModel.forExport(csvSeparator, sampleCategoryModel, decoratorService)); + this.producerForCatch = new CsvProducerForCatch(archive.getCatchPath(), CatchModel.forExport(csvSeparator, sampleCategoryModel)); this.producerForAccidentalCatch = new CsvProducerForAccidentalCatch(archive.getAccidentalCatchPath(), AccidentalCatchModel.forExport(csvSeparator)); - this.producerForParameter = new CsvProducerForParameter(archive.getParameterPath(), ParameterModel.forExport(csvSeparator, decoratorService)); + this.producerForParameter = new CsvProducerForParameter(archive.getParameterPath(), ParameterModel.forExport(csvSeparator)); this.producerForMarineLitter = new CsvProducerForMarineLitter(archive.getMarineLitterPath(), MarineLitterModel.forExport(csvSeparator)); this.producerForSampleCategory = new CsvProducerForSampleCategory(archive.getSampleCategoryModelPath(), fr.ifremer.tutti.service.genericformat.csv.SampleCategoryModel.forExport(csvSeparator)); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java index 34e1c98..f39eef3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GlobalImportContext.java @@ -7,17 +7,18 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.csv.CaracteristicTechnicalParser; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; -import fr.ifremer.tutti.service.csv.FishingOperationLocationTechnicalParser; -import fr.ifremer.tutti.service.csv.FishingOperationStrataTechnicalParser; -import fr.ifremer.tutti.service.csv.FishingOperationSubStrataTechnicalParser; -import fr.ifremer.tutti.service.csv.GearTechnicalParser; -import fr.ifremer.tutti.service.csv.HarbourTechnicalParser; -import fr.ifremer.tutti.service.csv.ListPersonTechnicalParser; -import fr.ifremer.tutti.service.csv.ListVesselTechnicalParser; -import fr.ifremer.tutti.service.csv.SpeciesTechnicalParser; -import fr.ifremer.tutti.service.csv.VesselTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicParserFormatter; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationLocationParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationStrataParserFormatter; +import fr.ifremer.tutti.service.csv.FishingOperationSubStrataParserFormatter; +import fr.ifremer.tutti.service.csv.GearParserFormatter; +import fr.ifremer.tutti.service.csv.HarbourParserFormatter; +import fr.ifremer.tutti.service.csv.PersonListParserFormatter; +import fr.ifremer.tutti.service.csv.PersonParserFormatter; +import fr.ifremer.tutti.service.csv.SpeciesParserFormatter; +import fr.ifremer.tutti.service.csv.VesselListParserFormatter; +import fr.ifremer.tutti.service.csv.VesselParserFormatter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; @@ -47,31 +48,29 @@ import java.util.Set; */ public class GlobalImportContext implements Closeable { - private final VesselTechnicalParser vesselParser; + private final VesselParserFormatter vesselParser; - private final HarbourTechnicalParser harbourParser; + private final HarbourParserFormatter harbourParser; - private final GearTechnicalParser mandatoryGearParser; + private final GearParserFormatter mandatoryGearParser; - private final GearTechnicalParser optionalGearParser; + private final PersonListParserFormatter listPersonParser; - private final ListPersonTechnicalParser listPersonParser; + private final CaracteristicParserFormatter caracteristicParser; - private final CaracteristicTechnicalParser caracteristicParser; + private final FishingOperationStrataParserFormatter fishingOperationStrataParser; - private final FishingOperationStrataTechnicalParser fishingOperationStrataParser; + private final FishingOperationSubStrataParserFormatter fishingOperationSubStrataParser; - private final FishingOperationSubStrataTechnicalParser fishingOperationSubStrataParser; + private final FishingOperationLocationParserFormatter fishingOperationLocationParser; - private final FishingOperationLocationTechnicalParser fishingOperationLocationParser; + private final VesselListParserFormatter listVesselParser; - private final ListVesselTechnicalParser listVesselParser; + private final SpeciesParserFormatter speciesParser; - private final SpeciesTechnicalParser speciesParser; + private final CaracteristicValueParserFormatter marineLitterCategoryValueParser; - private final CaracteristicValueTechnicalParser marineLitterCategoryValueParser; - - private final CaracteristicValueTechnicalParser marineLitterSizeCategoryValueParser; + private final CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; private final GenericFormatArchive archive; @@ -91,19 +90,18 @@ public class GlobalImportContext implements Closeable { this.archive = archive; this.csvSeparator = csvSeparator; this.sampleCategoryModel = sampleCategoryModel; - this.vesselParser = new VesselTechnicalParser(persistenceService); - this.harbourParser = new HarbourTechnicalParser(persistenceService); - this.listPersonParser = new ListPersonTechnicalParser(persistenceService); - this.mandatoryGearParser = new GearTechnicalParser(persistenceService, true); - this.optionalGearParser = new GearTechnicalParser(persistenceService, false); - this.caracteristicParser = new CaracteristicTechnicalParser(persistenceService); - this.fishingOperationStrataParser = new FishingOperationStrataTechnicalParser(persistenceService, program.getZone().getId()); - this.fishingOperationSubStrataParser = new FishingOperationSubStrataTechnicalParser(persistenceService, program.getZone().getId()); - this.fishingOperationLocationParser = new FishingOperationLocationTechnicalParser(persistenceService, program.getZone().getId()); - this.listVesselParser = new ListVesselTechnicalParser(persistenceService); - this.speciesParser = new SpeciesTechnicalParser(persistenceService); - this.marineLitterCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterCategoryCaracteristic()); - this.marineLitterSizeCategoryValueParser = new CaracteristicValueTechnicalParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); + this.vesselParser = VesselParserFormatter.newParser(persistenceService); + this.harbourParser = HarbourParserFormatter.newParser(persistenceService); + this.listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); + this.mandatoryGearParser = GearParserFormatter.newParser(persistenceService); + this.caracteristicParser = CaracteristicParserFormatter.newParser(persistenceService); + this.fishingOperationStrataParser = FishingOperationStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + this.fishingOperationSubStrataParser = FishingOperationSubStrataParserFormatter.newParser(persistenceService, program.getZone().getId()); + this.fishingOperationLocationParser = FishingOperationLocationParserFormatter.newParser(persistenceService, program.getZone().getId()); + this.listVesselParser = VesselListParserFormatter.newParser(vesselParser); + this.speciesParser = SpeciesParserFormatter.newParser(persistenceService); + this.marineLitterCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterCategoryCaracteristic()); + this.marineLitterSizeCategoryValueParser = CaracteristicValueParserFormatter.newParser(persistenceService.getMarineLitterSizeCategoryCaracteristic()); List<Cruise> allCruise = persistenceService.getAllCruise(program.getId()); this.existingCruises = ImmutableSet.copyOf(allCruise); @@ -123,55 +121,51 @@ public class GlobalImportContext implements Closeable { return archive; } - public VesselTechnicalParser getVesselParser() { + public VesselParserFormatter getVesselParser() { return vesselParser; } - public HarbourTechnicalParser getHarbourParser() { + public HarbourParserFormatter getHarbourParser() { return harbourParser; } - public ListPersonTechnicalParser getListPersonParser() { + public PersonListParserFormatter getListPersonParser() { return listPersonParser; } - public GearTechnicalParser getMandatoryGearParser() { + public GearParserFormatter getGearParser() { return mandatoryGearParser; } - public GearTechnicalParser getOptionalGearParser() { - return optionalGearParser; - } - - public CaracteristicTechnicalParser getCaracteristicParser() { + public CaracteristicParserFormatter getCaracteristicParser() { return caracteristicParser; } - public FishingOperationStrataTechnicalParser getFishingOperationStrataParser() { + public FishingOperationStrataParserFormatter getFishingOperationStrataParser() { return fishingOperationStrataParser; } - public FishingOperationSubStrataTechnicalParser getFishingOperationSubStrataParser() { + public FishingOperationSubStrataParserFormatter getFishingOperationSubStrataParser() { return fishingOperationSubStrataParser; } - public FishingOperationLocationTechnicalParser getFishingOperationLocationParser() { + public FishingOperationLocationParserFormatter getFishingOperationLocationParser() { return fishingOperationLocationParser; } - public ListVesselTechnicalParser getListVesselParser() { + public VesselListParserFormatter getListVesselParser() { return listVesselParser; } - public SpeciesTechnicalParser getSpeciesParser() { + public SpeciesParserFormatter getSpeciesParser() { return speciesParser; } - public CaracteristicValueTechnicalParser getMarineLitterCategoryValueParser() { + public CaracteristicValueParserFormatter getMarineLitterCategoryValueParser() { return marineLitterCategoryValueParser; } - public CaracteristicValueTechnicalParser getMarineLitterSizeCategoryValueParser() { + public CaracteristicValueParserFormatter getMarineLitterSizeCategoryValueParser() { return marineLitterSizeCategoryValueParser; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java index a796968..21a54f9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/AccidentalCatchModel.java @@ -27,7 +27,6 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -83,7 +82,7 @@ public class AccidentalCatchModel extends AbstractTuttiImportExportModel<Acciden newColumnForExport("BatchId", AccidentalCatchRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); - newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME); + newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Commentaire", AccidentalBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newColumnForExport("CaracteristicId", AccidentalCatchRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("CaracteristicValue", AccidentalCatchRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java index 1023940..adf34d3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/CatchModel.java @@ -30,9 +30,8 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; -import fr.ifremer.tutti.service.csv.CaracteristicValueTechnicalParser; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; import org.apache.commons.beanutils.PropertyUtils; @@ -50,10 +49,10 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { public static final String WEIGHT_OR_VOL_TYPE = "Poids"; - public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + public static CatchModel forExport(char separator, SampleCategoryModel sampleCategoryModel) { CatchModel exportModel = new CatchModel(separator); - exportModel.forExport(sampleCategoryModel, decoratorService); + exportModel.forExport(sampleCategoryModel); return exportModel; } @@ -79,7 +78,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { super(separator); } - protected void forExport(SampleCategoryModel sampleCategoryModel, DecoratorService decoratorService) { + protected void forExport(SampleCategoryModel sampleCategoryModel) { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); @@ -93,7 +92,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { newColumnForExport("ReferenceTaxonId", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Code_Espece_Campagne", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); - newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Nom_scientifique", SpeciesBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Benthos", CatchRow.PROPOERTY_BENTHOS, TuttiCsvUtil.BOOLEAN); newColumnForExport("Commentaire", SpeciesBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); @@ -114,7 +113,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { // mensuration newNullableColumnForExport("Code_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newNullableColumnForExportByDecorator("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newNullableColumnForExport("Libelle_Longueur", CatchRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); newNullableColumnForExport("Taille", CatchRow.FREQUENCY_LENGTH_STEP, TuttiCsvUtil.FLOAT); newNullableColumnForExport("NumOrdre_Taille_H2", CatchRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER); newNullableColumnForExport("Poids_Classe_Taille", CatchRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT); @@ -191,7 +190,7 @@ public class CatchModel extends AbstractTuttiImportExportModel<CatchRow> { String headerPrefix = entry.getCode(); - newMandatoryColumn(headerPrefix + "_Id", new CaracteristicValueTechnicalParser(entry.getCaracteristic()), new SampleCategoryValueSetter<Serializable>(entry, ExportSampleCategory.PROPERTY_CATEGORY_VALUE)); + newMandatoryColumn(headerPrefix + "_Id", CaracteristicValueParserFormatter.newParser(entry.getCaracteristic()), new SampleCategoryValueSetter<Serializable>(entry, ExportSampleCategory.PROPERTY_CATEGORY_VALUE)); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java index 48019e8..eb2ad54 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicModel.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -39,10 +37,10 @@ import fr.ifremer.tutti.service.genericformat.GlobalImportContext; */ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearCaracteristicRow> { - public static GearCaracteristicModel forExport(char separator, DecoratorService decoratorService) { + public static GearCaracteristicModel forExport(char separator) { GearCaracteristicModel exportModel = new GearCaracteristicModel(separator); - exportModel.forExport(decoratorService); + exportModel.forExport(); return exportModel; } @@ -69,7 +67,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC super(separator); } - protected void forExport(DecoratorService decoratorService) { + protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); @@ -79,7 +77,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newColumnForExport("EnginRankOrder", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newColumnForExportByDecorator("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newColumnForExport("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); newColumnForExport("Valeur", GearCaracteristicRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); newColumnForExport("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, TuttiCsvUtil.GEAR_TECHNICAL_FORMATTER); @@ -101,7 +99,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); - newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getMandatoryGearParser()); + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, globalImportContext.getGearParser()); newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index 2f4bc65..bfc9339 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -83,7 +83,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newColumnForExport("BatchId", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); - newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Nom_Scientifique", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newColumnForExport("CaracteristicId", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("CaracteristicValue", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java index 4743096..4bb2a74 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/ParameterModel.java @@ -25,8 +25,6 @@ package fr.ifremer.tutti.service.genericformat.csv; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GlobalImportContext; @@ -39,10 +37,10 @@ import fr.ifremer.tutti.service.genericformat.GlobalImportContext; */ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> { - public static ParameterModel forExport(char separator, DecoratorService decoratorService) { + public static ParameterModel forExport(char separator) { ParameterModel exportModel = new ParameterModel(separator); - exportModel.forExport(decoratorService); + exportModel.forExport(); return exportModel; } @@ -68,7 +66,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> super(separator); } - protected void forExport(DecoratorService decoratorService) { + protected void forExport() { newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER); @@ -79,7 +77,7 @@ public class ParameterModel extends AbstractTuttiImportExportModel<ParameterRow> newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); newColumnForExport("Code_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); - newColumnForExportByDecorator("Libelle_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class)); + newColumnForExport("Libelle_PMFM", ParameterRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); newColumnForExport("Valeur", ParameterRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER); newColumnForExport("Valeur_Id", ParameterRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java index b7d0ae8..ba59089 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/SpeciesExportModel.java @@ -57,7 +57,7 @@ public class SpeciesExportModel extends AbstractTuttiImportExportModel<SpeciesEx newColumnForExport("ReferenceTaxonId", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Code_Rubin", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_REF_TAX_CODE_FORMATTER); - newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_NAME_FORMATTER); + newColumnForExport("Nom_Scientifique", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES, TuttiCsvUtil.SPECIES_SURVEY_CODE_FORMATTER); } 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 f520823..8fc5fdb 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 @@ -25,10 +25,10 @@ package fr.ifremer.tutti.service.protocol; import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.ForeignKeyParserFormatter; import fr.ifremer.tutti.service.csv.StringParserFormatter; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import org.nuiton.csv.Common; import org.nuiton.csv.ImportRuntimeException; @@ -88,6 +88,8 @@ public class SpeciesRowModel extends AbstractTuttiImportExportModel<SpeciesRow> newIgnoredColumn(SpeciesRow.PROPERTY_LENGTH_STEP_PMFM_FRACTION_NAME); 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.LIST_INTEGER_PARSER_FORMATTER); newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN); diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 9ca57f4..b141fe5 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -9,11 +9,14 @@ tutti.caracteristicType.vesselUseFeature= tutti.csv.import.error.on.field= tutti.csv.import.error.on.row= tutti.error.benthos.not.in.protocol= +tutti.error.messages= tutti.error.species.not.in.protocol= +tutti.fatal.messages= tutti.genericFormat.import.accidentalCatches= tutti.genericFormat.import.catches= tutti.genericFormat.import.cruises= tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.error.cruiseNotValid= tutti.genericFormat.import.gearCaracteristics= tutti.genericFormat.import.individualObservations= tutti.genericFormat.import.marineLitters= @@ -26,6 +29,8 @@ tutti.genericFormat.import.temporaryPersons= tutti.genericFormat.import.temporarySpecies= tutti.genericFormat.import.temporaryVessels= tutti.genericFormat.importError.archiveNotSane= +tutti.genericFormat.load.protocol= +tutti.genericFormat.reuse.protocol= tutti.genericformat.importError.missArchiveFile= tutti.io.mkDir.error= tutti.pdf.export.missing.species.code= @@ -267,6 +272,7 @@ tutti.service.referential.export.vessel.error= tutti.service.referential.import.gear.add.noName.error= tutti.service.referential.import.gear.cannotDeleteNotExisting.error= tutti.service.referential.import.gear.cannotDeleteWithoutId.error= +tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.gear.existingName.error= tutti.service.referential.import.gear.idNotNegative.error= tutti.service.referential.import.gear.noName.error= @@ -276,6 +282,7 @@ tutti.service.referential.import.gears.error= tutti.service.referential.import.person.add.noName.error= tutti.service.referential.import.person.cannotDeleteNotExisting.error= tutti.service.referential.import.person.cannotDeleteWithoutId.error= +tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.person.existingName.error= tutti.service.referential.import.person.idNotNegative.error= tutti.service.referential.import.person.noName.error= @@ -286,6 +293,7 @@ tutti.service.referential.import.species.add.noName.error= tutti.service.referential.import.species.cannotDeleteNotExisting.error= tutti.service.referential.import.species.cannotDeleteWithoutId.error= tutti.service.referential.import.species.error= +tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.species.existingName.error= tutti.service.referential.import.species.idNotNegative.error= tutti.service.referential.import.species.noName.error= @@ -296,6 +304,7 @@ tutti.service.referential.import.vessel.add.noRegistrationCode.error= tutti.service.referential.import.vessel.cannotDeleteNotExisting.error= tutti.service.referential.import.vessel.cannotDeleteWithoutId.error= tutti.service.referential.import.vessel.codePrefixMissing.error= +tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error= tutti.service.referential.import.vessel.existingName.error= tutti.service.referential.import.vessel.existingRegistrationCode.error= @@ -406,3 +415,4 @@ tutti.validator.warning.latitude.outOfBounds= tutti.validator.warning.longitude.outOfBounds= tutti.validator.warning.marineLitter.weight.required= tutti.validator.warning.species.protocolNotRespected= +tutti.warning.messages= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index d1b846d..9b3b478 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -5,10 +5,13 @@ tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques tutti.caracteristicType.lengthStep= tutti.csv.import.error.on.field=Colonne %s \: %s tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \: \n%s +tutti.error.messages= +tutti.fatal.messages= tutti.genericFormat.import.accidentalCatches= tutti.genericFormat.import.catches= tutti.genericFormat.import.cruises= tutti.genericFormat.import.error.cruiseAlreadyExist= +tutti.genericFormat.import.error.cruiseNotValid= tutti.genericFormat.import.gearCaracteristics= tutti.genericFormat.import.individualObservations= tutti.genericFormat.import.marineLitters= @@ -21,6 +24,8 @@ tutti.genericFormat.import.temporaryPersons= tutti.genericFormat.import.temporarySpecies= tutti.genericFormat.import.temporaryVessels= tutti.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique \:\n%s +tutti.genericFormat.load.protocol= +tutti.genericFormat.reuse.protocol= tutti.genericformat.importError.missArchiveFile=Il manque le fichier %s dans l'archive tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. @@ -82,6 +87,7 @@ tutti.service.bigfinimport.error.no.protocol=Impossible de faire un import Bigfi tutti.service.compressZipFile.error=Erreur lors de la compression du dossier %1s dans le fichier %2s tutti.service.context.serviceInstanciation.error=Erreur lors de l'instanciation du service %s tutti.service.csv.parse.entityNotFound=L'entité de type %1s avec la propriété %2s de valeur %3s n'a pas été trouvée +tutti.service.csv.parse.foreignEntityNotFound=L'entité de type %1s avec l'identifiant %3s n'a pas été trouvée tutti.service.cvs.format.error=Erreur lors du formatage de la valeur %s tutti.service.cvs.mandatory.value=Valeur obligatoire tutti.service.error.species.null= @@ -241,6 +247,7 @@ tutti.service.referential.export.vessel.error=Erreur lors de l'export des navire tutti.service.referential.import.gear.add.noName.error=Le nom de l'engin est obligatoire tutti.service.referential.import.gear.cannotDeleteNotExisting.error=L'engin temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.gear.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.gear.existingName.error=L'engin '%s' n'a pas été ajouté au référentiel car il est déjà présent tutti.service.referential.import.gear.idNotNegative.error=L'identifiant d'un engin temporaire doit être négatif \: %s tutti.service.referential.import.gear.noName.error=Le nom de l'engin est obligatoire @@ -250,6 +257,7 @@ tutti.service.referential.import.gears.error=Erreur lors de l'import des engins tutti.service.referential.import.person.add.noName.error=Le nom de la personne (prénom ou nom) est obligatoire tutti.service.referential.import.person.cannotDeleteNotExisting.error=La personne temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.person.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression +tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.person.existingName.error=Une personne avec ce nom %s (nom + prénom) existe déjà tutti.service.referential.import.person.idNotNegative.error=L'identifiant d'une personne temporaire doit être négatif \: %s tutti.service.referential.import.person.noName.error=Le nom de la personne (prénom ou nom) est obligatoire @@ -260,6 +268,7 @@ tutti.service.referential.import.species.add.noName.error=Le nom pour l'espèce tutti.service.referential.import.species.cannotDeleteNotExisting.error=L'espèce temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.species.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.species.error=Erreur lors de l'import des espèces du fichier %s +tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.species.existingName.error=L'espèce '%s' n'a pas été ajoutée au référentiel car elle est déjà présente tutti.service.referential.import.species.idNotNegative.error=L'identifiant d'une espèce temporaire doit être négatif \: %s tutti.service.referential.import.species.noName.error=Le nom pour l'espèce %s est obligatoire. @@ -269,6 +278,7 @@ tutti.service.referential.import.vessel.add.noRegistrationCode.error=L'immatricu tutti.service.referential.import.vessel.cannotDeleteNotExisting.error=Le navire temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.vessel.cannotDeleteWithoutId.error=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.vessel.codePrefixMissing.error=L'identifiant d'un navire temporaire doit commencer par %1$s \: %2$s +tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.vessel.existingRegistrationCode.error=Le navire '%s' n'a pas été ajouté au référentiel car il est déjà présent tutti.service.referential.import.vessel.noRegistrationCode.error=L'immatriculation est obligatoire tutti.service.referential.import.vessel.notExistingId.error=L'identifiant '%s' n'a pas été trouvé parmi les navires temporaires @@ -364,3 +374,4 @@ tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise ent tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0 tutti.validator.warning.marineLitter.weight.required=Vous devez saisir la valeur du poids total des déchets<br/>ou le poids de chacune des catégories observées. tutti.validator.warning.species.protocolNotRespected=Espèces - le lot de %s / %s ne suit pas les recommandations du protocole +tutti.warning.messages= -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.