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>.