branch feature/8159-deconnexionAvecModification created (now 1e9f435)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8159-deconnexionAvecModification in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at 1e9f435 ne pas poroposer l'enregistrement des écran si la connexion avec le serveur a expirée (see #8159). This branch includes the following new commits: new 1e9f435 ne pas poroposer l'enregistrement des écran si la connexion avec le serveur a expirée (see #8159). The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 1e9f435a970edb2a3022ef52eb625694b373ad3c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Mar 23 12:13:12 2016 +0100 ne pas poroposer l'enregistrement des écran si la connexion avec le serveur a expirée (see #8159). -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8159-deconnexionAvecModification in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 1e9f435a970edb2a3022ef52eb625694b373ad3c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Mar 23 12:13:12 2016 +0100 ne pas poroposer l'enregistrement des écran si la connexion avec le serveur a expirée (see #8159). --- .../fr/ird/observe/db/ObserveSwingDataSource.java | 35 ++++--- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 7 +- .../ird/observe/ui/content/ContentUIHandler.java | 106 +++++++++++---------- .../observe-application-swing_fr_FR.properties | 2 +- 4 files changed, 84 insertions(+), 66 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java index 7c33dc1..e9695df 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -26,7 +26,6 @@ import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; -import fr.ird.observe.services.security.InvalidAuthenticationTokenException; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; @@ -67,10 +66,14 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements protected ObserveDataSourceConnection connection; + // indique que la connexion a expiré mais que la source n'est pas complétement fermer + private boolean expired; + public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { this.configuration = configuration; this.listenerList = new EventListenerList(); this.referentialCache = new ObserveReferentialCache(); + this.expired = false; } public ObserveDataSourceConfiguration getConfiguration() { @@ -174,20 +177,20 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements referentialCache.close(); - DataSourceService dataSourceService = newService(DataSourceService.class); - try { - dataSourceService.close(); - } catch (InvalidAuthenticationTokenException e) { - if (log.isWarnEnabled()) { - log.warn("Connexion from server was already close"); - } - } + // si la connection a expirée la source a deja été fermer pas le serveur + if (!expired) { + DataSourceService dataSourceService = newService(DataSourceService.class); - connection = null; + dataSourceService.close(); + } + } finally { + connection = null; + expired = false; - fireNewMessage(t("observe.storage.message.closed", getLabel())); - fireClosed(); + fireNewMessage(t("observe.storage.message.closed", getLabel())); + fireClosed(); + } } @@ -459,4 +462,12 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements protected void checkIsNotOpen() { Preconditions.checkState(!isOpen(), "Connection is open"); } + + public boolean isExpired() { + return expired; + } + + public void expired() { + this.expired = true; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java index 2aa5c2b..8ad6ab7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java @@ -530,7 +530,12 @@ public class UIHelper extends SwingUtil { if (containsExceptionInStack(e, InvalidAuthenticationTokenException.class)) { - ObserveMainUI observeMainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + + // on indique que la source de donnée a expiré + context.getDataSource().expired(); + + ObserveMainUI observeMainUI = context.getObserveMainUI(); int result = askUser(observeMainUI, t("observe.storage.server.sessionExpire.title"), diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index 368b106..d8792f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -171,60 +171,62 @@ public abstract class ContentUIHandler<E extends IdDto> { boolean wasClosed = true; - if (model.isValid()) { - // ask user if wants to save - int reponse = UIHelper.askUser( - (JComponent) ui, - t("observe.title.need.confirm"), - t("observe.message.quit.valid.edit"), - JOptionPane.WARNING_MESSAGE, - new Object[]{ - t("observe.choice.save"), - t("observe.choice.doNotSave"), - t("observe.choice.cancel")}, - 0); - if (log.isDebugEnabled()) { - log.debug("response : " + reponse); - } + if (! ui.getDataSource().isExpired()) { + if (model.isValid()) { + // ask user if wants to save + int reponse = UIHelper.askUser( + (JComponent) ui, + t("observe.title.need.confirm"), + t("observe.message.quit.valid.edit"), + JOptionPane.WARNING_MESSAGE, + new Object[]{ + t("observe.choice.save"), + t("observe.choice.doNotSave"), + t("observe.choice.cancel")}, + 0); + if (log.isDebugEnabled()) { + log.debug("response : " + reponse); + } - switch (reponse) { - case JOptionPane.CLOSED_OPTION: - case 2: - wasClosed = false; - break; - case 0: - // will save ui - ui.save(false); - break; - case 1: - // wil reset ui - ui.resetEdit(); - break; - } + switch (reponse) { + case JOptionPane.CLOSED_OPTION: + case 2: + wasClosed = false; + break; + case 0: + // will save ui + ui.save(false); + break; + case 1: + // wil reset ui + ui.resetEdit(); + break; + } - } else { - // ask user if wants to quit without saving since edit is not valid - int reponse = UIHelper.askUser( - (JComponent) ui, - t("observe.title.need.confirm"), - t("observe.message.quit.invalid.edit"), - JOptionPane.ERROR_MESSAGE, - new Object[]{ - t("observe.choice.continue"), - t("observe.choice.cancel")}, - 0); - if (log.isDebugEnabled()) { - log.debug("response : " + reponse); - } - switch (reponse) { - case JOptionPane.CLOSED_OPTION: - case 1: - wasClosed = false; - break; - case 0: - // wil reset ui - ui.resetEdit(); - break; + } else { + // ask user if wants to quit without saving since edit is not valid + int reponse = UIHelper.askUser( + (JComponent) ui, + t("observe.title.need.confirm"), + t("observe.message.quit.invalid.edit"), + JOptionPane.ERROR_MESSAGE, + new Object[]{ + t("observe.choice.continue"), + t("observe.choice.cancel")}, + 0); + if (log.isDebugEnabled()) { + log.debug("response : " + reponse); + } + switch (reponse) { + case JOptionPane.CLOSED_OPTION: + case 1: + wasClosed = false; + break; + case 0: + // wil reset ui + ui.resetEdit(); + break; + } } } if (wasClosed) { diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 6c7c649..ccb8c61 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -1942,7 +1942,7 @@ observe.storage.selected.dbMode=Type de source de données sélectionné observe.storage.selectedCreationMode=Mode de création sélectionné observe.storage.server.dataBase=Base de données observe.storage.server.db=(serveur distant) -observe.storage.server.sessionExpire=La connexion avec le serveur n'est plus active. Que voulez-faire ?\n\n\t - Fermer la connexion avec le serveur, \n\t - Changer de source de données, \n\t - Se re-conncter au serveur. +observe.storage.server.sessionExpire=La connexion avec le serveur n'est plus active. Que voulez-faire ?\n\n\t - Fermer la connexion avec le serveur, \n\t - Changer de source de données, \n\t - Se re-conncter au serveur.\n\n ATTENTION : Les modifications en cours seront perdu ! observe.storage.server.sessionExpire.change=Changer observe.storage.server.sessionExpire.close=Fermer observe.storage.server.sessionExpire.reload=Re-connecter -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm