Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

27 changed files:

Changes:

  • core/api/dto-decoration/src/main/i18n/getters/labels.getter
    ... ... @@ -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
    

  • core/api/dto-validation/src/main/i18n/getters/java.getter
    ... ... @@ -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
    

  • core/api/dto-validation/src/main/java/fr/ird/observe/dto/validation/validators/data/ps/logbook/RouteCheckActivityNumber.java
    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
    +}

  • core/api/dto-validation/src/main/resources/validators.xml
    ... ... @@ -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"/>
    

  • core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json
    ... ... @@ -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
           {
    

  • core/api/validation/src/main/i18n/getters/validation-messages.getter
    ... ... @@ -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
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/RouteDto-update-error-validation.xml
    ... ... @@ -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">
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-create-error-validation.xml
    ... ... @@ -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
     
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-update-error-validation.xml
    ... ... @@ -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
     
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-create-error-validation.xml
    ... ... @@ -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
     
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-update-error-validation.xml
    ... ... @@ -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
     
    

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/RouteDto-update-error-validation.xml
    ... ... @@ -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>

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-create-error-validation.xml
    ... ... @@ -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>

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/TransmittingBuoyDto-update-error-validation.xml
    ... ... @@ -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>

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-create-error-validation.xml
    ... ... @@ -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>

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/observation/TransmittingBuoyDto-update-error-validation.xml
    ... ... @@ -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>

  • core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Route/validation-update.json
    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": {
    

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

  • 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 %
    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
    

  • 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é
    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
    

  • model/src/main/models/Observe/dto/class/i18nLabels.properties
    ... ... @@ -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
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update-error.xml
    ... ... @@ -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">
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update.json
    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": {
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/TransmittingBuoy/validation-create-error.xml
    ... ... @@ -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
     
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/TransmittingBuoy/validation-update-error.xml
    ... ... @@ -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
     
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/observation/TransmittingBuoy/validation-create-error.xml
    ... ... @@ -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
     
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/observation/TransmittingBuoy/validation-update-error.xml
    ... ... @@ -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