Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 6a3d4d30 by Tony CHEMIT at 2018-09-23T10:58:39Z Widget température °C/°F : message de validation perfectible - Closes #960 - - - - - 19 changed files: - client/src/main/java/fr/ird/observe/client/ui/actions/content/ShowTechnicalInformationsAction.java - client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/ActivityLonglineLogbookUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/obs/ActivityLonglineObsUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/ActivitySeineUIHandler.java - client/src/main/java/fr/ird/observe/client/validation/ClientValidationContext.java - services/pom.xml - + services/src/main/java/fr/ird/observe/services/validation/validators/TemperatureBoundFieldValidator.java - validation/pom.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineLogbookDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineLogbookDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineObsDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineObsDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/seine/ActivitySeineDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/seine/ActivitySeineDto-update-error-validation.xml - validation/src/main/resources/i18n/validation_en_GB.properties - validation/src/main/resources/i18n/validation_es_ES.properties - validation/src/main/resources/i18n/validation_fr_FR.properties - validation/src/main/resources/validators.xml Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/ShowTechnicalInformationsAction.java ===================================== @@ -10,12 +10,12 @@ package fr.ird.observe.client.ui.actions.content; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. ===================================== client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java ===================================== @@ -63,6 +63,7 @@ import org.nuiton.jaxx.runtime.swing.editor.EnumEditor; import org.nuiton.jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import org.nuiton.jaxx.runtime.swing.renderer.EnumEditorRenderer; import org.nuiton.jaxx.validator.JAXXValidator; +import org.nuiton.jaxx.validator.swing.SwingValidator; import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; import org.nuiton.jaxx.widgets.datetime.DateTimeEditor; import org.nuiton.jaxx.widgets.datetime.TimeEditor; @@ -343,6 +344,10 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> editor.setConfig(new TemperatureEditorConfig(TemperatureFormat.C, getBean(), label.getText(), propertyName)); editor.init(label); + editor.getModel().addPropertyChangeListener("format", e -> { + ((SwingValidator<?>) ui.getObjectById("validator")).doValidate(); + }); + } private void init(BigTextEditor editor) { ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/ActivityLonglineLogbookUIHandler.java ===================================== @@ -171,7 +171,7 @@ class ActivityLonglineLogbookUIHandler extends ContentOpenableUIHandler<Activity ClientValidationContext validationContext = ObserveSwingApplicationContext.get().getValidationContext(); validationContext.setCoordinatesEditor("coordinate", getUi().getCoordinatesEditor()); - + validationContext.setTemperatureEditorModel("seaSurfaceTemperature", getUi().getSeaSurfaceTemperature().getModel()); } @Override ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/obs/ActivityLonglineObsUIHandler.java ===================================== @@ -170,7 +170,7 @@ class ActivityLonglineObsUIHandler extends ContentOpenableUIHandler<ActivityLong ClientValidationContext validationContext = ObserveSwingApplicationContext.get().getValidationContext(); validationContext.setCoordinatesEditor("coordinate", getUi().getCoordinatesEditor()); - + validationContext.setTemperatureEditorModel("seaSurfaceTemperature", getUi().getSeaSurfaceTemperature().getModel()); } @Override ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/ActivitySeineUIHandler.java ===================================== @@ -81,9 +81,10 @@ class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySeineDto, ClientValidationContext validationContext = ObserveSwingApplicationContext.get().getValidationContext(); validationContext.setCoordinatesEditor("coordinate", getUi().getCoordinatesEditor()); - + validationContext.setTemperatureEditorModel("seaSurfaceTemperature", getUi().getSeaSurfaceTemperature().getModel()); } + @Override protected ContentMode getContentMode() { String selectedId = getSelectedId(); ===================================== client/src/main/java/fr/ird/observe/client/validation/ClientValidationContext.java ===================================== @@ -8,12 +8,12 @@ * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. @@ -39,6 +39,7 @@ import fr.ird.observe.dto.referential.seine.ObservedSystemReference; import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.validation.ValidationContext; import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; +import org.nuiton.jaxx.widgets.temperature.TemperatureEditorModel; import java.util.List; import java.util.Map; @@ -53,6 +54,7 @@ import java.util.function.Supplier; public class ClientValidationContext extends ValidationContext { private Map<String, CoordinatesEditor> coordinatesEditors = new TreeMap<>(); + private Map<String, TemperatureEditorModel> temperatureEditorModels = new TreeMap<>(); public ClientValidationContext(ClientConfig config) { super(ObserveSwingApplicationContext.get().getNavigationSelect(), @@ -145,4 +147,15 @@ public class ClientValidationContext extends ValidationContext { coordinatesEditors.put(name, editor); } + public Map<String, TemperatureEditorModel> getTemperatureEditorModels() { + return temperatureEditorModels; + } + + public TemperatureEditorModel getTemperatureEditorModel(String name) { + return temperatureEditorModels.get(name); + } + + public void setTemperatureEditorModel(String name, TemperatureEditorModel editor) { + temperatureEditorModels.put(name, editor); + } } ===================================== services/pom.xml ===================================== @@ -88,6 +88,10 @@ <groupId>io.ultreia.java4all.http</groupId> <artifactId>http-api</artifactId> </dependency> + <dependency> + <groupId>io.ultreia.java4all</groupId> + <artifactId>java-lang</artifactId> + </dependency> <dependency> <groupId>io.ultreia.java4all.jaxx</groupId> @@ -161,6 +165,10 @@ <groupId>io.ultreia.java4all.topia</groupId> <artifactId>service-script</artifactId> </dependency> + <dependency> + <groupId>io.ultreia.java4all.jaxx</groupId> + <artifactId>jaxx-widgets-temperature</artifactId> + </dependency> </dependencies> ===================================== services/src/main/java/fr/ird/observe/services/validation/validators/TemperatureBoundFieldValidator.java ===================================== @@ -0,0 +1,149 @@ +package fr.ird.observe.services.validation.validators; + +/*- + * #%L + * ObServe :: Services API + * %% + * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.opensymphony.xwork2.validator.ValidationException; +import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; +import org.nuiton.jaxx.widgets.temperature.I18nEnumHelper; +import org.nuiton.jaxx.widgets.temperature.TemperatureEditorModel; +import org.nuiton.jaxx.widgets.temperature.TemperatureFormat; + +import java.util.Map; + +/** + * To validate that the temperature is in correct bound. + * <p> + * Created by tchemit on 22/09/2018. + * + * @author Tony Chemit - dev@tchemit.fr + */ +public class TemperatureBoundFieldValidator extends FieldValidatorSupport { + + /** + * Default temperature format (min and max are based on this format). + */ + private TemperatureFormat defaultTemperatureFormat; + /** + * Min temperature. + */ + private Float min; + /** + * Max temperature. + */ + private Float max; + + public void setDefaultTemperatureFormat(String defaultTemperatureFormat) { + this.defaultTemperatureFormat = TemperatureFormat.valueOf(defaultTemperatureFormat); + } + + public void setMin(String min) { + this.min = Float.valueOf(min); + } + + public void setMax(String max) { + this.max = Float.valueOf(max); + } + + @Override + public void validate(Object object) throws ValidationException { + + if (min == null) { + throw new ValidationException("No parameter 'min' filled"); + } + if (max == null) { + throw new ValidationException("No parameter 'max' filled"); + } + if (min >= max) { + throw new ValidationException(String.format("No parameter 'min' (%s) is greater than 'max' (%s)", min, max)); + } + String fieldName = getFieldName(); + if (fieldName == null) { + throw new ValidationException("No parameter 'fieldName' filled"); + } + Float temperature = (Float) getFieldValue(fieldName, object); + if (temperature == null) { + return; + } + + @SuppressWarnings("unchecked") Map<String, TemperatureEditorModel> map = (Map<String, TemperatureEditorModel>) getFieldValue("temperatureEditorModels", object); + TemperatureFormat temperatureFormat = defaultTemperatureFormat; + if (map != null) { + + TemperatureEditorModel temperatureEditorModel = map.get(fieldName); + //FIXME une validation est lancé dans l'ui alors que l'on ne devrait pas et on a pas ce composant alors + if (temperatureEditorModel != null) { + temperatureFormat = temperatureEditorModel.getFormat(); + } + } + + if (temperature < min || temperature > max) { + float min; + float max; + if (temperatureFormat.equals(defaultTemperatureFormat)) { + min = this.min; + max = this.max; + } else { + min = defaultTemperatureFormat.convert(this.min, temperatureFormat); + max = defaultTemperatureFormat.convert(this.max, temperatureFormat); + } + stack.set(fieldName + "Bound", new TemperatureResult(min, max, I18nEnumHelper.getLabel(temperatureFormat))); + try { + addFieldError(fieldName, object); + } finally { + stack.pop(); + } + } + + } + + @Override + public String getValidatorType() { + return "temperatureBound"; + } + + static class TemperatureResult { + private final float min; + private final float max; + private final String format; + + TemperatureResult(float min, float max, String format) { + this.min = min; + this.max = max; + this.format = format; + } + + public float getMin() { + return min; + } + + public float getMax() { + return max; + } + + public String getFormat() { + return format; + } + } + +} + ===================================== validation/pom.xml ===================================== @@ -201,6 +201,11 @@ <artifactId>jaxx-widgets-gis</artifactId> <version>${lib.version.java4all.jaxx}</version> </dependency> + <dependency> + <groupId>io.ultreia.java4all.jaxx</groupId> + <artifactId>jaxx-widgets-temperature</artifactId> + <version>${lib.version.java4all.jaxx}</version> + </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineLogbookDto-create-error-validation.xml ===================================== @@ -77,16 +77,14 @@ <field name="seaSurfaceTemperature"> <!-- temperature surface non saisie || 12.0 <= temperature surface <= 35.0 --> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:12.0|max:35.0</param> - <param name="expression"> - <![CDATA[ seaSurfaceTemperature == null || (doubles.min <= seaSurfaceTemperature && seaSurfaceTemperature <= doubles.max)]]> - </param> + <field-validator type="temperatureBound" short-circuit="true"> + <param name="min">12.0</param> + <param name="max">35.0</param> + <param name="defaultTemperatureFormat">C</param> <message> - observe.validation.activity.bound.seaSurfaceTemperature##${doubles.min}##${doubles.max} + observe.validation.activity.bound.seaSurfaceTemperature##${seaSurfaceTemperatureBound.min}##${seaSurfaceTemperatureBound.max}##${seaSurfaceTemperatureBound.format} </message> </field-validator> - </field> <field name="quadrant"> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineLogbookDto-update-error-validation.xml ===================================== @@ -62,16 +62,14 @@ <field name="seaSurfaceTemperature"> <!-- temperature surface non saisie || 12.0 <= temperature surface <= 35.0 --> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:12.0|max:35.0</param> - <param name="expression"> - <![CDATA[ seaSurfaceTemperature == null || (doubles.min <= seaSurfaceTemperature && seaSurfaceTemperature <= doubles.max)]]> - </param> + <field-validator type="temperatureBound" short-circuit="true"> + <param name="min">12.0</param> + <param name="max">35.0</param> + <param name="defaultTemperatureFormat">C</param> <message> - observe.validation.activity.bound.seaSurfaceTemperature##${doubles.min}##${doubles.max} + observe.validation.activity.bound.seaSurfaceTemperature##${seaSurfaceTemperatureBound.min}##${seaSurfaceTemperatureBound.max}##${seaSurfaceTemperatureBound.format} </message> </field-validator> - </field> <field name="quadrant"> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineObsDto-create-error-validation.xml ===================================== @@ -77,13 +77,12 @@ <field name="seaSurfaceTemperature"> <!-- temperature surface non saisie || 12.0 <= temperature surface <= 35.0 --> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:12.0|max:35.0</param> - <param name="expression"> - <![CDATA[ seaSurfaceTemperature == null || (doubles.min <= seaSurfaceTemperature && seaSurfaceTemperature <= doubles.max)]]> - </param> + <field-validator type="temperatureBound" short-circuit="true"> + <param name="min">12.0</param> + <param name="max">35.0</param> + <param name="defaultTemperatureFormat">C</param> <message> - observe.validation.activity.bound.seaSurfaceTemperature##${doubles.min}##${doubles.max} + observe.validation.activity.bound.seaSurfaceTemperature##${seaSurfaceTemperatureBound.min}##${seaSurfaceTemperatureBound.max}##${seaSurfaceTemperatureBound.format} </message> </field-validator> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineObsDto-update-error-validation.xml ===================================== @@ -62,13 +62,12 @@ <field name="seaSurfaceTemperature"> <!-- temperature surface non saisie || 12.0 <= temperature surface <= 35.0 --> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:12.0|max:35.0</param> - <param name="expression"> - <![CDATA[ seaSurfaceTemperature == null || (doubles.min <= seaSurfaceTemperature && seaSurfaceTemperature <= doubles.max)]]> - </param> + <field-validator type="temperatureBound" short-circuit="true"> + <param name="min">12.0</param> + <param name="max">35.0</param> + <param name="defaultTemperatureFormat">C</param> <message> - observe.validation.activity.bound.seaSurfaceTemperature##${doubles.min}##${doubles.max} + observe.validation.activity.bound.seaSurfaceTemperature##${seaSurfaceTemperatureBound.min}##${seaSurfaceTemperatureBound.max}##${seaSurfaceTemperatureBound.format} </message> </field-validator> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/seine/ActivitySeineDto-create-error-validation.xml ===================================== @@ -251,28 +251,12 @@ <field name="seaSurfaceTemperature"> <!-- temperature surface non saisie || 12.0 <= temperature surface <= 35.0 --> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:12.0|max:35.0</param> - <param name="expression"> - <![CDATA[ seaSurfaceTemperature == null || (doubles.min <= seaSurfaceTemperature && seaSurfaceTemperature <= doubles.max)]]> - </param> - <message> - observe.validation.activity.bound.seaSurfaceTemperature##${doubles.min}##${doubles.max} - </message> - </field-validator> - - <!-- coherence temperature surface (delta de 12° par rapport a celle de l'activity precedente) --> - <field-validator type="fieldexpression"> - <param name="expression"><![CDATA[ - seaSurfaceTemperature == null || previousActivity == null || previousActivity.seaSurfaceTemperature == null || - (previousActivity.seaSurfaceTemperature > seaSurfaceTemperature ? - previousActivity.seaSurfaceTemperature - seaSurfaceTemperature <= 12.0 - : seaSurfaceTemperature - previousActivity.seaSurfaceTemperature <= 12.0 - ) - ]]> - </param> + <field-validator type="temperatureBound" short-circuit="true"> + <param name="min">12.0</param> + <param name="max">35.0</param> + <param name="defaultTemperatureFormat">C</param> <message> - observe.validation.activity.invalid.seaSurfaceTemperature##${seaSurfaceTemperature}##${previousActivity.seaSurfaceTemperature}##${previousActivity.time} + observe.validation.activity.bound.seaSurfaceTemperature##${seaSurfaceTemperatureBound.min}##${seaSurfaceTemperatureBound.max}##${seaSurfaceTemperatureBound.format} </message> </field-validator> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/seine/ActivitySeineDto-update-error-validation.xml ===================================== @@ -180,31 +180,14 @@ <field name="seaSurfaceTemperature"> <!-- temperature surface non saisie || 12.0 <= temperature surface <= 35.0 --> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:12.0|max:35.0</param> - <param name="expression"> - <![CDATA[ seaSurfaceTemperature == null || (doubles.min <= seaSurfaceTemperature && seaSurfaceTemperature <= doubles.max)]]> - </param> - <message> - observe.validation.activity.bound.seaSurfaceTemperature##${doubles.min}##${doubles.max} - </message> - </field-validator> - - <!-- coherence temperature surface (delta de 12° par rapport a celle de l'activity precedente) --> - <field-validator type="fieldexpression"> - <param name="expression"><![CDATA[ - seaSurfaceTemperature == null || previousActivity == null || previousActivity.seaSurfaceTemperature == null || - (previousActivity.seaSurfaceTemperature > seaSurfaceTemperature ? - previousActivity.seaSurfaceTemperature - seaSurfaceTemperature <= 12.0 - : seaSurfaceTemperature - previousActivity.seaSurfaceTemperature <= 12.0 - ) - ]]> - </param> + <field-validator type="temperatureBound" short-circuit="true"> + <param name="min">12.0</param> + <param name="max">35.0</param> + <param name="defaultTemperatureFormat">C</param> <message> - observe.validation.activity.invalid.seaSurfaceTemperature##${seaSurfaceTemperature}##${previousActivity.seaSurfaceTemperature}##${previousActivity.time} + observe.validation.activity.bound.seaSurfaceTemperature##${seaSurfaceTemperatureBound.min}##${seaSurfaceTemperatureBound.max}##${seaSurfaceTemperatureBound.format} </message> </field-validator> - </field> <field name="dataQuality"> ===================================== validation/src/main/resources/i18n/validation_en_GB.properties ===================================== @@ -446,7 +446,7 @@ observe.common.WindDto.speedRange=Speed range observe.common.WindDto.waveHeight=Wave weight observe.validation.activity.bound.latitude=Latitude must be between %1$s and %2$s. observe.validation.activity.bound.longitude=Longitude must be between %1$s and %2$s. -observe.validation.activity.bound.seaSurfaceTemperature=Temperature must be between %1$s and %2$s. +observe.validation.activity.bound.seaSurfaceTemperature=Temperature must be between %1$s%3$s and %2$s%3$s. observe.validation.activity.bound.vesselSpeed=Vessel speed must be between %1$s and %2$s. observe.validation.activity.comment.tobig=Comment size is bound to 1024 characters. observe.validation.activity.desactivated.currentFpaZone=Selected current Fpa zone is disabled. @@ -461,7 +461,7 @@ observe.validation.activity.desactivated.vesselActivity=Selected vessel activity observe.validation.activity.desactivated.wind=Selected wind is disabled. observe.validation.activity.duplicated.time=There is already another activity at this time. observe.validation.activity.invalid.quadrant=Quadrant is not coherent with ocean (%1$s) of trip (indian\: 1,2, atlantic 1,2,3,4). -observe.validation.activity.invalid.seaSurfaceTemperature=Sea temperature (%1$s) can't vary to more than 12° from surface temperature (%2$s) of the previous activity %3$s. +observe.validation.activity.invalid.seaSurfaceTemperature=Previous activity (%1$s) sea temperature was %2$s%5$s, current temperature must be between %3$s%5$s and %4$s%5$s. observe.validation.activity.invalid.speed=Activity speed is %s nb, which is more than the maximum authorized which is %s nd. observe.validation.activity.null.dcp=No floating object selected. observe.validation.activity.null.fpaZone=Fpa zone is not filled. ===================================== validation/src/main/resources/i18n/validation_es_ES.properties ===================================== @@ -448,7 +448,7 @@ observe.common.WindDto.speedRange=Texto velocidad del viento observe.common.WindDto.waveHeight=Texto descriptivo de «altura media de la ola» observe.validation.activity.bound.latitude=La latitud dada debe estar comprendida entre %1$s y %2$s. observe.validation.activity.bound.longitude=La longitud dada debe estar comprendida entre %1$s y %2$s. -observe.validation.activity.bound.seaSurfaceTemperature=La temperatura debe estar comprendida entre %1$s y %2$s. +observe.validation.activity.bound.seaSurfaceTemperature=La temperatura debe estar comprendida entre %1$s%3$s y %2$s%3$s. observe.validation.activity.bound.vesselSpeed=La Velocidad del viento estar comprendida entre %1$s y %2$s. observe.validation.activity.comment.tobig=La longitud del campo comentarios está limitada a 1024 carácteres. observe.validation.activity.desactivated.currentFpaZone=La zona actual debe ser desactivada @@ -463,7 +463,7 @@ observe.validation.activity.desactivated.vesselActivity=Actividad del barco sele observe.validation.activity.desactivated.wind=La fuerza del viento seleccionada está desactivada. observe.validation.activity.duplicated.time=Ya existe una actividad a esa hora. observe.validation.activity.invalid.quadrant=El cuadrante no es coherente con el informe del oceano (%1$s) de la marea (indico \: 1,2, atlantico \: 1, 2, 3, 4) -observe.validation.activity.invalid.seaSurfaceTemperature=La temperatura superficial (%1$s) no puede variar mas de 12° con respecto a la temperatura superficial (%2$s) de la actividad anterio %3$s. +observe.validation.activity.invalid.seaSurfaceTemperature=Previous activity (%1$s) sea temperature was %2$s%5$s, current temperature must be between %3$s%5$s and %4$s%5$s. \#TODO observe.validation.activity.invalid.speed=La velocidad de la actividad actual es %s nudos, mientras que la velocidad máxima es %s nudos. observe.validation.activity.null.dcp=No se ha introducido objeto flotante. observe.validation.activity.null.fpaZone=La selección de una zona FPA es obligatoria. ===================================== validation/src/main/resources/i18n/validation_fr_FR.properties ===================================== @@ -446,7 +446,7 @@ observe.common.WindDto.speedRange=Libellé vitesse vent observe.common.WindDto.waveHeight=Libellé Hauteur moyenne vagues observe.validation.activity.bound.latitude=La latitude doit être comprise entre %1$s et %2$s. observe.validation.activity.bound.longitude=La longitude doit être comprise entre %1$s et %2$s. -observe.validation.activity.bound.seaSurfaceTemperature=La température doit être comprise entre %1$s et %2$s. +observe.validation.activity.bound.seaSurfaceTemperature=La température doit être comprise entre %1$s%3$s et %2$s%3$s. observe.validation.activity.bound.vesselSpeed=La vitesse navire doit être comprise entre %1$s et %2$s. observe.validation.activity.comment.tobig=La taille du commentaire est limitée à 1024 caractères. observe.validation.activity.desactivated.currentFpaZone=La zone courante est désactivée. @@ -461,7 +461,7 @@ observe.validation.activity.desactivated.vesselActivity=L'activité bateau séle observe.validation.activity.desactivated.wind=Le vent Beaufort sélectionné est désactivé. observe.validation.activity.duplicated.time=Il existe déjà une autre activité à cette heure. observe.validation.activity.invalid.quadrant=Le quadrant n'est pas cohérent par rapport à l'océan (%1$s) de la marée (indien \: 1 -observe.validation.activity.invalid.seaSurfaceTemperature=La température surface (%1$s) ne peut pas varier de plus de 12° par rapport à la température surface (%2$s) de l'activité précédente %3$s. +observe.validation.activity.invalid.seaSurfaceTemperature=La température surface de l'activité précédente (%1$s) est de %2$s%5$s, la température doit être comprise entre %3$s%5$s et %4$s%5$s. observe.validation.activity.invalid.speed=La vitesse de l'activité courante est de %s nd, alors que la vitesse maximale autorisée est %s nd observe.validation.activity.null.dcp=Aucun objet flottant saisi. observe.validation.activity.null.fpaZone=La sélection d'une zone FPA est obligatoire. ===================================== validation/src/main/resources/validators.xml ===================================== @@ -71,5 +71,6 @@ <validator name="referentialCode" class="fr.ird.observe.services.validation.validators.ReferentialCodeValidator"/> <validator name="nonTargetCatchObservedSystem" class="fr.ird.observe.services.validation.validators.NonTargetCatchObservedSystemValidator"/> <validator name="activitySeine_observedSystem" class="fr.ird.observe.services.validation.validators.ActivitySeineObservedSystemValidator"/> + <validator name="temperatureBound" class="fr.ird.observe.services.validation.validators.TemperatureBoundFieldValidator"/> </validators> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6a3d4d30fd8f90a8bcc3eb277201... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6a3d4d30fd8f90a8bcc3eb277201... You're receiving this email because of your account on gitlab.com.