diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2012-11-19 23:21:53 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2012-11-19 23:21:53 +1300 |
commit | 02d84970e58aae0a0e81f6224cd3ce4a96702fb9 (patch) | |
tree | 2bd67e0a751144b2606e25265fd78d4ecc0e995f /src | |
parent | cc06b3e29802b23b5c81270eec4133fa5d7b688d (diff) | |
download | trackermap-web-02d84970e58aae0a0e81f6224cd3ce4a96702fb9.tar.gz trackermap-web-02d84970e58aae0a0e81f6224cd3ce4a96702fb9.tar.bz2 trackermap-web-02d84970e58aae0a0e81f6224cd3ce4a96702fb9.zip |
Create login controller
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/org/traccar/web/client/database/GlobalDatabaseService.java | 13 | ||||
-rw-r--r-- | src/main/java/org/traccar/web/client/login/LoginController.java | 82 |
2 files changed, 95 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/web/client/database/GlobalDatabaseService.java b/src/main/java/org/traccar/web/client/database/GlobalDatabaseService.java new file mode 100644 index 00000000..138fa48b --- /dev/null +++ b/src/main/java/org/traccar/web/client/database/GlobalDatabaseService.java @@ -0,0 +1,13 @@ +package org.traccar.web.client.database; + +import com.google.gwt.core.client.GWT; + +public class GlobalDatabaseService { + + private static final DatabaseServiceAsync databaseService = GWT.create(DatabaseService.class); + + public static DatabaseServiceAsync getInstance() { + return databaseService; + } + +} diff --git a/src/main/java/org/traccar/web/client/login/LoginController.java b/src/main/java/org/traccar/web/client/login/LoginController.java new file mode 100644 index 00000000..42d68899 --- /dev/null +++ b/src/main/java/org/traccar/web/client/login/LoginController.java @@ -0,0 +1,82 @@ +package org.traccar.web.client.login; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.util.SC; +import org.traccar.web.client.database.GlobalDatabaseService; + +public class LoginController implements LoginDialog.LoginHandler { + + private LoginDialog dialog; + + public interface LoginHandler { + public void onLogin(); + } + + private LoginHandler loginHandler; + + public void login(LoginHandler loginHandler) { + this.loginHandler = loginHandler; + + dialog = new LoginDialog(); + dialog.setLoginHandler(this); + dialog.draw(); + dialog.centerInPage(); + } + + private boolean validate(String login, String password) { + if (login == null || login.isEmpty() || password == null || password.isEmpty()) { + SC.warn("Login and password fields must not be blank"); + return false; + } + return true; + } + + private static abstract class AsyncCallbackHandler implements AsyncCallback<Boolean> { + @Override + public void onFailure(Throwable caught) { + SC.warn("Remote procedure call error"); + } + } + + private final AsyncCallback<Boolean> loginCallback = new AsyncCallbackHandler() { + @Override + public void onSuccess(Boolean result) { + if (result) { + if (loginHandler != null) { + dialog.destroy(); + loginHandler.onLogin(); + } + } else { + SC.warn("Invalid login or password"); + } + } + }; + + @Override + public void onLogin(String login, String password) { + if (validate(login, password)) { + GlobalDatabaseService.getInstance().authenticate(login, password, loginCallback); + } + } + + private final AsyncCallback<Boolean> registerCallback = new AsyncCallbackHandler() { + @Override + public void onSuccess(Boolean result) { + if (result) { + if (loginHandler != null) { + dialog.destroy(); + loginHandler.onLogin(); + } + } else { + SC.warn("Registration failed"); + } + } + }; + + @Override + public void onRegister(String login, String password) { + if (validate(login, password)) { + GlobalDatabaseService.getInstance().register(login, password, registerCallback); + } + } +} |