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

Commits:

24 changed files:

Changes:

  • client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java
    ... ... @@ -125,9 +125,9 @@ public class JXTableUtil {
    125 125
                 }
    
    126 126
                 Number reference = (Number) value;
    
    127 127
                 String result = reference.toString();
    
    128
    -            if (reference.doubleValue() == 0) {
    
    129
    -                return null;
    
    130
    -            }
    
    128
    +//            if (reference.doubleValue() == 0) {
    
    129
    +//                return null;
    
    130
    +//            }
    
    131 131
                 if (reference instanceof Integer) {
    
    132 132
                     return result;
    
    133 133
                 }
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIModelStates.java
    ... ... @@ -26,8 +26,12 @@ import fr.ird.observe.client.configuration.ClientConfig;
    26 26
     import fr.ird.observe.client.datasource.api.cache.ReferencesCache;
    
    27 27
     import fr.ird.observe.client.datasource.api.cache.ReferencesFilterHelper;
    
    28 28
     import fr.ird.observe.client.datasource.editor.api.content.ContentUI;
    
    29
    +import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode;
    
    29 30
     import fr.ird.observe.client.datasource.editor.ll.data.observation.composition.LonglinePositionHelper;
    
    30 31
     import fr.ird.observe.client.util.init.DefaultUIInitializerResult;
    
    32
    +import fr.ird.observe.dto.ProtectedIdsLl;
    
    33
    +import fr.ird.observe.dto.data.CatchAcquisitionMode;
    
    34
    +import fr.ird.observe.dto.data.ll.common.TripReference;
    
    31 35
     import fr.ird.observe.dto.data.ll.observation.BranchlineDto;
    
    32 36
     import fr.ird.observe.dto.data.ll.observation.CatchDto;
    
    33 37
     import fr.ird.observe.dto.data.ll.observation.SetCatchDto;
    
    ... ... @@ -52,6 +56,13 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates {
    52 56
          */
    
    53 57
         protected boolean showIndividualTabs;
    
    54 58
     
    
    59
    +    /**
    
    60
    +     * Default acquisition mode to use.
    
    61
    +     * <p>
    
    62
    +     * See <a href="https://gitlab.com/ultreiaio/ird-observe/-/issues/2671">issue 2671</a>
    
    63
    +     */
    
    64
    +    private CatchAcquisitionMode defaultAcquisitionMode;
    
    65
    +
    
    55 66
         public SetCatchUIModelStates(GeneratedSetCatchUIModel model) {
    
    56 67
             super(model);
    
    57 68
             this.branchlineBean = new BranchlineDto();
    
    ... ... @@ -62,6 +73,10 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates {
    62 73
             super.init(ui, initializerResult);
    
    63 74
             SetCatchUI ui1 = (SetCatchUI) ui;
    
    64 75
             positionHelper = new LonglinePositionHelper<>(ui1.getSection(), ui1.getBasket(), ui1.getBranchline(), ui1.getTableEditBean());
    
    76
    +        TripUINavigationNode tripNode = (TripUINavigationNode) ui1.getModel().getSource().upToReferenceNode(TripReference.class);
    
    77
    +        TripReference tripReference = tripNode.getReference();
    
    78
    +        String observationMethodId = tripReference.getObservationMethodId();
    
    79
    +        this.defaultAcquisitionMode = ProtectedIdsLl.LL_OBSERVATION_GROUPED_OBSERVATION_METHOD_ID.equals(observationMethodId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL;
    
    65 80
         }
    
    66 81
     
    
    67 82
         @Override
    
    ... ... @@ -82,6 +97,16 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates {
    82 97
             super.copyFormToBean(form);
    
    83 98
         }
    
    84 99
     
    
    100
    +    @Override
    
    101
    +    public void initDefault(CatchDto newTableBean) {
    
    102
    +        super.initDefault(newTableBean);
    
    103
    +        newTableBean.setAcquisitionMode(defaultAcquisitionMode.ordinal());
    
    104
    +    }
    
    105
    +
    
    106
    +    public CatchAcquisitionMode getDefaultAcquisitionMode() {
    
    107
    +        return defaultAcquisitionMode;
    
    108
    +    }
    
    109
    +
    
    85 110
         public BranchlineDto getBranchlineBean() {
    
    86 111
             return branchlineBean;
    
    87 112
         }
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUITableModel.java
    ... ... @@ -22,12 +22,8 @@ package fr.ird.observe.client.datasource.editor.ll.data.observation;
    22 22
      * #L%
    
    23 23
      */
    
    24 24
     
    
    25
    -import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode;
    
    26
    -import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode;
    
    27 25
     import fr.ird.observe.client.util.table.EditableListProperty;
    
    28
    -import fr.ird.observe.dto.ProtectedIdsLl;
    
    29 26
     import fr.ird.observe.dto.data.CatchAcquisitionMode;
    
    30
    -import fr.ird.observe.dto.data.ll.common.TripReference;
    
    31 27
     import fr.ird.observe.dto.data.ll.observation.CatchDto;
    
    32 28
     import fr.ird.observe.dto.data.ll.observation.SizeMeasureDto;
    
    33 29
     import fr.ird.observe.dto.data.ll.observation.WeightMeasureDto;
    
    ... ... @@ -112,14 +108,7 @@ public class SetCatchUITableModel extends GeneratedSetCatchUITableModel {
    112 108
             if (newRow) {
    
    113 109
                 // go back to first pane
    
    114 110
                 ui.getMainTabbedPane().setSelectedIndex(0);
    
    115
    -            NavigationNode selectedNode = handler.getNavigationTree().getSelectedNode();
    
    116
    -            while (!(selectedNode instanceof TripUINavigationNode)) {
    
    117
    -                selectedNode = selectedNode.getParent();
    
    118
    -            }
    
    119
    -            TripReference tripReference = ((TripUINavigationNode) selectedNode).getReference();
    
    120
    -            String tripTypeId = tripReference.getTripTypeId();
    
    121
    -            log.info(String.format("%s Use trip type id: %s", prefix, tripTypeId));
    
    122
    -            acquisitionModeEnum = ProtectedIdsLl.LL_OBSERVATION_GROUPED_TRIP_TYPE_ID.equals(tripTypeId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL;
    
    111
    +            acquisitionModeEnum = getModel().getStates().getDefaultAcquisitionMode();
    
    123 112
                 ui.getPredator().setEnabled(false);
    
    124 113
                 ui.getHookWhenDiscarded().setEnabled(false);
    
    125 114
                 ui.getDiscardHealthStatus().setEnabled(false);
    

  • core/api/dto/src/main/java/fr/ird/observe/dto/ProtectedIdsLl.java
    ... ... @@ -48,7 +48,7 @@ public interface ProtectedIdsLl {
    48 48
     
    
    49 49
         String LL_COMMON_ACTIVITY_HARBOUR_ID = "fr.ird.referential.ll.common.VesselActivity#666#03";
    
    50 50
     
    
    51
    -    String LL_OBSERVATION_GROUPED_TRIP_TYPE_ID = "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1";
    
    51
    +    String LL_OBSERVATION_GROUPED_OBSERVATION_METHOD_ID = "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1";
    
    52 52
         String LL_OBSERVATION_CATCH_DISCARDED_CATCH_FATE_ID = "fr.ird.referential.ll.common.CatchFate#1239832686125#0.3";
    
    53 53
         String LL_LOGBOOK_ACTIVITY_DEFAULT_DATA_QUALITY_ID = "fr.ird.referential.common.DataQuality#0#1";
    
    54 54
         String LL_LOGBOOK_LANDING_PART_DEFAULT_DATA_QUALITY_ID = "fr.ird.referential.common.DataQuality#0#5";
    

  • core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json
    ... ... @@ -11539,7 +11539,8 @@
    11539 11539
             "name": "subSampleNumber",
    
    11540 11540
             "comments": [
    
    11541 11541
               "subSampleNumber is a positive number",
    
    11542
    -          "subSampleNumber is mandatory"
    
    11542
    +          "subSampleNumber is mandatory",
    
    11543
    +          "subSampleNumber must be strictly positive if Sample.superSample is true"
    
    11543 11544
             ]
    
    11544 11545
           },
    
    11545 11546
           {
    
    ... ... @@ -11621,7 +11622,8 @@
    11621 11622
             "name": "subSampleNumber",
    
    11622 11623
             "comments": [
    
    11623 11624
               "subSampleNumber is a positive number",
    
    11624
    -          "subSampleNumber is mandatory"
    
    11625
    +          "subSampleNumber is mandatory",
    
    11626
    +          "subSampleNumber must be strictly positive if Sample.superSample is true"
    
    11625 11627
             ]
    
    11626 11628
           },
    
    11627 11629
           {
    

  • core/api/validation/src/main/i18n/getters/validation-messages.getter
    ... ... @@ -53,6 +53,7 @@ observe.data.ll.observation.Tdr.validation.fishingEnd.after.fishingStart
    53 53
     observe.data.ll.observation.Tdr.validation.fishingStart.after.deploymentStart
    
    54 54
     observe.data.ps.Route.validation.duplicated.date
    
    55 55
     observe.data.ps.SampleSpecies.validation.mismatch.measuredCount
    
    56
    +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber
    
    56 57
     observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled
    
    57 58
     observe.data.ps.common.Trip.departureWellContentStatus.validation.required
    
    58 59
     observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
    ... ... @@ -109,6 +109,12 @@
    109 109
         <field-validator type="positiveNumber">
    
    110 110
           <message/>
    
    111 111
         </field-validator>
    
    112
    +
    
    113
    +    <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
    
    114
    +    <field-validator type="fieldexpression" short-circuit="true">
    
    115
    +      <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
    
    116
    +      <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
    
    117
    +    </field-validator>
    
    112 118
       </field>
    
    113 119
     
    
    114 120
       <field name="totalCount">
    

  • core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
    ... ... @@ -109,6 +109,12 @@
    109 109
         <field-validator type="positiveNumber">
    
    110 110
           <message/>
    
    111 111
         </field-validator>
    
    112
    +
    
    113
    +    <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
    
    114
    +    <field-validator type="fieldexpression" short-circuit="true">
    
    115
    +      <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
    
    116
    +      <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
    
    117
    +    </field-validator>
    
    112 118
       </field>
    
    113 119
     
    
    114 120
       <field name="totalCount">
    

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
    ... ... @@ -30,6 +30,14 @@
    30 30
         </field-validator>
    
    31 31
       </field>
    
    32 32
     
    
    33
    +  <field name="subSampleNumber">
    
    34
    +    <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
    
    35
    +    <field-validator type="fieldexpression" short-circuit="true">
    
    36
    +      <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
    
    37
    +      <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
    
    38
    +    </field-validator>
    
    39
    +  </field>
    
    40
    +
    
    33 41
       <field name="totalCount">
    
    34 42
         <!-- totalCount >= measuredCount -->
    
    35 43
         <field-validator type="fieldexpression" short-circuit="true">
    

  • core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
    ... ... @@ -30,6 +30,14 @@
    30 30
         </field-validator>
    
    31 31
       </field>
    
    32 32
     
    
    33
    +  <field name="subSampleNumber">
    
    34
    +    <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
    
    35
    +    <field-validator type="fieldexpression" short-circuit="true">
    
    36
    +      <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
    
    37
    +      <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
    
    38
    +    </field-validator>
    
    39
    +  </field>
    
    40
    +
    
    33 41
       <field name="totalCount">
    
    34 42
         <!-- totalCount >= measuredCount -->
    
    35 43
         <field-validator type="fieldexpression" short-circuit="true">
    

  • core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/common/TripGroupByReferentialHelper.java
    ... ... @@ -27,6 +27,7 @@ import fr.ird.observe.dto.data.ll.common.TripReference;
    27 27
     import fr.ird.observe.dto.data.ll.common.TripStatBuilder;
    
    28 28
     import fr.ird.observe.dto.referential.common.CountryReference;
    
    29 29
     import fr.ird.observe.dto.referential.common.VesselReference;
    
    30
    +import fr.ird.observe.dto.referential.ll.common.ObservationMethodReference;
    
    30 31
     import fr.ird.observe.dto.referential.ll.common.ProgramReference;
    
    31 32
     import fr.ird.observe.dto.referential.ll.common.TripTypeReference;
    
    32 33
     import fr.ird.observe.entities.referential.common.Country;
    
    ... ... @@ -37,6 +38,7 @@ import fr.ird.observe.entities.referential.common.ShipOwner;
    37 38
     import fr.ird.observe.entities.referential.common.Vessel;
    
    38 39
     import fr.ird.observe.entities.referential.common.VesselSizeCategory;
    
    39 40
     import fr.ird.observe.entities.referential.common.VesselType;
    
    41
    +import fr.ird.observe.entities.referential.ll.common.ObservationMethod;
    
    40 42
     import fr.ird.observe.entities.referential.ll.common.Program;
    
    41 43
     import fr.ird.observe.entities.referential.ll.common.TripType;
    
    42 44
     import fr.ird.observe.spi.context.DataGroupByReferentialHelper;
    
    ... ... @@ -68,6 +70,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
    68 70
         public final RelationCountCache<Trip> gearUseFeaturesCount;
    
    69 71
         private final ReferentialCache<ProgramReference, Program> program;
    
    70 72
         private final ReferentialCache<TripTypeReference, TripType> tripType;
    
    73
    +    private final ReferentialCache<ObservationMethodReference, ObservationMethod> observationMethod;
    
    71 74
         private final ReferentialCache<VesselReference, Vessel> vessel;
    
    72 75
         private final ReferentialCache<CountryReference, Country> country;
    
    73 76
         private final StatsBuilder statsBuilder;
    
    ... ... @@ -82,6 +85,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
    82 85
                           fr.ird.observe.entities.data.ll.common.GearUseFeatures.SPI),
    
    83 86
                   List.of(Ocean.SPI,
    
    84 87
                           Program.SPI,
    
    88
    +                      ObservationMethod.SPI,
    
    85 89
                           Country.SPI,
    
    86 90
                           Harbour.SPI,
    
    87 91
                           Person.SPI,
    
    ... ... @@ -94,6 +98,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
    94 98
             this.vessel = referentialGet(Vessel.class);
    
    95 99
             this.tripType = referentialGet(TripType.class);
    
    96 100
             this.country = referentialGet(Country.class);
    
    101
    +        this.observationMethod = referentialGet(ObservationMethod.class);
    
    97 102
     
    
    98 103
             this.observationActivityCount = relationGet(fr.ird.observe.entities.data.ll.observation.Activity.SPI);
    
    99 104
             this.logbookActivityCount = relationGet(fr.ird.observe.entities.data.ll.logbook.Activity.SPI);
    
    ... ... @@ -119,6 +124,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T
    119 124
             dto.setTripType(tripType.reference(resultSet, rowIndex));
    
    120 125
             dto.setObservationsAvailability(getBoolean(resultSet, rowIndex));
    
    121 126
             dto.setLogbookAvailability(getBoolean(resultSet, rowIndex));
    
    127
    +        dto.setObservationMethod(observationMethod.reference(resultSet, rowIndex));
    
    122 128
             statsBuilder.buildStatistics(dto);
    
    123 129
             return TripReference.of(referentialLocale, dto);
    
    124 130
         }
    

  • core/persistence/java/src/main/resources/fr/ird/observe/entities/data/ll/common/TripImpl.hbm.xml
    ... ... @@ -120,7 +120,7 @@
    120 120
         where e.lastUpdateDate > ?1
    
    121 121
     ]]></query>
    
    122 122
         <sql-query name="fr.ird.observe.entities.data.ll.common.Trip::reference" read-only="true"><![CDATA[
    
    123
    -    SELECT main.topiaId, main.topiaCreateDate, main.topiaVersion, main.lastUpdateDate, main.observationsProgram, main.logbookProgram, main.startDate, main.endDate, main.vessel, main.tripType, main.observationsAvailability, main.logbookAvailability FROM ll_common.trip main
    
    123
    +    SELECT main.topiaId, main.topiaCreateDate, main.topiaVersion, main.lastUpdateDate, main.observationsProgram, main.logbookProgram, main.startDate, main.endDate, main.vessel, main.tripType, main.observationsAvailability, main.logbookAvailability, main.observationMethod FROM ll_common.trip main
    
    124 124
     ]]></sql-query>
    
    125 125
         <sql-query name="fr.ird.observe.entities.data.ll.common.Trip::groupBy::startDate::count::all" read-only="true"><![CDATA[
    
    126 126
         SELECT TO_CHAR(e.startDate, 'YYYY-MM-DD'), COUNT(e.topiaId) FROM ll_common.trip e GROUP BY TO_CHAR(e.startDate, 'YYYY-MM-DD') ORDER BY TO_CHAR(e.startDate, 'YYYY-MM-DD');
    

  • core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-create.json
    ... ... @@ -44,7 +44,8 @@
    44 44
       "subSampleNumber": {
    
    45 45
         "errors": [
    
    46 46
           "subSampleNumber is a positive number",
    
    47
    -      "subSampleNumber is mandatory"
    
    47
    +      "subSampleNumber is mandatory",
    
    48
    +      "subSampleNumber must be strictly positive if Sample.superSample is true"
    
    48 49
         ]
    
    49 50
       },
    
    50 51
       "totalCount": {
    

  • core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-update.json
    ... ... @@ -44,7 +44,8 @@
    44 44
       "subSampleNumber": {
    
    45 45
         "errors": [
    
    46 46
           "subSampleNumber is a positive number",
    
    47
    -      "subSampleNumber is mandatory"
    
    47
    +      "subSampleNumber is mandatory",
    
    48
    +      "subSampleNumber must be strictly positive if Sample.superSample is true"
    
    48 49
         ]
    
    49 50
       },
    
    50 51
       "totalCount": {
    

  • core/services/i18n/src/main/i18n/translations/services_en_GB.properties
    ... ... @@ -136,7 +136,7 @@ observe.Common.gearCharacteristic.selected=Selected characteristics
    136 136
     observe.Common.gearCharacteristic.short=Caracteristic
    
    137 137
     observe.Common.gearUseFeatures=Gear use features
    
    138 138
     observe.Common.gearUseFeaturesMeasurement=Measurements
    
    139
    -observe.Common.generalComment=Comment « General » 
    
    139
    +observe.Common.generalComment=Comment « General »
    
    140 140
     observe.Common.generalTab=General characteristics
    
    141 141
     observe.Common.global.progression.description=Global progression
    
    142 142
     observe.Common.gonadeWeight=Gonade weight (g)
    
    ... ... @@ -454,7 +454,7 @@ observe.constant.TripMapPointType.psActivityObs=Observation - Other activity
    454 454
     observe.constant.TripMapPointType.psActivityObsInHarbour=Observation - In port
    
    455 455
     observe.constant.TripMapPointType.psActivityObsWithFreeSchoolType=Observation - Free School type
    
    456 456
     observe.constant.TripMapPointType.psActivityObsWithObjectSchoolType=Observation - Object School type
    
    457
    -observe.constant.TripMapPointType.psTransmittingBuoyLostLogbook=Logbook - Transmitting buoy lost 
    
    457
    +observe.constant.TripMapPointType.psTransmittingBuoyLostLogbook=Logbook - Transmitting buoy lost
    
    458 458
     observe.constant.TripMapPointType.psTripDepartureHarbour=Port departure
    
    459 459
     observe.constant.TripMapPointType.psTripLandingHarbour=Port landing
    
    460 460
     observe.constant.TypeTransmittingBuoyOperation.endOfUse=End of usage
    
    ... ... @@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=There is already another route
    910 910
     observe.data.ps.Route.validation.invalid.quadrant=Activity quadrant at position %1$s is not consistent with trip ocean (%2$s) of trip (indian\: 1 or 2, atlantic\: 1,2,3 or 4).
    
    911 911
     observe.data.ps.Route.validation.invalid.time=Observation time cant' be after the one of the previous activity (activity at position %1$s is not correct).
    
    912 912
     observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s)
    
    913
    +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ».
    
    913 914
     observe.data.ps.common.Trip.action.move.all=Move all
    
    914 915
     observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip
    
    915 916
     observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip
    
    ... ... @@ -918,7 +919,7 @@ observe.data.ps.common.Trip.action.openLinkReportsUrl.tip=View reports in a web
    918 919
     observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus=Advanced sampling
    
    919 920
     observe.data.ps.common.Trip.departureWellContentStatus=Departure well content status
    
    920 921
     observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled=Status is not filled.
    
    921
    -observe.data.ps.common.Trip.departureWellContentStatus.validation.required=Required departure well content status if logbook data is selected. 
    
    922
    +observe.data.ps.common.Trip.departureWellContentStatus.validation.required=Required departure well content status if logbook data is selected.
    
    922 923
     observe.data.ps.common.Trip.fishingTime=Fishing time (h)
    
    923 924
     observe.data.ps.common.Trip.gearUseFeaturesStat=Count of vessel equipment
    
    924 925
     observe.data.ps.common.Trip.landingAcquisitionStatus=Landing sheet collection
    

  • core/services/i18n/src/main/i18n/translations/services_es_ES.properties
    ... ... @@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=Ya existe otra ruta en esa fech
    910 910
     observe.data.ps.Route.validation.invalid.quadrant=El cuadrante de la actividad %1$s no es coherente con el océano (%2$s) de la marea (indico \: 1,2, atlántico \: 1, 2, 3, 4)
    
    911 911
     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).
    
    912 912
     observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s)
    
    913
    +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». \#TODO
    
    913 914
     observe.data.ps.common.Trip.action.move.all=Move all
    
    914 915
     observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip
    
    915 916
     observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip
    
    ... ... @@ -931,8 +932,8 @@ observe.data.ps.common.Trip.landingTotalWeight=Total débarqué (en t) \#TODO
    931 932
     observe.data.ps.common.Trip.landingWellContentStatus=État de remplissage des cuves après débarquement \#TODO
    
    932 933
     observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled=Status is not filled.
    
    933 934
     observe.data.ps.common.Trip.landingWellContentStatus.validation.required=Must be filled.
    
    934
    -observe.data.ps.common.Trip.localMarketAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market 
    
    935
    -observe.data.ps.common.Trip.localMarketSurveySamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market survey 
    
    935
    +observe.data.ps.common.Trip.localMarketAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market
    
    936
    +observe.data.ps.common.Trip.localMarketSurveySamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market survey
    
    936 937
     observe.data.ps.common.Trip.localMarketTotalWeight=Total marché local (en t) \#TODO
    
    937 938
     observe.data.ps.common.Trip.localMarketWellsSamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for  Local market well sampling
    
    938 939
     observe.data.ps.common.Trip.localmarketBatchStat=Count of batches « Local market » \#TODO
    

  • core/services/i18n/src/main/i18n/translations/services_fr_FR.properties
    ... ... @@ -241,7 +241,7 @@ observe.Common.observedSystem.available=Systèmes observés disponibles
    241 241
     observe.Common.observedSystem.selected=Systèmes observés sélectionnés
    
    242 242
     observe.Common.observedSystemDistance=Distance système observé (en milles avec 1 décimale)
    
    243 243
     observe.Common.observer=Observateur
    
    244
    -observe.Common.observer.validation.required=Le champs est obligatoire si données observations est sélectionné. 
    
    244
    +observe.Common.observer.validation.required=Le champs est obligatoire si données observations est sélectionné.
    
    245 245
     observe.Common.ocean=Ocean
    
    246 246
     observe.Common.ocean.available=Océans disponibles
    
    247 247
     observe.Common.ocean.selected=Océans sélectionnés
    
    ... ... @@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=Il existe déjà une autre rout
    910 910
     observe.data.ps.Route.validation.invalid.quadrant=Le quadrant de l’activité à la position %1$s n'est pas cohérent par rapport à l'océan (%2$s) de la marée (indien \: 1
    
    911 911
     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).
    
    912 912
     observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Le nombre mesuré (%s) doit valoir la somme des effectifs de fréquences (%s)
    
    913
    +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=Le numéro de sous-échantillon doit être strictement positif si l'échantillon est un « super échantillon ».
    
    913 914
     observe.data.ps.common.Trip.action.move.all=Déplacer des données
    
    914 915
     observe.data.ps.common.Trip.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ?
    
    915 916
     observe.data.ps.common.Trip.action.move.all.choose.parent.title=Changer la marée des données sélectionnées
    
    ... ... @@ -1147,7 +1148,7 @@ observe.data.ps.logbook.Route.type=Route
    1147 1148
     observe.data.ps.logbook.Route.validation.date.after.currentPsCommonTrip.startDate=Le jour d'observation (%2$s) doit être supérieure ou égale à la date de début de la marée (%1$s).
    
    1148 1149
     observe.data.ps.logbook.Route.validation.date.before.currentPsCommonTrip.endDate=La date (%1$s) doit être inférieure ou égale à la date de fin de marée (%2$s).
    
    1149 1150
     observe.data.ps.logbook.Sample.action.create=Échantillon suivant
    
    1150
    -observe.data.ps.logbook.Sample.action.move=Changer de marée 
    
    1151
    +observe.data.ps.logbook.Sample.action.move=Changer de marée
    
    1151 1152
     observe.data.ps.logbook.Sample.action.move.choose.parent.message=À quelle marée voulez-vous associer les échantillons sélectionnés ?
    
    1152 1153
     observe.data.ps.logbook.Sample.action.move.choose.parent.title=Changer la marée des échantillons
    
    1153 1154
     observe.data.ps.logbook.Sample.action.move.tip=Changer la marée des échantillons sélectionnés
    
    ... ... @@ -1190,7 +1191,7 @@ observe.data.ps.logbook.SampleSpecies.title=Échantillon espèce
    1190 1191
     observe.data.ps.logbook.SampleSpecies.totalCount=Nombre total
    
    1191 1192
     observe.data.ps.logbook.SampleSpecies.totalCount.short=Total
    
    1192 1193
     observe.data.ps.logbook.SampleSpecies.type=Échantillon espèce
    
    1193
    -observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount=Le nombre total doit etre supérieur ou égal à celui mesuré
    
    1194
    +observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount=Le nombre total doit être supérieur ou égal à celui mesuré
    
    1194 1195
     observe.data.ps.logbook.SampleSpeciesMeasure.count=Effectif
    
    1195 1196
     observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Effectif
    
    1196 1197
     observe.data.ps.logbook.SampleSpeciesMeasure.type=Mesure d'un échantillon espèce
    

  • core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ValidateService-dataResult.json
    ... ... @@ -84,12 +84,13 @@
    84 84
                 "needComment": false,
    
    85 85
                 "enabled": true,
    
    86 86
                 "id": "fr.ird.referential.common.Vessel#1433499225457#0.75786798959598",
    
    87
    -            "lastUpdateDate": "2016-12-06T15:54:27.727Z",
    
    88
    -            "topiaVersion": 6,
    
    87
    +            "lastUpdateDate": "2023-02-14T00:00:00.000Z",
    
    88
    +            "topiaVersion": 7,
    
    89 89
                 "topiaCreateDate": "2015-06-05T14:13:45.466Z"
    
    90 90
               },
    
    91 91
               "observationsAvailability": true,
    
    92 92
               "logbookAvailability": true,
    
    93
    +          "observationMethodId": "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1",
    
    93 94
               "homeId": "SRP-GRAN-20191026",
    
    94 95
               "id": "fr.ird.data.ll.common.Trip#1573218053521#0.35390398604784334",
    
    95 96
               "lastUpdateDate": "2021-05-01T10:36:12.695Z",
    

  • model/src/main/models/Observe/dto/class/references.properties
    ... ... @@ -21,7 +21,7 @@
    21 21
     ###
    
    22 22
     data.ll.common.GearUseFeatures=gearLabel,number,usedInTrip
    
    23 23
     data.ll.common.GearUseFeaturesMeasurement=measurementValue,gearCharacteristicLabel
    
    24
    -data.ll.common.Trip=startDate,endDate,observationsProgram,logbookProgram,tripTypeId,vessel,observationsAvailability,logbookAvailability
    
    24
    +data.ll.common.Trip=startDate,endDate,observationsProgram,logbookProgram,tripTypeId,vessel,observationsAvailability,logbookAvailability,observationMethodId
    
    25 25
     data.ll.landing.Landing=startDate,harbourLabel,vesselLabel
    
    26 26
     data.ll.landing.LandingPart=species,categoryMin,categoryMax,weight
    
    27 27
     data.ll.logbook.Activity=startTimeStamp,endTimeStamp,latitude,longitude,vesselActivity,set,activitySample,relatedObservedActivity
    

  • model/src/main/models/Observe/persistence/class/references.properties
    ... ... @@ -19,5 +19,5 @@
    19 19
     # <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    20 20
     # #L%
    
    21 21
     ###
    
    22
    -data.ll.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,tripType,observationsAvailability,logbookAvailability
    
    22
    +data.ll.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,tripType,observationsAvailability,logbookAvailability,observationMethod
    
    23 23
     data.ps.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,observationsAcquisitionStatus,logbookAcquisitionStatus,targetWellsSamplingAcquisitionStatus,landingAcquisitionStatus,localMarketAcquisitionStatus,localMarketWellsSamplingAcquisitionStatus,localMarketSurveySamplingAcquisitionStatus,advancedSamplingAcquisitionStatus

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create-error.xml
    ... ... @@ -109,6 +109,12 @@
    109 109
         <field-validator type="positiveNumber">
    
    110 110
           <message/>
    
    111 111
         </field-validator>
    
    112
    +
    
    113
    +    <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
    
    114
    +    <field-validator type="fieldexpression" short-circuit="true">
    
    115
    +      <param name="expression"><![CDATA[ currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
    
    116
    +      <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
    
    117
    +    </field-validator>
    
    112 118
       </field>
    
    113 119
     
    
    114 120
       <field name="totalCount">
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create.json
    ... ... @@ -44,7 +44,8 @@
    44 44
       "subSampleNumber": {
    
    45 45
         "errors": [
    
    46 46
           "subSampleNumber is a positive number",
    
    47
    -      "subSampleNumber is mandatory"
    
    47
    +      "subSampleNumber is mandatory",
    
    48
    +      "subSampleNumber must be strictly positive if Sample.superSample is true"
    
    48 49
         ]
    
    49 50
       },
    
    50 51
       "totalCount": {
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update-error.xml
    ... ... @@ -109,6 +109,12 @@
    109 109
         <field-validator type="positiveNumber">
    
    110 110
           <message/>
    
    111 111
         </field-validator>
    
    112
    +
    
    113
    +    <!-- subSampleNumber must be strictly positive if Sample.superSample is true -->
    
    114
    +    <field-validator type="fieldexpression" short-circuit="true">
    
    115
    +      <param name="expression"><![CDATA[ currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param>
    
    116
    +      <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message>
    
    117
    +    </field-validator>
    
    112 118
       </field>
    
    113 119
     
    
    114 120
       <field name="totalCount">
    

  • server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update.json
    ... ... @@ -44,7 +44,8 @@
    44 44
       "subSampleNumber": {
    
    45 45
         "errors": [
    
    46 46
           "subSampleNumber is a positive number",
    
    47
    -      "subSampleNumber is mandatory"
    
    47
    +      "subSampleNumber is mandatory",
    
    48
    +      "subSampleNumber must be strictly positive if Sample.superSample is true"
    
    48 49
         ]
    
    49 50
       },
    
    50 51
       "totalCount": {