r1117 - in trunk/simexplorer-is/simexplorer-is-swing/src: java/fr/cemagref/simexplorer/is/ui java/fr/cemagref/simexplorer/is/ui/swing/actions resources/i18n uimodel/fr/cemagref/simexplorer/is/ui/swing
Author: tchemit Date: 2008-02-19 15:06:31 +0000 (Tue, 19 Feb 2008) New Revision: 1117 Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/StorageServiceHelper.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties trunk/simexplorer-is/simexplorer-is-swing/src/uimodel/fr/cemagref/simexplorer/is/ui/swing/LoginUI.jaxx Log: meilleure login : on teste si le service distant est joignable avant tout login Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/StorageServiceHelper.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/StorageServiceHelper.java 2008-02-19 13:54:44 UTC (rev 1116) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/StorageServiceHelper.java 2008-02-19 15:06:31 UTC (rev 1117) @@ -18,21 +18,7 @@ * ##% */ package fr.cemagref.simexplorer.is.ui; -import static fr.cemagref.simexplorer.is.service.StorageServiceHelper.STORAGE_SERVICE_LOOKUP_NAME; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.net.URI; -import java.util.Properties; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - import com.healthmarketscience.rmiio.SerializableInputStream; - import fr.cemagref.simexplorer.is.entities.attachment.Attachment; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; @@ -43,7 +29,18 @@ import fr.cemagref.simexplorer.is.service.MockStorageServiceImpl; import fr.cemagref.simexplorer.is.service.StorageService; import fr.cemagref.simexplorer.is.service.StorageServiceClient; +import static fr.cemagref.simexplorer.is.service.StorageServiceHelper.STORAGE_SERVICE_LOOKUP_NAME; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.net.URI; +import java.util.Properties; + /** * Une classe pour encapsuler les appels aux services Storage et leur initialisation. * @@ -67,10 +64,14 @@ * @param context le context de l'application * @param remote flag pour indiquer le type de service recherché (local ou remote) * @return le service instancié et initialisé + * @throws UnreachableServiceException si service non joignable */ - public static StorageService getService(SimExplorerContext context, boolean remote) { + public static StorageService getService(SimExplorerContext context, boolean remote) throws UnreachableServiceException { StorageService service; service = remote ? getRemoteStorageService(context) : getLocalStorageService(); + if (service == null) { + throw new UnreachableServiceException("could not find service " + (remote ? "remote" : "local")); + } return service; } @@ -90,12 +91,12 @@ } } - public static String loginUser(SimExplorerContext context, boolean remote,String login,String hashPassword) throws UnreachableServiceException { + public static String loginUser(SimExplorerContext context, boolean remote, String login, String hashPassword) throws UnreachableServiceException { StorageService service = getService(context, remote); try { - if (service==null) { - throw new UnreachableServiceException("could not find service "+(remote?"remote":"local")); - } + /*if (service == null) { + throw new UnreachableServiceException("could not find service " + (remote ? "remote" : "local")); + }*/ String token; token = service.loginUser(login, hashPassword); return token; @@ -131,8 +132,8 @@ } } - public static void deleteElement(SimExplorerContext context, boolean remote, String uuid, String version) { - try { + public static void deleteElement(SimExplorerContext context, boolean remote, String uuid, String version) { + try { getService(context, remote).deleteElement(context.getToken(), uuid, version); } catch (SimExplorerException e1) { throw new SimExplorerRuntimeException(e1); Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-19 13:54:44 UTC (rev 1116) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-19 15:06:31 UTC (rev 1117) @@ -94,7 +94,6 @@ * Si l'utilisateur est déconnecté, alors toutes les ui et actions liées au * mode remote sont fermées et les actions correspondantes sont rendues * inaccessibles. - * */ @Override public void updateUI() { @@ -136,6 +135,8 @@ } } + + private class MyLoginUIHandler extends LoginUI.LoginUIHandler { /** * Tente de se connecter au service. @@ -152,22 +153,18 @@ protected boolean connect(String login, String password) { String token; - try { - token = StorageServiceHelper.loginUser(getContext(), true,login, password); - } catch (UnreachableServiceException e1) { - return failedToReachService(); - } + token = StorageServiceHelper.loginUser(getContext(), true, login, password); getContext().setToken(token); boolean isConnected = getContext().isConnected(); if (isConnected) { - // keep login and password - getContext().getConfig().setRemoteLogin(login); + // keep password getContext().getConfig().setRemotePassword(password); } else { - // delete login and password - getContext().getConfig().setRemoteLogin(null); + // delete password getContext().getConfig().setRemotePassword(null); } + //always keep login + getContext().getConfig().setRemoteLogin(login); //Save configuration, I don't like it, but required by client... getContext().getConfig().saveSafely(); return isConnected; @@ -181,30 +178,45 @@ } } - protected boolean cancel; - protected boolean failedToReachService() { - int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.service.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); + int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.error.service.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); return result == JOptionPane.NO_OPTION; } + protected boolean failedToConnect() { - int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.login.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); + int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.error.login.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); return result == JOptionPane.NO_OPTION; } public void doConnect() { - cancel = false; + setCancel(false); + // first test if service is enable + while (true) { + try { + StorageServiceHelper.getService(getContext(), true); + break; + } catch (UnreachableServiceException e) { + if (failedToReachService()) { + setCancel(true); + break; + } + } + } + if (isCancel()) { + log.warn("could not find remote service "); + return; + } if (!connect(ui.getLogin().getText(), ui.getPassword().getPassword())) { if (failedToConnect()) { - cancel = true; + setCancel(true); } } else { - cancel = true; + setCancel(true); } } public void doCancel() { - cancel = false; + setCancel(false); ui.getLogin().setText(null); ui.getPassword().setText(null); } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-19 13:54:44 UTC (rev 1116) +++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-19 15:06:31 UTC (rev 1117) @@ -163,9 +163,10 @@ simexplorer.entities.library=Library simexplorer.error.dialog.message=An error was found simexplorer.error.dialog.title=Error detected\! +simexplorer.error.login.failed=Remote authentication failed... +simexplorer.error.service.failed=Remote server is not reachable... simexplorer.error.unfound.config.property= simexplorer.help.menu=Help -simexplorer.login.failed=Authentication failed simexplorer.login.retry=Do you want to retry ? simexplorer.login.title=Authentication to remote server simexplorer.main.menu=Main @@ -183,7 +184,6 @@ simexplorer.option.description.resetConfig=Reset user configuration. simexplorer.option.description.showConfig=See configuration details simexplorer.option.description.ui=launch or not user interface (value) -simexplorer.service.failed= simexplorer.tab.detail=Detail simexplorer.tab.detail.tooltip=Screen of details of an element simexplorer.tab.local=Local elements Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-19 13:54:44 UTC (rev 1116) +++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-19 15:06:31 UTC (rev 1117) @@ -163,9 +163,10 @@ simexplorer.entities.library=Librairie simexplorer.error.dialog.message=Une erreur est survenue\! simexplorer.error.dialog.title=Erreur detect\u00E9e +simexplorer.error.login.failed=L'authentification a \u00E9chou\u00E9e... +simexplorer.error.service.failed=Le serveur central n'est pas joignable simexplorer.error.unfound.config.property= simexplorer.help.menu=Aide -simexplorer.login.failed=L'authentification a \u00E9chou\u00E9e simexplorer.login.retry=Voulez-vous ressayer de vous connecter ? simexplorer.login.title=Connexion au serveur central simexplorer.main.menu=Menu principal @@ -183,7 +184,6 @@ simexplorer.option.description.resetConfig=R\u00E9initialisation de la configuration. simexplorer.option.description.showConfig=Voir les d\u00E9tails d'une configuration simexplorer.option.description.ui=launch or not user interface (value) -simexplorer.service.failed= simexplorer.tab.detail=D\u00E9tail simexplorer.tab.detail.tooltip=L'\u00E9cran affichant les d\u00E9tails d'un \u00E9l\u00E9ment simexplorer.tab.local=Liste locale Modified: trunk/simexplorer-is/simexplorer-is-swing/src/uimodel/fr/cemagref/simexplorer/is/ui/swing/LoginUI.jaxx =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/uimodel/fr/cemagref/simexplorer/is/ui/swing/LoginUI.jaxx 2008-02-19 13:54:44 UTC (rev 1116) +++ trunk/simexplorer-is/simexplorer-is-swing/src/uimodel/fr/cemagref/simexplorer/is/ui/swing/LoginUI.jaxx 2008-02-19 15:06:31 UTC (rev 1117) @@ -3,19 +3,28 @@ public static abstract class LoginUIHandler { boolean cancel; + LoginUI ui; - protected abstract boolean connect(String login,char[] password); + protected abstract boolean connect(String login, char[] password); protected abstract boolean failedToConnect(); public abstract void doConnect(); public abstract void doCancel(); - + protected void setUi(LoginUI ui) { this.ui = ui; } + + public void setCancel(boolean cancel) { + this.cancel = cancel; + } + + public boolean isCancel() { + return cancel; + } } protected LoginUIHandler handler; @@ -38,7 +47,7 @@ protected void doConnect() { handler.doConnect(); - if (handler.cancel) { + if (handler.isCancel()) { doCancel(); } }
participants (1)
-
tchemit@users.labs.libre-entreprise.org