Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
1ef6adbf
by Tony Chemit at 2023-04-14T10:04:08+02:00
-
8fb09b9c
by Tony Chemit at 2023-04-14T10:04:08+02:00
-
0dce310f
by Tony Chemit at 2023-04-14T10:04:08+02:00
24 changed files:
- client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIModelStates.java
- client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUITableModel.java
- core/api/dto/src/main/java/fr/ird/observe/dto/ProtectedIdsLl.java
- core/api/validation/src/main/filtered-resources/META-INF/validators/validation.json
- core/api/validation/src/main/i18n/getters/validation-messages.getter
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
- core/api/validation/src/main/resources/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
- core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-create-error-validation.xml
- core/api/validation/src/main/validation/fr/ird/observe/dto/data/ps/logbook/SampleSpeciesDto-update-error-validation.xml
- core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/common/TripGroupByReferentialHelper.java
- core/persistence/java/src/main/resources/fr/ird/observe/entities/data/ll/common/TripImpl.hbm.xml
- core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-create.json
- core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-update.json
- core/services/i18n/src/main/i18n/translations/services_en_GB.properties
- core/services/i18n/src/main/i18n/translations/services_es_ES.properties
- core/services/i18n/src/main/i18n/translations/services_fr_FR.properties
- core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ValidateService-dataResult.json
- model/src/main/models/Observe/dto/class/references.properties
- model/src/main/models/Observe/persistence/class/references.properties
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create-error.xml
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create.json
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update-error.xml
- server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update.json
Changes:
| ... | ... | @@ -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 | }
|
| ... | ... | @@ -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 | }
|
| ... | ... | @@ -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);
|
| ... | ... | @@ -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";
|
| ... | ... | @@ -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 | {
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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">
|
| ... | ... | @@ -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">
|
| ... | ... | @@ -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">
|
| ... | ... | @@ -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">
|
| ... | ... | @@ -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 | }
|
| ... | ... | @@ -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');
|
| ... | ... | @@ -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": {
|
| ... | ... | @@ -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": {
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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",
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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 |
| ... | ... | @@ -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">
|
| ... | ... | @@ -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": {
|
| ... | ... | @@ -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">
|
| ... | ... | @@ -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": {
|