branch feature/6688 updated (177d344 -> 5a199fa)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git from 177d344 refs #6612 add Serie_Id on each csv file new c923a9f fix Cruises.equals method new 1497a43 Introduce an object to persist while importing new 0ac8b0d convert gears to geraWithOriginalOrder to avoid Class cast exceptions new c3bbf77 improve caracteristic value parser new 16e39ff validate cruise new 1121f0c validate gear caracteristics new 5a199fa improve API + persist cruises and gear caracteristics The 7 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 5a199fa8fbb3ef24ede52c37b5be93001f8bf033 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:25:45 2015 +0100 improve API + persist cruises and gear caracteristics commit 1121f0c644e849fafd02af2618521bb6a6158fe7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:25:01 2015 +0100 validate gear caracteristics commit 16e39ffa22995d7855889e911dd19e30f2d2f9c4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:24:36 2015 +0100 validate cruise commit c3bbf77070c9acaa91b6c84b6f479ff659fd7a07 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:24:05 2015 +0100 improve caracteristic value parser commit 0ac8b0d3231b9c874566b4021180771d22a455d2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:23:33 2015 +0100 convert gears to geraWithOriginalOrder to avoid Class cast exceptions commit 1497a431aca41546e316ffea72df2c1622fc8ff6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:22:51 2015 +0100 Introduce an object to persist while importing commit c923a9fdfe2b4171c5d5a44afea70ee2a73097bc Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 09:07:48 2015 +0100 fix Cruises.equals method Summary of changes: .../tutti/persistence/entities/data/Cruises.java | 13 ++- .../referential/GearWithOriginalRankOrders.java | 21 ++++- .../csv/CaracteristicValueParseException.java | 46 ++++++++++ .../csv/CaracteristicValueParserFormatter.java | 5 ++ .../genericformat/GenericFormatImportContext.java | 96 +++++++++++++++++++- .../genericformat/GenericFormatImportService.java | 100 +++++++++++---------- .../GenericformatImportPersitenceHelper.java | 66 ++++++++++++++ ...on.java => CruiseAlreadyImportedException.java} | 6 +- ...Exception.java => CruiseNotFoundException.java} | 9 +- .../consumer/CsvConsumerForGearCaracteristic.java | 61 ++++++++++++- .../consumer/CsvConsumerForSurvey.java | 28 +++++- .../consumer/GearNotFoundInCruiseException.java | 47 ++++++++++ .../genericformat/csv/GearCaracteristicModel.java | 6 +- .../genericformat/csv/GearCaracteristicRow.java | 18 +++- .../producer/CsvProducerForGearCaracteristics.java | 1 + .../resources/i18n/tutti-service_fr_FR.properties | 7 +- .../genericFormat/empty/gearCaracteristics.csv | 2 + .../test/resources/genericFormat/empty/survey.csv | 2 +- 18 files changed, 460 insertions(+), 74 deletions(-) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParseException.java create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java copy tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/{CruiseAlreadyExistException.java => CruiseAlreadyImportedException.java} (78%) copy tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/{CruiseAlreadyExistException.java => CruiseNotFoundException.java} (62%) create mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/GearNotFoundInCruiseException.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit c923a9fdfe2b4171c5d5a44afea70ee2a73097bc Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 09:07:48 2015 +0100 fix Cruises.equals method --- .../fr/ifremer/tutti/persistence/entities/data/Cruises.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java index f4be34d..19d6d37 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Cruises.java @@ -25,6 +25,8 @@ package fr.ifremer.tutti.persistence.entities.data; import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus; import org.apache.commons.lang3.builder.EqualsBuilder; +import java.util.Calendar; + public class Cruises extends AbstractCruises { public static boolean isDirty(Cruise cruise) { @@ -45,8 +47,15 @@ public class Cruises extends AbstractCruises { public static boolean equals(Cruise cruise1, Cruise cruise2) { EqualsBuilder equalsBuilder = new EqualsBuilder(); - equalsBuilder.append(cruise1.getBeginDate(), cruise2.getBeginDate()); - equalsBuilder.append(cruise1.getMultirigNumber(), cruise2.getMultirigNumber()); + + Calendar instance = Calendar.getInstance(); + instance.setTime(cruise1.getBeginDate()); + int year1 = instance.get(Calendar.YEAR); + instance.setTime(cruise2.getBeginDate()); + int year2 = instance.get(Calendar.YEAR); + + equalsBuilder.append(year1, year2); + equalsBuilder.append(cruise1.getSurveyPart(), cruise2.getSurveyPart()); equalsBuilder.append(cruise1.getProgram(), cruise2.getProgram()); boolean equals = equalsBuilder.isEquals(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 1497a431aca41546e316ffea72df2c1622fc8ff6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:22:51 2015 +0100 Introduce an object to persist while importing --- .../GenericformatImportPersitenceHelper.java | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java new file mode 100644 index 0000000..8739011 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersitenceHelper.java @@ -0,0 +1,66 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.PersistenceService; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Set; + +/** + * Created on 2/19/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericformatImportPersitenceHelper { + + /** Logger. */ + private static final Log log = LogFactory.getLog(GenericformatImportPersitenceHelper.class); + + private final GenericFormatImportContext importContext; + + private final PersistenceService persistenceService; + + public GenericformatImportPersitenceHelper(GenericFormatImportContext importContext, PersistenceService persistenceService) { + this.importContext = importContext; + this.persistenceService = persistenceService; + } + + public void persistCruise(Cruise cruise) { + + if (log.isInfoEnabled()) { + log.info("Persist cruise: " + cruise.getName()); + } + Cruise persistedCruise = persistenceService.createCruise(cruise); + importContext.getImportResult().addImportedCruise(persistedCruise); + + } + + public void persistGearCaracteristics() { + + Set<Cruise> cruises = importContext.getImportResult().getImportedCruises(); + + for (Cruise cruise : cruises) { + + for (Gear gear : cruise.getGear()) { + + CaracteristicMap caracteristics = gear.getCaracteristics(); + if (MapUtils.isNotEmpty(caracteristics)) { + + if (log.isInfoEnabled()) { + log.info("Persist " + caracteristics.size() + " gear caracteristics for gear: " + gear.getName() + " of cruise: " + cruise.getName()); + } + persistenceService.saveGearCaracteristics(gear, cruise); + + } + + } + } + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 0ac8b0d3231b9c874566b4021180771d22a455d2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:23:33 2015 +0100 convert gears to geraWithOriginalOrder to avoid Class cast exceptions --- .../referential/GearWithOriginalRankOrders.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/GearWithOriginalRankOrders.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/GearWithOriginalRankOrders.java index 37d7b9d..00172d5 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/GearWithOriginalRankOrders.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/GearWithOriginalRankOrders.java @@ -26,6 +26,8 @@ import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import javax.annotation.Generated; +import java.util.ArrayList; +import java.util.List; @Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Wed Oct 02 14:29:49 CEST 2013") public class GearWithOriginalRankOrders extends AbstractGearWithOriginalRankOrders { @@ -44,4 +46,21 @@ public class GearWithOriginalRankOrders extends AbstractGearWithOriginalRankOrde binder.copy(source, result); return result; } -} //GearWithOriginalRankOrders + + public static List<GearWithOriginalRankOrder> toGearWithOriginalRankOrders(List<Gear> gears) { + + short rankOrder = 1; + + List<GearWithOriginalRankOrder> gearWithOriginalRankOrders = new ArrayList<>(); + for (Gear gear : gears) { + + GearWithOriginalRankOrder gearWithOriginalRankOrder = GearWithOriginalRankOrders.newGearWithOriginalRankOrder(gear); + gearWithOriginalRankOrder.setRankOrder(rankOrder++); + gearWithOriginalRankOrders.add(gearWithOriginalRankOrder); + } + + return gearWithOriginalRankOrders; + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit c3bbf77070c9acaa91b6c84b6f479ff659fd7a07 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:24:05 2015 +0100 improve caracteristic value parser --- .../csv/CaracteristicValueParseException.java | 46 ++++++++++++++++++++++ .../csv/CaracteristicValueParserFormatter.java | 5 +++ 2 files changed, 51 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParseException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParseException.java new file mode 100644 index 0000000..1ad2140 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CaracteristicValueParseException.java @@ -0,0 +1,46 @@ +package fr.ifremer.tutti.service.csv; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/19/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CaracteristicValueParseException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Caracteristic caracteristic; + + private final String value; + + private final String errorMessage; + + public CaracteristicValueParseException(Caracteristic caracteristic, String value, String errorMessage) { + this.caracteristic = caracteristic; + this.value = value; + this.errorMessage = errorMessage; + } + + public Caracteristic getCaracteristic() { + return caracteristic; + } + + public String getValue() { + return value; + } + + public String getErrorMessage() { + return errorMessage; + } + + @Override + public String getMessage() { + return t("tutti.service.csv.parse.qualitativeValueError", value, caracteristic.getId(), errorMessage); + } + +} 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 index e3edc75..afe949a 100644 --- 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 @@ -10,6 +10,8 @@ import org.nuiton.csv.ValueParserFormatter; import java.io.Serializable; import java.text.ParseException; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/14/15. * @@ -68,6 +70,9 @@ public class CaracteristicValueParserFormatter implements ValueParserFormatter<S } else { result = CaracteristicQualitativeValues.getQualitativeValue(caracteristic, value); + if (result == null) { + throw new ParseException(t("tutti.service.csv.caracteristic.qualitativeValue.notFound", caracteristic.getId(), value), 0); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 16e39ffa22995d7855889e911dd19e30f2d2f9c4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:24:36 2015 +0100 validate cruise --- .../consumer/CruiseAlreadyImportedException.java | 32 ++++++++++++++++++++++ .../consumer/CruiseNotFoundException.java | 31 +++++++++++++++++++++ .../consumer/CsvConsumerForSurvey.java | 28 ++++++++++++++++--- 3 files changed, 87 insertions(+), 4 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyImportedException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyImportedException.java new file mode 100644 index 0000000..13ca6d8 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseAlreadyImportedException.java @@ -0,0 +1,32 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CruiseAlreadyImportedException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Cruise cruise; + + public CruiseAlreadyImportedException(Cruise cruise) { + this.cruise = cruise; + } + + public Cruise getCruise() { + return cruise; + } + + @Override + public String getMessage() { + return t("tutti.genericFormat.import.error.cruiseAlreadyImported", cruise.getName()); + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotFoundException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotFoundException.java new file mode 100644 index 0000000..2426dff --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CruiseNotFoundException.java @@ -0,0 +1,31 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/18/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class CruiseNotFoundException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Cruise cruise; + + public CruiseNotFoundException(Cruise cruise) { + this.cruise = cruise; + } + + public Cruise getCruise() { + return cruise; + } + + @Override + public String getMessage() { + return t("tutti.genericFormat.import.error.cruiseNotFound", cruise.getBeginDate(), cruise.getProgram().getName(), cruise.getSurveyPart()); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java index 5490b17..6e4392f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSurvey.java @@ -1,16 +1,19 @@ package fr.ifremer.tutti.service.genericformat.consumer; import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder; +import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrders; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.SurveyModel; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import org.nuiton.csv.ImportRow; import org.nuiton.validator.NuitonValidatorResult; import java.nio.file.Path; +import java.util.List; /** * Created on 2/11/15. @@ -32,9 +35,14 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { Cruise cruise = bean.getCruise(); - if (importContext.isCruiseExists(cruise)) { + if (importContext.isCruiseAlreadyExists(cruise)) { + + addCheckError(row, new CruiseAlreadyExistException(cruise)); + + } + + if (importContext.isCruiseAlreadyImported(cruise)) { - // Can't readd an existing cruise addCheckError(row, new CruiseAlreadyExistException(cruise)); } @@ -42,7 +50,6 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { NuitonValidatorResult nuitonValidatorResult = validationService.validateEditCruise(cruise); if (nuitonValidatorResult.hasFatalMessages() || nuitonValidatorResult.hasErrorMessagess()) { - // There is some validation errors addCheckError(row, new CruiseNotValidException(cruise, nuitonValidatorResult)); } @@ -53,4 +60,17 @@ public class CsvConsumerForSurvey extends CsvComsumer<SurveyRow, SurveyModel> { } + public void prepareRowForPersist(ImportRow<SurveyRow> row) { + + Cruise bean = row.getBean().getCruise(); + + if (!bean.isGearEmpty()) { + + List gear = bean.getGear(); + List<GearWithOriginalRankOrder> gearWithOriginalRankOrders = GearWithOriginalRankOrders.toGearWithOriginalRankOrders(gear); + bean.setGear(gearWithOriginalRankOrders); + } + + } + } \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 1121f0c644e849fafd02af2618521bb6a6158fe7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:25:01 2015 +0100 validate gear caracteristics --- .../consumer/CsvConsumerForGearCaracteristic.java | 61 +++++++++++++++++++++- .../consumer/GearNotFoundInCruiseException.java | 47 +++++++++++++++++ .../genericformat/csv/GearCaracteristicModel.java | 6 +-- .../genericformat/csv/GearCaracteristicRow.java | 18 ++++++- .../producer/CsvProducerForGearCaracteristics.java | 1 + 5 files changed, 126 insertions(+), 7 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java index 5bfe65d..7ad00eb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForGearCaracteristic.java @@ -1,12 +1,18 @@ package fr.ifremer.tutti.service.genericformat.consumer; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; import fr.ifremer.tutti.service.csv.CsvComsumer; -import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; +import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicModel; import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; import org.nuiton.csv.ImportRow; +import java.io.Serializable; import java.nio.file.Path; /** @@ -27,7 +33,45 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist GearCaracteristicRow bean = row.getBean(); - //TODO checks! + Cruise importedCruise = importContext.getImportedCruise(bean.getCruise()); + if (importedCruise == null) { + + addCheckError(row, new CruiseNotFoundException(bean.getCruise())); + + } else { + + bean.setCruise(importedCruise); + + Gear gear = bean.getGear(); + int rankOrder = bean.getRankOrder(); + + Gear cruiseGear = importContext.getGear(importedCruise, gear, rankOrder); + if (cruiseGear == null) { + addCheckError(row, new GearNotFoundInCruiseException(importedCruise, gear, rankOrder)); + } + bean.setGear(cruiseGear); + + //TODO Use a validator ? + Caracteristic caracteristic = bean.getCaracteristic(); + if (caracteristic == null) { + //TODO Should done by parser ? + } + + //TODO Use a validator ? + if (bean.getValue() == null) { + + } + + // parse caracteristic value + String value = (String) bean.getValue(); + try { + Serializable serializable = importContext.parseCaracteristicValue(caracteristic, value); + bean.setValue(serializable); + } catch (CaracteristicValueParseException e) { + addCheckError(row, e); + } + + } } @@ -35,4 +79,17 @@ public class CsvConsumerForGearCaracteristic extends CsvComsumer<GearCaracterist } + public void prepareRowForPersist(ImportRow<GearCaracteristicRow> row) { + + GearCaracteristicRow bean = row.getBean(); + + CaracteristicMap caracteristics = bean.getGear().getCaracteristics(); + if (caracteristics == null) { + caracteristics = new CaracteristicMap(); + bean.getGear().setCaracteristics(caracteristics); + } + caracteristics.put(bean.getCaracteristic(), bean.getValue()); + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/GearNotFoundInCruiseException.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/GearNotFoundInCruiseException.java new file mode 100644 index 0000000..b953fe4 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/GearNotFoundInCruiseException.java @@ -0,0 +1,47 @@ +package fr.ifremer.tutti.service.genericformat.consumer; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.Gear; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 2/18/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since XXX + */ +public class GearNotFoundInCruiseException extends Exception { + + private static final long serialVersionUID = 1L; + + private final Cruise cruise; + + private final Gear gear; + + private final int rankOrder; + + public GearNotFoundInCruiseException(Cruise cruise, Gear gear, int rankOrder) { + this.cruise = cruise; + this.gear = gear; + this.rankOrder = rankOrder; + } + + public Cruise getCruise() { + return cruise; + } + + public Gear getGear() { + return gear; + } + + public int getRankOrder() { + return rankOrder; + } + + @Override + public String getMessage() { + return t("tutti.genericFormat.import.error.gearNotFoundInCruise", gear.getName(), rankOrder, cruise.getBeginDate(), cruise.getProgram().getName(), cruise.getSurveyPart()); + } + +} 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 f1399ab..2b8c95e 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,7 +24,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.referential.Gear; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory; @@ -74,7 +73,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newColumnForExport("Engin", GearCaracteristicRow.PROPERTY_GEAR, TuttiCsvUtil.GEAR_FORMATTER); - newColumnForExport("Rang_Engin", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newColumnForExport("Rang_Engin", GearCaracteristicRow.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newColumnForExport("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("Libelle_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); @@ -93,8 +92,7 @@ public class GearCaracteristicModel extends AbstractTuttiImportExportModel<GearC newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART); newIgnoredColumn("Engin"); - //FIXME - newMandatoryColumn("Rang_Engin", GearCaracteristicRow.PROPERTY_GEAR + "." + Gear.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); + newMandatoryColumn("Rang_Engin", GearCaracteristicRow.PROPERTY_RANK_ORDER, TuttiCsvUtil.SHORT); newMandatoryColumn("Code_PMFM", GearCaracteristicRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicParser()); newIgnoredColumn("Libelle_PMFM"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java index 6348236..00b6f4f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/GearCaracteristicRow.java @@ -46,18 +46,26 @@ public class GearCaracteristicRow implements Serializable { public static final String PROPERTY_VALUE = "value"; + public static final String PROPERTY_RANK_ORDER = Gear.PROPERTY_RANK_ORDER; + protected Cruise cruise; protected Gear gear; protected Caracteristic caracteristic; - private Serializable value; + protected int rankOrder; + + protected Serializable value; public void setCruise(Cruise cruise) { this.cruise = cruise; } + public Cruise getCruise() { + return cruise; + } + public void setGear(Gear gear) { this.gear = gear; } @@ -109,4 +117,12 @@ public class GearCaracteristicRow implements Serializable { public Serializable getValue() { return value; } + + public int getRankOrder() { + return rankOrder; + } + + public void setRankOrder(int rankOrder) { + this.rankOrder = rankOrder; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java index 3641ce9..41faabb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForGearCaracteristics.java @@ -37,6 +37,7 @@ public class CsvProducerForGearCaracteristics extends CsvProducer<GearCaracteris GearCaracteristicRow row = new GearCaracteristicRow(); row.setCruise(cruise); row.setGear(gear); + row.setRankOrder(gear.getRankOrder()); row.setCaracteristic(caracteristic); row.setValue(value); rows.add(row); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 5a199fa8fbb3ef24ede52c37b5be93001f8bf033 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 19 10:25:45 2015 +0100 improve API + persist cruises and gear caracteristics --- .../genericformat/GenericFormatImportContext.java | 96 +++++++++++++++++++- .../genericformat/GenericFormatImportService.java | 100 +++++++++++---------- .../resources/i18n/tutti-service_fr_FR.properties | 7 +- .../genericFormat/empty/gearCaracteristics.csv | 2 + .../test/resources/genericFormat/empty/survey.csv | 2 +- 5 files changed, 155 insertions(+), 52 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java index a4f5266..a0bfceb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportContext.java @@ -1,8 +1,13 @@ package fr.ifremer.tutti.service.genericformat; +import fr.ifremer.tutti.persistence.ProgressionModel; 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.PersistenceService; +import fr.ifremer.tutti.service.csv.CaracteristicValueParseException; +import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForGearCaracteristic; @@ -16,9 +21,13 @@ import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryGear import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryPerson; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporarySpecies; import fr.ifremer.tutti.service.referential.consumer.CsvConsumerForTemporaryVessel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.io.Closeable; import java.io.IOException; +import java.io.Serializable; +import java.text.ParseException; /** * Created on 2/5/15. @@ -28,16 +37,25 @@ import java.io.IOException; */ public class GenericFormatImportContext implements Closeable { + /** Logger. */ + private static final Log log = LogFactory.getLog(GenericFormatImportContext.class); + private final GenericFormatImportRequest importRequest; private final GenericFormatImportResult importResult; + private final ProgressionModel progressionModel; + private final GenericFormatImportEntityParserFactory importEntityParserFactory; - public GenericFormatImportContext(GenericFormatImportRequest importRequest, PersistenceService persistenceService) { + private final GenericformatImportPersitenceHelper persitenceHelper; + + public GenericFormatImportContext(GenericFormatImportRequest importRequest, ProgressionModel progressionModel, PersistenceService persistenceService) { this.importRequest = importRequest; + this.progressionModel = progressionModel; this.importResult = new GenericFormatImportResult(importRequest); this.importEntityParserFactory = new GenericFormatImportEntityParserFactory(persistenceService, importRequest, importResult); + this.persitenceHelper = new GenericformatImportPersitenceHelper(this, persistenceService); } public GenericFormatImportRequest getImportRequest() { @@ -56,7 +74,7 @@ public class GenericFormatImportContext implements Closeable { } - public boolean isCruiseExists(Cruise cruise) { + public boolean isCruiseAlreadyExists(Cruise cruise) { boolean equals = false; for (Cruise existingCruise : importRequest.getExistingCruises()) { @@ -71,6 +89,54 @@ public class GenericFormatImportContext implements Closeable { } + public boolean isCruiseAlreadyImported(Cruise cruise) { + + boolean equals = false; + for (Cruise existingCruise : importResult.getImportedCruises()) { + + equals = Cruises.equals(cruise, existingCruise); + if (equals) { + break; + } + + } + return equals; + + } + + public Cruise getImportedCruise(Cruise importRowCruise) { + + Cruise result = null; + for (Cruise importedCruise : importResult.getImportedCruises()) { + + boolean equals = Cruises.equals(importRowCruise, importedCruise); + if (equals) { + result = importedCruise; + break; + } + + } + return result; + + } + + public Gear getGear(Cruise cruise, Gear gear, int rankOrder) { + + Gear result = null; + + int index = rankOrder - 1; + boolean gearExists = cruise.sizeGear() > index; + if (gearExists) { + Gear cruiseGear = cruise.getGear(index); + gearExists = cruiseGear.getId().equals(gear.getId()); + if (gearExists) { + result = cruiseGear; + } + } + return result; + + } + public CsvConsumerForSampleCategory loadSampleCategories() { CsvConsumerForSampleCategory consumer = new CsvConsumerForSampleCategory(importRequest.getArchive().getSampleCategoryModelPath(), importRequest.getCsvSeparator(), importEntityParserFactory); return consumer; @@ -136,4 +202,30 @@ public class GenericFormatImportContext implements Closeable { return consumer; } + public Serializable parseCaracteristicValue(Caracteristic caracteristic, String value) throws CaracteristicValueParseException { + + CaracteristicValueParserFormatter parser = CaracteristicValueParserFormatter.newParser(caracteristic); + try { + + Serializable caracteristicValue = parser.parse(value); + return caracteristicValue; + + } catch (ParseException e) { + throw new CaracteristicValueParseException(caracteristic, value, e.getMessage()); + } + + } + + public void increments(String message) { + if (progressionModel != null) { + progressionModel.increments(message); + } + if (log.isInfoEnabled()) { + log.info(message); + } + } + + public GenericformatImportPersitenceHelper getPersitenceHelper() { + return persitenceHelper; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index f0d8d22..720a70e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -147,25 +147,25 @@ public class GenericFormatImportService extends AbstractTuttiService { program, context.getSampleCategoryModel()); - try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, persistenceService)) { + try (GenericFormatImportContext importContext = new GenericFormatImportContext(request, progressionModel, persistenceService)) { GenericFormatImportResult result = new GenericFormatImportResult(request); - checkSampleCategoryModel(importContext, progressionModel); - importTemporaryGears(importContext, progressionModel); - importTemporaryPersons(importContext, progressionModel); - importTemporarySpecies(importContext, progressionModel); - importTemporaryVessels(importContext, progressionModel); - importProtocol(importContext, progressionModel); - - importCruises(importContext, progressionModel); - importGearCaracteristics(importContext, progressionModel); - importOperations(importContext, progressionModel); - importParameters(importContext, progressionModel); - importCatches(importContext, progressionModel); - importMarineLitters(importContext, progressionModel); - importIndividualObservations(importContext, progressionModel); - importAccidentalCatches(importContext, progressionModel); + checkSampleCategoryModel(importContext); + importTemporaryGears(importContext); + importTemporaryPersons(importContext); + importTemporarySpecies(importContext); + importTemporaryVessels(importContext); + importProtocol(importContext); + + importCruises(importContext); + importGearCaracteristics(importContext); + importOperations(importContext); + importParameters(importContext); + importCatches(importContext); + importMarineLitters(importContext); + importIndividualObservations(importContext); + importAccidentalCatches(importContext); return result; @@ -175,13 +175,13 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void checkSampleCategoryModel(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void checkSampleCategoryModel(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import sample category model."); } - progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); + importContext.increments(t("tutti.genericFormat.import.sampleCategoryModel")); try (CsvConsumerForSampleCategory consumer = importContext.loadSampleCategories()) { int nbCategories = 0; @@ -202,9 +202,9 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importTemporaryGears(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importTemporaryGears(GenericFormatImportContext importContext) { - progressionModel.increments(t("tutti.genericFormat.import.temporaryGears")); + importContext.increments(t("tutti.genericFormat.import.temporaryGears")); GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialGearsPathExists()) { @@ -241,9 +241,9 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importTemporaryPersons(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importTemporaryPersons(GenericFormatImportContext importContext) { - progressionModel.increments(t("tutti.genericFormat.import.temporaryPersons")); + importContext.increments(t("tutti.genericFormat.import.temporaryPersons")); GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialPersonsPathExists()) { @@ -280,9 +280,9 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importTemporarySpecies(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importTemporarySpecies(GenericFormatImportContext importContext) { - progressionModel.increments(t("tutti.genericFormat.import.temporarySpecies")); + importContext.increments(t("tutti.genericFormat.import.temporarySpecies")); GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialSpeciesPathExists()) { @@ -319,9 +319,9 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importTemporaryVessels(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importTemporaryVessels(GenericFormatImportContext importContext) { - progressionModel.increments(t("tutti.genericFormat.import.temporaryVessels")); + importContext.increments(t("tutti.genericFormat.import.temporaryVessels")); GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isTemporaryReferentialVesselsPathExists()) { @@ -359,9 +359,9 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importProtocol(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importProtocol(GenericFormatImportContext importContext) { - progressionModel.increments(t("tutti.genericFormat.load.protocol")); + importContext.increments(t("tutti.genericFormat.load.protocol")); GenericFormatArchive archive = importContext.getImportRequest().getArchive(); if (archive.isProtocolExists()) { @@ -377,7 +377,7 @@ public class GenericFormatImportService extends AbstractTuttiService { String newName = persistenceService.getFirstAvailableName(tuttiProtocol.getName()); tuttiProtocol.setName(newName); - progressionModel.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); + importContext.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); tuttiProtocol = persistenceService.createProtocol(tuttiProtocol); persistenceService.setProtocol(tuttiProtocol); @@ -393,21 +393,21 @@ public class GenericFormatImportService extends AbstractTuttiService { } } - protected void importCruises(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importCruises(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import survey.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.cruises")); + importContext.increments(t("tutti.genericFormat.import.cruises")); try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { for (ImportRow<SurveyRow> row : consumer) { consumer.checkRow(row, importContext, validationService); - if (log.isInfoEnabled()) { - log.info("Will persist cruise: " + row.getBean().getName()); - } + consumer.prepareRowForPersist(row); + + importContext.getPersitenceHelper().persistCruise(row.getBean().getCruise()); } } catch (IOException e) { @@ -416,31 +416,35 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importGearCaracteristics(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importGearCaracteristics(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import gearCaracteristics.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.gearCaracteristics")); + importContext.increments(t("tutti.genericFormat.import.gearCaracteristics")); try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { for (ImportRow<GearCaracteristicRow> row : consumer) { consumer.checkRow(row, importContext); + consumer.prepareRowForPersist(row); + } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close gearCaracteristic.csv file", e); } + importContext.getPersitenceHelper().persistGearCaracteristics(); + } - protected void importOperations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importOperations(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import operation.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.operations")); + importContext.increments(t("tutti.genericFormat.import.operations")); try (CsvConsumerForOperation consumer = importContext.loadOperations()) { for (ImportRow<OperationRow> row : consumer) { @@ -454,12 +458,12 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importParameters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importParameters(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import parameter.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.parameters")); + importContext.increments(t("tutti.genericFormat.import.parameters")); try (CsvConsumerForParameter consumer = importContext.loadParameters()) { for (ImportRow<ParameterRow> row : consumer) { @@ -473,12 +477,12 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importCatches(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import catch.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.catches")); + importContext.increments(t("tutti.genericFormat.import.catches")); try (CsvConsumerForCatch consumer = importContext.loadCatches()) { for (ImportRow<CatchRow> row : consumer) { @@ -492,12 +496,12 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importAccidentalCatches(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importAccidentalCatches(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import accidentalCatch.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.accidentalCatches")); + importContext.increments(t("tutti.genericFormat.import.accidentalCatches")); try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { for (ImportRow<AccidentalCatchRow> row : consumer) { @@ -511,12 +515,12 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importIndividualObservations(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importIndividualObservations(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import individualObservation.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.individualObservations")); + importContext.increments(t("tutti.genericFormat.import.individualObservations")); try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { for (ImportRow<IndividualObservationRow> row : consumer) { @@ -530,12 +534,12 @@ public class GenericFormatImportService extends AbstractTuttiService { } - protected void importMarineLitters(GenericFormatImportContext importContext, ProgressionModel progressionModel) { + protected void importMarineLitters(GenericFormatImportContext importContext) { if (log.isInfoEnabled()) { log.info("Import marineLitter.csv file."); } - progressionModel.increments(t("tutti.genericFormat.import.marineLitters")); + importContext.increments(t("tutti.genericFormat.import.marineLitters")); try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { for (ImportRow<MarineLitterRow> row : consumer) { 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 5763fbe..cb5c8ee 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 @@ -11,13 +11,18 @@ tutti.genericFormat.import.accidentalCatches=Import des captures accidentelles tutti.genericFormat.import.catches=Import des captures tutti.genericFormat.import.cruises=Import des campagnes tutti.genericFormat.import.error.cruiseAlreadyExist=Il existe déjà une campagne avec ce nom %s -tutti.genericFormat.import.error.cruiseNotValid=La camapgne n'est pas valide \:\n%s +tutti.genericFormat.import.error.cruiseAlreadyImported=La campagne avec ce nom %s a déjà été importée +tutti.genericFormat.import.error.cruiseNotFound=La campagne (année: %s, série: %s, série partielle %s) n'existe pas +tutti.genericFormat.import.error.gearNotFoundInCruise=L'engin %s (position %s) non trouvé dans la campagne (année: %s, série: %s, série partielle %s) +tutti.genericFormat.import.error.cruiseNotValid=La campagne n'est pas valide \:\n%s tutti.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin tutti.genericFormat.import.individualObservations=Import des observations individuelles tutti.genericFormat.import.marineLitters=Import des macro-déchets tutti.genericFormat.import.operations=Import des traits tutti.genericFormat.import.parameters=Import des paramètres de trait tutti.genericFormat.import.protocol=Import d'un nouveau protocol %s +tutti.service.csv.parse.qualitativeValueError=La valeur %s de la caractéristique %s n'est pas valide: %s +tutti.service.csv.caracteristic.qualitativeValue.notFound=La caractéristique qualitative %s n'a pas de value d'id %s tutti.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation tutti.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching=L'identifiant de la caractéristique devrait être %s, mais vaut %s tutti.genericFormat.import.sampleCategoryModel.error.codeNotMatching=Le code devrait être %s, mais vaut %s diff --git a/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv b/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv index 3256fe9..a150b41 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/gearCaracteristics.csv @@ -1 +1,3 @@ Annee;Serie;Serie_Partielle;Engin;Rang_Engin;Code_PMFM;Libelle_PMFM;Valeur;Serie_Id;Engin_Id;Valeur_Id +2014;Campagne EVHOE;1;Dragues à main manoeuvrées à partir du bateau;3;1391;Accessibilité au poisson - enquête - totale - Observation par un observateur;Bonne;CAM-EVHOE;64;1752 +2014;Campagne EVHOE;1;Dragues à main manoeuvrées à partir du bateau;3;46;Algorithme de déterminaison - marée - totale - Estimation algorithme SACROIS;3a - N VMS - 1 LB (VMS validées);CAM-EVHOE;64;172 \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/empty/survey.csv b/tutti-service/src/test/resources/genericFormat/empty/survey.csv index 7038273..5b15941 100644 --- a/tutti-service/src/test/resources/genericFormat/empty/survey.csv +++ b/tutti-service/src/test/resources/genericFormat/empty/survey.csv @@ -1,2 +1,2 @@ Annee;Serie;Serie_Partielle;Navire;Nombre_Poches;Pays;Zone_Etude;Campagne;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire;Serie_Id;Navire_Id;Engin_Id;Port_Deb_Campagne_Id;Port_Fin_Campagne_Id;Chef_Mission_Id;Resp_Salle_Tri_Id -2014;Campagne EVHOE;1;868095;1;FRA;EVHOE - Golfe de Gascogne / Mer Celtique;Campagne EVHOE 2014;;17/10/2014 07:00:00;Brest;01/12/2014 07:00:00;Brest;Jean-Pierre LEAUTE|Michele SALAUN|Lionel PAWLOWSKI;Erwan DUHAMEL|Nicolas CAROFF;;CAM-CGFS;868095;1|4;530;530;143|70|2332;128|59 +2014;Campagne EVHOE;1;868095;1;FRA;EVHOE - Golfe de Gascogne / Mer Celtique;Campagne EVHOE 2014;;17/10/2014 07:00:00;Brest;01/12/2014 07:00:00;Brest;Jean-Pierre LEAUTE|Michele SALAUN|Lionel PAWLOWSKI;Erwan DUHAMEL|Nicolas CAROFF;;CAM-EVHOE;868095;379|381|64;530;530;143|70|2332;128|59 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm