This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 446f5141ea068244cdcc1992d9ff6b7eb1b7d8b0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Dec 17 12:41:15 2016 +0100 Amélioration de l'opération de validation --- .../application/swing/ui/admin/AdminTabUI.jaxx | 9 ++-- .../application/swing/ui/admin/AdminTabUI.jcss | 7 ++- .../swing/ui/admin/validate/ValidateModel.java | 6 +++ .../swing/ui/admin/validate/ValidateUIHandler.java | 58 ++++++++++++++++------ .../i18n/application-swing_en_GB.properties | 1 + .../i18n/application-swing_es_ES.properties | 1 + .../i18n/application-swing_fr_FR.properties | 1 + 7 files changed, 63 insertions(+), 20 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx index f76cb7b..495df20 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx @@ -187,9 +187,12 @@ public void updateState(WizardState newState) { </JPanel> <!-- description --> - <JScrollPane id="descriptionPane" constraints='BorderLayout.SOUTH'> - <JTextArea id='description'/> - </JScrollPane> + <JPanel constraints='BorderLayout.SOUTH' layout="{new BorderLayout()}"> + <JScrollPane id="descriptionPane" constraints='BorderLayout.CENTER'> + <JTextArea id='description'/> + </JScrollPane> + <JProgressBar id="progressBar" constraints='BorderLayout.SOUTH'/> + </JPanel> <JPanel id='invisiblePanel' visible="false" constraints='BorderLayout.EAST'> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss index f1c3597..7ccee3f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss @@ -30,13 +30,18 @@ } #progress { - /*string:{internalHandler.getProgressString(model.getStepIndex(model.getStep()), model.getSteps().size())};*/ value:{1 + model.getStepIndex(model.getStep())}; maximum:{model.getSteps().size()}; indeterminate:{model.getModelState() == WizardState.RUNNING}; stringPainted:true; } +#progressBar { + indeterminate:false; + stringPainted:true; + visible:false; +} + #content { layout:{contentLayout}; minimumSize:{new Dimension(0,0)}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java index 003c83b..7989ad9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java @@ -28,6 +28,7 @@ import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationCon import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminUIModel; +import fr.ird.observe.application.swing.ui.util.ProgressModel; import fr.ird.observe.application.swing.validation.ValidationModelMode; import fr.ird.observe.services.dto.AbstractReference; import fr.ird.observe.services.dto.IdDto; @@ -95,6 +96,7 @@ public class ValidateModel extends AdminActionModel { /** le dictionnaire des paths d'entites detectees */ protected Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages; + private final ProgressModel progressModel = new ProgressModel(); public ValidateModel() { super(AdminStep.VALIDATE); @@ -293,4 +295,8 @@ public class ValidateModel extends AdminActionModel { public boolean validate(AdminUIModel uiModel) { return uiModel.validate(AdminStep.SELECT_DATA) && uiModel.getStepState(step) == WizardState.SUCCESSED; } + + public ProgressModel getProgressModel() { + return progressModel; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java index 01a60bc..365671b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java @@ -36,6 +36,7 @@ import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.config.SelectDataUI; import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.application.swing.ui.util.ObserveValidationMessageTableRenderer; +import fr.ird.observe.application.swing.ui.util.ProgressModel; import fr.ird.observe.application.swing.validation.ValidationModelMode; import fr.ird.observe.services.dto.AbstractReference; import fr.ird.observe.services.dto.DataReference; @@ -76,7 +77,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -176,6 +176,7 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements ValidateModel stepModel = model.getValidateModel(); stepModel.setAllValidators(validators); + stepModel.getProgressModel().installUI(ui.getProgressBar()); } public void updateState(ValidateUI tabUI, WizardState newState) { @@ -206,7 +207,7 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements public void updateTypes() { - ValidateUI tabUI = (ValidateUI) ui; + ValidateUI tabUI = ui; DefaultListModel<Class<?>> typeModel = tabUI.typeModel; tabUI.typeSelectionModel.clearSelection(); @@ -228,7 +229,7 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements public void updateSelectedType() { - ValidateUI tabUI = (ValidateUI) ui; + ValidateUI tabUI = ui; getModel().setBusy(true); // on nettoye le modele des refs @@ -263,7 +264,7 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements public void updateSelectedRef() { - ValidateUI tabUI = (ValidateUI) ui; + ValidateUI tabUI = ui; // on nettoye le modele des messages tabUI.messageTable.clearSelection(); @@ -296,7 +297,7 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements public void startAction() { - addAdminWorker(((ValidateUI) ui).getStartButton().getToolTipText(), this::doAction); + addAdminWorker(ui.getStartButton().getToolTipText(), this::doAction); } public WizardState doAction() throws Exception { @@ -379,22 +380,41 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements ObserveSwingDataSource dataSourceToValidate = model.getConfigModel().getLocalSource(); + int stepsCount = 1; + if (!dataSourceToValidate.isOpen()) { + stepsCount++; + } + if (dataModel.isLoadReferential()) { + stepsCount++; + } + if (!dataSourceToValidate.isOpen()) { dataSourceToValidate.open(); } + if (dataModel.isUseData()) { + stepsCount += dataModel.getSelectedData().size(); + } + + ProgressModel progressModel = stepModel.getProgressModel(); + progressModel.setStepsCount(stepsCount); ValidateService validateService = dataSourceToValidate.newValidateService(); Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages = new HashMap<>(); + ImmutableSet<NuitonValidatorScope> scopes = ImmutableSet.copyOf(stepModel.getScopes()); + String contextName = stepModel.getContextName(); + if (dataModel.isLoadReferential()) { // validation des referentiels selectionnes ValidateReferentialsRequest request = new ValidateReferentialsRequest(); request.setReferentialTypes(dataModel.getSelectedReferentiel()); - request.setScopes(ImmutableSet.copyOf(stepModel.getScopes())); - request.setValidationContext(stepModel.getContextName()); + request.setScopes(scopes); + request.setValidationContext(contextName); + + progressModel.incrementsCurrentStep(); ValidateReferentialsResult result = validateService.validateReferentials(request); @@ -403,20 +423,26 @@ public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements if (dataModel.isUseData()) { - // validation des donnees observateur selectionnee - ValidateDataRequest request = new ValidateDataRequest(); + for (DataReference<?> dataReference : dataModel.getSelectedData()) { - request.setDataIds(ImmutableSet.copyOf(dataModel.getSelectedData().stream() - .map(DataReference.ID_FUNCTION) - .collect(Collectors.toSet()))); - request.setScopes(ImmutableSet.copyOf(stepModel.getScopes())); - request.setValidationContext(stepModel.getContextName()); + String id = dataReference.getId(); - ValidateDataResult result = validateService.validateData(request); + ValidateDataRequest request = new ValidateDataRequest(); + request.setDataIds(ImmutableSet.of(id)); + request.setScopes(scopes); + request.setValidationContext(contextName); + + sendMessage(t("observe.actions.validate.message.validate.data", getDecoratorService().getDataReferenceDecorator(dataReference.getType()).toString(dataModel))); + progressModel.incrementsCurrentStep(); + ValidateDataResult result = validateService.validateData(request); + + messages.putAll(result.getResultByType()); + + } - messages.putAll(result.getResultByType()); } + progressModel.incrementsCurrentStep(); dataSourceToValidate.close(); stepModel.setMessages(messages); diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index 6857797..3ebcb6b 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -300,6 +300,7 @@ observe.actions.validate.message.operation.needFix=Data are not valid. observe.actions.validate.message.prepare.validators=Validator dectection observe.actions.validate.message.save.report=Validation report was saved in file\: %1$s observe.actions.validate.message.use.storage=Validation done in %1$s +observe.actions.validate.message.validate.data=Validate data \: « %s » observe.actions.validate.report.contextName=Validation context used\: %1$s observe.actions.validate.report.entities.with.messages=Data count with messages\: %1$s observe.actions.validate.report.entity=Data %1$s '%2$s' number of message %3$s (for %4$s scope(s)). diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index d51f134..37bfc79 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -300,6 +300,7 @@ observe.actions.validate.message.operation.needFix=Los datos no son válidos y n observe.actions.validate.message.prepare.validators=Detección de validadores observe.actions.validate.message.save.report=El informe de validación se ha guardado en el archivo %1$s observe.actions.validate.message.use.storage=Se realizará la validación de %1$s +observe.actions.validate.message.validate.data=Validate data \: « %s » \#TODO observe.actions.validate.report.contextName=Contexto de validación utilizado \: %1$s observe.actions.validate.report.entities.with.messages=Número de entidades con mensajes \: %1$s observe.actions.validate.report.entity=Entidad %1$s '%2$s' Número de mensajes %3$s (sobre %4$s scope(s)). diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index f0e5fac..1cb113b 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -300,6 +300,7 @@ observe.actions.validate.message.operation.needFix=Vos données ne sont valides observe.actions.validate.message.prepare.validators=Détection des validateurs observe.actions.validate.message.save.report=Le rapport de validation a été sauvegardé dans le fichier %1$s observe.actions.validate.message.use.storage=La validation sera effectuée sur %1$s +observe.actions.validate.message.validate.data=Validation de la donnée \: « %s » observe.actions.validate.report.contextName=Context de validation utilisé \: %1$s observe.actions.validate.report.entities.with.messages=Nombre d'entités avec des messages \: %1$s observe.actions.validate.report.entity=Entité %1$s '%2$s' Nombre de messages %3$s (sur %4$s scope(s)). -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.