This is an automated email from the git hooks/post-receive script. New commit to branch develop-5.x in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 67a4c13484328173ad0016d3fa2dfb23f09267a5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Dec 16 10:21:09 2016 +0100 Synchro avancée de référentiel : griser les boutons des modes de fonctionnement non pertinents (Fixes #8881) --- .../application/swing/ui/admin/AdminUIModel.java | 22 ++++++++++++++ .../ng/ReferentialSynchroUIHandler.java | 35 ++++++++++++++++++++-- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java index 9067efc..c809b25 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java @@ -109,6 +109,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { /** la source de données sur laquel on veut travailler */ protected ObserveDataSourceInformation localSourceInformation; + protected ObserveDataSourceInformation centralSourceInformation; /** la source de données dite central (contenant le référentiel valide) */ protected ObserveSwingDataSource centralSource; @@ -884,6 +885,27 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return localSourceInformation; } + public ObserveDataSourceInformation getCentralSourceInformation() { + if (centralSourceInformation == null) { + + ObserveSwingDataSource centralSource = getSafeCentralSource(false); + + try { + + centralSourceInformation = centralSource.checkCanConnect(); + + } catch (Exception e) { + //FIXME ! il faut faire quelque chose dans ce cas précis, au moins avertir l'utilisateur + if (log.isErrorEnabled()) { + log.error("unable to find central source information", e); + } + } + + } + + return centralSourceInformation; + } + public ObserveSwingDataSource getCentralSource() { return centralSource; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java index 89717a1..bc340a0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java @@ -27,10 +27,12 @@ import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; import fr.ird.observe.application.swing.ui.admin.AdminUI; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ReferentialSynchronizeMode; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.tree.ReferentialSynchronizeTreeModel; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.tree.ReferentialSynchronizeTreeModelsBuilder; +import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffsEngine; import jaxx.runtime.context.JAXXInitialContext; @@ -44,6 +46,7 @@ import javax.swing.JTree; import javax.swing.border.TitledBorder; import javax.swing.event.TreeSelectionListener; import java.awt.Color; +import java.util.Optional; import static org.nuiton.i18n.I18n.t; @@ -59,6 +62,7 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { private static final Log log = LogFactory.getLog(ReferentialSynchroUIHandler.class); private final TreeSelectionListener treeSelectionListener; + private ReferentialSynchroConfigUI extraConfig; public ReferentialSynchroUIHandler(ReferentialSynchroUI ui) { super(ui); @@ -84,9 +88,36 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this); - ReferentialSynchroConfigUI extraConfig = new ReferentialSynchroConfigUI(tx); + extraConfig = new ReferentialSynchroConfigUI(tx); + configUI.getExtraConfig().add(extraConfig); + ui.getModel().addPropertyChangeListener(AdminUIModel.VALID_STEP_PROPERTY_NAME, evt -> updateSynchroModes()); + } + + protected void updateSynchroModes() { + AdminUIModel model = getUi().getModel(); + if (model.getLocalSourceModel().getDbMode() == null) { + return; + } + if (model.getCentralSourceModel().getDbMode() == null) { + return; + } + boolean leftToRightEnabled = Optional.ofNullable(model.getCentralSourceInformation()) + .map(ObserveDataSourceInformation::canWriteReferential) + .orElse(false); + if (log.isDebugEnabled()) { + log.debug("Update synchro modes: leftToRight: " + leftToRightEnabled); + } + boolean rightToLeftEnabled = Optional.ofNullable(model.getLocalSourceInformation()) + .map(ObserveDataSourceInformation::canWriteReferential) + .orElse(false); + if (log.isDebugEnabled()) { + log.debug("Update synchro modes: rightToLeft: " + rightToLeftEnabled); + } + this.extraConfig.getLEFT_TO_RIGHT().setEnabled(leftToRightEnabled); + this.extraConfig.getRIGHT_TO_LEFT().setEnabled(rightToLeftEnabled); + this.extraConfig.getBOTH().setEnabled(leftToRightEnabled && rightToLeftEnabled); } public void doStartAction() { @@ -133,7 +164,7 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { t("observe.actions.synchro.referential.message.referential.rightData.loaded")); return WizardState.NEED_FIX; - + } private void updateEnabledActions() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.