Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 78a74627 by Tony Chemit at 2023-09-14T10:13:01+02:00 Amélioration des messages pour la validation - See #2715 - - - - - c86d3772 by Tony Chemit at 2023-09-14T10:13:01+02:00 Ajouter une rège de validation sur les routes pour vérifier que les numéros d'ordre suivent bien une séquence partant de 1 - See #2783 - - - - - 27 changed files: - core/api/dto-decoration/src/main/i18n/getters/labels.getter - core/api/dto-validation/src/main/i18n/getters/java.getter - + core/api/dto-validation/src/main/java/fr/ird/observe/dto/validation/validators/data/ps/logbook/RouteCheckActivityNumber.java - core/api/dto-validation/src/main/resources/validators.xml - core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json - core/api/validation/src/main/i18n/getters/validation-messages.getter - core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/RouteDto-update-error-validation.xml - core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-create-error-validation.xml - core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-update-error-validation.xml - core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-create-error-validation.xml - core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-update-error-validation.xml - core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/RouteDto-update-error-validation.xml - core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-create-error-validation.xml - core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-update-error-validation.xml - core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-create-error-validation.xml - core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-update-error-validation.xml - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Route/validation-update.json - core/services/i18n/src/main/i18n/translations/services_en_GB.properties - core/services/i18n/src/main/i18n/translations/services_es_ES.properties - core/services/i18n/src/main/i18n/translations/services_fr_FR.properties - model/src/main/models/Observe/dto/class/i18nLabels.properties - server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update-error.xml - server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ps/logbook/TransmittingBuoy/validation-create-error.xml - server/runner/src/main/webResources/doc/api/public/data/ps/logbook/TransmittingBuoy/validation-update-error.xml - server/runner/src/main/webResources/doc/api/public/data/ps/observation/TransmittingBuoy/validation-create-error.xml - server/runner/src/main/webResources/doc/api/public/data/ps/observation/TransmittingBuoy/validation-update-error.xml Changes: ===================================== core/api/dto-decoration/src/main/i18n/getters/labels.getter ===================================== @@ -1012,7 +1012,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short observe.data.ps.logbook.SampleSpeciesMeasure.type observe.data.ps.logbook.TransmittingBuoy.code observe.data.ps.logbook.TransmittingBuoy.type -observe.data.ps.logbook.TransmittingBuoy.validation.code observe.data.ps.logbook.Well.action.create observe.data.ps.logbook.Well.action.move observe.data.ps.logbook.Well.action.move.choose.parent.message @@ -1235,7 +1234,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue observe.data.ps.observation.SpeciesFateDiscardMode.type observe.data.ps.observation.TransmittingBuoy.code observe.data.ps.observation.TransmittingBuoy.type -observe.data.ps.observation.TransmittingBuoy.validation.code observe.referential.MinMaxWeight.maxWeight observe.referential.MinMaxWeight.minMaxWeight observe.referential.MinMaxWeight.minMeanMaxWeight ===================================== core/api/dto-validation/src/main/i18n/getters/java.getter ===================================== @@ -18,6 +18,7 @@ observe.data.ps.Route.validation.invalid.quadrant observe.data.ps.Route.validation.invalid.time observe.data.ps.localmarket.SampleSampleSpecies.sampleSpecies.validation.uniqueKey observe.data.ps.localmarket.Survey.surveyPart.validation.uniqueKey +observe.data.ps.logbook.Route.activity.validation.badNumberSequence observe.data.ps.logbook.SampleSampleSpecies.sampleSpecies.validation.uniqueKey observe.data.ps.logbook.WellActivity.wellActivitySpecies.validation.uniqueKey observe.data.ps.observation.Activity.validation.speed.bound ===================================== core/api/dto-validation/src/main/java/fr/ird/observe/dto/validation/validators/data/ps/logbook/RouteCheckActivityNumber.java ===================================== @@ -0,0 +1,68 @@ +package fr.ird.observe.dto.validation.validators.data.ps.logbook; + +/*- + * #%L + * ObServe Core :: API :: Dto Validation + * %% + * Copyright (C) 2008 - 2023 IRD, Ultreia.io + * %% + * 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 com.opensymphony.xwork2.validator.ValidationException; +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import fr.ird.observe.dto.data.ps.logbook.ActivityDto; +import fr.ird.observe.dto.data.ps.logbook.ActivityStubDto; +import io.ultreia.java4all.i18n.I18n; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * Check that the {@link ActivityDto#getNumber()} follows a sequence starting at {@code 1}. + * <p> + * See <a href="https://gitlab.com/ultreiaio/ird-observe/-/issues/2783">issue 2783</a> + * <p> + * Created at 14/09/2023. + * + * @author Tony Chemit - dev@tchemit.fr + * @since 9.2.0 + */ +public class RouteCheckActivityNumber extends FieldValidatorSupport { + + private List<Integer> actualNumberOrder; + + public RouteCheckActivityNumber() { + setDefaultMessage(I18n.n("observe.data.ps.logbook.Route.activity.validation.badNumberSequence") + "##${actualNumberOrder}"); + } + + @Override + public void validate(Object object) throws ValidationException { + String fieldName = getFieldName(); + @SuppressWarnings("unchecked") Collection<ActivityStubDto> activities = (Collection<ActivityStubDto>) getFieldValue(fieldName, object); + actualNumberOrder = activities.stream().map(ActivityStubDto::getNumber).sorted().collect(Collectors.toList()); + List<Integer> expectedNumberOrder = IntStream.range(1, activities.size()).boxed().collect(Collectors.toList()); + if (actualNumberOrder.equals(expectedNumberOrder)) { + addFieldError(fieldName, object); + } + } + + public List<Integer> getActualNumberOrder() { + return actualNumberOrder; + } +} ===================================== core/api/dto-validation/src/main/resources/validators.xml ===================================== @@ -84,6 +84,7 @@ <validator name="psCommonTripCheckRouteObsDate" class="fr.ird.observe.dto.validation.validators.data.ps.common.TripCheckRouteObsDate"/> <validator name="psCommonTripCheckRouteObsLogValues" class="fr.ird.observe.dto.validation.validators.data.ps.common.TripCheckRouteObsLogValues"/> <validator name="psLogbookRouteCheckActivityQuadrant" class="fr.ird.observe.dto.validation.validators.data.ps.logbook.RouteCheckActivityQuadrant"/> + <validator name="psLogbookRouteCheckActivityNumber" class="fr.ird.observe.dto.validation.validators.data.ps.logbook.RouteCheckActivityNumber"/> <validator name="psObservationRouteCheckActivityTime" class="fr.ird.observe.dto.validation.validators.data.ps.observation.RouteCheckActivityTime"/> <validator name="psObservationRouteCheckActivityQuadrant" class="fr.ird.observe.dto.validation.validators.data.ps.observation.RouteCheckActivityQuadrant"/> <validator name="psObservationRouteCheckStartLogValue" class="fr.ird.observe.dto.validation.validators.data.ps.observation.RouteCheckStartLogValue"/> ===================================== core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json ===================================== @@ -11076,7 +11076,8 @@ { "name": "activity", "comments": [ - "activities quadrant check" + "activities quadrant check", + "list of number of activities must be a sequence starting at one." ] }, { ===================================== core/api/validation/src/main/i18n/getters/validation-messages.getter ===================================== @@ -57,6 +57,7 @@ observe.data.ll.observation.Tdr.validation.fishingStart.after.deploymentStart observe.data.ps.Route.validation.duplicated.date observe.data.ps.SampleSpecies.validation.mismatch.measuredCount observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber +observe.data.ps.TransmittingBuoy.validation.code observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled observe.data.ps.common.Trip.departureWellContentStatus.validation.required observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled @@ -90,7 +91,6 @@ observe.data.ps.logbook.Sample.totalWeight.validation.required observe.data.ps.logbook.Sample.weight.validation.not.required observe.data.ps.logbook.SampleSpecies.validation.endTime.after.startTime observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount -observe.data.ps.logbook.TransmittingBuoy.validation.code observe.data.ps.logbook.Well.validation.duplicated.well observe.data.ps.observation.Activity.validation.null.dcp observe.data.ps.observation.Activity.validation.required.observedSystem.for.catches ===================================== core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/RouteDto-update-error-validation.xml ===================================== @@ -29,6 +29,10 @@ <field-validator type="psLogbookRouteCheckActivityQuadrant"> <message/> </field-validator> + <!-- list of number of activities must be a sequence starting at one. --> + <field-validator type="psLogbookRouteCheckActivityNumber"> + <message/> + </field-validator> </field> <field name="comment"> ===================================== core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-create-error-validation.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-update-error-validation.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-create-error-validation.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-update-error-validation.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/RouteDto-update-error-validation.xml ===================================== @@ -35,5 +35,9 @@ <field-validator type="psLogbookRouteCheckActivityQuadrant"> <message/> </field-validator> + <!-- list of number of activities must be a sequence starting at one. --> + <field-validator type="psLogbookRouteCheckActivityNumber"> + <message/> + </field-validator> </field> </validators> ===================================== core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-create-error-validation.xml ===================================== @@ -25,9 +25,10 @@ <validators> <field name="code"> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> </validators> ===================================== core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-update-error-validation.xml ===================================== @@ -25,9 +25,10 @@ <validators> <field name="code"> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> </validators> ===================================== core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-create-error-validation.xml ===================================== @@ -25,9 +25,10 @@ <validators> <field name="code"> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> </validators> ===================================== core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-update-error-validation.xml ===================================== @@ -25,9 +25,10 @@ <validators> <field name="code"> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> </validators> ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Route/validation-update.json ===================================== @@ -1,7 +1,8 @@ { "activity": { "errors": [ - "activities quadrant check" + "activities quadrant check", + "list of number of activities must be a sequence starting at one." ] }, "comment": { ===================================== core/services/i18n/src/main/i18n/translations/services_en_GB.properties ===================================== @@ -923,6 +923,7 @@ observe.data.ps.Route.validation.invalid.quadrant=Activity quadrant at position observe.data.ps.Route.validation.invalid.time=Observation time can't be after the one of the previous activity (activity at position %1$s is not correct). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s) observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». +observe.data.ps.TransmittingBuoy.validation.code=The buoy identifier (%s) does not respect the following regular expression «%s». observe.data.ps.common.Trip.action.move.all=Move all observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip @@ -1147,6 +1148,7 @@ observe.data.ps.logbook.Route.action.move.choose.parent.message=Select target tr observe.data.ps.logbook.Route.action.move.choose.parent.title=Move routes to another trip observe.data.ps.logbook.Route.action.move.tip=Change trip of route(s) observe.data.ps.logbook.Route.activity=Activity +observe.data.ps.logbook.Route.activity.validation.badNumberSequence=The list of number of activities should be a sequence starting at 1 but was %s. observe.data.ps.logbook.Route.activityStat=Count of activities observe.data.ps.logbook.Route.date=Date observe.data.ps.logbook.Route.fishingTime=Fishing time (hh) @@ -1218,7 +1220,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Count observe.data.ps.logbook.SampleSpeciesMeasure.type=Sample species measure observe.data.ps.logbook.TransmittingBuoy.code=Code observe.data.ps.logbook.TransmittingBuoy.type=Transmitting buoy -observe.data.ps.logbook.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»). observe.data.ps.logbook.Well.action.create=Next well observe.data.ps.logbook.Well.action.move=Change trip observe.data.ps.logbook.Well.action.move.choose.parent.message=Select target trip @@ -1493,7 +1494,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue=Discarded observe.data.ps.observation.SpeciesFateDiscardMode.type=Species fate discard mode observe.data.ps.observation.TransmittingBuoy.code=Code observe.data.ps.observation.TransmittingBuoy.type=Transmitting buoy -observe.data.ps.observation.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»). observe.data.ps.pairing.ActivityPairingResultItem.computedDistance=Distance (km) observe.data.ps.pairing.ActivityPairingResultItem.computedTime=Time shift (days\:hours\:minutes) observe.data.ps.pairing.ActivityPairingResultItem.observationActivity=Observed activity ===================================== core/services/i18n/src/main/i18n/translations/services_es_ES.properties ===================================== @@ -923,6 +923,7 @@ observe.data.ps.Route.validation.invalid.quadrant=El cuadrante de la actividad % observe.data.ps.Route.validation.invalid.time=La hora de la observación de la actividad debe ser superior a la de la actividad anterior (actividad %1$s incorrecta). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s) observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». \#TODO +observe.data.ps.TransmittingBuoy.validation.code=El identificador de boya ingresado (%s) no respeta la sintaxis definida por la expresión regular “%s”. observe.data.ps.common.Trip.action.move.all=Move all observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip @@ -1147,6 +1148,7 @@ observe.data.ps.logbook.Route.action.move.choose.parent.message=Select target tr observe.data.ps.logbook.Route.action.move.choose.parent.title=Move routes to another trip observe.data.ps.logbook.Route.action.move.tip=Change trip of route(s) observe.data.ps.logbook.Route.activity=Actividad +observe.data.ps.logbook.Route.activity.validation.badNumberSequence=The list of number of activities should be a sequence starting at 1 but was %s. \#TODO observe.data.ps.logbook.Route.activityStat=Count of observations activities observe.data.ps.logbook.Route.date=Día de observación observe.data.ps.logbook.Route.fishingTime=fishing time (hh) \#TODO @@ -1218,7 +1220,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Count observe.data.ps.logbook.SampleSpeciesMeasure.type=Sample species measure observe.data.ps.logbook.TransmittingBuoy.code=Identificación observe.data.ps.logbook.TransmittingBuoy.type=TransmittingBuoy -observe.data.ps.logbook.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»). \#TODO observe.data.ps.logbook.Well.action.create=Next well observe.data.ps.logbook.Well.action.move=Change trip observe.data.ps.logbook.Well.action.move.choose.parent.message=Select target trip @@ -1493,7 +1494,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue=Discarded observe.data.ps.observation.SpeciesFateDiscardMode.type=Species fate discard mode observe.data.ps.observation.TransmittingBuoy.code=Identificación observe.data.ps.observation.TransmittingBuoy.type=TransmittingBuoy -observe.data.ps.observation.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»). \#TODO observe.data.ps.pairing.ActivityPairingResultItem.computedDistance=Distance (km) \#TODO observe.data.ps.pairing.ActivityPairingResultItem.computedTime=Time shift (days\:hours\:minutes) \#TODO observe.data.ps.pairing.ActivityPairingResultItem.observationActivity=Observed activity \#TODO ===================================== core/services/i18n/src/main/i18n/translations/services_fr_FR.properties ===================================== @@ -923,6 +923,7 @@ observe.data.ps.Route.validation.invalid.quadrant=Le quadrant de l’activité observe.data.ps.Route.validation.invalid.time=L'heure d'observation d'une activité doit être supérieure à celle de l'activité précédente (activité de position %1$s incorrecte). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Le nombre mesuré (%s) doit valoir la somme des effectifs de fréquences (%s) observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=Le numéro de sous-échantillon doit être strictement positif si l'échantillon est un « super échantillon ». +observe.data.ps.TransmittingBuoy.validation.code=L'identifiant de balise (%s) ne respecte pas la syntaxe définie via l'expression régulière «%s». observe.data.ps.common.Trip.action.move.all=Déplacer des données observe.data.ps.common.Trip.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ? observe.data.ps.common.Trip.action.move.all.choose.parent.title=Changer la marée des données sélectionnées @@ -1147,6 +1148,7 @@ observe.data.ps.logbook.Route.action.move.choose.parent.message=À quelle marée observe.data.ps.logbook.Route.action.move.choose.parent.title=Changer la marée des routes observe.data.ps.logbook.Route.action.move.tip=Changer la marée des routes sélectionnées observe.data.ps.logbook.Route.activity=Activité +observe.data.ps.logbook.Route.activity.validation.badNumberSequence=La liste des numéros d'ordre des activités devrait être une séquence commençant à 1 mais vaut %s. observe.data.ps.logbook.Route.activityStat=Nombre d'activités' observe.data.ps.logbook.Route.date=Le jour de route observe.data.ps.logbook.Route.fishingTime=Temps de pêche (hh) @@ -1218,7 +1220,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Effectif observe.data.ps.logbook.SampleSpeciesMeasure.type=Mesure d'un échantillon espèce observe.data.ps.logbook.TransmittingBuoy.code=Identifiant observe.data.ps.logbook.TransmittingBuoy.type=Balise émettrice -observe.data.ps.logbook.TransmittingBuoy.validation.code=La syntaxe n'est pas valide (la syntaxe est définie via l'expression régulière «%s»). observe.data.ps.logbook.Well.action.create=Cuve suivante observe.data.ps.logbook.Well.action.move=Changer de marée observe.data.ps.logbook.Well.action.move.choose.parent.message=À quelle marée voulez-vous associer les cuves sélectionnées ? @@ -1493,7 +1494,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue=Rejeté observe.data.ps.observation.SpeciesFateDiscardMode.type=Mode de rejet (du devenir) observe.data.ps.observation.TransmittingBuoy.code=Identifiant observe.data.ps.observation.TransmittingBuoy.type=Balise émettrice -observe.data.ps.observation.TransmittingBuoy.validation.code=La syntaxe n'est pas valide (la syntaxe est définie via l'expression régulière «%s») observe.data.ps.pairing.ActivityPairingResultItem.computedDistance=Distance (km) observe.data.ps.pairing.ActivityPairingResultItem.computedTime=Écart de temps (jours\:heures\:minutes) observe.data.ps.pairing.ActivityPairingResultItem.observationActivity=Activité observée ===================================== model/src/main/models/Observe/dto/class/i18nLabels.properties ===================================== @@ -80,7 +80,7 @@ data.ps.logbook.SampleActivity=activity,weightedWeight,weightedWeightComputed,we data.ps.logbook.SampleSampleSpecies=superSample,sampleSpecies,species data.ps.logbook.SampleSpecies=comment,measuredCount,sampleSpeciesMeasure,sizeMeasureType,species,subSampleNumber,totalCount,startTime,endTime,startTime.short,endTime.short,generalTab data.ps.logbook.SampleSpeciesMeasure=count,sizeClass -data.ps.logbook.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant,validation.code +data.ps.logbook.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant data.ps.logbook.Well=well,wellVessel,wellFactory,wellSamplingConformity,wellSamplingStatus,generalTab,wellActivityTab,action.save,action.save.tip,wellVessel.short,wellFactory.short,wellAlternativeNumbering data.ps.logbook.WellActivity=activity,wellActivitySpecies,computedTotalWeight,computedTotalWeight.short data.ps.logbook.WellActivitySpecies=species,weight,weightCategory,count,setSpeciesNumber @@ -97,7 +97,7 @@ data.ps.observation.SampleMeasure=comment,count,length,sizeMeasureMethod,picture data.ps.observation.SchoolEstimate=meanWeight,species,totalWeight,weightMeasureMethod data.ps.observation.Set=currentDirection,currentMeasureDepth,currentSpeed,endDate,endTime,endTimeStamp,haulingEndTimeStamp,haulingStartTimeStamp,maxGearDepth,reasonForNullSet,schoolMeanDepth,schoolThickness,schoolTopDepth,schoolType,startTime,supportVesselName,generalTab,measurementsTab,message.information.schoolType,schoolType.not.fill,sonarUsedAvantSet data.ps.observation.SpeciesFateDiscardMode=label,nullValue,falseValue,trueValue -data.ps.observation.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant,validation.code +data.ps.observation.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant referential.I18nReferential=label1,label2,label3,label4,label5,label6,label7,label8 referential.MinMaxWeightAware=minWeight,maxWeight,minMaxWeight,minMeanMaxWeight referential.common.Country=iso2Code,iso3Code ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update-error.xml ===================================== @@ -29,6 +29,10 @@ <field-validator type="psLogbookRouteCheckActivityQuadrant"> <message/> </field-validator> + <!-- list of number of activities must be a sequence starting at one. --> + <field-validator type="psLogbookRouteCheckActivityNumber"> + <message/> + </field-validator> </field> <field name="comment"> ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update.json ===================================== @@ -1,7 +1,8 @@ { "activity": { "errors": [ - "activities quadrant check" + "activities quadrant check", + "list of number of activities must be a sequence starting at one." ] }, "comment": { ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/TransmittingBuoy/validation-create-error.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/TransmittingBuoy/validation-update-error.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/observation/TransmittingBuoy/validation-create-error.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/observation/TransmittingBuoy/validation-update-error.xml ===================================== @@ -31,9 +31,10 @@ </field-validator> <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param> - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message> + <field-validator type="skipFieldexpression" short-circuit="true"> + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param> + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param> + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3a4165fe1f5d15127503500bd... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3a4165fe1f5d15127503500bd... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)