Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 6cf0382c by tchemit at 2020-03-29T14:35:25+02:00 Correction de la migration 7.4.0 - Closes #1458 - - - - - f2e8235b by tchemit at 2020-03-29T14:35:27+02:00 Ajouter l'icone de l'application lors du lancement de l'application en mode autre - Closes #1459 - - - - - 1312c7a5 by tchemit at 2020-03-29T18:38:05+02:00 Le calcul des vitesses a eu un raté après avoir fait usage de la fonction "Voulez-vous créer l'activité de fin de veille ?" - Closes #1100 - - - - - 18 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUILauncher.java - client-core/src/main/java/fr/ird/observe/client/ui/storage/RemoteUILauncher.java - client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java - client-core/src/main/java/fr/ird/observe/client/validation/ObserveSwingValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/AbstractSpeciesFieldDtoValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/ActivitySeineObservedSystemValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/ActivitySimpleSpeedDtoValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/ActivitySpeedDtoValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/NonTargetCatchObservedSystemValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/SetLonglineUniqueHomeIdDtoValidator.java - dto/src/main/java/fr/ird/observe/validation/validators/SetLonglineUniqueNumberDtoValidator.java - persistence/src/main/resources/db/migration/7.4/03_rename_referential-H2.sql - pom.xml - test/src/main/resources/db/7.5/dataForTestLongline.sql.gz - test/src/main/resources/db/7.5/dataForTestSeine.sql.gz - test/src/main/resources/db/7.5/referentiel.sql.gz Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jcss ===================================== @@ -34,7 +34,6 @@ JSplitPane { #mainFrame { defaultCloseOperation: "do_nothing_on_close"; - iconImage: {SwingUtil.createImageIcon("logo.png").getImage()}; } #menu { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIHandler.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.client.ui; import fr.ird.observe.client.ObserveSwingApplicationContext; +import fr.ird.observe.client.ui.util.UIHelper; import org.nuiton.jaxx.runtime.spi.UIHandler; import javax.swing.JSplitPane; @@ -48,6 +49,7 @@ public class ObserveMainUIHandler implements UIHandler<ObserveMainUI> { @Override public void afterInit(ObserveMainUI ui) { + UIHelper.addApplicationIcon(ui); ui.getInitializer().initialize(); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminUILauncher.java ===================================== @@ -144,7 +144,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad JDialog dialog = new JDialog(); dialog.setSize(1024, 780); - + UIHelper.addApplicationIcon(dialog); if (icon != null) { dialog.setIconImage(icon.getImage()); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/storage/RemoteUILauncher.java ===================================== @@ -24,8 +24,8 @@ package fr.ird.observe.client.ui.storage; import fr.ird.observe.client.constants.DbMode; import fr.ird.observe.client.ui.storage.tabs.SecurityModel; import fr.ird.observe.client.ui.util.UIHelper; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.JAXXContext; import java.awt.Window; @@ -88,6 +88,7 @@ public abstract class RemoteUILauncher extends StorageUILauncher { model.setSteps(steps.toArray(new StorageStep[0])); ui.setSize(800, 600); + UIHelper.addApplicationIcon(ui); } @Override ===================================== client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java ===================================== @@ -65,6 +65,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Toolkit; +import java.awt.Window; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.ComponentAdapter; @@ -108,6 +109,11 @@ public class UIHelper extends SwingUtil { /** Logger */ static private final Logger log = LogManager.getLogger(UIHelper.class); + + public static void addApplicationIcon(Window window) { + window.setIconImage(createImageIcon("logo-small.png").getImage()); + } + public static void displayInfo(String text) { ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); ===================================== client-core/src/main/java/fr/ird/observe/client/validation/ObserveSwingValidator.java ===================================== @@ -24,8 +24,8 @@ package fr.ird.observe.client.validation; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; import fr.ird.observe.client.ObserveSwingApplicationContext; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.validator.swing.SwingValidator; import org.nuiton.validator.NuitonValidatorFactory; import org.nuiton.validator.NuitonValidatorProvider; @@ -46,7 +46,6 @@ import java.util.Objects; */ public class ObserveSwingValidator<B> extends SwingValidator<B> { - /** Logger */ private static final Logger log = LogManager.getLogger(ObserveSwingValidator.class); /** un etat pour initialiser la stack une unique fois la stack */ @@ -108,9 +107,7 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { if (dataContext == null) { // aucun context de validation enregistré - if (log.isDebugEnabled()) { - log.debug("No validation context registred, try in application context..."); - } + log.debug("No validation context registred, try in application context..."); ObserveSwingApplicationContext rootContext = ObserveSwingApplicationContext.get(); Objects.requireNonNull(rootContext, "Pas de context applicatif trouve."); dataContext = rootContext.getValidationContext(); @@ -123,8 +120,9 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { } public static void reloadDataContext(ClientValidationContext validationContext, boolean strict) { + ClientValidationContext oldValidationContext = null; if (validationContext != ObserveSwingValidator.validationContext) { - + oldValidationContext = ObserveSwingValidator.validationContext; // keep this validation context ObserveSwingValidator.validationContext = validationContext; setInit(false); @@ -135,8 +133,7 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { if (strict) { throw new IllegalStateException( - "pas de context xworks enregistré... utiliser la methode " + - ActionContext.class.getName() + "#setContext(context)"); + String.format("pas de context xworks enregistré... utiliser la methode %s#setContext(context)", ActionContext.class.getName())); } valueStack = XWork2ValidatorUtil.getSharedValueStack(); @@ -147,12 +144,14 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { valueStack = context.getValueStack(); } - if (log.isDebugEnabled()) { - log.debug("Enregistrement du context de validation [" + validationContext + "] dans la valueStack de " + - "validation (" + valueStack + ')'); - } + log.debug(String.format("Enregistrement du context de validation [%s] dans la valueStack de validation (%s)", validationContext, valueStack)); - valueStack.push(validationContext); + if (oldValidationContext != null&& valueStack.getRoot().contains(oldValidationContext)) { + valueStack.getRoot().remove(oldValidationContext); + } + if (!valueStack.getRoot().contains(validationContext)) { + valueStack.push(validationContext); + } } public static ClientValidationContext getValidationContext() { ===================================== dto/src/main/java/fr/ird/observe/validation/validators/AbstractSpeciesFieldDtoValidator.java ===================================== @@ -72,6 +72,7 @@ public abstract class AbstractSpeciesFieldDtoValidator extends FieldValidatorSup /** le ratio a appliquer sur les bornes définies dans le référentiel */ private Float ratio; private String speciesField = "species"; + private Bound bound; private String getSpeciesField() { return speciesField; @@ -101,6 +102,10 @@ public abstract class AbstractSpeciesFieldDtoValidator extends FieldValidatorSup protected abstract Float getBoundMax(SpeciesDto referentiel); + public Bound getBound() { + return bound; + } + private boolean shouldValidate(Object object) throws ValidationException { Boolean enable = (Boolean) getFieldValue("validationLengthWeightEnable", object); @@ -170,7 +175,6 @@ public abstract class AbstractSpeciesFieldDtoValidator extends FieldValidatorSup log.debug("data to validate : " + data); } - //noinspection unchecked SpeciesReference speciesRef = (SpeciesReference) getFieldValue(speciesFieldName, object); if (speciesRef == null) { @@ -185,7 +189,7 @@ public abstract class AbstractSpeciesFieldDtoValidator extends FieldValidatorSup SpeciesDto speciesDto = (SpeciesDto) stack.findValue("getSpecies(\"" + speciesRef.getId() + "\")"); - Bound bound = getBound(speciesDto); + bound = getBound(speciesDto); if (log.isDebugEnabled()) { log.debug("Species Bound to validate : " + bound); @@ -209,13 +213,7 @@ public abstract class AbstractSpeciesFieldDtoValidator extends FieldValidatorSup if (!valid) { - stack.push(bound); - - try { - addFieldError(fieldName, object); - } finally { - stack.pop(); - } + ValidatorUtil.addFieldError(this, stack, fieldName, object); } } ===================================== dto/src/main/java/fr/ird/observe/validation/validators/ActivitySeineObservedSystemValidator.java ===================================== @@ -45,6 +45,12 @@ import java.util.Set; */ public class ActivitySeineObservedSystemValidator extends FieldValidatorSupport { + private Set<String> observedSystemLabels; + + public Set<String> getObservedSystemLabels() { + return observedSystemLabels; + } + @Override public void validate(Object object) throws ValidationException { @@ -89,8 +95,9 @@ public class ActivitySeineObservedSystemValidator extends FieldValidatorSupport } if (!labels.isEmpty()) { // there is some missing system observed - stack.set("observedSystemLabels", labels); - addFieldError(getFieldName(), object); + this.observedSystemLabels = labels; + + ValidatorUtil.addFieldError(this, stack, getFieldName(), object); } } } @@ -99,4 +106,6 @@ public class ActivitySeineObservedSystemValidator extends FieldValidatorSupport public String getValidatorType() { return "activitySeine_observedSystem"; } + + } ===================================== dto/src/main/java/fr/ird/observe/validation/validators/ActivitySimpleSpeedDtoValidator.java ===================================== @@ -73,6 +73,7 @@ import static io.ultreia.java4all.i18n.I18n.n; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ +@SuppressWarnings("unused") public class ActivitySimpleSpeedDtoValidator extends FieldValidatorSupport { /** Logger. */ @@ -81,6 +82,7 @@ public class ActivitySimpleSpeedDtoValidator extends FieldValidatorSupport { private boolean enable; private Float speed; + private Float computedSpeed; /** * Construit un point à partir de l'entité donnée. @@ -122,6 +124,10 @@ public class ActivitySimpleSpeedDtoValidator extends FieldValidatorSupport { this.enable = enable; } + public Float getComputedSpeed() { + return computedSpeed; + } + @Override public void validate(Object object) throws ValidationException { @@ -224,13 +230,13 @@ public class ActivitySimpleSpeedDtoValidator extends FieldValidatorSupport { if (!b) { - stack.set("foundSpeed", computedSpeed); + this.computedSpeed = computedSpeed; if (getDefaultMessage().isEmpty()) { - setDefaultMessage(n("observe.validation.activity.speed.bound") + "##${foundSpeed}##${speed}"); + setDefaultMessage(n("observe.validation.activity.speed.bound") + "##${computedSpeed}##${speed}"); } // vitesse trop grande - addFieldError(getFieldName(), object); + ValidatorUtil.addFieldError(this, stack, getFieldName(), object); } } ===================================== dto/src/main/java/fr/ird/observe/validation/validators/ActivitySpeedDtoValidator.java ===================================== @@ -69,17 +69,14 @@ import static io.ultreia.java4all.i18n.I18n.n; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ +@SuppressWarnings("unused") public class ActivitySpeedDtoValidator extends FieldValidatorSupport { private static final Logger LOG = LogManager.getLogger(ActivitySimpleSpeedDtoValidator.class); private CollectionFieldExpressionValidator delegate; - private boolean enable; - private Float speed; - private String invalidActivity; - public Float getSpeed() { return speed; } @@ -96,10 +93,6 @@ public class ActivitySpeedDtoValidator extends FieldValidatorSupport { this.enable = enable; } - public String getInvalidActivity() { - return invalidActivity; - } - private String decorate(ActivitySeineStubDto activitySeine) { DecoratorService decoratorService = (DecoratorService) stack.findValue("decoratorService"); return decoratorService.getDecoratorByType(ActivitySeineStubDto.class).toString(activitySeine); @@ -114,6 +107,17 @@ public class ActivitySpeedDtoValidator extends FieldValidatorSupport { if (delegate == null) { delegate = new CollectionFieldExpressionValidator() { + + private String invalidActivity; + private Float computedSpeed; + + @Override + public void validateWhenNotSkip(Object object) throws ValidationException { + invalidActivity = null; + computedSpeed = null; + super.validateWhenNotSkip(object); + } + @Override protected boolean validateOneEntry(Object object) { @@ -151,38 +155,33 @@ public class ActivitySpeedDtoValidator extends FieldValidatorSupport { boolean valid = computedSpeed <= speed; if (!valid) { - stack.set("foundSpeed", computedSpeed); - - invalidActivity = decorate(currentActivity); + this.computedSpeed = computedSpeed; + this.invalidActivity = decorate(currentActivity); LOG.debug(String.format("Speed from %s to %s is %s which is more thant authorized one %s", decorate(previousActivity), invalidActivity, computedSpeed, speed)); } return valid; } - @Override - public String getMessage(Object object) { - boolean pop = false; - if (!stack.getRoot().contains(ActivitySpeedDtoValidator.this)) { - stack.push(ActivitySpeedDtoValidator.this); - pop = true; - } - try { - return super.getMessage(object); - } finally { - if (pop) { - stack.pop(); - } - } - } - @Override protected void addFieldError(String propertyName, Object object) { if (getDefaultMessage().isEmpty()) { - setDefaultMessage(n("observe.validation.activity.speed.bound.inter") + "##${speed}##${invalidActivity}##${foundSpeed}"); + setDefaultMessage(n("observe.validation.activity.speed.bound.inter") + "##${speed}##${invalidActivity}##${computedSpeed}"); } - super.addFieldError(propertyName, object); + ValidatorUtil.addFieldError(this, stack, propertyName, object); + } + + public String getInvalidActivity() { + return invalidActivity; } + + public float getComputedSpeed() { + return computedSpeed; + } + public float getSpeed() { + return ActivitySpeedDtoValidator.this.getSpeed(); + } + }; delegate.setCollectionFieldName(RouteDto.PROPERTY_ACTIVITY_SEINE); delegate.setMode(CollectionFieldExpressionValidator.Mode.ALL); @@ -226,8 +225,6 @@ public class ActivitySpeedDtoValidator extends FieldValidatorSupport { throw new ValidationException("le parametre speed est obligatoire"); } - invalidActivity = null; - getDelegate((RouteDto) object).validate(object); } ===================================== dto/src/main/java/fr/ird/observe/validation/validators/NonTargetCatchObservedSystemValidator.java ===================================== @@ -34,16 +34,24 @@ import fr.ird.observe.dto.referential.seine.ObservedSystemReference; import fr.ird.observe.validation.SeineBycatchObservedSystemConfig; import java.util.Collection; -import java.util.LinkedList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * Created by tchemit on 03/05/2018. * * @author Tony Chemit - dev@tchemit.fr */ +@SuppressWarnings("unused") public class NonTargetCatchObservedSystemValidator extends FieldValidatorSupport { + private Set<String> observedSystemLabels; + + public Set<String> getObservedSystemLabels() { + return observedSystemLabels; + } + @Override public void validate(Object object) throws ValidationException { @@ -72,16 +80,16 @@ public class NonTargetCatchObservedSystemValidator extends FieldValidatorSupport DecoratorService decoratorService = (DecoratorService) stack.findValue("decoratorService"); ImmutableMap<String, ObservedSystemReference> map = Maps.uniqueIndex(observedSystems, ObservedSystemReference::getId); ReferentialReferenceDecorator<ObservedSystemReference> decorator = decoratorService.getReferentialReferenceDecorator(ObservedSystemReference.class); - List<String> labels = new LinkedList<>(); + Set<String> labels = new LinkedHashSet<>(); for (String observedSystemId : requiredObservedSystemBySpeciesId) { ObservedSystemReference ref = map.get(observedSystemId); log.debug("Required observed system id: " + observedSystemId); log.debug("Required observed system: " + ref); labels.add(decorator.toString(ref)); } - stack.set("observedSystemLabels", labels); + this.observedSystemLabels = labels; - addFieldError(getFieldName(), object); + ValidatorUtil.addFieldError(this, stack, getFieldName(), object); } } } ===================================== dto/src/main/java/fr/ird/observe/validation/validators/SetLonglineUniqueHomeIdDtoValidator.java ===================================== @@ -38,8 +38,15 @@ import java.util.Optional; * @author Tony Chemit - dev@tchemit.fr * @since 3.9 */ +@SuppressWarnings("unused") public class SetLonglineUniqueHomeIdDtoValidator extends FieldValidatorSupport { + private String duplicatedActivity; + + public String getDuplicatedActivity() { + return duplicatedActivity; + } + @Override public void validate(Object object) { @@ -57,14 +64,14 @@ public class SetLonglineUniqueHomeIdDtoValidator extends FieldValidatorSupport { if (sameHomeIdSetLonglineOptional.isPresent()) { - ActivityLonglineReference activityLonglineRef = sameHomeIdSetLonglineOptional.get().getActivityLongline(); + ActivityLonglineReference activity = sameHomeIdSetLonglineOptional.get().getActivityLongline(); DecoratorService decoratorService = (DecoratorService) stack.findValue("decoratorService"); DataReferenceDecorator<ActivityLonglineReference> decorator = decoratorService.getDataReferenceDecorator(ActivityLonglineReference.class); - stack.set("duplicatedActivity", decorator.toString(activityLonglineRef)); + duplicatedActivity = decorator.toString(activity); - addFieldError(getFieldName(), object); + ValidatorUtil.addFieldError(this, stack, getFieldName(), object); } } ===================================== dto/src/main/java/fr/ird/observe/validation/validators/SetLonglineUniqueNumberDtoValidator.java ===================================== @@ -38,8 +38,14 @@ import java.util.Optional; * @author Tony Chemit - dev@tchemit.fr * @since 3.9 */ +@SuppressWarnings("unused") public class SetLonglineUniqueNumberDtoValidator extends FieldValidatorSupport { + private String duplicatedActivity; + + public String getDuplicatedActivity() { + return duplicatedActivity; + } @Override public void validate(Object object) { @@ -55,15 +61,13 @@ public class SetLonglineUniqueNumberDtoValidator extends FieldValidatorSupport { if (sameNumberSetLonglineOptional.isPresent()) { - ActivityLonglineReference activityLonglineRef = sameNumberSetLonglineOptional.get().getActivityLongline(); + ActivityLonglineReference activity = sameNumberSetLonglineOptional.get().getActivityLongline(); DecoratorService decoratorService = (DecoratorService) stack.findValue("decoratorService"); DataReferenceDecorator<ActivityLonglineReference> decorator = decoratorService.getDataReferenceDecorator(ActivityLonglineReference.class); - stack.set("duplicatedActivity", decorator.toString(activityLonglineRef)); - - addFieldError(getFieldName(), object); - + duplicatedActivity = decorator.toString(activity); + ValidatorUtil.addFieldError(this, stack, getFieldName(), object); } } ===================================== persistence/src/main/resources/db/migration/7.4/03_rename_referential-H2.sql ===================================== @@ -43,5 +43,5 @@ CREATE INDEX idx_observe_longline_catch_stomachFullness ON observe_longline.catc DROP TABLE observe_longline.Healthness; DROP TABLE observe_longline.StomacFullness; -UPDATE observe_common.LASTUPDATEDATE SET TYPE = REPLACE(TYPE, 'referentiel.longline.Healthness', 'referential.longline.HealthStatus'); -UPDATE observe_common.LASTUPDATEDATE SET TYPE = REPLACE(TYPE, 'referentiel.longline.StomacFullness', 'referential.longline.StomachFullness'); \ No newline at end of file +UPDATE observe_common.LASTUPDATEDATE SET TYPE = REPLACE(TYPE, 'referentiel.longline.Healthness', 'referentiel.longline.HealthStatus'); +UPDATE observe_common.LASTUPDATEDATE SET TYPE = REPLACE(TYPE, 'referentiel.longline.StomacFullness', 'referentiel.longline.StomachFullness'); \ No newline at end of file ===================================== pom.xml ===================================== @@ -155,7 +155,7 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <observeToolkitVersion>3.7.26</observeToolkitVersion> + <observeToolkitVersion>3.7.27</observeToolkitVersion> <!--<lib.version.java4all.http>1.0.13</lib.version.java4all.http>--> <lib.version.nuiton.validation>3.1</lib.version.nuiton.validation> <!--<lib.version.java4all.config>1.0.3</lib.version.java4all.config>--> ===================================== test/src/main/resources/db/7.5/dataForTestLongline.sql.gz ===================================== Binary files a/test/src/main/resources/db/7.5/dataForTestLongline.sql.gz and b/test/src/main/resources/db/7.5/dataForTestLongline.sql.gz differ ===================================== test/src/main/resources/db/7.5/dataForTestSeine.sql.gz ===================================== Binary files a/test/src/main/resources/db/7.5/dataForTestSeine.sql.gz and b/test/src/main/resources/db/7.5/dataForTestSeine.sql.gz differ ===================================== test/src/main/resources/db/7.5/referentiel.sql.gz ===================================== Binary files a/test/src/main/resources/db/7.5/referentiel.sql.gz and b/test/src/main/resources/db/7.5/referentiel.sql.gz differ View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/9c0d817d9eaa988bcaf335187... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/9c0d817d9eaa988bcaf335187... You're receiving this email because of your account on gitlab.com.