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 b08591081082678e8bad85a2c6ff801ce14e4bc6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:41:32 2015 +0100 - introduce id translation map for temporary referentials - reformat package --- .../csv/AbstractTuttiImportExportModel.java | 10 ++--- .../service/csv/AbstractTuttiImportModel.java | 10 ++--- .../tutti/service/csv/BeanIndexNullableGetter.java | 10 ++--- .../tutti/service/csv/BeanNullableGetter.java | 10 ++--- .../tutti/service/csv/BeanPropertyFormatter.java | 10 ++--- .../service/csv/CaracteristicParserFormatter.java | 2 +- .../service/csv/EntityParserFormatterSupport.java | 41 ++++++++++++++----- .../service/csv/EnumByNameParserFormatter.java | 10 ++--- .../FishingOperationLocationParserFormatter.java | 15 +------ .../csv/FishingOperationStrataParserFormatter.java | 21 ++-------- .../FishingOperationSubStrataParserFormatter.java | 15 +------ .../tutti/service/csv/GearParserFormatter.java | 27 ++++++++++--- .../tutti/service/csv/HarbourParserFormatter.java | 10 ++--- .../tutti/service/csv/ListIntegerFormatter.java | 10 ++--- .../tutti/service/csv/PersonParserFormatter.java | 27 ++++++++++--- .../tutti/service/csv/SpeciesParserFormatter.java | 26 +++++++++--- .../tutti/service/csv/StringParserFormatter.java | 10 ++--- .../tutti/service/csv/TuttiRepeatableExport.java | 10 ++--- .../tutti/service/csv/VesselParserFormatter.java | 26 +++++++++--- .../GenericFormatImportEntityParserFactory.java | 23 ++++++----- .../GenericFormatReferentialImportResult.java | 46 +++++++++++++++------- .../genericformat/csv/GearCaracteristicModel.java | 2 +- 22 files changed, 217 insertions(+), 154 deletions(-) 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 9b05c7a..4204269 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 @@ -13,11 +13,11 @@ import java.util.List; import java.util.Map; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> { public AbstractTuttiImportExportModel(char separator) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java index 18e9c1b..ed1a5a4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportModel.java @@ -6,11 +6,11 @@ import org.nuiton.csv.ext.AbstractImportModel; import java.util.Map; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> { public AbstractTuttiImportModel(char separator) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java index c665a86..e9d2945 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanIndexNullableGetter.java @@ -8,11 +8,11 @@ import java.lang.reflect.InvocationTargetException; import java.util.Collection; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class BeanIndexNullableGetter<E, T> implements ValueGetter<E, T> { protected String collectionName; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java index 25048eb..e901b10 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanNullableGetter.java @@ -7,11 +7,11 @@ import org.nuiton.csv.ValueGetter; import java.lang.reflect.InvocationTargetException; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class BeanNullableGetter<E, T> implements ValueGetter<E, T> { protected String propertyName; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java index 30620c6..91042ad 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/BeanPropertyFormatter.java @@ -7,11 +7,11 @@ import org.nuiton.csv.ValueFormatter; import static org.nuiton.i18n.I18n.t; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class BeanPropertyFormatter<E> implements ValueFormatter<E> { protected final String defaultNullValue; 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 index f8e1f9d..57efbff 100644 --- 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 @@ -28,7 +28,7 @@ public class CaracteristicParserFormatter extends EntityParserFormatterSupport<C private final PersistenceService persistenceService; protected CaracteristicParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Caracteristic.class); + super("", technical, Caracteristic.class); this.persistenceService = persistenceService; } 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 index 4a17fbe..f82b21d 100644 --- 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 @@ -17,13 +17,16 @@ import java.util.Map; */ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implements ValueParserFormatter<E> { + protected final String formatNullValue; + protected final boolean technical; protected final Class<E> entityType; protected Map<String, E> entitiesById; - protected EntityParserFormatterSupport(boolean technical, Class<E> entityType) { + protected EntityParserFormatterSupport(String formatNullValue, boolean technical, Class<E> entityType) { + this.formatNullValue = formatNullValue; this.technical = technical; this.entityType = entityType; } @@ -50,14 +53,8 @@ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implem E result = null; if (StringUtils.isNotBlank(value)) { - // get entity from universe - result = getEntitiesById().get(value); - - if (result == null) { - - throw new EntityNotFoundException(entityType, value); + result = parseNotBlankValue(value); - } } return result; @@ -65,8 +62,17 @@ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implem @Override public String format(E e) { - String value = ""; - if (e != null) { + + String value; + if (e == null) { + + if (technical) { + value = ""; + } else { + value = formatNullValue; + } + + } else { if (technical) { value = formatTechnical(e); @@ -76,6 +82,21 @@ public abstract class EntityParserFormatterSupport<E extends TuttiEntity> implem } return value; + + } + + protected E parseNotBlankValue(String value) { + + E result = getEntitiesById().get(value); + + if (result == null) { + + throw new EntityNotFoundException(entityType, value); + + } + + return result; + } protected String formatTechnical(E e) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java index d30d11a..14886db 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/EnumByNameParserFormatter.java @@ -8,11 +8,11 @@ import java.text.ParseException; import static org.nuiton.i18n.I18n.t; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class EnumByNameParserFormatter<E extends Enum<E>> implements ValueParserFormatter<E> { 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 index 3a55bb9..216cc7a 100644 --- 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 @@ -31,7 +31,7 @@ public class FishingOperationLocationParserFormatter extends EntityParserFormatt private final PersistenceService persistenceService; protected FishingOperationLocationParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { - super(technical, TuttiLocation.class); + super("NA", technical, TuttiLocation.class); this.zoneId = zoneId; this.persistenceService = persistenceService; } @@ -46,17 +46,4 @@ public class FishingOperationLocationParserFormatter extends EntityParserFormatt 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/FishingOperationStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationStrataParserFormatter.java index 2b66085..52fc647 100644 --- 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 @@ -15,15 +15,15 @@ import java.util.List; public class FishingOperationStrataParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { public static FishingOperationStrataParserFormatter newFormatter() { - return new FishingOperationStrataParserFormatter(false,null, null); + return new FishingOperationStrataParserFormatter(false, null, null); } public static FishingOperationStrataParserFormatter newTechnicalFormatter() { - return new FishingOperationStrataParserFormatter(true,null, null); + return new FishingOperationStrataParserFormatter(true, null, null); } public static FishingOperationStrataParserFormatter newParser(PersistenceService persistenceService, String zoneId) { - return new FishingOperationStrataParserFormatter(true,persistenceService, zoneId); + return new FishingOperationStrataParserFormatter(true, persistenceService, zoneId); } private final String zoneId; @@ -31,7 +31,7 @@ public class FishingOperationStrataParserFormatter extends EntityParserFormatter private final PersistenceService persistenceService; protected FishingOperationStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { - super(technical, TuttiLocation.class); + super("NA", technical, TuttiLocation.class); this.zoneId = zoneId; this.persistenceService = persistenceService; } @@ -46,17 +46,4 @@ public class FishingOperationStrataParserFormatter extends EntityParserFormatter 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/FishingOperationSubStrataParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/FishingOperationSubStrataParserFormatter.java index 5135d94..7d919c1 100644 --- 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 @@ -31,7 +31,7 @@ public class FishingOperationSubStrataParserFormatter extends EntityParserFormat private final PersistenceService persistenceService; protected FishingOperationSubStrataParserFormatter(boolean technical, PersistenceService persistenceService, String zoneId) { - super(technical, TuttiLocation.class); + super("NA", technical, TuttiLocation.class); this.zoneId = zoneId; this.persistenceService = persistenceService; } @@ -46,17 +46,4 @@ public class FishingOperationSubStrataParserFormatter extends EntityParserFormat 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/GearParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/GearParserFormatter.java index 4de0f60..19b02f0 100644 --- 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 @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.service.PersistenceService; import java.util.List; +import java.util.Map; /** * Created on 2/14/15. @@ -15,22 +16,25 @@ import java.util.List; public class GearParserFormatter extends EntityParserFormatterSupport<Gear> { public static GearParserFormatter newFormatter() { - return new GearParserFormatter(false, null); + return new GearParserFormatter(false, null, null); } public static GearParserFormatter newTechnicalFormatter() { - return new GearParserFormatter(true, null); + return new GearParserFormatter(true, null, null); } - public static GearParserFormatter newParser(PersistenceService persistenceService) { - return new GearParserFormatter(true, persistenceService); + public static GearParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new GearParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected GearParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Gear.class); + private final Map<String, String> idTranslationMap; + + protected GearParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Gear.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -45,4 +49,15 @@ public class GearParserFormatter extends EntityParserFormatterSupport<Gear> { return result; } + + @Override + protected Gear parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } 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 index c3f124f..8e4ba1e 100644 --- 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 @@ -14,22 +14,22 @@ import java.util.List; */ public class HarbourParserFormatter extends EntityParserFormatterSupport<TuttiLocation> { - public static HarbourParserFormatter newFormatter() { - return new HarbourParserFormatter(false,null); + return new HarbourParserFormatter(false, null); } + public static HarbourParserFormatter newTechnicalFormatter() { - return new HarbourParserFormatter(true,null); + return new HarbourParserFormatter(true, null); } public static HarbourParserFormatter newParser(PersistenceService persistenceService) { - return new HarbourParserFormatter(true,persistenceService); + return new HarbourParserFormatter(true, persistenceService); } private final PersistenceService persistenceService; protected HarbourParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, TuttiLocation.class); + super("", technical, TuttiLocation.class); this.persistenceService = persistenceService; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java index 4b374d5..1bdf0a9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/ListIntegerFormatter.java @@ -10,11 +10,11 @@ import java.text.ParseException; import java.util.List; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class ListIntegerFormatter implements ValueParserFormatter<List<Integer>> { @Override 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 index e634a36..19289dd 100644 --- 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 @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Persons; import fr.ifremer.tutti.service.PersistenceService; import java.util.List; +import java.util.Map; /** * Created on 2/14/15. @@ -15,22 +16,25 @@ import java.util.List; public class PersonParserFormatter extends EntityParserFormatterSupport<Person> { public static PersonParserFormatter newFormatter() { - return new PersonParserFormatter(false,null); + return new PersonParserFormatter(false, null, null); } public static PersonParserFormatter newTechnicalFormatter() { - return new PersonParserFormatter(true,null); + return new PersonParserFormatter(true, null, null); } - public static PersonParserFormatter newParser(PersistenceService persistenceService) { - return new PersonParserFormatter(true,persistenceService); + public static PersonParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new PersonParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected PersonParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Person.class); + private final Map<String, String> idTranslationMap; + + protected PersonParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Person.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -42,4 +46,15 @@ public class PersonParserFormatter extends EntityParserFormatterSupport<Person> protected String formatBusiness(Person person) { return Persons.GET_FULL_NAME.apply(person); } + + @Override + protected Person parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } 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 index f56e3e4..c640b2e 100644 --- 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 @@ -16,22 +16,25 @@ import java.util.Map; public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species> { public static SpeciesParserFormatter newFormatter() { - return new SpeciesParserFormatter(false, null); + return new SpeciesParserFormatter(false, null, null); } public static SpeciesParserFormatter newTechnicalFormatter() { - return new SpeciesParserFormatter(true, null); + return new SpeciesParserFormatter(true, null, null); } - public static SpeciesParserFormatter newParser(PersistenceService persistenceService) { - return new SpeciesParserFormatter(true, persistenceService); + public static SpeciesParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new SpeciesParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected SpeciesParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Species.class); + private final Map<String, String> idTranslationMap; + + protected SpeciesParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Species.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -58,4 +61,15 @@ public class SpeciesParserFormatter extends EntityParserFormatterSupport<Species protected String formatTechnical(Species value) { return Speciess.GET_REFERECE_TAXON_ID.apply(value); } + + @Override + protected Species parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java index 785654c..b5b5246 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/StringParserFormatter.java @@ -3,11 +3,11 @@ package fr.ifremer.tutti.service.csv; import org.nuiton.csv.Common; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class StringParserFormatter extends Common.NullableParserFormatter<String> { public StringParserFormatter(String defaultValue, boolean nullAllowed) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java index e273d4b..2d658cb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/TuttiRepeatableExport.java @@ -7,11 +7,11 @@ import java.io.Writer; import java.util.Collections; /** -* Created on 2/5/15. -* -* @author Tony Chemit - chemit@codelutin.com -* @since 3.13 -*/ + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ public class TuttiRepeatableExport<E> extends RepeatableExport<E> { public TuttiRepeatableExport(ExportModel<E> model) { 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 index 56de011..e90188a 100644 --- 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 @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessels; import fr.ifremer.tutti.service.PersistenceService; import java.util.List; +import java.util.Map; /** * Created on 2/14/15. @@ -15,22 +16,25 @@ import java.util.List; public class VesselParserFormatter extends EntityParserFormatterSupport<Vessel> { public static VesselParserFormatter newFormatter() { - return new VesselParserFormatter(false, null); + return new VesselParserFormatter(false, null, null); } public static VesselParserFormatter newTechnicalFormatter() { - return new VesselParserFormatter(true, null); + return new VesselParserFormatter(true, null, null); } - public static VesselParserFormatter newParser(PersistenceService persistenceService) { - return new VesselParserFormatter(true, persistenceService); + public static VesselParserFormatter newParser(PersistenceService persistenceService, Map<String, String> idTranslationMap) { + return new VesselParserFormatter(true, persistenceService, idTranslationMap); } private final PersistenceService persistenceService; - protected VesselParserFormatter(boolean technical, PersistenceService persistenceService) { - super(technical, Vessel.class); + private final Map<String, String> idTranslationMap; + + protected VesselParserFormatter(boolean technical, PersistenceService persistenceService, Map<String, String> idTranslationMap) { + super("", technical, Vessel.class); this.persistenceService = persistenceService; + this.idTranslationMap = idTranslationMap; } @Override @@ -46,4 +50,14 @@ public class VesselParserFormatter extends EntityParserFormatterSupport<Vessel> } + @Override + protected Vessel parseNotBlankValue(String value) { + + if (idTranslationMap.containsKey(value)) { + value = idTranslationMap.get(value); + } + return super.parseNotBlankValue(value); + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java index d429821..ebe644d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportEntityParserFactory.java @@ -27,11 +27,13 @@ public class GenericFormatImportEntityParserFactory { private final GenericFormatImportRequest importRequest; + private final GenericFormatImportResult importResult; + private VesselParserFormatter vesselParser; private HarbourParserFormatter harbourParser; - private GearParserFormatter mandatoryGearParser; + private GearParserFormatter gearParser; private PersonListParserFormatter listPersonParser; @@ -52,14 +54,16 @@ public class GenericFormatImportEntityParserFactory { private CaracteristicValueParserFormatter marineLitterSizeCategoryValueParser; public GenericFormatImportEntityParserFactory(PersistenceService persistenceService, - GenericFormatImportRequest importRequest) { + GenericFormatImportRequest importRequest, + GenericFormatImportResult importResult) { this.persistenceService = persistenceService; this.importRequest = importRequest; + this.importResult = importResult; } public VesselParserFormatter getVesselParser() { if (vesselParser == null) { - vesselParser = VesselParserFormatter.newParser(persistenceService); + vesselParser = VesselParserFormatter.newParser(persistenceService, importResult.getImportedVessels().getIdTranslationMap()); } return vesselParser; } @@ -71,16 +75,17 @@ public class GenericFormatImportEntityParserFactory { return harbourParser; } - public GearParserFormatter getMandatoryGearParser() { - if (mandatoryGearParser == null) { - mandatoryGearParser = GearParserFormatter.newParser(persistenceService); + public GearParserFormatter getGearParser() { + if (gearParser == null) { + gearParser = GearParserFormatter.newParser(persistenceService, importResult.getImportedGears().getIdTranslationMap()); } - return mandatoryGearParser; + return gearParser; } public PersonListParserFormatter getListPersonParser() { if (listPersonParser == null) { - listPersonParser = PersonListParserFormatter.newParser(PersonParserFormatter.newParser(persistenceService)); + PersonParserFormatter delegateParserFormatter = PersonParserFormatter.newParser(persistenceService, importResult.getImportedPersons().getIdTranslationMap()); + listPersonParser = PersonListParserFormatter.newParser(delegateParserFormatter); } return listPersonParser; } @@ -125,7 +130,7 @@ public class GenericFormatImportEntityParserFactory { public SpeciesParserFormatter getSpeciesParser() { if (speciesParser == null) { - speciesParser = SpeciesParserFormatter.newParser(persistenceService); + speciesParser = SpeciesParserFormatter.newParser(persistenceService, importResult.getImportedSpecies().getIdTranslationMap()); } return speciesParser; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index ed6c220..ee503f9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -5,6 +5,7 @@ import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -17,51 +18,68 @@ import java.util.TreeMap; */ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEntity, K extends Comparable<K>> { - private final Map<K, E> entitiesAdded; + private final Map<String, E> entitiesAdded; - private final Map<K, E> entitiesLinked; + private final Map<String, E> entitiesLinked; + + private final Map<String, String> idTranslationMap; public GenericFormatReferentialImportResult(ReferentialImportRequest<E, K> importRequest, ReferentialImportResult<E> importResult) { + Map<String, String> translationMap = new TreeMap<>(); + Function<E, K> entityToIdFunction = importRequest.getEntityToIdFunction(); int nbRefAdded = importResult.getNbRefAdded(); List<E> toAdds = importRequest.getEntitiesToAdd(); List<E> addeds = importResult.getRefAdded(); - this.entitiesAdded = merge(entityToIdFunction, nbRefAdded, toAdds, addeds); + this.entitiesAdded = merge(entityToIdFunction, nbRefAdded, toAdds, addeds, translationMap); int nbRefLinked = importResult.getNbRefLinked(); List<E> toLinks = importRequest.getEntitiesToLink(); List<E> linkeds = importResult.getRefLinked(); - this.entitiesLinked = merge(entityToIdFunction, nbRefLinked, toLinks, linkeds); + this.entitiesLinked = merge(entityToIdFunction, nbRefLinked, toLinks, linkeds, translationMap); + + this.idTranslationMap = Collections.unmodifiableMap(translationMap); } - public Map<K, E> getEntitiesAdded() { + public Map<String, E> getEntitiesAdded() { return entitiesAdded; } - public Map<K, E> getEntitiesLinked() { + public Map<String, E> getEntitiesLinked() { return entitiesLinked; } - protected Map<K, E> merge(Function<E, K> entityToIdFunction, - int nbEntities, - List<E> request, - List<E> result) { + public Map<String, String> getIdTranslationMap() { + return idTranslationMap; + } - Map<K, E> mergeMap = new TreeMap<>(); + protected Map<String, E> merge(Function<E, K> entityToIdFunction, + int nbEntities, + List<E> request, + List<E> result, + Map<String, String> translationMap) { + + Map<String, E> mergeMap = new TreeMap<>(); for (int index = 0; index < nbEntities; index++) { E toAdd = request.get(index); - K id = entityToIdFunction.apply(toAdd); + K toAddId = entityToIdFunction.apply(toAdd); + String originalId = String.valueOf(toAddId); + E added = result.get(index); - mergeMap.put(id, added); + K addedId = entityToIdFunction.apply(added); + String targetId = String.valueOf(addedId); + + mergeMap.put(originalId, added); + translationMap.put(originalId, targetId); } - return mergeMap; + return Collections.unmodifiableMap(mergeMap); } } 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 a000522..2d1c7fd 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 @@ -99,7 +99,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newIgnoredColumn("Libelle_PMFM"); newIgnoredColumn("Valeur"); - newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, parserFactory.getMandatoryGearParser()); + newMandatoryColumn("Engin_Id", GearCaracteristicRow.PROPERTY_GEAR, parserFactory.getGearParser()); newMandatoryColumn("Valeur_Id", GearCaracteristicRow.PROPERTY_VALUE); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.