This is an automated email from the git hooks/post-receive script. New commit to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 0ecbc3191808377a593577ad538f277bc1d8e423 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 5 15:29:58 2016 +0100 Ajout LengthLengthParameter et revue de LWParameter (service) --- .../ReferentialReferenceSetDefinitions.java | 8 ++ .../request/ReferenceSetRequestDefinitions.java | 11 +- .../services/dto/referential/FormulaHelper.java | 134 +++++++++++++++++++++ .../dto/referential/LengthLengthParameterDto.java | 48 ++++++++ .../dto/referential/LengthWeightParameterDto.java | 48 ++++++++ .../dto/referential/ReferentialHelper.java | 1 + .../src/main/xmi/observe-services-dto-common.zargo | Bin 46149 -> 48945 bytes .../src/main/xmi/observe-services-dto-seine.zargo | Bin 60743 -> 60919 bytes services-dto/src/main/xmi/observe-services-dto.ini | 12 +- .../topia/binder/BinderEngineInitializer.java | 17 ++- .../referential/LengthLengthParameterBinder.java | 92 ++++++++++++++ .../referential/LengthWeightParameterBinder.java | 2 + .../consolidate/ConsolidateDataServiceTopia.java | 8 +- 13 files changed, 369 insertions(+), 12 deletions(-) diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java b/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java index 1844180..c05a711 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/reference/ReferentialReferenceSetDefinitions.java @@ -30,6 +30,7 @@ import fr.ird.observe.services.dto.referential.GearCaracteristicTypeDto; import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.services.dto.referential.HarbourDto; import fr.ird.observe.services.dto.referential.I18nReferentialDto; +import fr.ird.observe.services.dto.referential.LengthLengthParameterDto; import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; import fr.ird.observe.services.dto.referential.OceanDto; import fr.ird.observe.services.dto.referential.OrganismDto; @@ -122,6 +123,13 @@ public enum ReferentialReferenceSetDefinitions { SHIP_OWNER(newDefaultDefinitionBuilder(ShipOwnerDto.class) .addProperty(String.class, ShipOwnerDto.PROPERTY_LABEL)), + LENGTH_LENGTH_PARAMETER(newDefinitionBuilder(LengthLengthParameterDto.class) + .addProperty(String.class, LengthLengthParameterDto.PROPERTY_CODE) + .addProperty(String.class, LengthLengthParameterDto.PROPERTY_INPUT_OUTPUT_FORMULA) + .addProperty(String.class, LengthLengthParameterDto.PROPERTY_INPUT_SIZE_MEASURE_TYPE) + .addProperty(String.class, LengthLengthParameterDto.PROPERTY_OUTPUT_INPUT_FORMULA) + .addProperty(String.class, LengthLengthParameterDto.PROPERTY_OUTPUT_SIZE_MEASURE_TYPE)), + LENGTH_WEIGHT_PARAMETER(newDefinitionBuilder(LengthWeightParameterDto.class) .addProperty(String.class, LengthWeightParameterDto.PROPERTY_CODE) .addProperty(String.class, LengthWeightParameterDto.PROPERTY_OCEAN) diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/reference/request/ReferenceSetRequestDefinitions.java b/services-dto/src/main/java/fr/ird/observe/services/dto/reference/request/ReferenceSetRequestDefinitions.java index 448732d..c8d18e3 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/reference/request/ReferenceSetRequestDefinitions.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/reference/request/ReferenceSetRequestDefinitions.java @@ -48,6 +48,7 @@ import fr.ird.observe.services.dto.referential.GearCaracteristicDto; import fr.ird.observe.services.dto.referential.GearCaracteristicTypeDto; import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.services.dto.referential.HarbourDto; +import fr.ird.observe.services.dto.referential.LengthLengthParameterDto; import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; import fr.ird.observe.services.dto.referential.OceanDto; import fr.ird.observe.services.dto.referential.OrganismDto; @@ -135,6 +136,7 @@ import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefin import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.HOOK_TYPE; import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.ITEM_HORIZONTAL_POSITION; import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.ITEM_VERTICAL_POSITION; +import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.LENGTH_LENGTH_PARAMETER; import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.LENGTH_WEIGHT_PARAMETER; import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.LIGHTSTICKS_COLOR; import static fr.ird.observe.services.dto.reference.ReferentialReferenceSetDefinitions.LIGHTSTICKS_TYPE; @@ -345,7 +347,8 @@ public enum ReferenceSetRequestDefinitions { newBuilder(NonTargetLengthDto.class) .addKey(NonTargetLengthDto.PROPERTY_SPECIES, SPECIES) .addKey(NonTargetLengthDto.PROPERTY_SPECIES_FATE, SPECIES_FATE) - .addKey(NonTargetLengthDto.PROPERTY_SEX, SEX)), + .addKey(NonTargetLengthDto.PROPERTY_SEX, SEX) + .addKey(TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE, SIZE_MEASURE_TYPE)), FLOATING_OBJECT_FORM( newBuilder(FloatingObjectDto.class) @@ -386,9 +389,15 @@ public enum ReferenceSetRequestDefinitions { newReferentialBuilder(ShipOwnerDto.class, SHIP_OWNER) .addKey(HarbourDto.PROPERTY_COUNTRY, COUNTRY)), + LENGTH_LENGTH_PARAMETER_FORM( + newReferentialBuilder(LengthLengthParameterDto.class, LENGTH_LENGTH_PARAMETER) + .addKey(LengthLengthParameterDto.PROPERTY_INPUT_SIZE_MEASURE_TYPE, SIZE_MEASURE_TYPE) + .addKey(LengthLengthParameterDto.PROPERTY_OUTPUT_SIZE_MEASURE_TYPE, SIZE_MEASURE_TYPE)), + LENGTH_WEIGHT_PARAMETER_FORM( newReferentialBuilder(LengthWeightParameterDto.class, LENGTH_WEIGHT_PARAMETER) .addKey(LengthWeightParameterDto.PROPERTY_SPECIES, SPECIES) + .addKey(LengthWeightParameterDto.PROPERTY_SIZE_MEASURE_TYPE, SIZE_MEASURE_TYPE) .addKey(LengthWeightParameterDto.PROPERTY_OCEAN, OCEAN) .addKey(LengthWeightParameterDto.PROPERTY_SEX, SEX)), diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java new file mode 100644 index 0000000..e763bf3 --- /dev/null +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java @@ -0,0 +1,134 @@ +package fr.ird.observe.services.dto.referential; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.script.Bindings; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created on 05/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class FormulaHelper { + + public interface FormulaSupport { + + String getCoefficients(); + + Map<String, Double> getCoefficientValues(); + + } //FormulaSupport + + + /** Logger */ + private static final Log log = LogFactory.getLog(FormulaHelper.class); + + private static final Pattern COEFFICIENTS_PATTERN = Pattern.compile("(.+)=(.+)"); + + /** variable weight à utiliser dans la relation taille */ + public static final String VARIABLE_WEIGHT = "P"; + + /** variable taille à utiliser dans la relation weight */ + public static final String VARIABLE_LENGTH = "L"; + + public static final String VARIABLE_INPUT = "I"; + + public static final String VARIABLE_OUTPUT = "O"; + + public static final String COEFFICIENT_A = "a"; + + public static final String COEFFICIENT_B = "b"; + + /** moteur d'évaluation d'expression */ + protected static ScriptEngine scriptEngine; + + + protected static ScriptEngine getScriptEngine() { + if (scriptEngine == null) { + ScriptEngineManager factory = new ScriptEngineManager(); + + scriptEngine = factory.getEngineByExtension("js"); + } + return scriptEngine; + } + + public static Map<String, Double> getCoefficientValues(FormulaSupport parametrage) { + + Map<String, Double> result = new TreeMap<>(); + String coefficients = parametrage.getCoefficients(); + if (coefficients != null) { + for (String coefficientDef : coefficients.split(":")) { + Matcher matcher = COEFFICIENTS_PATTERN.matcher(coefficientDef.trim()); + if (log.isDebugEnabled()) { + log.debug("constant to test = " + coefficientDef); + } + if (matcher.matches()) { + + String key = matcher.group(1); + String val = matcher.group(2); + try { + Double d = Double.valueOf(val); + result.put(key, d); + if (log.isDebugEnabled()) { + log.debug("detects coefficient " + key + '=' + val); + } + } catch (NumberFormatException e) { + // pas pu recupere le count... + if (log.isWarnEnabled()) { + log.warn("could not parse double " + val + " for coefficient " + key); + } + } + } + } + } + return result; + } + + protected static boolean validateRelation(FormulaSupport parametrage, String relation, String variable) { + boolean result = false; + if (!StringUtils.isEmpty(relation)) { + + Map<String, Double> coeffs = parametrage.getCoefficientValues(); + + ScriptEngine engine = getScriptEngine(); + Bindings bindings = engine.createBindings(); + for (Map.Entry<String, Double> entry : coeffs.entrySet()) { + String key = entry.getKey(); + Double value = entry.getValue(); + bindings.put(key, value); + + if (log.isDebugEnabled()) { + log.debug("add constant " + key + '=' + value); + } + } + bindings.put(variable, 1); + + try { + engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE); + Double o = (Double) engine.eval("parseFloat(" + relation + ")"); + if (log.isDebugEnabled()) { + log.debug("evaluation ok : " + relation + " (" + variable + "=1) = " + o); + } + result = true; + } catch (Exception e) { + if (log.isDebugEnabled()) { + log.debug("evalution ko : " + relation + ", reason : " + e.getMessage()); + } + } + } + return result; + } + + +} diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/LengthLengthParameterDto.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/LengthLengthParameterDto.java new file mode 100644 index 0000000..7de2353 --- /dev/null +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/LengthLengthParameterDto.java @@ -0,0 +1,48 @@ +package fr.ird.observe.services.dto.referential; + +import java.util.Map; + +public class LengthLengthParameterDto extends GeneratedLengthLengthParameterDto implements FormulaHelper.FormulaSupport { + + private static final long serialVersionUID = 1L; + + private Map<String, Double> coefficients; + + @Override + public void setCoefficients(String coefficients) { + super.setCoefficients(coefficients); + this.coefficients = null; + revalidateFormulaOne(); + revalidateFormulaTwo(); + } + + @Override + public void setInputOutputFormula(String inputOutputFormula) { + super.setInputOutputFormula(inputOutputFormula); + revalidateFormulaOne(); + } + + @Override + public void setOutputInputFormula(String outputInputFormula) { + super.setOutputInputFormula(outputInputFormula); + revalidateFormulaTwo(); + } + + public void revalidateFormulaOne() { + boolean result = FormulaHelper.validateRelation(this, inputOutputFormula, FormulaHelper.VARIABLE_INPUT); + setInputOutputFormulaValid(result); + } + + public void revalidateFormulaTwo() { + boolean result = FormulaHelper.validateRelation(this, outputInputFormula, FormulaHelper.VARIABLE_OUTPUT); + setOutputInputFormulaValid(result); + } + + @Override + public Map<String, Double> getCoefficientValues() { + if (coefficients == null) { + coefficients = FormulaHelper.getCoefficientValues(this); + } + return coefficients; + } +} diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/LengthWeightParameterDto.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/LengthWeightParameterDto.java new file mode 100644 index 0000000..37ddde3 --- /dev/null +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/LengthWeightParameterDto.java @@ -0,0 +1,48 @@ +package fr.ird.observe.services.dto.referential; + +import java.util.Map; + +public class LengthWeightParameterDto extends GeneratedLengthWeightParameterDto implements FormulaHelper.FormulaSupport { + + private static final long serialVersionUID = 1L; + + private Map<String, Double> coefficients; + + @Override + public void setCoefficients(String coefficients) { + super.setCoefficients(coefficients); + this.coefficients = null; + revalidateFormulaOne(); + revalidateFormulaTwo(); + } + + @Override + public void setLengthWeightFormula(String value) { + super.setLengthWeightFormula(value); + revalidateFormulaOne(); + } + + @Override + public void setWeightLengthFormula(String value) { + super.setWeightLengthFormula(value); + revalidateFormulaTwo(); + } + + public void revalidateFormulaOne() { + boolean result = FormulaHelper.validateRelation(this, lengthWeightFormula, FormulaHelper.VARIABLE_LENGTH); + setLengthWeightFormulaValid(result); + } + + public void revalidateFormulaTwo() { + boolean result = FormulaHelper.validateRelation(this, weightLengthFormula, FormulaHelper.VARIABLE_WEIGHT); + setWeightLengthFormulaValid(result); + } + + @Override + public Map<String, Double> getCoefficientValues() { + if (coefficients == null) { + coefficients = FormulaHelper.getCoefficientValues(this); + } + return coefficients; + } +} diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialHelper.java index d50f683..8bce538 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialHelper.java @@ -82,6 +82,7 @@ public class ReferentialHelper extends GeneratedReferentialHelper { PersonDto.class, OceanDto.class, OrganismDto.class, + LengthLengthParameterDto.class, LengthWeightParameterDto.class, ProgramDto.class, GearCaracteristicTypeDto.class, diff --git a/services-dto/src/main/xmi/observe-services-dto-common.zargo b/services-dto/src/main/xmi/observe-services-dto-common.zargo index 75fc35e..9a4b98d 100644 Binary files a/services-dto/src/main/xmi/observe-services-dto-common.zargo and b/services-dto/src/main/xmi/observe-services-dto-common.zargo differ diff --git a/services-dto/src/main/xmi/observe-services-dto-seine.zargo b/services-dto/src/main/xmi/observe-services-dto-seine.zargo index 5e95186..1530f0d 100644 Binary files a/services-dto/src/main/xmi/observe-services-dto-seine.zargo and b/services-dto/src/main/xmi/observe-services-dto-seine.zargo differ diff --git a/services-dto/src/main/xmi/observe-services-dto.ini b/services-dto/src/main/xmi/observe-services-dto.ini index 7d799cf..716637e 100644 --- a/services-dto/src/main/xmi/observe-services-dto.ini +++ b/services-dto/src/main/xmi/observe-services-dto.ini @@ -149,10 +149,15 @@ gearCaracteristicType.attributeGeneric = fr.ird.observe.services.dto.referential [class fr.ird.observe.services.dto.referential.Harbour] country.attributeGeneric = fr.ird.observe.services.dto.referential.Country +[class fr.ird.observe.services.dto.referential.LengthLengthParameter] +inpuSizeMeasureType.attributeGeneric = fr.ird.observe.services.dto.referential.SizeMeasureType +outputSizeMeasureType.attributeGeneric = fr.ird.observe.services.dto.referential.SizeMeasureType + [class fr.ird.observe.services.dto.referential.LengthWeightParameter] ocean.attributeGeneric = fr.ird.observe.services.dto.referential.Ocean sex.attributeGeneric = fr.ird.observe.services.dto.referential.Sex species.attributeGeneric = fr.ird.observe.services.dto.referential.Species +sizeMeasureType.attributeGeneric = fr.ird.observe.services.dto.referential.SizeMeasureType [class fr.ird.observe.services.dto.referential.Organism] country.attributeGeneric = fr.ird.observe.services.dto.referential.Country @@ -215,9 +220,10 @@ species.attributeGeneric = fr.ird.observe.services.dto.referential.SpeciesDto speciesFate.attributeGeneric = fr.ird.observe.services.dto.referential.seine.SpeciesFateDto [class fr.ird.observe.services.dto.seine.NonTargetLength] -sex.attributeGeneric = fr.ird.observe.services.dto.referential.SexDto -species.attributeGeneric = fr.ird.observe.services.dto.referential.SpeciesDto -speciesFate.attributeGeneric = fr.ird.observe.services.dto.referential.seine.SpeciesFateDto +sex.attributeGeneric = fr.ird.observe.services.dto.referential.Sex +species.attributeGeneric = fr.ird.observe.services.dto.referential.Species +speciesFate.attributeGeneric = fr.ird.observe.services.dto.referential.seine.SpeciesFate +sizeMeasureType.attributeGeneric = fr.ird.observe.services.dto.referential.SizeMeasureType [class fr.ird.observe.services.dto.seine.NonTargetSample] nonTargetLength.unique = true diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderEngineInitializer.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderEngineInitializer.java index cae8aa9..c3cd0dd 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderEngineInitializer.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/BinderEngineInitializer.java @@ -49,6 +49,7 @@ import fr.ird.observe.entities.referentiel.Gear; import fr.ird.observe.entities.referentiel.GearCaracteristic; import fr.ird.observe.entities.referentiel.GearCaracteristicType; import fr.ird.observe.entities.referentiel.Harbour; +import fr.ird.observe.entities.referentiel.LengthLengthParameter; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; import fr.ird.observe.entities.referentiel.Ocean; @@ -57,12 +58,14 @@ import fr.ird.observe.entities.referentiel.Person; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.referentiel.Sex; import fr.ird.observe.entities.referentiel.ShipOwner; +import fr.ird.observe.entities.referentiel.SizeMeasureType; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.referentiel.SpeciesGroup; import fr.ird.observe.entities.referentiel.SpeciesList; import fr.ird.observe.entities.referentiel.Vessel; import fr.ird.observe.entities.referentiel.VesselSizeCategory; import fr.ird.observe.entities.referentiel.VesselType; +import fr.ird.observe.entities.referentiel.WeightMeasureType; import fr.ird.observe.entities.referentiel.longline.BaitHaulingStatus; import fr.ird.observe.entities.referentiel.longline.BaitSettingStatus; import fr.ird.observe.entities.referentiel.longline.BaitType; @@ -83,11 +86,9 @@ import fr.ird.observe.entities.referentiel.longline.SensorBrand; import fr.ird.observe.entities.referentiel.longline.SensorDataFormat; import fr.ird.observe.entities.referentiel.longline.SensorType; import fr.ird.observe.entities.referentiel.longline.SettingShape; -import fr.ird.observe.entities.referentiel.SizeMeasureType; import fr.ird.observe.entities.referentiel.longline.StomacFullness; import fr.ird.observe.entities.referentiel.longline.TripType; import fr.ird.observe.entities.referentiel.longline.VesselActivityLongline; -import fr.ird.observe.entities.referentiel.WeightMeasureType; import fr.ird.observe.entities.referentiel.seine.DetectionMode; import fr.ird.observe.entities.referentiel.seine.ObjectFate; import fr.ird.observe.entities.referentiel.seine.ObjectOperation; @@ -159,6 +160,7 @@ import fr.ird.observe.services.dto.referential.GearCaracteristicDto; import fr.ird.observe.services.dto.referential.GearCaracteristicTypeDto; import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.services.dto.referential.HarbourDto; +import fr.ird.observe.services.dto.referential.LengthLengthParameterDto; import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; import fr.ird.observe.services.dto.referential.OceanDto; import fr.ird.observe.services.dto.referential.OrganismDto; @@ -167,12 +169,14 @@ import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SexDto; import fr.ird.observe.services.dto.referential.ShipOwnerDto; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.SpeciesGroupDto; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.services.dto.referential.VesselDto; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; import fr.ird.observe.services.dto.referential.VesselTypeDto; +import fr.ird.observe.services.dto.referential.WeightMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; @@ -193,11 +197,9 @@ import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; import fr.ird.observe.services.dto.referential.longline.SensorDataFormatDto; import fr.ird.observe.services.dto.referential.longline.SensorTypeDto; import fr.ird.observe.services.dto.referential.longline.SettingShapeDto; -import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.StomacFullnessDto; import fr.ird.observe.services.dto.referential.longline.TripTypeDto; import fr.ird.observe.services.dto.referential.longline.VesselActivityLonglineDto; -import fr.ird.observe.services.dto.referential.WeightMeasureTypeDto; import fr.ird.observe.services.dto.referential.seine.DetectionModeDto; import fr.ird.observe.services.dto.referential.seine.ObjectFateDto; import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; @@ -312,6 +314,7 @@ import fr.ird.observe.services.topia.binder.referential.HookSizeBinder; import fr.ird.observe.services.topia.binder.referential.HookTypeBinder; import fr.ird.observe.services.topia.binder.referential.ItemHorizontalPositionBinder; import fr.ird.observe.services.topia.binder.referential.ItemVerticalPositionBinder; +import fr.ird.observe.services.topia.binder.referential.LengthLengthParameterBinder; import fr.ird.observe.services.topia.binder.referential.LengthWeightParameterBinder; import fr.ird.observe.services.topia.binder.referential.LightsticksColorBinder; import fr.ird.observe.services.topia.binder.referential.LightsticksTypeBinder; @@ -483,6 +486,12 @@ class BinderEngineInitializer implements ObserveModelInitializer { } @Override + public void initLengthLengthParameterDto() { + referentialDtoToEntityTypeBuilder.put(LengthLengthParameterDto.class, LengthLengthParameter.class); + referentialBinderBuilder.put(LengthLengthParameterDto.class, new LengthLengthParameterBinder()); + } + + @Override public void initSaveResultDto() { } diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthLengthParameterBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthLengthParameterBinder.java new file mode 100644 index 0000000..4e1ec7b --- /dev/null +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthLengthParameterBinder.java @@ -0,0 +1,92 @@ +package fr.ird.observe.services.topia.binder.referential; + +/*- + * #%L + * ObServe :: Services ToPIA Implementation + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.entities.referentiel.LengthLengthParameter; +import fr.ird.observe.entities.referentiel.SizeMeasureType; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.LengthLengthParameterDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; + +/** + * Created on 24/11/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class LengthLengthParameterBinder extends ReferentialBinderSupport<LengthLengthParameter, LengthLengthParameterDto> { + + public LengthLengthParameterBinder() { + super(LengthLengthParameter.class, LengthLengthParameterDto.class); + } + + @Override + public void copyToEntity(ReferentialLocale referentialLocale, LengthLengthParameterDto dto, LengthLengthParameter entity) { + + copyDtoReferentialFieldsToEntity(dto, entity); + entity.setInputOutputFormula(dto.getInputOutputFormula()); + entity.setOutputInputFormula(dto.getOutputInputFormula()); + entity.setInputSizeMeasureType(toEntity(dto.getInputSizeMeasureType(), SizeMeasureType.class)); + entity.setOutputSizeMeasureType(toEntity(dto.getOutputSizeMeasureType(), SizeMeasureType.class)); + entity.setCoefficients(dto.getCoefficients()); + entity.setSource(dto.getSource()); + + } + + @Override + public void copyToDto(ReferentialLocale referentialLocale, LengthLengthParameter entity, LengthLengthParameterDto dto) { + + copyEntityReferentialFieldsToDto(entity, dto); + dto.setInputOutputFormula(entity.getInputOutputFormula()); + dto.setOutputInputFormula(entity.getOutputInputFormula()); + dto.setInputSizeMeasureType(toReferentialReference(referentialLocale, entity.getInputSizeMeasureType(), SizeMeasureTypeDto.class)); + dto.setOutputSizeMeasureType(toReferentialReference(referentialLocale, entity.getOutputSizeMeasureType(), SizeMeasureTypeDto.class)); + dto.setCoefficients(entity.getCoefficients()); + dto.setSource(entity.getSource()); + + } + + @Override + public ReferentialReference<LengthLengthParameterDto> toReferentialReference(ReferentialLocale referentialLocale, LengthLengthParameter entity) { + + return toReferentialReference(entity, + entity.getCode(), + getLabel(referentialLocale, entity.getInputSizeMeasureType()), + getLabel(referentialLocale, entity.getOutputSizeMeasureType()), + entity.getInputOutputFormula(), + entity.getOutputInputFormula()); + + } + + @Override + public ReferentialReference<LengthLengthParameterDto> toReferentialReference(ReferentialLocale referentialLocale, LengthLengthParameterDto dto) { + + return toReferentialReference(dto, + dto.getCode(), + getLabel(referentialLocale, dto.getInputSizeMeasureType()), + getLabel(referentialLocale, dto.getOutputSizeMeasureType()), + dto.getInputOutputFormula(), + dto.getOutputInputFormula()); + + } +} diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthWeightParameterBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthWeightParameterBinder.java index 6984921..c3b1201 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthWeightParameterBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/LengthWeightParameterBinder.java @@ -53,6 +53,7 @@ public class LengthWeightParameterBinder extends ReferentialBinderSupport<Length entity.setSpecies(toEntity(dto.getSpecies(), Species.class)); entity.setOcean(toEntity(dto.getOcean(), Ocean.class)); entity.setSex(toEntity(dto.getSex(), Sex.class)); + entity.setCoefficients(dto.getCoefficients()); entity.setSource(dto.getSource()); } @@ -66,6 +67,7 @@ public class LengthWeightParameterBinder extends ReferentialBinderSupport<Length dto.setSpecies(toReferentialReference(referentialLocale, entity.getSpecies(), SpeciesDto.class)); dto.setOcean(toReferentialReference(referentialLocale, entity.getOcean(), OceanDto.class)); dto.setSex(toReferentialReference(referentialLocale, entity.getSex(), SexDto.class)); + dto.setCoefficients(entity.getCoefficients()); dto.setSource(entity.getSource()); } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java index 8b84360..303240c 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java @@ -551,7 +551,7 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements } if (computeLength) { - Float newLength = lengthWeightParameter.computeLength(weight); + Float newLength = lengthWeightParameter.computeFromFomulaTwo(weight); if (newLength != null) { lengthWeightComputable.setLength(newLength); @@ -567,7 +567,7 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements } // on cherche obligatoirement a calculer le poids - Float newWeight = lengthWeightParameter.computeWeight(length); + Float newWeight = lengthWeightParameter.computeFromFomulaOne(length); if (newWeight != null) { lengthWeightComputable.setWeight(newWeight); @@ -612,7 +612,7 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements } if (computeLength) { - Float newLength = lengthWeightParameter.computeLength(weight); + Float newLength = lengthWeightParameter.computeFromFomulaTwo(weight); if (newLength != null) { lengthWeightComputable.setLength(newLength); @@ -626,7 +626,7 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements } // on cherche obligatoirement a calculer le poids - Float newWeight = lengthWeightParameter.computeWeight(length); + Float newWeight = lengthWeightParameter.computeFromFomulaOne(length); if (newWeight != null) { lengthWeightComputable.setWeight(newWeight); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.