Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 1ef6adbf by Tony Chemit at 2023-04-14T10:04:08+02:00 Etat par défaut du bouton radio Saisie groupée / Saisie individuelle sur capture LL - Closes #2671 - - - - - 8fb09b9c by Tony Chemit at 2023-04-14T10:04:08+02:00 Petites améliorations sur la gestion des numéros de sous-échantillons - Closes #2668 - - - - - 0dce310f by Tony Chemit at 2023-04-14T10:04:08+02:00 Dans les tableaux, remplacer les champs vides pour les nombres de valeur 0 par 0 - Closes #2674 - - - - - 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: ===================================== client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java ===================================== @@ -125,9 +125,9 @@ public class JXTableUtil { } Number reference = (Number) value; String result = reference.toString(); - if (reference.doubleValue() == 0) { - return null; - } +// if (reference.doubleValue() == 0) { +// return null; +// } if (reference instanceof Integer) { return result; } ===================================== 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; import fr.ird.observe.client.datasource.api.cache.ReferencesCache; import fr.ird.observe.client.datasource.api.cache.ReferencesFilterHelper; import fr.ird.observe.client.datasource.editor.api.content.ContentUI; +import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode; import fr.ird.observe.client.datasource.editor.ll.data.observation.composition.LonglinePositionHelper; import fr.ird.observe.client.util.init.DefaultUIInitializerResult; +import fr.ird.observe.dto.ProtectedIdsLl; +import fr.ird.observe.dto.data.CatchAcquisitionMode; +import fr.ird.observe.dto.data.ll.common.TripReference; import fr.ird.observe.dto.data.ll.observation.BranchlineDto; import fr.ird.observe.dto.data.ll.observation.CatchDto; import fr.ird.observe.dto.data.ll.observation.SetCatchDto; @@ -52,6 +56,13 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates { */ protected boolean showIndividualTabs; + /** + * Default acquisition mode to use. + * <p> + * See <a href="https://gitlab.com/ultreiaio/ird-observe/-/issues/2671">issue 2671</a> + */ + private CatchAcquisitionMode defaultAcquisitionMode; + public SetCatchUIModelStates(GeneratedSetCatchUIModel model) { super(model); this.branchlineBean = new BranchlineDto(); @@ -62,6 +73,10 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates { super.init(ui, initializerResult); SetCatchUI ui1 = (SetCatchUI) ui; positionHelper = new LonglinePositionHelper<>(ui1.getSection(), ui1.getBasket(), ui1.getBranchline(), ui1.getTableEditBean()); + TripUINavigationNode tripNode = (TripUINavigationNode) ui1.getModel().getSource().upToReferenceNode(TripReference.class); + TripReference tripReference = tripNode.getReference(); + String observationMethodId = tripReference.getObservationMethodId(); + this.defaultAcquisitionMode = ProtectedIdsLl.LL_OBSERVATION_GROUPED_OBSERVATION_METHOD_ID.equals(observationMethodId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL; } @Override @@ -82,6 +97,16 @@ public class SetCatchUIModelStates extends GeneratedSetCatchUIModelStates { super.copyFormToBean(form); } + @Override + public void initDefault(CatchDto newTableBean) { + super.initDefault(newTableBean); + newTableBean.setAcquisitionMode(defaultAcquisitionMode.ordinal()); + } + + public CatchAcquisitionMode getDefaultAcquisitionMode() { + return defaultAcquisitionMode; + } + public BranchlineDto getBranchlineBean() { return branchlineBean; } ===================================== 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; * #L% */ -import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; -import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode; import fr.ird.observe.client.util.table.EditableListProperty; -import fr.ird.observe.dto.ProtectedIdsLl; import fr.ird.observe.dto.data.CatchAcquisitionMode; -import fr.ird.observe.dto.data.ll.common.TripReference; import fr.ird.observe.dto.data.ll.observation.CatchDto; import fr.ird.observe.dto.data.ll.observation.SizeMeasureDto; import fr.ird.observe.dto.data.ll.observation.WeightMeasureDto; @@ -112,14 +108,7 @@ public class SetCatchUITableModel extends GeneratedSetCatchUITableModel { if (newRow) { // go back to first pane ui.getMainTabbedPane().setSelectedIndex(0); - NavigationNode selectedNode = handler.getNavigationTree().getSelectedNode(); - while (!(selectedNode instanceof TripUINavigationNode)) { - selectedNode = selectedNode.getParent(); - } - TripReference tripReference = ((TripUINavigationNode) selectedNode).getReference(); - String tripTypeId = tripReference.getTripTypeId(); - log.info(String.format("%s Use trip type id: %s", prefix, tripTypeId)); - acquisitionModeEnum = ProtectedIdsLl.LL_OBSERVATION_GROUPED_TRIP_TYPE_ID.equals(tripTypeId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL; + acquisitionModeEnum = getModel().getStates().getDefaultAcquisitionMode(); ui.getPredator().setEnabled(false); ui.getHookWhenDiscarded().setEnabled(false); ui.getDiscardHealthStatus().setEnabled(false); ===================================== core/api/dto/src/main/java/fr/ird/observe/dto/ProtectedIdsLl.java ===================================== @@ -48,7 +48,7 @@ public interface ProtectedIdsLl { String LL_COMMON_ACTIVITY_HARBOUR_ID = "fr.ird.referential.ll.common.VesselActivity#666#03"; - String LL_OBSERVATION_GROUPED_TRIP_TYPE_ID = "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1"; + String LL_OBSERVATION_GROUPED_OBSERVATION_METHOD_ID = "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1"; String LL_OBSERVATION_CATCH_DISCARDED_CATCH_FATE_ID = "fr.ird.referential.ll.common.CatchFate#1239832686125#0.3"; String LL_LOGBOOK_ACTIVITY_DEFAULT_DATA_QUALITY_ID = "fr.ird.referential.common.DataQuality#0#1"; 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 @@ "name": "subSampleNumber", "comments": [ "subSampleNumber is a positive number", - "subSampleNumber is mandatory" + "subSampleNumber is mandatory", + "subSampleNumber must be strictly positive if Sample.superSample is true" ] }, { @@ -11621,7 +11622,8 @@ "name": "subSampleNumber", "comments": [ "subSampleNumber is a positive number", - "subSampleNumber is mandatory" + "subSampleNumber is mandatory", + "subSampleNumber must be strictly positive if Sample.superSample is true" ] }, { ===================================== core/api/validation/src/main/i18n/getters/validation-messages.getter ===================================== @@ -53,6 +53,7 @@ observe.data.ll.observation.Tdr.validation.fishingEnd.after.fishingStart observe.data.ll.observation.Tdr.validation.fishingStart.after.deploymentStart observe.data.ps.Route.validation.duplicated.date observe.data.ps.SampleSpecies.validation.mismatch.measuredCount +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled observe.data.ps.common.Trip.departureWellContentStatus.validation.required 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 @@ <field-validator type="positiveNumber"> <message/> </field-validator> + + <!-- subSampleNumber must be strictly positive if Sample.superSample is true --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param> + <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message> + </field-validator> </field> <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 @@ <field-validator type="positiveNumber"> <message/> </field-validator> + + <!-- subSampleNumber must be strictly positive if Sample.superSample is true --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param> + <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message> + </field-validator> </field> <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 @@ </field-validator> </field> + <field name="subSampleNumber"> + <!-- subSampleNumber must be strictly positive if Sample.superSample is true --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param> + <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message> + </field-validator> + </field> + <field name="totalCount"> <!-- totalCount >= measuredCount --> <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 @@ </field-validator> </field> + <field name="subSampleNumber"> + <!-- subSampleNumber must be strictly positive if Sample.superSample is true --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ !currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param> + <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message> + </field-validator> + </field> + <field name="totalCount"> <!-- totalCount >= measuredCount --> <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; import fr.ird.observe.dto.data.ll.common.TripStatBuilder; import fr.ird.observe.dto.referential.common.CountryReference; import fr.ird.observe.dto.referential.common.VesselReference; +import fr.ird.observe.dto.referential.ll.common.ObservationMethodReference; import fr.ird.observe.dto.referential.ll.common.ProgramReference; import fr.ird.observe.dto.referential.ll.common.TripTypeReference; import fr.ird.observe.entities.referential.common.Country; @@ -37,6 +38,7 @@ import fr.ird.observe.entities.referential.common.ShipOwner; import fr.ird.observe.entities.referential.common.Vessel; import fr.ird.observe.entities.referential.common.VesselSizeCategory; import fr.ird.observe.entities.referential.common.VesselType; +import fr.ird.observe.entities.referential.ll.common.ObservationMethod; import fr.ird.observe.entities.referential.ll.common.Program; import fr.ird.observe.entities.referential.ll.common.TripType; import fr.ird.observe.spi.context.DataGroupByReferentialHelper; @@ -68,6 +70,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T public final RelationCountCache<Trip> gearUseFeaturesCount; private final ReferentialCache<ProgramReference, Program> program; private final ReferentialCache<TripTypeReference, TripType> tripType; + private final ReferentialCache<ObservationMethodReference, ObservationMethod> observationMethod; private final ReferentialCache<VesselReference, Vessel> vessel; private final ReferentialCache<CountryReference, Country> country; private final StatsBuilder statsBuilder; @@ -82,6 +85,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T fr.ird.observe.entities.data.ll.common.GearUseFeatures.SPI), List.of(Ocean.SPI, Program.SPI, + ObservationMethod.SPI, Country.SPI, Harbour.SPI, Person.SPI, @@ -94,6 +98,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T this.vessel = referentialGet(Vessel.class); this.tripType = referentialGet(TripType.class); this.country = referentialGet(Country.class); + this.observationMethod = referentialGet(ObservationMethod.class); this.observationActivityCount = relationGet(fr.ird.observe.entities.data.ll.observation.Activity.SPI); this.logbookActivityCount = relationGet(fr.ird.observe.entities.data.ll.logbook.Activity.SPI); @@ -119,6 +124,7 @@ public class TripGroupByReferentialHelper extends DataGroupByReferentialHelper<T dto.setTripType(tripType.reference(resultSet, rowIndex)); dto.setObservationsAvailability(getBoolean(resultSet, rowIndex)); dto.setLogbookAvailability(getBoolean(resultSet, rowIndex)); + dto.setObservationMethod(observationMethod.reference(resultSet, rowIndex)); statsBuilder.buildStatistics(dto); return TripReference.of(referentialLocale, dto); } ===================================== core/persistence/java/src/main/resources/fr/ird/observe/entities/data/ll/common/TripImpl.hbm.xml ===================================== @@ -120,7 +120,7 @@ where e.lastUpdateDate > ?1 ]]></query> <sql-query name="fr.ird.observe.entities.data.ll.common.Trip::reference" read-only="true"><![CDATA[ - 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 + 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 ]]></sql-query> <sql-query name="fr.ird.observe.entities.data.ll.common.Trip::groupBy::startDate::count::all" read-only="true"><![CDATA[ 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 @@ "subSampleNumber": { "errors": [ "subSampleNumber is a positive number", - "subSampleNumber is mandatory" + "subSampleNumber is mandatory", + "subSampleNumber must be strictly positive if Sample.superSample is true" ] }, "totalCount": { ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/SampleSpecies/validation-update.json ===================================== @@ -44,7 +44,8 @@ "subSampleNumber": { "errors": [ "subSampleNumber is a positive number", - "subSampleNumber is mandatory" + "subSampleNumber is mandatory", + "subSampleNumber must be strictly positive if Sample.superSample is true" ] }, "totalCount": { ===================================== core/services/i18n/src/main/i18n/translations/services_en_GB.properties ===================================== @@ -136,7 +136,7 @@ observe.Common.gearCharacteristic.selected=Selected characteristics observe.Common.gearCharacteristic.short=Caracteristic observe.Common.gearUseFeatures=Gear use features observe.Common.gearUseFeaturesMeasurement=Measurements -observe.Common.generalComment=Comment « General » +observe.Common.generalComment=Comment « General » observe.Common.generalTab=General characteristics observe.Common.global.progression.description=Global progression observe.Common.gonadeWeight=Gonade weight (g) @@ -454,7 +454,7 @@ observe.constant.TripMapPointType.psActivityObs=Observation - Other activity observe.constant.TripMapPointType.psActivityObsInHarbour=Observation - In port observe.constant.TripMapPointType.psActivityObsWithFreeSchoolType=Observation - Free School type observe.constant.TripMapPointType.psActivityObsWithObjectSchoolType=Observation - Object School type -observe.constant.TripMapPointType.psTransmittingBuoyLostLogbook=Logbook - Transmitting buoy lost +observe.constant.TripMapPointType.psTransmittingBuoyLostLogbook=Logbook - Transmitting buoy lost observe.constant.TripMapPointType.psTripDepartureHarbour=Port departure observe.constant.TripMapPointType.psTripLandingHarbour=Port landing observe.constant.TypeTransmittingBuoyOperation.endOfUse=End of usage @@ -910,6 +910,7 @@ observe.data.ps.Route.validation.duplicated.date=There is already another route 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). 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). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s) +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». observe.data.ps.common.Trip.action.move.all=Move all observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip 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 observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus=Advanced sampling observe.data.ps.common.Trip.departureWellContentStatus=Departure well content status observe.data.ps.common.Trip.departureWellContentStatus.validation.notFilled=Status is not filled. -observe.data.ps.common.Trip.departureWellContentStatus.validation.required=Required departure well content status if logbook data is selected. +observe.data.ps.common.Trip.departureWellContentStatus.validation.required=Required departure well content status if logbook data is selected. observe.data.ps.common.Trip.fishingTime=Fishing time (h) observe.data.ps.common.Trip.gearUseFeaturesStat=Count of vessel equipment 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 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) 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). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s) +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=The sub sample number must be strictly positive if the sample is a « super sample ». \#TODO observe.data.ps.common.Trip.action.move.all=Move all observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip 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 observe.data.ps.common.Trip.landingWellContentStatus=État de remplissage des cuves après débarquement \#TODO observe.data.ps.common.Trip.landingWellContentStatus.validation.notFilled=Status is not filled. observe.data.ps.common.Trip.landingWellContentStatus.validation.required=Must be filled. -observe.data.ps.common.Trip.localMarketAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market -observe.data.ps.common.Trip.localMarketSurveySamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market survey +observe.data.ps.common.Trip.localMarketAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market +observe.data.ps.common.Trip.localMarketSurveySamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market survey observe.data.ps.common.Trip.localMarketTotalWeight=Total marché local (en t) \#TODO observe.data.ps.common.Trip.localMarketWellsSamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for Local market well sampling 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 observe.Common.observedSystem.selected=Systèmes observés sélectionnés observe.Common.observedSystemDistance=Distance système observé (en milles avec 1 décimale) observe.Common.observer=Observateur -observe.Common.observer.validation.required=Le champs est obligatoire si données observations est sélectionné. +observe.Common.observer.validation.required=Le champs est obligatoire si données observations est sélectionné. observe.Common.ocean=Ocean observe.Common.ocean.available=Océans disponibles 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 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 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). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Le nombre mesuré (%s) doit valoir la somme des effectifs de fréquences (%s) +observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber=Le numéro de sous-échantillon doit être strictement positif si l'échantillon est un « super échantillon ». observe.data.ps.common.Trip.action.move.all=Déplacer des données observe.data.ps.common.Trip.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ? 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 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). 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). observe.data.ps.logbook.Sample.action.create=Échantillon suivant -observe.data.ps.logbook.Sample.action.move=Changer de marée +observe.data.ps.logbook.Sample.action.move=Changer de marée observe.data.ps.logbook.Sample.action.move.choose.parent.message=À quelle marée voulez-vous associer les échantillons sélectionnés ? observe.data.ps.logbook.Sample.action.move.choose.parent.title=Changer la marée des échantillons 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 observe.data.ps.logbook.SampleSpecies.totalCount=Nombre total observe.data.ps.logbook.SampleSpecies.totalCount.short=Total observe.data.ps.logbook.SampleSpecies.type=Échantillon espèce -observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount=Le nombre total doit etre supérieur ou égal à celui mesuré +observe.data.ps.logbook.SampleSpecies.validation.mismatch.totalCount=Le nombre total doit être supérieur ou égal à celui mesuré observe.data.ps.logbook.SampleSpeciesMeasure.count=Effectif observe.data.ps.logbook.SampleSpeciesMeasure.count.short=Effectif 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 @@ "needComment": false, "enabled": true, "id": "fr.ird.referential.common.Vessel#1433499225457#0.75786798959598", - "lastUpdateDate": "2016-12-06T15:54:27.727Z", - "topiaVersion": 6, + "lastUpdateDate": "2023-02-14T00:00:00.000Z", + "topiaVersion": 7, "topiaCreateDate": "2015-06-05T14:13:45.466Z" }, "observationsAvailability": true, "logbookAvailability": true, + "observationMethodId": "fr.ird.referential.ll.common.ObservationMethod#1239832686136#0.1", "homeId": "SRP-GRAN-20191026", "id": "fr.ird.data.ll.common.Trip#1573218053521#0.35390398604784334", "lastUpdateDate": "2021-05-01T10:36:12.695Z", ===================================== model/src/main/models/Observe/dto/class/references.properties ===================================== @@ -21,7 +21,7 @@ ### data.ll.common.GearUseFeatures=gearLabel,number,usedInTrip data.ll.common.GearUseFeaturesMeasurement=measurementValue,gearCharacteristicLabel -data.ll.common.Trip=startDate,endDate,observationsProgram,logbookProgram,tripTypeId,vessel,observationsAvailability,logbookAvailability +data.ll.common.Trip=startDate,endDate,observationsProgram,logbookProgram,tripTypeId,vessel,observationsAvailability,logbookAvailability,observationMethodId data.ll.landing.Landing=startDate,harbourLabel,vesselLabel data.ll.landing.LandingPart=species,categoryMin,categoryMax,weight 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 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -data.ll.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,tripType,observationsAvailability,logbookAvailability +data.ll.common.Trip=lastUpdateDate,observationsProgram,logbookProgram,startDate,endDate,vessel,tripType,observationsAvailability,logbookAvailability,observationMethod 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 @@ <field-validator type="positiveNumber"> <message/> </field-validator> + + <!-- subSampleNumber must be strictly positive if Sample.superSample is true --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param> + <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message> + </field-validator> </field> <field name="totalCount"> ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-create.json ===================================== @@ -44,7 +44,8 @@ "subSampleNumber": { "errors": [ "subSampleNumber is a positive number", - "subSampleNumber is mandatory" + "subSampleNumber is mandatory", + "subSampleNumber must be strictly positive if Sample.superSample is true" ] }, "totalCount": { ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update-error.xml ===================================== @@ -109,6 +109,12 @@ <field-validator type="positiveNumber"> <message/> </field-validator> + + <!-- subSampleNumber must be strictly positive if Sample.superSample is true --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"><![CDATA[ currentPsLogbookSample.superSample || subSampleNumber > 0 ]]></param> + <message>observe.data.ps.SampleSpecies.validation.mismatch.subSampleNumber</message> + </field-validator> </field> <field name="totalCount"> ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/SampleSpecies/validation-update.json ===================================== @@ -44,7 +44,8 @@ "subSampleNumber": { "errors": [ "subSampleNumber is a positive number", - "subSampleNumber is mandatory" + "subSampleNumber is mandatory", + "subSampleNumber must be strictly positive if Sample.superSample is true" ] }, "totalCount": { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/37c9f70e1e6ccb0bb8ead99d5... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/37c9f70e1e6ccb0bb8ead99d5... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)