This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 081446b64d9af155f8454f7f9d74ed9d17159435 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 2 12:24:16 2016 +0200 Assainissement de la gestion du quadrant --- .../src/main/resources/validators.xml | 3 +- ...ivityLonglineDto-ui-create-error-validation.xml | 10 +- ...ivityLonglineDto-ui-update-error-validation.xml | 10 +- .../SetLonglineDto-ui-create-error-validation.xml | 148 +++++++++++++++------ ...ActivitySeineDto-ui-create-error-validation.xml | 10 +- ...ActivitySeineDto-ui-update-error-validation.xml | 10 +- .../application-swing-validation_en_GB.properties | 6 + .../application-swing-validation_es_ES.properties | 6 + .../application-swing-validation_fr_FR.properties | 6 + .../src/test/resources/validators.xml | 1 + .../validators/QuadrantFieldDtoValidator.java | 54 ++++++++ .../ui/content/impl/longline/SetLonglineUI.jaxx | 4 + .../ui/content/impl/longline/SetLonglineUI.jcss | 8 ++ .../i18n/application-swing_en_GB.properties | 1 - .../i18n/application-swing_es_ES.properties | 1 - .../i18n/application-swing_fr_FR.properties | 1 - .../src/main/resources/validators.xml | 14 ++ .../main/xmi/observe-services-dto-longline.zargo | Bin 67306 -> 67504 bytes .../ActivityLongline-service-error-validation.xml | 12 +- .../SetLongline-service-error-validation.xml | 56 +++----- .../ActivitySeine-service-error-validation.xml | 10 +- .../services-topia-validation_en_GB.properties | 10 +- .../services-topia-validation_es_ES.properties | 10 +- .../services-topia-validation_fr_FR.properties | 10 +- .../src/test/resources/validators.xml | 1 + .../topia/validators/QuadrantFieldValidator.java | 53 ++++++++ 26 files changed, 295 insertions(+), 160 deletions(-) diff --git a/application-swing-configuration/src/main/resources/validators.xml b/application-swing-configuration/src/main/resources/validators.xml index fe41bf4..b98708f 100644 --- a/application-swing-configuration/src/main/resources/validators.xml +++ b/application-swing-configuration/src/main/resources/validators.xml @@ -61,6 +61,7 @@ <validator name="activityFinDeVeilleExists" class="fr.ird.observe.services.topia.validators.ActivityFinDeVeilleExistsValidator"/> <validator name="setLonglineUniqueHomeId" class="fr.ird.observe.services.topia.validators.SetLonglineUniqueHomeIdValidator"/> <validator name="setLonglineUniqueNumber" class="fr.ird.observe.services.topia.validators.SetLonglineUniqueNumberValidator"/> + <validator name="quadrant" class="fr.ird.observe.services.topia.validators.QuadrantFieldValidator"/> <!-- Les validateurs spécifique aux Dto dans observe --> <validator name="collectionUniqueKeyDto" class="fr.ird.observe.application.swing.validators.CollectionUniqueKeyDtoValidator"/> @@ -73,7 +74,7 @@ <validator name="activityFinDeVeilleExistsDto" class="fr.ird.observe.application.swing.validators.ActivityFinDeVeilleExistsDtoValidator"/> <validator name="setLonglineUniqueHomeIdDto" class="fr.ird.observe.application.swing.validators.SetLonglineUniqueHomeIdDtoValidator"/> <validator name="setLonglineUniqueNumberDto" class="fr.ird.observe.application.swing.validators.SetLonglineUniqueNumberDtoValidator"/> - + <validator name="quadrantDto" class="fr.ird.observe.application.swing.validators.QuadrantFieldDtoValidator"/> </validators> diff --git a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-create-error-validation.xml b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-create-error-validation.xml index be66943..50217d0 100644 --- a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-create-error-validation.xml +++ b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-create-error-validation.xml @@ -97,14 +97,8 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripLongline.ocean == null || quadrant == null || quadrant == 0 - || (currentTripLongline.ocean.getPropertyValue("code") == 3) - || (currentTripLongline.ocean.getPropertyValue("code") == 1 && ( quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) - || (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( quadrant == 1 || quadrant == 2)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> <message> validator.ui.activity.invalid.quadrant##${currentTripLongline.ocean.getPropertyValue("label")} </message> diff --git a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-update-error-validation.xml b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-update-error-validation.xml index 7b9454c..78878f2 100644 --- a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-update-error-validation.xml +++ b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/ActivityLonglineDto-ui-update-error-validation.xml @@ -82,14 +82,8 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripLongline.ocean == null || quadrant == null || quadrant == 0 - || (currentTripLongline.ocean.getPropertyValue("code") == 3) - || (currentTripLongline.ocean.getPropertyValue("code") == 1 && ( quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) - || (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( quadrant == 1 || quadrant == 2)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> <message> validator.ui.activity.invalid.quadrant##${currentTripLongline.ocean.getPropertyValue("label")} </message> diff --git a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/SetLonglineDto-ui-create-error-validation.xml b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/SetLonglineDto-ui-create-error-validation.xml index 75586a5..86d4479 100644 --- a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/SetLonglineDto-ui-create-error-validation.xml +++ b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/longline/SetLonglineDto-ui-create-error-validation.xml @@ -216,6 +216,22 @@ </field> + <field name="settingStartQuadrant"> + + <field-validator type="required" short-circuit="true"> + <message>validator.ui.setLongline.required.quadrant</message> + </field-validator> + + <!-- coherence quadrant par rapport a l'ocean de la maree --> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> + <message> + validator.ui.setLongline.invalid.quadrant##${currentTripLongline.ocean.getPropertyValue("label")} + </message> + </field-validator> + + </field> + <field name="settingStartLatitude"> <!-- settingStartLatitude obligatoire --> @@ -250,21 +266,37 @@ </message> </field-validator> + <!--<!– coherence quadrant par rapport a l'ocean de la maree –>--> + <!--<field-validator type="fieldexpression" short-circuit="true">--> + <!--<param name="expression"><![CDATA[--> + <!--currentTripLongline.ocean == null || settingStartLongitude == null || settingStartLatitude == null--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 3)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 1)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( settingStartLongitude >= 0))--> + <!--]]>--> + <!--</param>--> + <!--<message>--> + <!--validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")}--> + <!--</message>--> + <!--</field-validator>--> + + + </field> + + <field name="settingEndQuadrant"> + + <field-validator type="required" short-circuit="true"> + <message>validator.ui.setLongline.required.quadrant</message> + </field-validator> + <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripLongline.ocean == null || settingStartLongitude == null || settingStartLatitude == null - || (currentTripLongline.ocean.getPropertyValue("code") == 3) - || (currentTripLongline.ocean.getPropertyValue("code") == 1) - || (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( settingStartLongitude >= 0)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> <message> - validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")} + validator.ui.setLongline.invalid.quadrant##${currentTripLongline.ocean.getPropertyValue("label")} </message> </field-validator> - </field> <field name="settingEndLatitude"> @@ -301,21 +333,36 @@ </message> </field-validator> + <!--<!– coherence quadrant par rapport a l'ocean de la maree –>--> + <!--<field-validator type="fieldexpression" short-circuit="true">--> + <!--<param name="expression"><![CDATA[--> + <!--currentTripLongline.ocean == null || settingEndLongitude == null || settingEndLatitude == null--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 3)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 1)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( settingEndLongitude >= 0))--> + <!--]]>--> + <!--</param>--> + <!--<message>--> + <!--validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")}--> + <!--</message>--> + <!--</field-validator>--> + + </field> + + <field name="haulingStartQuadrant"> + + <field-validator type="required" short-circuit="true"> + <message>validator.ui.setLongline.required.quadrant</message> + </field-validator> + <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripLongline.ocean == null || settingEndLongitude == null || settingEndLatitude == null - || (currentTripLongline.ocean.getPropertyValue("code") == 3) - || (currentTripLongline.ocean.getPropertyValue("code") == 1) - || (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( settingEndLongitude >= 0)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> <message> - validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")} + validator.ui.setLongline.invalid.quadrant##${currentTripLongline.ocean.getPropertyValue("label")} </message> </field-validator> - </field> <field name="haulingStartLatitude"> @@ -352,24 +399,39 @@ </message> </field-validator> + <!--<!– coherence quadrant par rapport a l'ocean de la maree –>--> + <!--<field-validator type="fieldexpression" short-circuit="true">--> + <!--<param name="expression"><![CDATA[--> + <!--currentTripLongline.ocean == null || haulingStartLongitude == null || haulingStartLatitude == null--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 3)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 1)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( haulingStartLongitude >= 0))--> + <!--]]>--> + <!--</param>--> + <!--<message>--> + <!--validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")}--> + <!--</message>--> + <!--</field-validator>--> + + + </field> + + <field name="haulingEndQuadrant"> + + <field-validator type="required" short-circuit="true"> + <message>validator.ui.setLongline.required.quadrant</message> + </field-validator> + <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripLongline.ocean == null || haulingStartLongitude == null || haulingStartLatitude == null - || (currentTripLongline.ocean.getPropertyValue("code") == 3) - || (currentTripLongline.ocean.getPropertyValue("code") == 1) - || (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( haulingStartLongitude >= 0)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> <message> - validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")} + validator.ui.setLongline.invalid.quadrant##${currentTripLongline.ocean.getPropertyValue("label")} </message> </field-validator> - </field> - <field name="haulingEndLatitude"> <!-- haulingEndLatitude obligatoire --> @@ -405,18 +467,18 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripLongline.ocean == null || haulingEndLongitude == null || haulingEndLatitude == null - || (currentTripLongline.ocean.getPropertyValue("code") == 3) - || (currentTripLongline.ocean.getPropertyValue("code") == 1) - || (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( haulingEndLongitude >= 0)) - ]]> - </param> - <message> - validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")} - </message> - </field-validator> + <!--<field-validator type="fieldexpression" short-circuit="true">--> + <!--<param name="expression"><![CDATA[--> + <!--currentTripLongline.ocean == null || haulingEndLongitude == null || haulingEndLatitude == null--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 3)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 1)--> + <!--|| (currentTripLongline.ocean.getPropertyValue("code") == 2 && ( haulingEndLongitude >= 0))--> + <!--]]>--> + <!--</param>--> + <!--<message>--> + <!--validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.getPropertyValue("label")}--> + <!--</message>--> + <!--</field-validator>--> </field> diff --git a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-create-error-validation.xml b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-create-error-validation.xml index b753e98..574f959 100644 --- a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-create-error-validation.xml +++ b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-create-error-validation.xml @@ -172,14 +172,8 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripSeine.ocean == null || quadrant == null || quadrant == 0 - || (currentTripSeine.ocean.getPropertyValue("code") == 3) - || (currentTripSeine.ocean.getPropertyValue("code") == 1 && ( quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) - || (currentTripSeine.ocean.getPropertyValue("code") == 2 && ( quadrant == 1 || quadrant == 2)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripSeine.ocean</param> <message> validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.libelle} </message> diff --git a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-update-error-validation.xml b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-update-error-validation.xml index 17df47d..4cccc67 100644 --- a/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-update-error-validation.xml +++ b/application-swing-validation/src/main/resources/fr/ird/observe/services/dto/seine/ActivitySeineDto-ui-update-error-validation.xml @@ -34,14 +34,8 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - currentTripSeine.ocean == null || quadrant == null || quadrant == 0 - || (currentTripSeine.ocean.getPropertyValue("code") == 3) - || (currentTripSeine.ocean.getPropertyValue("code") == 1 && ( quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) - || (currentTripSeine.ocean.getPropertyValue("code") == 2 && ( quadrant == 1 || quadrant == 2)) - ]]> - </param> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripSeine.ocean</param> <message> validator.ui.activity.invalid.quadrant##${currentTripSeine.ocean.libelle} </message> diff --git a/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties b/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties index d723326..f4fc4c3 100644 --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_en_GB.properties @@ -68,9 +68,11 @@ observe.common.haulingBreaks=Hauling breaks observe.common.haulingDirectionSameAsSetting=Hauling direction same as setting observe.common.haulingEndLatitude=Hauling end latitude observe.common.haulingEndLongitude=Hauling end longitude +observe.common.haulingEndQuadrant=Hauling end quadrant observe.common.haulingEndTimeStamp=Hauling end timeStamp observe.common.haulingStartLatitude=Hauling start latitude observe.common.haulingStartLongitude=Hauling start longitude +observe.common.haulingStartQuadrant=Hauling start quadrant observe.common.haulingStartTimeStamp=Hauling start timeStamp observe.common.homeId=Home id observe.common.hookOffset=Hook offset @@ -141,11 +143,13 @@ observe.common.sensorSerialNo=Sensor serial no observe.common.sensorType=Sensor type observe.common.settingEndLatitude=Setting end latitude observe.common.settingEndLongitude=Setting end longitude +observe.common.settingEndQuadrant=Setting end quadrant observe.common.settingEndTimeStamp=Setting end timeStamp observe.common.settingIdentifier=Setting identifier observe.common.settingShape=Setting shape observe.common.settingStartLatitude=Setting start latitude observe.common.settingStartLongitude=Setting start longitude +observe.common.settingStartQuadrant=Setting start quadrant observe.common.settingStartTimeStamp=Setting start timeStamp observe.common.settingVesselSpeed=Setting vessel speed observe.common.sex=Sex @@ -477,6 +481,7 @@ validator.ui.setLongline.duplicated.number=Number is already used in another fis validator.ui.setLongline.floatlinesComposition.uniqueKey=Tuple (type/length) must be unique. validator.ui.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp=Hauling end time must be after hauling start time. validator.ui.setLongline.hooksComposition.uniqueKey=Tuple (type/size/offet) must be unique. +validator.ui.setLongline.invalid.quadrant=Quadrant is not coherent with ocean (%1$s) of trip (indian\: 1,2, atlantic 1,2,3,4). validator.ui.setLongline.null.homeId=Home id is not filled. validator.ui.setLongline.required.basketsPerSectionCount=Baskets per section count must be filled. validator.ui.setLongline.required.branchlinesPerBasketCount=Branchlines per basket count must be filled. @@ -488,6 +493,7 @@ validator.ui.setLongline.required.haulingEndTimeStamp=Timestamp must be filled. validator.ui.setLongline.required.haulingStartLatitude=Latitude must be filled. validator.ui.setLongline.required.haulingStartLongitude=Longitude must be filled. validator.ui.setLongline.required.haulingStartTimeStamp=Timestamp must be filled. +validator.ui.setLongline.required.quadrant=Quadrant is mandatory. validator.ui.setLongline.required.settingEndLatitude=Latitude must be filled. validator.ui.setLongline.required.settingEndLongitude=Longitude must be filled. validator.ui.setLongline.required.settingEndTimeStamp=Timestamp must be filled. diff --git a/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties b/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties index e22a571..2985a39 100644 --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_es_ES.properties @@ -68,9 +68,11 @@ observe.common.haulingBreaks=Número de cortes observe.common.haulingDirectionSameAsSetting=Sentido del arrastre idéntico a lo de la calada observe.common.haulingEndLatitude=Arrastre Latitude observe.common.haulingEndLongitude=Arrastre Longitud +observe.common.haulingEndQuadrant=Arrastre quadrant observe.common.haulingEndTimeStamp=Timestamp de fin observe.common.haulingStartLatitude=Arrastre Latitude observe.common.haulingStartLongitude=Arrastre Longitud +observe.common.haulingStartQuadrant=Arrastre quadrant observe.common.haulingStartTimeStamp=Timestamp del inicio observe.common.homeId=Id de negocio observe.common.hookOffset=Offset anzuelo (°) @@ -141,11 +143,13 @@ observe.common.sensorSerialNo=Número de serie observe.common.sensorType=Tipo de sensor observe.common.settingEndLatitude=Calada latitude observe.common.settingEndLongitude=Calada longitud +observe.common.settingEndQuadrant=Calada quadrant observe.common.settingEndTimeStamp=Timestamp de fin observe.common.settingIdentifier=Identificador Calada observe.common.settingShape=Forma de la calada observe.common.settingStartLatitude=Calada latitude observe.common.settingStartLongitude=Calada longitud +observe.common.settingStartQuadrant=Calada quadrant observe.common.settingStartTimeStamp=Timestamp de inicio observe.common.settingVesselSpeed=Velocidad del barco (nd) observe.common.sex=Sexo @@ -477,6 +481,7 @@ validator.ui.setLongline.duplicated.number=El número ya está utilizado por na validator.ui.setLongline.floatlinesComposition.uniqueKey=La tupla (tipo/longitud) debe ser única, la tupa ya está utilizada. validator.ui.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp=La hora de fin de arrastre debe ser superior o igual a la hora de inicio de arrastre. validator.ui.setLongline.hooksComposition.uniqueKey=La tupla (tipo/tamaño/offset) debe ser única, la tupa ya está utilizada. +validator.ui.setLongline.invalid.quadrant=El cuadrante no es coherente con el informe del oceano (%1$s) de la marea (indico \: 1,2, atlantico \: 1, 2, 3, 4) validator.ui.setLongline.null.homeId=Id de negocio vacío. validator.ui.setLongline.required.basketsPerSectionCount=Número de cestas por sección vacío. validator.ui.setLongline.required.branchlinesPerBasketCount=Número de avanzuelos por cesta vacío. @@ -488,6 +493,7 @@ validator.ui.setLongline.required.haulingEndTimeStamp=Timestamp de fin de arrast validator.ui.setLongline.required.haulingStartLatitude=Latitud de inicio de arrastre vacía. validator.ui.setLongline.required.haulingStartLongitude=Longitud de inicio de arrastre vacía. validator.ui.setLongline.required.haulingStartTimeStamp=Timestamp de inicio de arrastre vacío. +validator.ui.setLongline.required.quadrant=Se debe seleccionar el cuadrante. validator.ui.setLongline.required.settingEndLatitude=Latitud de fin de calada vacíoe. validator.ui.setLongline.required.settingEndLongitude=longitud de fin de calada vacía. validator.ui.setLongline.required.settingEndTimeStamp=Timestamp de fin de calada vacío. diff --git a/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties b/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties index c9aa185..7dc9aeb 100644 --- a/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties +++ b/application-swing-validation/src/main/resources/i18n/application-swing-validation_fr_FR.properties @@ -68,9 +68,11 @@ observe.common.haulingBreaks=Nombre de coupures observe.common.haulingDirectionSameAsSetting=Sens du virage identique à celui du filage observe.common.haulingEndLatitude=Latitude de fin virage observe.common.haulingEndLongitude=Longitude de fin virage +observe.common.haulingEndQuadrant=Quand de fin de virage observe.common.haulingEndTimeStamp=Horodatage fin observe.common.haulingStartLatitude=Latitude de début de virage observe.common.haulingStartLongitude=Longitude de début de virage +observe.common.haulingStartQuadrant=Quadrant de début de virage observe.common.haulingStartTimeStamp=Horodatage début observe.common.homeId=Id métier observe.common.hookOffset=Offset hameçon (°) @@ -141,11 +143,13 @@ observe.common.sensorSerialNo=Numéro de série observe.common.sensorType=Type observe.common.settingEndLatitude=Latitude de fin de filage observe.common.settingEndLongitude=Longitude de fin de filage +observe.common.settingEndQuadrant=Quadrant de fin de filage observe.common.settingEndTimeStamp=Horodatage fin observe.common.settingIdentifier=Identifiant Filage observe.common.settingShape=Forme du filage observe.common.settingStartLatitude=Latitude de début de filage observe.common.settingStartLongitude=\=Longitude de début de filage +observe.common.settingStartQuadrant=Quadrant de début de filage observe.common.settingStartTimeStamp=Horodatage début observe.common.settingVesselSpeed=Vitesse bateau (nd) observe.common.sex=Sexe @@ -477,6 +481,7 @@ validator.ui.setLongline.duplicated.number=Le numéro est déjà utilisé par un validator.ui.setLongline.floatlinesComposition.uniqueKey=Le tuple (type/longueur) doit être unique, le tuple est déjà utilisé. validator.ui.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp=L'heure de fin de virage doit être supérieure ou égal à l'heure de début de virage. validator.ui.setLongline.hooksComposition.uniqueKey=Le tuple (type/taille/offset) doit être unique, le tuple est déjà utilisé. +validator.ui.setLongline.invalid.quadrant=Le quadrant n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1,2, atlantique \: 1, 2, 3, 4) validator.ui.setLongline.null.homeId=Id métier non renseigné. validator.ui.setLongline.required.basketsPerSectionCount=Nombre de paniers par section non renseigné. validator.ui.setLongline.required.branchlinesPerBasketCount=Nombre d'hameçons par panier non renseigné. @@ -488,6 +493,7 @@ validator.ui.setLongline.required.haulingEndTimeStamp=Horodatage de fin de virag validator.ui.setLongline.required.haulingStartLatitude=Latitude de début de virage non renseignée. validator.ui.setLongline.required.haulingStartLongitude=longitude de début de virage non renseignée. validator.ui.setLongline.required.haulingStartTimeStamp=Horodatage de début de virage non renseigné. +validator.ui.setLongline.required.quadrant=Le quadrant est obligatoire. validator.ui.setLongline.required.settingEndLatitude=Latitude de fin de filage non renseignée. validator.ui.setLongline.required.settingEndLongitude=longitude de fin de filage non renseignée. validator.ui.setLongline.required.settingEndTimeStamp=Horodatage de fin de filage non renseigné. diff --git a/application-swing-validation/src/test/resources/validators.xml b/application-swing-validation/src/test/resources/validators.xml index b49e747..07f0918 100644 --- a/application-swing-validation/src/test/resources/validators.xml +++ b/application-swing-validation/src/test/resources/validators.xml @@ -62,5 +62,6 @@ <validator name="activityFinDeVeilleExistsDto" class="fr.ird.observe.application.swing.validators.ActivityFinDeVeilleExistsDtoValidator"/> <validator name="setLonglineUniqueHomeIdDto" class="fr.ird.observe.application.swing.validators.SetLonglineUniqueHomeIdDtoValidator"/> <validator name="setLonglineUniqueNumberDto" class="fr.ird.observe.application.swing.validators.SetLonglineUniqueNumberDtoValidator"/> + <validator name="quadrantDto" class="fr.ird.observe.application.swing.validators.QuadrantFieldDtoValidator"/> </validators> diff --git a/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/QuadrantFieldDtoValidator.java b/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/QuadrantFieldDtoValidator.java new file mode 100644 index 0000000..205c88e --- /dev/null +++ b/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/QuadrantFieldDtoValidator.java @@ -0,0 +1,54 @@ +package fr.ird.observe.application.swing.validators; + +import com.opensymphony.xwork2.validator.ValidationException; +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import fr.ird.observe.services.dto.referential.OceanDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +/** + * Created on 02/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class QuadrantFieldDtoValidator extends FieldValidatorSupport { + + private String ocean; + + public void setOcean(String ocean) { + this.ocean = ocean; + } + + @Override + public void validate(Object object) throws ValidationException { + + String fieldName = getFieldName(); + if (fieldName == null) { + throw new ValidationException("No parameter 'fieldName' filled"); + } + + ReferentialReference<OceanDto> ocean = (ReferentialReference<OceanDto>) getFieldValue(this.ocean, object); + if (ocean == null) { + throw new ValidationException("could not find trip named: " + this.ocean); + } + + Integer quadrant = (Integer) getFieldValue(fieldName, object); + if (quadrant == null) { + return; + } + + Integer code = Integer.valueOf((String) ocean.getPropertyValue(OceanDto.PROPERTY_CODE)); + boolean valid = code == 3 + || (code == 1 && (quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) + || (code == 2 && (quadrant == 1 || quadrant == 2)); + + if (!valid) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "quadrantDto"; + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx index d5bf555..863e437 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx @@ -72,15 +72,19 @@ <field name='settingStartLongitude' component='settingStartCoordinates'/> <field name='settingStartLatitude' component='settingStartCoordinates'/> + <field name='settingStartQuadrant' component='settingStartCoordinates'/> <field name='settingEndLongitude' component='settingEndCoordinates'/> <field name='settingEndLatitude' component='settingEndCoordinates'/> + <field name='settingEndQuadrant' component='settingEndCoordinates'/> <field name='haulingStartLongitude' component='haulingStartCoordinates'/> <field name='haulingStartLatitude' component='haulingStartCoordinates'/> + <field name='haulingStartQuadrant' component='haulingStartCoordinates'/> <field name='haulingEndLongitude' component='haulingEndCoordinates'/> <field name='haulingEndLatitude' component='haulingEndCoordinates'/> + <field name='haulingEndQuadrant' component='haulingEndCoordinates'/> </BeanValidator> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss index b67e2df..4b8e3c5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss @@ -79,8 +79,10 @@ #settingStartCoordinates { propertyLatitude:{SetLonglineDto.PROPERTY_SETTING_START_LATITUDE}; propertyLongitude:{SetLonglineDto.PROPERTY_SETTING_START_LONGITUDE}; + propertyQuadrant:{SetLonglineDto.PROPERTY_SETTING_START_QUADRANT}; latitude:{bean.getSettingStartLatitude()}; longitude:{bean.getSettingStartLongitude()}; + quadrant:{bean.getSettingStartQuadrant()}; _validatorLabel:{t("observe.content.setLongline.settingStartCoordinates")}; } @@ -98,8 +100,10 @@ #settingEndCoordinates { propertyLatitude:{SetLonglineDto.PROPERTY_SETTING_END_LATITUDE}; propertyLongitude:{SetLonglineDto.PROPERTY_SETTING_END_LONGITUDE}; + propertyQuadrant:{SetLonglineDto.PROPERTY_SETTING_END_QUADRANT}; latitude:{bean.getSettingEndLatitude()}; longitude:{bean.getSettingEndLongitude()}; + quadrant:{bean.getSettingEndQuadrant()}; _validatorLabel:{t("observe.content.setLongline.settingEndCoordinates")}; } @@ -365,8 +369,10 @@ #haulingStartCoordinates { propertyLatitude:{SetLonglineDto.PROPERTY_HAULING_START_LATITUDE}; propertyLongitude:{SetLonglineDto.PROPERTY_HAULING_START_LONGITUDE}; + propertyQuadrant:{SetLonglineDto.PROPERTY_HAULING_START_QUADRANT}; latitude:{bean.getHaulingStartLatitude()}; longitude:{bean.getHaulingStartLongitude()}; + quadrant:{bean.getHaulingStartQuadrant()}; _validatorLabel:{t("observe.content.setLongline.haulingStartCoordinates")}; } @@ -380,8 +386,10 @@ #haulingEndCoordinates { propertyLatitude:{SetLonglineDto.PROPERTY_HAULING_END_LATITUDE}; propertyLongitude:{SetLonglineDto.PROPERTY_HAULING_END_LONGITUDE}; + propertyQuadrant:{SetLonglineDto.PROPERTY_HAULING_END_QUADRANT}; latitude:{bean.getHaulingEndLatitude()}; longitude:{bean.getHaulingEndLongitude()}; + quadrant:{bean.getHaulingEndQuadrant()}; _validatorLabel:{t("observe.content.setLongline.haulingEndCoordinates")}; } diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index c4d711a..9cfc458 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -1769,7 +1769,6 @@ observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.BACKUP=Save observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.BACKUP.description=Save local database before changing data source observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE=Mode observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE.description=Choose connexion mode -observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE.detail=Data source type observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG=Configuration observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG.description=Configure selected data source observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG_DATA=Data diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index 822931f..4d56c98 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -1769,7 +1769,6 @@ observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.BACKUP=Copi observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.BACKUP.description=Guardadar la base local antes de cambiar la fuente de datos observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE=Modo observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE.description=Elegir el modo de conexión -observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE.detail=Tipo de fuente de datos observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG=Configuración observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG.description=Configurar la fuente de datos seleccionado observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG_DATA=Datos diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index 5525b99..c5fdfcc 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -1769,7 +1769,6 @@ observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.BACKUP=Sauv observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.BACKUP.description=Sauvegarder la base locale avant de changer de source de données observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE=Mode observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE.description=Choisir le mode de connexion -observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CHOOSE_DB_MODE.detail=Type de source de données observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG=Configuration observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG.description=Configurer la source de données sélectionnée observe.enum.fr.ird.observe.application.swing.ui.storage.StorageStep.CONFIG_DATA=Données diff --git a/application-web-configuration/src/main/resources/validators.xml b/application-web-configuration/src/main/resources/validators.xml index cfebc8f..367fc0c 100644 --- a/application-web-configuration/src/main/resources/validators.xml +++ b/application-web-configuration/src/main/resources/validators.xml @@ -61,5 +61,19 @@ <validator name="activityFinDeVeilleExists" class="fr.ird.observe.services.topia.validators.ActivityFinDeVeilleExistsValidator"/> <validator name="setLonglineUniqueHomeId" class="fr.ird.observe.services.topia.validators.SetLonglineUniqueHomeIdValidator"/> <validator name="setLonglineUniqueNumber" class="fr.ird.observe.services.topia.validators.SetLonglineUniqueNumberValidator"/> + <validator name="quadrant" class="fr.ird.observe.services.topia.validators.QuadrantFieldValidator"/> + + <!-- Les validateurs spécifique aux Dto dans observe --> + <validator name="collectionUniqueKeyDto" class="fr.ird.observe.application.swing.validators.CollectionUniqueKeyDtoValidator"/> + <validator name="observeCollectionUniqueKeyDto" class="fr.ird.observe.application.swing.validators.ObserveCollectionUniqueKeyDtoValidator"/> + <validator name="openableDto" class="fr.ird.observe.application.swing.validators.OpenableDtoFieldValidator"/> + <validator name="species_lengthDto" class="fr.ird.observe.application.swing.validators.SpeciesLengthFieldDtoValidator"/> + <validator name="species_weightDto" class="fr.ird.observe.application.swing.validators.SpeciesWeightFieldDtoValidator"/> + <validator name="activitySpeedDto" class="fr.ird.observe.application.swing.validators.ActivitySpeedDtoValidator"/> + <validator name="activitySimpleSpeedDto" class="fr.ird.observe.application.swing.validators.ActivitySimpleSpeedDtoValidator"/> + <validator name="activityFinDeVeilleExistsDto" class="fr.ird.observe.application.swing.validators.ActivityFinDeVeilleExistsDtoValidator"/> + <validator name="setLonglineUniqueHomeIdDto" class="fr.ird.observe.application.swing.validators.SetLonglineUniqueHomeIdDtoValidator"/> + <validator name="setLonglineUniqueNumberDto" class="fr.ird.observe.application.swing.validators.SetLonglineUniqueNumberDtoValidator"/> + <validator name="quadrantDto" class="fr.ird.observe.application.swing.validators.QuadrantFieldDtoValidator"/> </validators> diff --git a/services-model/src/main/xmi/observe-services-dto-longline.zargo b/services-model/src/main/xmi/observe-services-dto-longline.zargo index dcf7570..5c61e0c 100644 Binary files a/services-model/src/main/xmi/observe-services-dto-longline.zargo and b/services-model/src/main/xmi/observe-services-dto-longline.zargo differ diff --git a/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/ActivityLongline-service-error-validation.xml b/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/ActivityLongline-service-error-validation.xml index 6eb146d..af137e9 100644 --- a/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/ActivityLongline-service-error-validation.xml +++ b/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/ActivityLongline-service-error-validation.xml @@ -67,16 +67,10 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - tripLonglineEntity.ocean == null || quadrant == null || quadrant == 0 - || (tripLonglineEntity.ocean.code == 3) - || (tripLonglineEntity.ocean.code == 1 && ( quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) - || (tripLonglineEntity.ocean.code == 2 && ( quadrant == 1 || quadrant == 2)) - ]]> - </param> + <field-validator type="quadrant" short-circuit="true"> + <param name="ocean">tripLonglineEntity.ocean</param> <message> - validator.service.activity.invalid.quadrant##${tripLonglineEntity.ocean.libelle} + validator.service.activity.invalid.quadrant##${tripLonglineEntity.ocean.getProperty("label")} </message> </field-validator> diff --git a/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/SetLongline-service-error-validation.xml b/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/SetLongline-service-error-validation.xml index b646c90..64c893d 100644 --- a/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/SetLongline-service-error-validation.xml +++ b/services-topia-validation/src/main/resources/fr/ird/observe/entities/longline/SetLongline-service-error-validation.xml @@ -219,20 +219,14 @@ <field name="settingStartQuadrant"> <field-validator type="required" short-circuit="true"> - <message>validator.service.setLongline.required.settingStartQuadrant</message> + <message>validator.service.setLongline.required.quadrant</message> </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - tripLonglineEntity.ocean == null || settingStartQuadrant == null || settingStartQuadrant == 0 - || (tripLonglineEntity.ocean.code == 3) - || (tripLonglineEntity.ocean.code == 1 && ( settingStartQuadrant == 1 || settingStartQuadrant == 2 || settingStartQuadrant == 3 || settingStartQuadrant == 4)) - || (tripLonglineEntity.ocean.code == 2 && ( settingStartQuadrant == 1 || settingStartQuadrant == 2)) - ]]> - </param> + <field-validator type="quadrant" short-circuit="true"> + <param name="ocean">tripLonglineEntity.ocean</param> <message> - validator.service.setLongline.invalid.settingStartQuadrant##${tripLonglineEntity.ocean.libelle} + validator.service.setLongline.invalid.quadrant##${tripLonglineEntity.ocean.libelle} </message> </field-validator> @@ -241,20 +235,14 @@ <field name="settingEndQuadrant"> <field-validator type="required" short-circuit="true"> - <message>validator.service.setLongline.required.settingEndQuadrant</message> + <message>validator.service.setLongline.required.quadrant</message> </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - tripLonglineEntity.ocean == null || settingEndQuadrant == null || settingEndQuadrant == 0 - || (tripLonglineEntity.ocean.code == 3) - || (tripLonglineEntity.ocean.code == 1 && ( settingEndQuadrant == 1 || settingEndQuadrant == 2 || settingEndQuadrant == 3 || settingEndQuadrant == 4)) - || (tripLonglineEntity.ocean.code == 2 && ( settingEndQuadrant == 1 || settingEndQuadrant == 2)) - ]]> - </param> + <field-validator type="quadrant" short-circuit="true"> + <param name="ocean">tripLonglineEntity.ocean</param> <message> - validator.service.setLongline.invalid.settingEndQuadrant##${tripLonglineEntity.ocean.libelle} + validator.service.setLongline.invalid.quadrant##${tripLonglineEntity.ocean.libelle} </message> </field-validator> @@ -264,20 +252,14 @@ <field name="haulingStartQuadrant"> <field-validator type="required" short-circuit="true"> - <message>validator.service.setLongline.required.haulingStartQuadrant</message> + <message>validator.service.setLongline.required.quadrant</message> </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - tripLonglineEntity.ocean == null || haulingStartQuadrant == null || haulingStartQuadrant == 0 - || (tripLonglineEntity.ocean.code == 3) - || (tripLonglineEntity.ocean.code == 1 && ( haulingStartQuadrant == 1 || haulingStartQuadrant == 2 || haulingStartQuadrant == 3 || haulingStartQuadrant == 4)) - || (tripLonglineEntity.ocean.code == 2 && ( haulingStartQuadrant == 1 || haulingStartQuadrant == 2)) - ]]> - </param> + <field-validator type="quadrant" short-circuit="true"> + <param name="ocean">tripLonglineEntity.ocean</param> <message> - validator.service.setLongline.invalid.haulingStartQuadrant##${tripLonglineEntity.ocean.libelle} + validator.service.setLongline.invalid.quadrant##${tripLonglineEntity.ocean.libelle} </message> </field-validator> @@ -286,20 +268,14 @@ <field name="haulingEndQuadrant"> <field-validator type="required" short-circuit="true"> - <message>validator.service.setLongline.required.haulingEndQuadrant</message> + <message>validator.service.setLongline.required.quadrant</message> </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - tripLonglineEntity.ocean == null || haulingEndQuadrant == null || haulingEndQuadrant == 0 - || (tripLonglineEntity.ocean.code == 3) - || (tripLonglineEntity.ocean.code == 1 && ( haulingEndQuadrant == 1 || haulingEndQuadrant == 2 || haulingEndQuadrant == 3 || haulingEndQuadrant == 4)) - || (tripLonglineEntity.ocean.code == 2 && ( haulingEndQuadrant == 1 || haulingEndQuadrant == 2)) - ]]> - </param> + <field-validator type="quadrant" short-circuit="true"> + <param name="ocean">tripLonglineEntity.ocean</param> <message> - validator.service.setLongline.invalid.haulingEndQuadrant##${tripLonglineEntity.ocean.libelle} + validator.service.setLongline.invalid.quadrant##${tripLonglineEntity.ocean.libelle} </message> </field-validator> diff --git a/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml b/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml index a0a5ed8..9e3cb0e 100644 --- a/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml +++ b/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml @@ -34,14 +34,8 @@ </field-validator> <!-- coherence quadrant par rapport a l'ocean de la maree --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ - quadrant == null || quadrant == 0 || tripSeineEntity.ocean == null - || (tripSeineEntity.ocean.code == 3) - || (tripSeineEntity.ocean.code == 1 && ( quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) - || (tripSeineEntity.ocean.code == 2 && ( quadrant == 1 || quadrant == 2)) - ]]> - </param> + <field-validator type="quadrant" short-circuit="true"> + <param name="ocean">tripSeineEntity.ocean</param> <message> validator.service.activity.invalid.quadrant##${tripSeineEntity.ocean.label2} </message> diff --git a/services-topia-validation/src/main/resources/i18n/services-topia-validation_en_GB.properties b/services-topia-validation/src/main/resources/i18n/services-topia-validation_en_GB.properties index bd0b9e7..4b6f6aa 100644 --- a/services-topia-validation/src/main/resources/i18n/services-topia-validation_en_GB.properties +++ b/services-topia-validation/src/main/resources/i18n/services-topia-validation_en_GB.properties @@ -463,10 +463,7 @@ validator.service.setLongline.duplicated.number=Number is already used in anothe validator.service.setLongline.floatlinesComposition.uniqueKey=Tuple (type/length) must be unique. validator.service.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp=Hauling end time must be after hauling start time. validator.service.setLongline.hooksComposition.uniqueKey=Tuple (type/size/offet) must be unique. -validator.service.setLongline.invalid.haulingEndQuadrant=Quadrant is not consistent with ocean (%1$s) of the trip (indian\: 1 or 2, atlantic\: 1, 2, 3 or 4). -validator.service.setLongline.invalid.haulingStartQuadrant=Quadrant is not consistent with ocean (%1$s) of the trip (indian\: 1 or 2, atlantic\: 1, 2, 3 or 4). -validator.service.setLongline.invalid.settingEndQuadrant=Quadrant is not consistent with ocean (%1$s) of the trip (indian\: 1 or 2, atlantic\: 1, 2, 3 or 4). -validator.service.setLongline.invalid.settingStartQuadrant=Quadrant is not consistent with ocean (%1$s) of the trip (indian\: 1 or 2, atlantic\: 1, 2, 3 or 4). +validator.service.setLongline.invalid.quadrant=Quadrant is not consistent with ocean (%1$s) of the trip (indian\: 1 or 2, atlantic\: 1, 2, 3 or 4). validator.service.setLongline.null.homeId=Home id is not filled. validator.service.setLongline.required.basketsPerSectionCount=Baskets per section count must be filled. validator.service.setLongline.required.branchlinesPerBasketCount=Branchlines per basket count must be filled. @@ -474,19 +471,16 @@ validator.service.setLongline.required.haulingBreaks=Hauling breaks must be fill validator.service.setLongline.required.haulingDirectionSameAsSetting=Hauling direction same as setting must be filled. validator.service.setLongline.required.haulingEndLatitude=Latitude must be filled. validator.service.setLongline.required.haulingEndLongitude=Longitude must be filled. -validator.service.setLongline.required.haulingEndQuadrant=Quadrant must be filled. validator.service.setLongline.required.haulingEndTimeStamp=Timestamp must be filled. validator.service.setLongline.required.haulingStartLatitude=Latitude must be filled. validator.service.setLongline.required.haulingStartLongitude=Longitude must be filled. -validator.service.setLongline.required.haulingStartQuadrant=Quadrant must be filled. validator.service.setLongline.required.haulingStartTimeStamp=Timestamp must be filled. +validator.service.setLongline.required.quadrant=Quadrant must be filled. validator.service.setLongline.required.settingEndLatitude=Latitude must be filled. validator.service.setLongline.required.settingEndLongitude=Longitude must be filled. -validator.service.setLongline.required.settingEndQuadrant=Quadrant must be filled. validator.service.setLongline.required.settingEndTimeStamp=Timestamp must be filled. validator.service.setLongline.required.settingStartLatitude=Latitude must be filled. validator.service.setLongline.required.settingStartLongitude=Longitude must be filled. -validator.service.setLongline.required.settingStartQuadrant=Quadrant must be filled. validator.service.setLongline.required.settingStartTimeStamp=Timestamp must be filled. validator.service.setLongline.required.totalSectionsCount=Total sections count must be filled. validator.service.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp=Setting end time must be before hauling start time. diff --git a/services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties b/services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties index df3d337..9a830fe 100644 --- a/services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties +++ b/services-topia-validation/src/main/resources/i18n/services-topia-validation_es_ES.properties @@ -463,10 +463,7 @@ validator.service.setLongline.duplicated.number=El número ya está utilizado po validator.service.setLongline.floatlinesComposition.uniqueKey=La tupla (tipo/longitud) debe ser única, la tupa ya está utilizada. validator.service.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp=La hora de fin de arrastre debe ser superior o igual a la hora de inicio de arrastre. validator.service.setLongline.hooksComposition.uniqueKey=La tupla (tipo/tamaño/offset) debe ser única, la tupa ya está utilizada. -validator.service.setLongline.invalid.haulingEndQuadrant=El cuadrante de fin de arrastre no es coherente con el oceano (%1$s) de la marea (Índico \: 1,2, atlántico \: 1, 2, 3, 4) -validator.service.setLongline.invalid.haulingStartQuadrant=El cuadrante de inicio de arrastre no es coherente con el oceano (%1$s) de la marea (Índico \: 1,2, atlántico \: 1, 2, 3, 4) -validator.service.setLongline.invalid.settingEndQuadrant=El cuadrante de fin de calada no es coherente con el oceano (%1$s) de la marea (Índico \: 1,2, atlántico \: 1, 2, 3, 4) -validator.service.setLongline.invalid.settingStartQuadrant=El cuadrante de inicio de calada no es coherente con el oceano (%1$s) de la marea (Índico \: 1,2, atlántico \: 1, 2, 3, 4) +validator.service.setLongline.invalid.quadrant=El cuadrante no es coherente con el oceano (%1$s) de la marea (Índico \: 1,2, atlántico \: 1, 2, 3, 4) validator.service.setLongline.null.homeId=Id de negocio vacío. validator.service.setLongline.required.basketsPerSectionCount=Número de cestas por sección vacío. validator.service.setLongline.required.branchlinesPerBasketCount=Número de avanzuelos por cesta vacío. @@ -474,19 +471,16 @@ validator.service.setLongline.required.haulingBreaks=Número de cortes vacío. validator.service.setLongline.required.haulingDirectionSameAsSetting=El campo no puede estar vacío. validator.service.setLongline.required.haulingEndLatitude=Latitud de fin de arrastre vacía. validator.service.setLongline.required.haulingEndLongitude=Longitud de fin de arrastre vacía. -validator.service.setLongline.required.haulingEndQuadrant=Cuadrante de fin de arrastre vacío. validator.service.setLongline.required.haulingEndTimeStamp=Timestamp de fin de arrastre vacío. validator.service.setLongline.required.haulingStartLatitude=Latitud de inicio de arrastre vacía. validator.service.setLongline.required.haulingStartLongitude=Longitud de inicio de arrastre vacía. -validator.service.setLongline.required.haulingStartQuadrant=Cuadrante de inicio de arrastre vacío validator.service.setLongline.required.haulingStartTimeStamp=Timestamp de inicio de arrastre vacío. +validator.service.setLongline.required.quadrant=Cuadrante vacío. validator.service.setLongline.required.settingEndLatitude=Latitud de fin de calada vacíoe. validator.service.setLongline.required.settingEndLongitude=longitud de fin de calada vacía. -validator.service.setLongline.required.settingEndQuadrant=Cuadrante de fin de calada vacío validator.service.setLongline.required.settingEndTimeStamp=Timestamp de fin de calada vacío. validator.service.setLongline.required.settingStartLatitude=Latitud de inicio de calada vacía. validator.service.setLongline.required.settingStartLongitude=Longitud de inicio de calada vacía. -validator.service.setLongline.required.settingStartQuadrant=Cuadrante de inicio de arrastre vacío validator.service.setLongline.required.settingStartTimeStamp=Timestamp de inicio de calada vacío. validator.service.setLongline.required.totalSectionsCount=Número de secciones vacío. validator.service.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp=La hora de inicio de arrastre debe ser superior o igual a la hora de fin de calada. diff --git a/services-topia-validation/src/main/resources/i18n/services-topia-validation_fr_FR.properties b/services-topia-validation/src/main/resources/i18n/services-topia-validation_fr_FR.properties index 60860bb..1ee040a 100644 --- a/services-topia-validation/src/main/resources/i18n/services-topia-validation_fr_FR.properties +++ b/services-topia-validation/src/main/resources/i18n/services-topia-validation_fr_FR.properties @@ -463,10 +463,7 @@ validator.service.setLongline.duplicated.number=Le numéro est déjà utilisé p validator.service.setLongline.floatlinesComposition.uniqueKey=Le tuple (type/longueur) doit être unique, le tuple est déjà utilisé. validator.service.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp=L'heure de fin de virage doit être supérieure ou égal à l'heure de début de virage. validator.service.setLongline.hooksComposition.uniqueKey=Le tuple (type/taille/offset) doit être unique, le tuple est déjà utilisé. -validator.service.setLongline.invalid.haulingEndQuadrant=Le quadrant de fin de virage n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1,2, atlantique \: 1, 2, 3, 4) -validator.service.setLongline.invalid.haulingStartQuadrant=Le quadrant de début de virage n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1,2, atlantique \: 1, 2, 3, 4) -validator.service.setLongline.invalid.settingEndQuadrant=Le quadrant de fin de filage n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1,2, atlantique \: 1, 2, 3, 4) -validator.service.setLongline.invalid.settingStartQuadrant=Le quadrant de début de filage n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1,2, atlantique \: 1, 2, 3, 4) +validator.service.setLongline.invalid.quadrant=Le quadrant n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1,2, atlantique \: 1, 2, 3, 4) validator.service.setLongline.null.homeId=Id métier non renseigné. validator.service.setLongline.required.basketsPerSectionCount=Nombre de paniers par section non renseigné. validator.service.setLongline.required.branchlinesPerBasketCount=Nombre d'hameçons par panier non renseigné. @@ -474,19 +471,16 @@ validator.service.setLongline.required.haulingBreaks=Nombre de coupures non rens validator.service.setLongline.required.haulingDirectionSameAsSetting=Le champ doit être renseigné. validator.service.setLongline.required.haulingEndLatitude=Latitude de fin de virage non renseignée. validator.service.setLongline.required.haulingEndLongitude=longitude de fin de virage non renseignée. -validator.service.setLongline.required.haulingEndQuadrant=Quadrant de fin de virage non renseigné. validator.service.setLongline.required.haulingEndTimeStamp=Horodatage de fin de virage non renseigné. validator.service.setLongline.required.haulingStartLatitude=Latitude de début de virage non renseignée. validator.service.setLongline.required.haulingStartLongitude=longitude de début de virage non renseignée. -validator.service.setLongline.required.haulingStartQuadrant=Quadrant de début de virage non renseigné. validator.service.setLongline.required.haulingStartTimeStamp=Horodatage de début de virage non renseigné. +validator.service.setLongline.required.quadrant=Quadrant non renseigné. validator.service.setLongline.required.settingEndLatitude=Latitude de fin de filage non renseignée. validator.service.setLongline.required.settingEndLongitude=longitude de fin de filage non renseignée. -validator.service.setLongline.required.settingEndQuadrant=Quadrant de fin de filage non renseigné. validator.service.setLongline.required.settingEndTimeStamp=Horodatage de fin de filage non renseigné. validator.service.setLongline.required.settingStartLatitude=Latitude de début de filage non renseignée. validator.service.setLongline.required.settingStartLongitude=longitude de début de filage non renseignée. -validator.service.setLongline.required.settingStartQuadrant=Quadrant de début de filage non renseigné. validator.service.setLongline.required.settingStartTimeStamp=Horodatage de début de filage non renseigné. validator.service.setLongline.required.totalSectionsCount=Nombre de sections non renseigné. validator.service.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp=L'heure de début de virage doit être supérieure ou égal à l'heure de fin de filage. diff --git a/services-topia-validation/src/test/resources/validators.xml b/services-topia-validation/src/test/resources/validators.xml index ce0ded5..dbe4cdc 100644 --- a/services-topia-validation/src/test/resources/validators.xml +++ b/services-topia-validation/src/test/resources/validators.xml @@ -61,5 +61,6 @@ <validator name="activityFinDeVeilleExists" class="fr.ird.observe.services.topia.validators.ActivityFinDeVeilleExistsValidator"/> <validator name="setLonglineUniqueHomeId" class="fr.ird.observe.services.topia.validators.SetLonglineUniqueHomeIdValidator"/> <validator name="setLonglineUniqueNumber" class="fr.ird.observe.services.topia.validators.SetLonglineUniqueNumberValidator"/> + <validator name="quadrant" class="fr.ird.observe.services.topia.validators.QuadrantFieldValidator"/> </validators> diff --git a/services-topia-validators/src/main/java/fr/ird/observe/services/topia/validators/QuadrantFieldValidator.java b/services-topia-validators/src/main/java/fr/ird/observe/services/topia/validators/QuadrantFieldValidator.java new file mode 100644 index 0000000..b00c104 --- /dev/null +++ b/services-topia-validators/src/main/java/fr/ird/observe/services/topia/validators/QuadrantFieldValidator.java @@ -0,0 +1,53 @@ +package fr.ird.observe.services.topia.validators; + +import com.opensymphony.xwork2.validator.ValidationException; +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import fr.ird.observe.entities.referentiel.Ocean; + +/** + * Created on 02/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class QuadrantFieldValidator extends FieldValidatorSupport { + + private String ocean; + + public void setOcean(String ocean) { + this.ocean = ocean; + } + + @Override + public void validate(Object object) throws ValidationException { + + String fieldName = getFieldName(); + if (fieldName == null) { + throw new ValidationException("No parameter 'fieldName' filled"); + } + + Ocean ocean = (Ocean) getFieldValue(this.ocean, object); + if (ocean == null) { + throw new ValidationException("could not find trip named: " + this.ocean); + } + + Integer quadrant = (Integer) getFieldValue(fieldName, object); + if (quadrant == null) { + return; + } + + Integer code = Integer.valueOf(ocean.getCode()); + boolean valid = code == 3 + || (code == 1 && (quadrant == 1 || quadrant == 2 || quadrant == 3 || quadrant == 4)) + || (code == 2 && (quadrant == 1 || quadrant == 2)); + + if (!valid) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "quadrant"; + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.