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

Commits:

18 changed files:

Changes:

  • core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlUsageModel.json
    ... ... @@ -846,10 +846,10 @@
    846 846
         },
    
    847 847
         "fr.ird.observe.entities.referential.ps.common.SpeciesFate": {
    
    848 848
           "reverseCompositions": [
    
    849
    -        "fr.ird.observe.entities.data.ps.observation.Catch~speciesFate",
    
    850 849
             "fr.ird.observe.entities.data.ps.observation.SampleMeasure~speciesFate"
    
    851 850
           ],
    
    852 851
           "reverseMandatoryCompositions": [
    
    852
    +        "fr.ird.observe.entities.data.ps.observation.Catch~speciesFate",
    
    853 853
             "fr.ird.observe.entities.data.ps.logbook.Catch~speciesFate"
    
    854 854
           ]
    
    855 855
         },
    

  • core/persistence/java/src/main/resources/fr/ird/observe/entities/data/ps/observation/CatchImpl.hbm.xml
    ... ... @@ -72,7 +72,7 @@
    72 72
             <many-to-one name="species" class="fr.ird.observe.entities.referential.common.SpeciesImpl" column="species" foreign-key="fk_ps_observation_catch_species" not-null="true" />
    
    73 73
             <many-to-one name="weightMeasureMethod" class="fr.ird.observe.entities.referential.common.WeightMeasureMethodImpl" column="weightMeasureMethod" foreign-key="fk_ps_observation_catch_weightmeasuremethod" />
    
    74 74
             <many-to-one name="lengthMeasureMethod" class="fr.ird.observe.entities.referential.common.LengthMeasureMethodImpl" column="lengthMeasureMethod" foreign-key="fk_ps_observation_catch_lengthmeasuremethod" />
    
    75
    -        <many-to-one name="speciesFate" class="fr.ird.observe.entities.referential.ps.common.SpeciesFateImpl" column="speciesFate" foreign-key="fk_ps_observation_catch_speciesfate" />
    
    75
    +        <many-to-one name="speciesFate" class="fr.ird.observe.entities.referential.ps.common.SpeciesFateImpl" column="speciesFate" foreign-key="fk_ps_observation_catch_speciesfate" not-null="true" />
    
    76 76
         </class>
    
    77 77
         <query name="fr.ird.observe.entities.data.ps.observation.Catch::id::all" read-only="true"><![CDATA[
    
    78 78
         select new fr.ird.observe.dto.ToolkitIdBean(id, lastUpdateDate)
    

  • core/persistence/resources/src/main/java/fr/ird/observe/spi/migration/v9/DataSourceMigrationForVersion_9_1.java
    ... ... @@ -23,15 +23,17 @@ package fr.ird.observe.spi.migration.v9;
    23 23
      */
    
    24 24
     
    
    25 25
     import com.google.auto.service.AutoService;
    
    26
    -import fr.ird.observe.entities.ObserveIdFactory;
    
    27 26
     import fr.ird.observe.spi.migration.ByMajorMigrationVersionResource;
    
    28 27
     import io.ultreia.java4all.util.Version;
    
    29 28
     import io.ultreia.java4all.util.sql.SqlQuery;
    
    30 29
     import org.nuiton.topia.persistence.TopiaIdFactory;
    
    30
    +import org.nuiton.topia.persistence.TopiaIdFactoryForBulkSupport;
    
    31 31
     import org.nuiton.topia.service.migration.resources.MigrationVersionResource;
    
    32 32
     import org.nuiton.topia.service.migration.resources.MigrationVersionResourceExecutor;
    
    33 33
     
    
    34 34
     import java.sql.Timestamp;
    
    35
    +import java.time.LocalDateTime;
    
    36
    +import java.time.ZoneOffset;
    
    35 37
     import java.util.Date;
    
    36 38
     import java.util.LinkedHashMap;
    
    37 39
     import java.util.LinkedList;
    
    ... ... @@ -84,7 +86,7 @@ public class DataSourceMigrationForVersion_9_1 extends ByMajorMigrationVersionRe
    84 86
         public DataSourceMigrationForVersion_9_1() {
    
    85 87
             super(Version.valueOf("9.1"), true);
    
    86 88
             ByMajorMigrationVersionResource.createResourceScriptVariables(this, "2022-09-14", "2022-09-14 00:00:00.000000");
    
    87
    -        idFactory = new ObserveIdFactory();
    
    89
    +        idFactory = new TopiaIdFactoryForBulkSupport(LocalDateTime.of(2022, 9, 14,0,0).toInstant(ZoneOffset.UTC).toEpochMilli());
    
    88 90
         }
    
    89 91
     
    
    90 92
         static class WellPlanStructure {
    
    ... ... @@ -264,7 +266,10 @@ public class DataSourceMigrationForVersion_9_1 extends ByMajorMigrationVersionRe
    264 266
                     flushWell(executor, wellStructure);
    
    265 267
                 }
    
    266 268
             }
    
    267
    -        executor.addScript("03", "drop-table-wellPlan");
    
    269
    +        executor.addScript("02", "drop-table-wellPlan");
    
    270
    +
    
    271
    +        // See https://gitlab.com/ultreiaio/ird-observe/-/issues/2492
    
    272
    +        executor.addScript("03", "adapt-table-ps_observation_catch_speciesFate_notnull");
    
    268 273
         }
    
    269 274
     
    
    270 275
         private Map<String, List<WellPlanStructure>> splitByTrip(List<WellPlanStructure> existingWellPlan) {
    

  • core/persistence/resources/src/main/resources/db/migration/v9/9.1/03_drop-table-wellPlan-H2.sqlcore/persistence/resources/src/main/resources/db/migration/v9/9.1/02_drop-table-wellPlan-H2.sql

  • core/persistence/resources/src/main/resources/db/migration/v9/9.1/03_drop-table-wellPlan-PG.sqlcore/persistence/resources/src/main/resources/db/migration/v9/9.1/02_drop-table-wellPlan-PG.sql

  • core/persistence/resources/src/main/resources/db/migration/v9/9.1/03_adapt-table-ps_observation_catch_speciesFate_notnull-H2.sql
    1
    +---
    
    2
    +-- #%L
    
    3
    +-- ObServe Core :: Persistence :: Resources
    
    4
    +-- %%
    
    5
    +-- Copyright (C) 2008 - 2022 IRD, Ultreia.io
    
    6
    +-- %%
    
    7
    +-- This program is free software: you can redistribute it and/or modify
    
    8
    +-- it under the terms of the GNU General Public License as
    
    9
    +-- published by the Free Software Foundation, either version 3 of the
    
    10
    +-- License, or (at your option) any later version.
    
    11
    +--
    
    12
    +-- This program is distributed in the hope that it will be useful,
    
    13
    +-- but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14
    +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15
    +-- GNU General Public License for more details.
    
    16
    +--
    
    17
    +-- You should have received a copy of the GNU General Public
    
    18
    +-- License along with this program.  If not, see
    
    19
    +-- <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20
    +-- #L%
    
    21
    +---
    
    22
    +UPDATE ps_observation.Catch SET speciesFate = 'fr.ird.referential.ps.common.SpeciesFate#1239832683621#0.9099804284263154', comment = 'Devenir passé de null à ''Autres'' par la migration 9.1' WHERE speciesFate IS NULL AND comment IS NULL;
    
    23
    +UPDATE ps_observation.Catch SET speciesFate = 'fr.ird.referential.ps.common.SpeciesFate#1239832683621#0.9099804284263154', comment = CONCAT(comment, STRINGDECODE('\nDevenir passé de null à ''Autres'' par la migration 9.1')) WHERE speciesFate IS NULL;
    
    24
    +ALTER TABLE ps_observation.Catch ALTER COLUMN speciesFate SET NOT NULL;

  • core/persistence/resources/src/main/resources/db/migration/v9/9.1/03_adapt-table-ps_observation_catch_speciesFate_notnull-PG.sql
    1
    +---
    
    2
    +-- #%L
    
    3
    +-- ObServe Core :: Persistence :: Resources
    
    4
    +-- %%
    
    5
    +-- Copyright (C) 2008 - 2022 IRD, Ultreia.io
    
    6
    +-- %%
    
    7
    +-- This program is free software: you can redistribute it and/or modify
    
    8
    +-- it under the terms of the GNU General Public License as
    
    9
    +-- published by the Free Software Foundation, either version 3 of the
    
    10
    +-- License, or (at your option) any later version.
    
    11
    +--
    
    12
    +-- This program is distributed in the hope that it will be useful,
    
    13
    +-- but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    14
    +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    15
    +-- GNU General Public License for more details.
    
    16
    +--
    
    17
    +-- You should have received a copy of the GNU General Public
    
    18
    +-- License along with this program.  If not, see
    
    19
    +-- <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20
    +-- #L%
    
    21
    +---
    
    22
    +UPDATE ps_observation.Catch SET speciesFate = 'fr.ird.referential.ps.common.SpeciesFate#1239832683621#0.9099804284263154', comment = 'Devenir passé de null à ''Autres'' par la migration 9.1' WHERE speciesFate IS NULL AND comment IS NULL;
    
    23
    +UPDATE ps_observation.Catch SET speciesFate = 'fr.ird.referential.ps.common.SpeciesFate#1239832683621#0.9099804284263154', comment = CONCAT(comment, E'\nDevenir passé de null à ''Autres'' par la migration 9.1') WHERE speciesFate IS NULL;
    
    24
    +ALTER TABLE ps_observation.Catch ALTER COLUMN speciesFate SET NOT NULL;

  • core/persistence/resources/src/main/resources/db/migration/v9/9.1/empty-schema-H2.sql
    ... ... @@ -180,7 +180,7 @@ create table ps_logbook.wellSamplingConformity (topiaId varchar(255) not null, t
    180 180
     create table ps_logbook.wellSamplingStatus (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, code varchar(255) not null, uri varchar(255), homeId varchar(255), needComment boolean default false not null, status integer not null, label1 varchar(255) not null, label2 varchar(255) not null, label3 varchar(255) not null, label4 varchar(255), label5 varchar(255), label6 varchar(255), label7 varchar(255), label8 varchar(255), primary key (topiaId));
    
    181 181
     create table ps_observation.activity (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), time time not null, latitude numeric, longitude numeric, vesselSpeed numeric, seaSurfaceTemperature numeric, observedSystemDistance numeric, ersId varchar(255), vesselActivity varchar(255) not null, surroundingActivity varchar(255), wind varchar(255), detectionMode varchar(255), reasonForNoFishing varchar(255), currentFpaZone varchar(255), previousFpaZone varchar(255), nextFpaZone varchar(255), dataQuality varchar(255), route varchar(255) not null, primary key (topiaId));
    
    182 182
     create table ps_observation.activity_observedSystem (activity varchar(255) not null, observedSystem varchar(255) not null, primary key (activity, observedSystem));
    
    183
    -create table ps_observation.catch (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), catchWeight numeric, catchWeightComputedSource integer, meanWeight numeric, meanWeightComputedSource integer, meanLength numeric, meanLengthComputedSource integer, totalCount integer, totalCountComputedSource integer, well varchar(255), reasonForDiscard varchar(255), informationSource varchar(255) not null, species varchar(255) not null, weightMeasureMethod varchar(255), lengthMeasureMethod varchar(255), speciesFate varchar(255), set varchar(255) not null, set_idx integer, primary key (topiaId));
    
    183
    +create table ps_observation.catch (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), catchWeight numeric, catchWeightComputedSource integer, meanWeight numeric, meanWeightComputedSource integer, meanLength numeric, meanLengthComputedSource integer, totalCount integer, totalCountComputedSource integer, well varchar(255), reasonForDiscard varchar(255), informationSource varchar(255) not null, species varchar(255) not null, weightMeasureMethod varchar(255), lengthMeasureMethod varchar(255), speciesFate varchar(255) not null, set varchar(255) not null, set_idx integer, primary key (topiaId));
    
    184 184
     create table ps_observation.detectionMode (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, code varchar(255) not null, uri varchar(255), homeId varchar(255), needComment boolean default false not null, status integer not null, label1 varchar(255) not null, label2 varchar(255) not null, label3 varchar(255) not null, label4 varchar(255), label5 varchar(255), label6 varchar(255), label7 varchar(255), label8 varchar(255), primary key (topiaId));
    
    185 185
     create table ps_observation.floatingObject (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), objectOperation varchar(255), supportVesselName varchar(32), computedWhenArrivingBiodegradable varchar(255), computedWhenArrivingNonEntangling varchar(255), computedWhenArrivingSimplifiedObjectType varchar(255), computedWhenLeavingBiodegradable varchar(255), computedWhenLeavingNonEntangling varchar(255), computedWhenLeavingSimplifiedObjectType varchar(255), activity varchar(255) not null, primary key (topiaId));
    
    186 186
     create table ps_observation.floatingObjectPart (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), whenArriving varchar(255), whenLeaving varchar(255), objectMaterial varchar(255) not null, floatingObject varchar(255) not null, primary key (topiaId));
    

  • core/persistence/resources/src/main/resources/db/migration/v9/9.1/empty-schema-PG.sql
    ... ... @@ -180,7 +180,7 @@ create table ps_logbook.wellSamplingConformity (topiaId varchar(255) not null, t
    180 180
     create table ps_logbook.wellSamplingStatus (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, code varchar(255) not null, uri varchar(255), homeId varchar(255), needComment boolean default false not null, status integer not null, label1 varchar(255) not null, label2 varchar(255) not null, label3 varchar(255) not null, label4 varchar(255), label5 varchar(255), label6 varchar(255), label7 varchar(255), label8 varchar(255), primary key (topiaId));
    
    181 181
     create table ps_observation.activity (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), time time not null, latitude numeric, longitude numeric, vesselSpeed numeric, seaSurfaceTemperature numeric, observedSystemDistance numeric, ersId varchar(255), vesselActivity varchar(255) not null, surroundingActivity varchar(255), wind varchar(255), detectionMode varchar(255), reasonForNoFishing varchar(255), currentFpaZone varchar(255), previousFpaZone varchar(255), nextFpaZone varchar(255), dataQuality varchar(255), route varchar(255) not null, primary key (topiaId));
    
    182 182
     create table ps_observation.activity_observedSystem (activity varchar(255) not null, observedSystem varchar(255) not null, primary key (activity, observedSystem));
    
    183
    -create table ps_observation.catch (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), catchWeight numeric, catchWeightComputedSource integer, meanWeight numeric, meanWeightComputedSource integer, meanLength numeric, meanLengthComputedSource integer, totalCount integer, totalCountComputedSource integer, well varchar(255), reasonForDiscard varchar(255), informationSource varchar(255) not null, species varchar(255) not null, weightMeasureMethod varchar(255), lengthMeasureMethod varchar(255), speciesFate varchar(255), set varchar(255) not null, set_idx integer, primary key (topiaId));
    
    183
    +create table ps_observation.catch (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), catchWeight numeric, catchWeightComputedSource integer, meanWeight numeric, meanWeightComputedSource integer, meanLength numeric, meanLengthComputedSource integer, totalCount integer, totalCountComputedSource integer, well varchar(255), reasonForDiscard varchar(255), informationSource varchar(255) not null, species varchar(255) not null, weightMeasureMethod varchar(255), lengthMeasureMethod varchar(255), speciesFate varchar(255) not null, set varchar(255) not null, set_idx integer, primary key (topiaId));
    
    184 184
     create table ps_observation.detectionMode (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, code varchar(255) not null, uri varchar(255), homeId varchar(255), needComment boolean default false not null, status integer not null, label1 varchar(255) not null, label2 varchar(255) not null, label3 varchar(255) not null, label4 varchar(255), label5 varchar(255), label6 varchar(255), label7 varchar(255), label8 varchar(255), primary key (topiaId));
    
    185 185
     create table ps_observation.floatingObject (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), comment varchar(8192), objectOperation varchar(255), supportVesselName varchar(32), computedWhenArrivingBiodegradable varchar(255), computedWhenArrivingNonEntangling varchar(255), computedWhenArrivingSimplifiedObjectType varchar(255), computedWhenLeavingBiodegradable varchar(255), computedWhenLeavingNonEntangling varchar(255), computedWhenLeavingSimplifiedObjectType varchar(255), activity varchar(255) not null, primary key (topiaId));
    
    186 186
     create table ps_observation.floatingObjectPart (topiaId varchar(255) not null, topiaVersion bigint not null, topiaCreateDate timestamp not null, lastUpdateDate timestamp default CURRENT_TIMESTAMP not null, homeId varchar(255), whenArriving varchar(255), whenLeaving varchar(255), objectMaterial varchar(255) not null, floatingObject varchar(255) not null, primary key (topiaId));
    

  • model/src/main/models/Observe/persistence/attribute/notNull.properties
    ... ... @@ -169,6 +169,7 @@ data.ps.observation.Activity.attribute.time=true
    169 169
     data.ps.observation.Activity.attribute.vesselActivity=true
    
    170 170
     data.ps.observation.Catch.attribute.informationSource=true
    
    171 171
     data.ps.observation.Catch.attribute.species=true
    
    172
    +data.ps.observation.Catch.attribute.speciesFate=true
    
    172 173
     data.ps.observation.FloatingObjectPart.attribute.objectMaterial=true
    
    173 174
     data.ps.observation.NonTargetCatchRelease.attribute.count=true
    
    174 175
     data.ps.observation.NonTargetCatchRelease.attribute.sex=true
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Activity/validation-create-error.xml
    ... ... @@ -231,6 +231,12 @@
    231 231
       </field>
    
    232 232
     
    
    233 233
       <field name="schoolType">
    
    234
    +    <!-- schoolType is mandatory except if !setEnabled -->
    
    235
    +    <field-validator type="mandatory" short-circuit="true">
    
    236
    +      <param name="skip"><![CDATA[ !setEnabled ]]></param>
    
    237
    +      <message>observe.data.ps.logbook.Activity.schoolType.validation.required</message>
    
    238
    +    </field-validator>
    
    239
    +
    
    234 240
         <!-- check if referential schoolType is disabled (only if validation is strong) -->
    
    235 241
         <field-validator type="checkDisabledReferentialOnErrorScope">
    
    236 242
           <message/>
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Activity/validation-create.json
    ... ... @@ -122,7 +122,8 @@
    122 122
       },
    
    123 123
       "schoolType": {
    
    124 124
         "errors": [
    
    125
    -      "check if referential schoolType is disabled (only if validation is strong)"
    
    125
    +      "check if referential schoolType is disabled (only if validation is strong)",
    
    126
    +      "schoolType is mandatory except if !setEnabled"
    
    126 127
         ],
    
    127 128
         "warnings": [
    
    128 129
           "check if referential schoolType is disabled (only if validation is not strong)"
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Activity/validation-update-error.xml
    ... ... @@ -231,6 +231,12 @@
    231 231
       </field>
    
    232 232
     
    
    233 233
       <field name="schoolType">
    
    234
    +    <!-- schoolType is mandatory except if !setEnabled -->
    
    235
    +    <field-validator type="mandatory" short-circuit="true">
    
    236
    +      <param name="skip"><![CDATA[ !setEnabled ]]></param>
    
    237
    +      <message>observe.data.ps.logbook.Activity.schoolType.validation.required</message>
    
    238
    +    </field-validator>
    
    239
    +
    
    234 240
         <!-- check if referential schoolType is disabled (only if validation is strong) -->
    
    235 241
         <field-validator type="checkDisabledReferentialOnErrorScope">
    
    236 242
           <message/>
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Activity/validation-update.json
    ... ... @@ -122,7 +122,8 @@
    122 122
       },
    
    123 123
       "schoolType": {
    
    124 124
         "errors": [
    
    125
    -      "check if referential schoolType is disabled (only if validation is strong)"
    
    125
    +      "check if referential schoolType is disabled (only if validation is strong)",
    
    126
    +      "schoolType is mandatory except if !setEnabled"
    
    126 127
         ],
    
    127 128
         "warnings": [
    
    128 129
           "check if referential schoolType is disabled (only if validation is not strong)"
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/observation/Catch/validation-create-error.xml
    ... ... @@ -118,6 +118,11 @@
    118 118
       </field>
    
    119 119
     
    
    120 120
       <field name="speciesFate">
    
    121
    +    <!-- speciesFate is mandatory -->
    
    122
    +    <field-validator type="mandatory" short-circuit="true">
    
    123
    +      <message/>
    
    124
    +    </field-validator>
    
    125
    +
    
    121 126
         <!-- check if referential speciesFate is disabled (only if validation is strong) -->
    
    122 127
         <field-validator type="checkDisabledReferentialOnErrorScope">
    
    123 128
           <message/>
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/observation/Catch/validation-create.json
    ... ... @@ -68,7 +68,8 @@
    68 68
       },
    
    69 69
       "speciesFate": {
    
    70 70
         "errors": [
    
    71
    -      "check if referential speciesFate is disabled (only if validation is strong)"
    
    71
    +      "check if referential speciesFate is disabled (only if validation is strong)",
    
    72
    +      "speciesFate is mandatory"
    
    72 73
         ],
    
    73 74
         "warnings": [
    
    74 75
           "check if referential speciesFate is disabled (only if validation is not strong)"
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/observation/Catch/validation-update-error.xml
    ... ... @@ -123,6 +123,11 @@
    123 123
       </field>
    
    124 124
     
    
    125 125
       <field name="speciesFate">
    
    126
    +    <!-- speciesFate is mandatory -->
    
    127
    +    <field-validator type="mandatory" short-circuit="true">
    
    128
    +      <message/>
    
    129
    +    </field-validator>
    
    130
    +
    
    126 131
         <!-- check if referential speciesFate is disabled (only if validation is strong) -->
    
    127 132
         <field-validator type="checkDisabledReferentialOnErrorScope">
    
    128 133
           <message/>
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/observation/Catch/validation-update.json
    ... ... @@ -68,7 +68,8 @@
    68 68
       },
    
    69 69
       "speciesFate": {
    
    70 70
         "errors": [
    
    71
    -      "check if referential speciesFate is disabled (only if validation is strong)"
    
    71
    +      "check if referential speciesFate is disabled (only if validation is strong)",
    
    72
    +      "speciesFate is mandatory"
    
    72 73
         ],
    
    73 74
         "warnings": [
    
    74 75
           "check if referential speciesFate is disabled (only if validation is not strong)"