Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
78a74627
by Tony Chemit at 2023-09-14T10:13:01+02:00
-
c86d3772
by Tony Chemit at 2023-09-14T10:13:01+02:00
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:
| ... | ... | @@ -1012,7 +1012,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short |
| 1012 | 1012 | observe.data.ps.logbook.SampleSpeciesMeasure.type
|
| 1013 | 1013 | observe.data.ps.logbook.TransmittingBuoy.code
|
| 1014 | 1014 | observe.data.ps.logbook.TransmittingBuoy.type
|
| 1015 | -observe.data.ps.logbook.TransmittingBuoy.validation.code
|
|
| 1016 | 1015 | observe.data.ps.logbook.Well.action.create
|
| 1017 | 1016 | observe.data.ps.logbook.Well.action.move
|
| 1018 | 1017 | observe.data.ps.logbook.Well.action.move.choose.parent.message
|
| ... | ... | @@ -1235,7 +1234,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue |
| 1235 | 1234 | observe.data.ps.observation.SpeciesFateDiscardMode.type
|
| 1236 | 1235 | observe.data.ps.observation.TransmittingBuoy.code
|
| 1237 | 1236 | observe.data.ps.observation.TransmittingBuoy.type
|
| 1238 | -observe.data.ps.observation.TransmittingBuoy.validation.code
|
|
| 1239 | 1237 | observe.referential.MinMaxWeight.maxWeight
|
| 1240 | 1238 | observe.referential.MinMaxWeight.minMaxWeight
|
| 1241 | 1239 | observe.referential.MinMaxWeight.minMeanMaxWeight
|
| ... | ... | @@ -18,6 +18,7 @@ observe.data.ps.Route.validation.invalid.quadrant |
| 18 | 18 | observe.data.ps.Route.validation.invalid.time
|
| 19 | 19 | observe.data.ps.localmarket.SampleSampleSpecies.sampleSpecies.validation.uniqueKey
|
| 20 | 20 | observe.data.ps.localmarket.Survey.surveyPart.validation.uniqueKey
|
| 21 | +observe.data.ps.logbook.Route.activity.validation.badNumberSequence
|
|
| 21 | 22 | observe.data.ps.logbook.SampleSampleSpecies.sampleSpecies.validation.uniqueKey
|
| 22 | 23 | observe.data.ps.logbook.WellActivity.wellActivitySpecies.validation.uniqueKey
|
| 23 | 24 | observe.data.ps.observation.Activity.validation.speed.bound
|
| 1 | +package fr.ird.observe.dto.validation.validators.data.ps.logbook;
|
|
| 2 | + |
|
| 3 | +/*-
|
|
| 4 | + * #%L
|
|
| 5 | + * ObServe Core :: API :: Dto Validation
|
|
| 6 | + * %%
|
|
| 7 | + * Copyright (C) 2008 - 2023 IRD, Ultreia.io
|
|
| 8 | + * %%
|
|
| 9 | + * This program is free software: you can redistribute it and/or modify
|
|
| 10 | + * it under the terms of the GNU General Public License as
|
|
| 11 | + * published by the Free Software Foundation, either version 3 of the
|
|
| 12 | + * License, or (at your option) any later version.
|
|
| 13 | + *
|
|
| 14 | + * This program is distributed in the hope that it will be useful,
|
|
| 15 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 16 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 17 | + * GNU General Public License for more details.
|
|
| 18 | + *
|
|
| 19 | + * You should have received a copy of the GNU General Public
|
|
| 20 | + * License along with this program. If not, see
|
|
| 21 | + * <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 22 | + * #L%
|
|
| 23 | + */
|
|
| 24 | + |
|
| 25 | +import com.opensymphony.xwork2.validator.ValidationException;
|
|
| 26 | +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
|
|
| 27 | +import fr.ird.observe.dto.data.ps.logbook.ActivityDto;
|
|
| 28 | +import fr.ird.observe.dto.data.ps.logbook.ActivityStubDto;
|
|
| 29 | +import io.ultreia.java4all.i18n.I18n;
|
|
| 30 | + |
|
| 31 | +import java.util.Collection;
|
|
| 32 | +import java.util.List;
|
|
| 33 | +import java.util.stream.Collectors;
|
|
| 34 | +import java.util.stream.IntStream;
|
|
| 35 | + |
|
| 36 | +/**
|
|
| 37 | + * Check that the {@link ActivityDto#getNumber()} follows a sequence starting at {@code 1}.
|
|
| 38 | + * <p>
|
|
| 39 | + * See <a href="https://gitlab.com/ultreiaio/ird-observe/-/issues/2783">issue 2783</a>
|
|
| 40 | + * <p>
|
|
| 41 | + * Created at 14/09/2023.
|
|
| 42 | + *
|
|
| 43 | + * @author Tony Chemit - dev@tchemit.fr
|
|
| 44 | + * @since 9.2.0
|
|
| 45 | + */
|
|
| 46 | +public class RouteCheckActivityNumber extends FieldValidatorSupport {
|
|
| 47 | + |
|
| 48 | + private List<Integer> actualNumberOrder;
|
|
| 49 | + |
|
| 50 | + public RouteCheckActivityNumber() {
|
|
| 51 | + setDefaultMessage(I18n.n("observe.data.ps.logbook.Route.activity.validation.badNumberSequence") + "##${actualNumberOrder}");
|
|
| 52 | + }
|
|
| 53 | + |
|
| 54 | + @Override
|
|
| 55 | + public void validate(Object object) throws ValidationException {
|
|
| 56 | + String fieldName = getFieldName();
|
|
| 57 | + @SuppressWarnings("unchecked") Collection<ActivityStubDto> activities = (Collection<ActivityStubDto>) getFieldValue(fieldName, object);
|
|
| 58 | + actualNumberOrder = activities.stream().map(ActivityStubDto::getNumber).sorted().collect(Collectors.toList());
|
|
| 59 | + List<Integer> expectedNumberOrder = IntStream.range(1, activities.size()).boxed().collect(Collectors.toList());
|
|
| 60 | + if (actualNumberOrder.equals(expectedNumberOrder)) {
|
|
| 61 | + addFieldError(fieldName, object);
|
|
| 62 | + }
|
|
| 63 | + }
|
|
| 64 | + |
|
| 65 | + public List<Integer> getActualNumberOrder() {
|
|
| 66 | + return actualNumberOrder;
|
|
| 67 | + }
|
|
| 68 | +} |
| ... | ... | @@ -84,6 +84,7 @@ |
| 84 | 84 | <validator name="psCommonTripCheckRouteObsDate" class="fr.ird.observe.dto.validation.validators.data.ps.common.TripCheckRouteObsDate"/>
|
| 85 | 85 | <validator name="psCommonTripCheckRouteObsLogValues" class="fr.ird.observe.dto.validation.validators.data.ps.common.TripCheckRouteObsLogValues"/>
|
| 86 | 86 | <validator name="psLogbookRouteCheckActivityQuadrant" class="fr.ird.observe.dto.validation.validators.data.ps.logbook.RouteCheckActivityQuadrant"/>
|
| 87 | + <validator name="psLogbookRouteCheckActivityNumber" class="fr.ird.observe.dto.validation.validators.data.ps.logbook.RouteCheckActivityNumber"/>
|
|
| 87 | 88 | <validator name="psObservationRouteCheckActivityTime" class="fr.ird.observe.dto.validation.validators.data.ps.observation.RouteCheckActivityTime"/>
|
| 88 | 89 | <validator name="psObservationRouteCheckActivityQuadrant" class="fr.ird.observe.dto.validation.validators.data.ps.observation.RouteCheckActivityQuadrant"/>
|
| 89 | 90 | <validator name="psObservationRouteCheckStartLogValue" class="fr.ird.observe.dto.validation.validators.data.ps.observation.RouteCheckStartLogValue"/>
|
| ... | ... | @@ -11076,7 +11076,8 @@ |
| 11076 | 11076 | {
|
| 11077 | 11077 | "name": "activity",
|
| 11078 | 11078 | "comments": [
|
| 11079 | - "activities quadrant check"
|
|
| 11079 | + "activities quadrant check",
|
|
| 11080 | + "list of number of activities must be a sequence starting at one."
|
|
| 11080 | 11081 | ]
|
| 11081 | 11082 | },
|
| 11082 | 11083 | {
|
| ... | ... | @@ -57,6 +57,7 @@ observe.data.ll.observation.Tdr.validation.fishingStart.after.deploymentStart |
| 57 | 57 | observe.data.ps.Route.validation.duplicated.date
|
| 58 | 58 | observe.data.ps.SampleSpecies.validation.mismatch.measuredCount
|
| 59 | 59 | observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber
|
| 60 | +observe.data.ps.TransmittingBuoy.validation.code
|
|
| 60 | 61 | observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled
|
| 61 | 62 | observe.data.ps.common.Trip.departureWellContentStatus.validation.required
|
| 62 | 63 | observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled
|
| ... | ... | @@ -90,7 +91,6 @@ observe.data.ps.logbook.Sample.totalWeight.validation.required |
| 90 | 91 | observe.data.ps.logbook.Sample.weight.validation.not.required
|
| 91 | 92 | observe.data.ps.logbook.SampleSpecies.validation.endTime.after.startTime
|
| 92 | 93 | observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount
|
| 93 | -observe.data.ps.logbook.TransmittingBuoy.validation.code
|
|
| 94 | 94 | observe.data.ps.logbook.Well.validation.duplicated.well
|
| 95 | 95 | observe.data.ps.observation.Activity.validation.null.dcp
|
| 96 | 96 | observe.data.ps.observation.Activity.validation.required.observedSystem.for.catches
|
| ... | ... | @@ -29,6 +29,10 @@ |
| 29 | 29 | <field-validator type="psLogbookRouteCheckActivityQuadrant">
|
| 30 | 30 | <message/>
|
| 31 | 31 | </field-validator>
|
| 32 | + <!-- list of number of activities must be a sequence starting at one. -->
|
|
| 33 | + <field-validator type="psLogbookRouteCheckActivityNumber">
|
|
| 34 | + <message/>
|
|
| 35 | + </field-validator>
|
|
| 32 | 36 | </field>
|
| 33 | 37 | |
| 34 | 38 | <field name="comment">
|
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -35,5 +35,9 @@ |
| 35 | 35 | <field-validator type="psLogbookRouteCheckActivityQuadrant">
|
| 36 | 36 | <message/>
|
| 37 | 37 | </field-validator>
|
| 38 | + <!-- list of number of activities must be a sequence starting at one. -->
|
|
| 39 | + <field-validator type="psLogbookRouteCheckActivityNumber">
|
|
| 40 | + <message/>
|
|
| 41 | + </field-validator>
|
|
| 38 | 42 | </field>
|
| 39 | 43 | </validators> |
| ... | ... | @@ -25,9 +25,10 @@ |
| 25 | 25 | <validators>
|
| 26 | 26 | <field name="code">
|
| 27 | 27 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 28 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 29 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 30 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 28 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 29 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 30 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 31 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 31 | 32 | </field-validator>
|
| 32 | 33 | </field>
|
| 33 | 34 | </validators> |
| ... | ... | @@ -25,9 +25,10 @@ |
| 25 | 25 | <validators>
|
| 26 | 26 | <field name="code">
|
| 27 | 27 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 28 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 29 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 30 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 28 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 29 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 30 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 31 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 31 | 32 | </field-validator>
|
| 32 | 33 | </field>
|
| 33 | 34 | </validators> |
| ... | ... | @@ -25,9 +25,10 @@ |
| 25 | 25 | <validators>
|
| 26 | 26 | <field name="code">
|
| 27 | 27 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 28 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 29 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 30 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 28 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 29 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 30 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 31 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 31 | 32 | </field-validator>
|
| 32 | 33 | </field>
|
| 33 | 34 | </validators> |
| ... | ... | @@ -25,9 +25,10 @@ |
| 25 | 25 | <validators>
|
| 26 | 26 | <field name="code">
|
| 27 | 27 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 28 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 29 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 30 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 28 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 29 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 30 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 31 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 31 | 32 | </field-validator>
|
| 32 | 33 | </field>
|
| 33 | 34 | </validators> |
| 1 | 1 | {
|
| 2 | 2 | "activity": {
|
| 3 | 3 | "errors": [
|
| 4 | - "activities quadrant check"
|
|
| 4 | + "activities quadrant check",
|
|
| 5 | + "list of number of activities must be a sequence starting at one."
|
|
| 5 | 6 | ]
|
| 6 | 7 | },
|
| 7 | 8 | "comment": {
|
| ... | ... | @@ -923,6 +923,7 @@ observe.data.ps.Route.validation.invalid.quadrant=Activity quadrant at position |
| 923 | 923 | 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).
|
| 924 | 924 | observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s)
|
| 925 | 925 | observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ».
|
| 926 | +observe.data.ps.TransmittingBuoy.validation.code=The buoy identifier (%s) does not respect the following regular expression «%s».
|
|
| 926 | 927 | observe.data.ps.common.Trip.action.move.all=Move all
|
| 927 | 928 | observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip
|
| 928 | 929 | 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 |
| 1147 | 1148 | observe.data.ps.logbook.Route.action.move.choose.parent.title=Move routes to another trip
|
| 1148 | 1149 | observe.data.ps.logbook.Route.action.move.tip=Change trip of route(s)
|
| 1149 | 1150 | observe.data.ps.logbook.Route.activity=Activity
|
| 1151 | +observe.data.ps.logbook.Route.activity.validation.badNumberSequence=The list of number of activities should be a sequence starting at 1 but was %s.
|
|
| 1150 | 1152 | observe.data.ps.logbook.Route.activityStat=Count of activities
|
| 1151 | 1153 | observe.data.ps.logbook.Route.date=Date
|
| 1152 | 1154 | observe.data.ps.logbook.Route.fishingTime=Fishing time (hh)
|
| ... | ... | @@ -1218,7 +1220,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Count |
| 1218 | 1220 | observe.data.ps.logbook.SampleSpeciesMeasure.type=Sample species measure
|
| 1219 | 1221 | observe.data.ps.logbook.TransmittingBuoy.code=Code
|
| 1220 | 1222 | observe.data.ps.logbook.TransmittingBuoy.type=Transmitting buoy
|
| 1221 | -observe.data.ps.logbook.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»).
|
|
| 1222 | 1223 | observe.data.ps.logbook.Well.action.create=Next well
|
| 1223 | 1224 | observe.data.ps.logbook.Well.action.move=Change trip
|
| 1224 | 1225 | observe.data.ps.logbook.Well.action.move.choose.parent.message=Select target trip
|
| ... | ... | @@ -1493,7 +1494,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue=Discarded |
| 1493 | 1494 | observe.data.ps.observation.SpeciesFateDiscardMode.type=Species fate discard mode
|
| 1494 | 1495 | observe.data.ps.observation.TransmittingBuoy.code=Code
|
| 1495 | 1496 | observe.data.ps.observation.TransmittingBuoy.type=Transmitting buoy
|
| 1496 | -observe.data.ps.observation.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»).
|
|
| 1497 | 1497 | observe.data.ps.pairing.ActivityPairingResultItem.computedDistance=Distance (km)
|
| 1498 | 1498 | observe.data.ps.pairing.ActivityPairingResultItem.computedTime=Time shift (days\:hours\:minutes)
|
| 1499 | 1499 | observe.data.ps.pairing.ActivityPairingResultItem.observationActivity=Observed activity
|
| ... | ... | @@ -923,6 +923,7 @@ observe.data.ps.Route.validation.invalid.quadrant=El cuadrante de la actividad % |
| 923 | 923 | 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).
|
| 924 | 924 | observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s)
|
| 925 | 925 | observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». \#TODO
|
| 926 | +observe.data.ps.TransmittingBuoy.validation.code=El identificador de boya ingresado (%s) no respeta la sintaxis definida por la expresión regular “%s”.
|
|
| 926 | 927 | observe.data.ps.common.Trip.action.move.all=Move all
|
| 927 | 928 | observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip
|
| 928 | 929 | 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 |
| 1147 | 1148 | observe.data.ps.logbook.Route.action.move.choose.parent.title=Move routes to another trip
|
| 1148 | 1149 | observe.data.ps.logbook.Route.action.move.tip=Change trip of route(s)
|
| 1149 | 1150 | observe.data.ps.logbook.Route.activity=Actividad
|
| 1151 | +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
|
|
| 1150 | 1152 | observe.data.ps.logbook.Route.activityStat=Count of observations activities
|
| 1151 | 1153 | observe.data.ps.logbook.Route.date=Día de observación
|
| 1152 | 1154 | observe.data.ps.logbook.Route.fishingTime=fishing time (hh) \#TODO
|
| ... | ... | @@ -1218,7 +1220,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Count |
| 1218 | 1220 | observe.data.ps.logbook.SampleSpeciesMeasure.type=Sample species measure
|
| 1219 | 1221 | observe.data.ps.logbook.TransmittingBuoy.code=Identificación
|
| 1220 | 1222 | observe.data.ps.logbook.TransmittingBuoy.type=TransmittingBuoy
|
| 1221 | -observe.data.ps.logbook.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»). \#TODO
|
|
| 1222 | 1223 | observe.data.ps.logbook.Well.action.create=Next well
|
| 1223 | 1224 | observe.data.ps.logbook.Well.action.move=Change trip
|
| 1224 | 1225 | observe.data.ps.logbook.Well.action.move.choose.parent.message=Select target trip
|
| ... | ... | @@ -1493,7 +1494,6 @@ observe.data.ps.observation.SpeciesFateDiscardMode.trueValue=Discarded |
| 1493 | 1494 | observe.data.ps.observation.SpeciesFateDiscardMode.type=Species fate discard mode
|
| 1494 | 1495 | observe.data.ps.observation.TransmittingBuoy.code=Identificación
|
| 1495 | 1496 | observe.data.ps.observation.TransmittingBuoy.type=TransmittingBuoy
|
| 1496 | -observe.data.ps.observation.TransmittingBuoy.validation.code=The syntax is not valid (the code must match the following regex «%s»). \#TODO
|
|
| 1497 | 1497 | observe.data.ps.pairing.ActivityPairingResultItem.computedDistance=Distance (km) \#TODO
|
| 1498 | 1498 | observe.data.ps.pairing.ActivityPairingResultItem.computedTime=Time shift (days\:hours\:minutes) \#TODO
|
| 1499 | 1499 | observe.data.ps.pairing.ActivityPairingResultItem.observationActivity=Observed activity \#TODO
|
| ... | ... | @@ -923,6 +923,7 @@ observe.data.ps.Route.validation.invalid.quadrant=Le quadrant de l’activité |
| 923 | 923 | 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).
|
| 924 | 924 | observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Le nombre mesuré (%s) doit valoir la somme des effectifs de fréquences (%s)
|
| 925 | 925 | observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=Le numéro de sous-échantillon doit être strictement positif si l'échantillon est un « super échantillon ».
|
| 926 | +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».
|
|
| 926 | 927 | observe.data.ps.common.Trip.action.move.all=Déplacer des données
|
| 927 | 928 | observe.data.ps.common.Trip.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ?
|
| 928 | 929 | 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 |
| 1147 | 1148 | observe.data.ps.logbook.Route.action.move.choose.parent.title=Changer la marée des routes
|
| 1148 | 1149 | observe.data.ps.logbook.Route.action.move.tip=Changer la marée des routes sélectionnées
|
| 1149 | 1150 | observe.data.ps.logbook.Route.activity=Activité
|
| 1151 | +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.
|
|
| 1150 | 1152 | observe.data.ps.logbook.Route.activityStat=Nombre d'activités'
|
| 1151 | 1153 | observe.data.ps.logbook.Route.date=Le jour de route
|
| 1152 | 1154 | observe.data.ps.logbook.Route.fishingTime=Temps de pêche (hh)
|
| ... | ... | @@ -1218,7 +1220,6 @@ observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Effectif |
| 1218 | 1220 | observe.data.ps.logbook.SampleSpeciesMeasure.type=Mesure d'un échantillon espèce
|
| 1219 | 1221 | observe.data.ps.logbook.TransmittingBuoy.code=Identifiant
|
| 1220 | 1222 | observe.data.ps.logbook.TransmittingBuoy.type=Balise émettrice
|
| 1221 | -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»).
|
|
| 1222 | 1223 | observe.data.ps.logbook.Well.action.create=Cuve suivante
|
| 1223 | 1224 | observe.data.ps.logbook.Well.action.move=Changer de marée
|
| 1224 | 1225 | 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é |
| 1493 | 1494 | observe.data.ps.observation.SpeciesFateDiscardMode.type=Mode de rejet (du devenir)
|
| 1494 | 1495 | observe.data.ps.observation.TransmittingBuoy.code=Identifiant
|
| 1495 | 1496 | observe.data.ps.observation.TransmittingBuoy.type=Balise émettrice
|
| 1496 | -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»)
|
|
| 1497 | 1497 | observe.data.ps.pairing.ActivityPairingResultItem.computedDistance=Distance (km)
|
| 1498 | 1498 | observe.data.ps.pairing.ActivityPairingResultItem.computedTime=Écart de temps (jours\:heures\:minutes)
|
| 1499 | 1499 | observe.data.ps.pairing.ActivityPairingResultItem.observationActivity=Activité observée
|
| ... | ... | @@ -80,7 +80,7 @@ data.ps.logbook.SampleActivity=activity,weightedWeight,weightedWeightComputed,we |
| 80 | 80 | data.ps.logbook.SampleSampleSpecies=superSample,sampleSpecies,species
|
| 81 | 81 | data.ps.logbook.SampleSpecies=comment,measuredCount,sampleSpeciesMeasure,sizeMeasureType,species,subSampleNumber,totalCount,startTime,endTime,startTime.short,endTime.short,generalTab
|
| 82 | 82 | data.ps.logbook.SampleSpeciesMeasure=count,sizeClass
|
| 83 | -data.ps.logbook.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant,validation.code
|
|
| 83 | +data.ps.logbook.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant
|
|
| 84 | 84 | data.ps.logbook.Well=well,wellVessel,wellFactory,wellSamplingConformity,wellSamplingStatus,generalTab,wellActivityTab,action.save,action.save.tip,wellVessel.short,wellFactory.short,wellAlternativeNumbering
|
| 85 | 85 | data.ps.logbook.WellActivity=activity,wellActivitySpecies,computedTotalWeight,computedTotalWeight.short
|
| 86 | 86 | data.ps.logbook.WellActivitySpecies=species,weight,weightCategory,count,setSpeciesNumber
|
| ... | ... | @@ -97,7 +97,7 @@ data.ps.observation.SampleMeasure=comment,count,length,sizeMeasureMethod,picture |
| 97 | 97 | data.ps.observation.SchoolEstimate=meanWeight,species,totalWeight,weightMeasureMethod
|
| 98 | 98 | 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
|
| 99 | 99 | data.ps.observation.SpeciesFateDiscardMode=label,nullValue,falseValue,trueValue
|
| 100 | -data.ps.observation.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant,validation.code
|
|
| 100 | +data.ps.observation.TransmittingBuoy=comment,code,transmittingBuoyOwnership,transmittingBuoyType,transmittingBuoyOperation,country,vessel,latitude,longitude,quadrant
|
|
| 101 | 101 | referential.I18nReferential=label1,label2,label3,label4,label5,label6,label7,label8
|
| 102 | 102 | referential.MinMaxWeightAware=minWeight,maxWeight,minMaxWeight,minMeanMaxWeight
|
| 103 | 103 | referential.common.Country=iso2Code,iso3Code
|
| ... | ... | @@ -29,6 +29,10 @@ |
| 29 | 29 | <field-validator type="psLogbookRouteCheckActivityQuadrant">
|
| 30 | 30 | <message/>
|
| 31 | 31 | </field-validator>
|
| 32 | + <!-- list of number of activities must be a sequence starting at one. -->
|
|
| 33 | + <field-validator type="psLogbookRouteCheckActivityNumber">
|
|
| 34 | + <message/>
|
|
| 35 | + </field-validator>
|
|
| 32 | 36 | </field>
|
| 33 | 37 | |
| 34 | 38 | <field name="comment">
|
| 1 | 1 | {
|
| 2 | 2 | "activity": {
|
| 3 | 3 | "errors": [
|
| 4 | - "activities quadrant check"
|
|
| 4 | + "activities quadrant check",
|
|
| 5 | + "list of number of activities must be a sequence starting at one."
|
|
| 5 | 6 | ]
|
| 6 | 7 | },
|
| 7 | 8 | "comment": {
|
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |
| ... | ... | @@ -31,9 +31,10 @@ |
| 31 | 31 | </field-validator>
|
| 32 | 32 | |
| 33 | 33 | <!-- code (if not null nor transmittingBuoyType) must match the transmittingBuoyType.regex regular expression -->
|
| 34 | - <field-validator type="fieldexpression" short-circuit="true">
|
|
| 35 | - <param name="expression"><![CDATA[ code == null || transmittingBuoyType == null || transmittingBuoyType.isCodeSyntaxValid(code)]]></param>
|
|
| 36 | - <message>observe.data.ps.logbook.TransmittingBuoy.validation.code##${transmittingBuoyType.regex}</message>
|
|
| 34 | + <field-validator type="skipFieldexpression" short-circuit="true">
|
|
| 35 | + <param name="skip"><![CDATA[ code == null || transmittingBuoyType == null ]]></param>
|
|
| 36 | + <param name="expression"><![CDATA[ transmittingBuoyType.isCodeSyntaxValid(code) ]]></param>
|
|
| 37 | + <message>observe.data.ps.TransmittingBuoy.validation.code##${code}##${transmittingBuoyType.regex}</message>
|
|
| 37 | 38 | </field-validator>
|
| 38 | 39 | </field>
|
| 39 | 40 |