diff options
author | Simon Rettberg | 2014-09-13 13:57:38 +0200 |
---|---|---|
committer | Simon Rettberg | 2014-09-13 13:57:38 +0200 |
commit | f46908c17ecc4788eb9db68507648afe37c1ef76 (patch) | |
tree | c5013cb3ded6db495099cb3c81a310cf6c70f018 /dozentenmodul/src/main/java/gui/intro | |
parent | [client] MAsterserver thrift connection: Set connection timeout of 6 secs (diff) | |
download | tutor-module-f46908c17ecc4788eb9db68507648afe37c1ef76.tar.gz tutor-module-f46908c17ecc4788eb9db68507648afe37c1ef76.tar.xz tutor-module-f46908c17ecc4788eb9db68507648afe37c1ef76.zip |
[client] Reworked performLogin(): Better error handling, removed dead code, got rid of deep if-else nestings, removed unused variables
Diffstat (limited to 'dozentenmodul/src/main/java/gui/intro')
-rw-r--r-- | dozentenmodul/src/main/java/gui/intro/Login_GUI.java | 286 |
1 files changed, 119 insertions, 167 deletions
diff --git a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java index 4b4c85fd..76ece985 100644 --- a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java +++ b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java @@ -8,11 +8,12 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.io.File; import java.io.IOException; +import java.util.Arrays; import javax.swing.ImageIcon; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; @@ -28,20 +29,14 @@ import models.SessionData; import models.person; import org.apache.thrift.TException; -import org.ini4j.InvalidFileFormatException; -import org.ini4j.Wini; import org.openslx.imagemaster.thrift.iface.ImageServer.Client; +import org.openslx.imagemaster.thrift.iface.UserInfo; import thrift.MasterThriftConnection; import thrift.ThriftConnection; - -import org.openslx.imagemaster.thrift.iface.UserInfo; - import util.GuiOrganizer; import config.Config; -import javax.swing.JCheckBox; - @SuppressWarnings("serial") public class Login_GUI extends JFrame { @@ -50,11 +45,6 @@ public class Login_GUI extends JFrame { private JPasswordField lblpass; JLabel lblConnectionInfo = new JLabel(""); boolean isClientReturnedCorrectly = false; - boolean login; - String masterServerIP = MasterThriftConnection.MASTERSERVERIP; - MasterThriftConnection thrift; - Client client; - String token; JCheckBox chckbxBenutzernameSpeichern; /** @@ -215,170 +205,132 @@ public class Login_GUI extends JFrame { // Versuche den Benutzer einzuloggen public void performLogin() { - - login = false; - thrift = new MasterThriftConnection(); - client = thrift.getMasterThriftConnection(); - token = null; org.openslx.imagemaster.thrift.iface.SessionData result = null; - + // Connect to Master + MasterThriftConnection thrift = new MasterThriftConnection(); + Client client = thrift.getMasterThriftConnection(); + + if (client == null) { + // Thrift connection to master could not be established + setStatus(Color.red, "Fehler: Masterserver nicht erreichbar.", null); + return; + } + + String passText = new String(lblpass.getPassword()); + UserInfo user = null; + // Log user in try { - - login = true; - String passText = new String(lblpass.getPassword()); - // check if client has received a connection with information or a - // null package - if (checkClientPackage() == true) { - - // package has information - //User-Info - - System.out.println("Authentifiziere - warte auf Masterserver"); - lblConnectionInfo.setForeground(Color.black); - - lblConnectionInfo.setText("Authentifiziere - warte auf Antwort von Server..."); - - result = client.authenticate(lblusername.getText(), passText); - - //User-Info - System.out.println("Authentifizierung erfolgreich"); - lblConnectionInfo.setForeground(Color.green); - lblConnectionInfo.setText("Authentifizierung erfolgreich"); - - //set Information - SessionData.session.setAuthToken(result.authToken); - SessionData.session.setSessionID(result.sessionId); - SessionData.session.setServerAdress(result.serverAddress); - - - //User-Info - lblConnectionInfo.setForeground(Color.black); - lblConnectionInfo.setText("Hole Verbindungsdaten von Server..."); - System.out.println("warte auf Masterserver"); - // set connection to bwLehrpoolSuiteServer - ThriftConnection bwthrift = new ThriftConnection(); - server.Server.Client bwClient = bwthrift.getThriftConnection(); - models.Client.clientcon.setClient(bwClient); - - //User-Info - System.out.println("Client macht weiter"); - System.out.println("Session-ID: " + result.sessionId - + "\nToken: " + result.authToken); - lblConnectionInfo.setForeground(Color.green); - lblConnectionInfo.setText("Daten erhalten."); - - if (login == true) { - //Daten speichern - if (SessionData.session.getAuthToken() == null) { - System.out.println("Token ist null"); - JOptionPane.showMessageDialog(null, - "Error: Token ist null", "Token defekt", - JOptionPane.ERROR_MESSAGE); - } - System.out.println("Arbeite ab jetzt mit Infos aus SessionData."); - UserInfo user = client.getUserFromToken(SessionData.session - .getAuthToken()); - - String hochschule = user.eMail.substring(user.eMail - .indexOf("@") + 1); - - person.verantwortlicher.setUsername(lblusername.getText() - .substring(0, lblusername.getText().indexOf("@"))); - person.verantwortlicher.setName(user.lastName); - person.verantwortlicher.setVorname(user.firstName); - person.verantwortlicher.setEMail(user.eMail); - person.verantwortlicher.setHochschule(hochschule); - - - //Spaeter ueber result.getRole zum Beispiel die Rolle holen - person.verantwortlicher.setRole("Dozent"); - //person.verantwortlicher.setRole("Admin"); - //person.verantwortlicher.setRole("Student"); - //person.verantwortlicher.setRole("GetToTheChopper!"); - - if (chckbxBenutzernameSpeichern.isSelected()){ - Config.setString("main", "Benutzername", lblusername.getText()); - Config.setBoolean("main", "Benutzername speichern", true); - } else { - Config.setString("main", "Benutzername", ""); - Config.setBoolean("main", "Benutzername speichern", false); - } - // speichern - Config.store(); - - // Pruefe ob Bills Of Rights schon akzeptiert wurden, - // wenn nicht zeige diese an - if (!Config.getBoolean("main", "BillOfRights", false)) { - // Erstellen einer Instanz der Aktionsauswahl - BillOfRights_GUI re = new BillOfRights_GUI(); - re.setVisible(true); - // Schliessen des Fensters nach erfolgreichen Login - setVisible(false); - } else { - // Pruefe ob die Links zu vmware angezeigt werden - // sollen - if (!Config.getBoolean("main", "vmware", false)) { - VmWareLink_GUI vm = new VmWareLink_GUI(); - vm.setVisible(true); - setVisible(false); - } else { - - // oeffne das Hauptmenue - MainMenue_GUI main = new MainMenue_GUI(); - main.setVisible(true); - setVisible(false); - } - } - - } else { - JOptionPane.showMessageDialog(null, "Login denied!", - "Message", JOptionPane.INFORMATION_MESSAGE); - } - - } else { - // package from server is null - login = false; - lblConnectionInfo.setForeground(Color.red); - lblConnectionInfo - .setText("Fehler: Client nicht mit Server verbunden."); - + setStatus(Color.black, "Authentifiziere - warte auf Antwort von Server...", null); + + result = client.authenticate(lblusername.getText(), passText); + + // Sanity checks + if (result.authToken == null || result.sessionId == null) { + setStatus(Color.red, "Antwort des Masterservers korrupt.", null); + return; } + + //User-Info + System.out.println("Authentifizierung erfolgreich"); + user = client.getUserFromToken(result.authToken); } catch (org.openslx.imagemaster.thrift.iface.AuthenticationException e) { - lblConnectionInfo.setForeground(Color.red); - lblConnectionInfo - .setText("Fehler: Falscher Benutzername oder Passwort."); - System.out - .println("Authentifizierung fehlgeschlagen: " + e.message); - JOptionPane - .showMessageDialog( - null, - "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.", - "Anmeldung fehlgeschlagen", - JOptionPane.ERROR_MESSAGE); + setStatus(Color.red, "Fehler: Zugangsdaten nicht akzeptiert.", + "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.\n" + + e.message); e.printStackTrace(); return; } catch (TException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - + setStatus(Color.red, "Kommunikation mit Masterserver fehlgeschlagen.", Arrays.toString(e.getStackTrace())); + return; } - }// end performLogin - - public boolean checkClientPackage() { - // check if client is null or has been returned with information - System.out.println("Prüfe Eingangsdaten"); - if (client != null) { - // client contains information - isClientReturnedCorrectly = true; - System.out.println("Verbindungsdaten erhalten"); + + //set Information + SessionData.session.setAuthToken(result.authToken); + SessionData.session.setSessionID(result.sessionId); + SessionData.session.setServerAdress(result.serverAddress); + + //Satellite-Connection + setStatus(Color.black, "Hole Verbindungsdaten von Server...", null); + // set connection to bwLehrpoolSuiteServer + ThriftConnection bwthrift = new ThriftConnection(); + server.Server.Client bwClient = bwthrift.getThriftConnection(); + models.Client.clientcon.setClient(bwClient); + + //User-Info + System.out.println("Session-ID: " + result.sessionId + + "\nToken: " + result.authToken); + setStatus(Color.green, "Daten erhalten.", null); + + String hochschule = user.eMail.substring(user.eMail + .indexOf("@") + 1); + + person.verantwortlicher.setUsername(lblusername.getText() + .substring(0, lblusername.getText().indexOf("@"))); + person.verantwortlicher.setName(user.lastName); + person.verantwortlicher.setVorname(user.firstName); + person.verantwortlicher.setEMail(user.eMail); + person.verantwortlicher.setHochschule(hochschule); + + + //Spaeter ueber result.getRole zum Beispiel die Rolle holen + person.verantwortlicher.setRole("Dozent"); + //person.verantwortlicher.setRole("Admin"); + //person.verantwortlicher.setRole("Student"); + //person.verantwortlicher.setRole("GetToTheChopper!"); + + if (chckbxBenutzernameSpeichern.isSelected()) { + Config.setString("main", "Benutzername", lblusername.getText()); + Config.setBoolean("main", "Benutzername speichern", true); } else { - // client has returned with error - isClientReturnedCorrectly = false; - System.out - .println("Fehler: Keine korrekten Verbindungsdaten erhalten."); + Config.setString("main", "Benutzername", ""); + Config.setBoolean("main", "Benutzername speichern", false); } + // speichern + Config.store(); + + // Pruefe ob Bills Of Rights schon akzeptiert wurden, + // wenn nicht zeige diese an + if (!Config.getBoolean("main", "BillOfRights", false)) { + // Erstellen einer Instanz der Aktionsauswahl + BillOfRights_GUI re = new BillOfRights_GUI(); + re.setVisible(true); + // Schliessen des Fensters nach erfolgreichen Login + setVisible(false); + } else { + // Pruefe ob die Links zu vmware angezeigt werden + // sollen + if (!Config.getBoolean("main", "vmware", false)) { + VmWareLink_GUI vm = new VmWareLink_GUI(); + vm.setVisible(true); + setVisible(false); + } else { + + // oeffne das Hauptmenue + MainMenue_GUI main = new MainMenue_GUI(); + main.setVisible(true); + setVisible(false); + } + } + + }// end performLogin + + /** + * Set connection status message, optionally show message box. + * @param color Color to display status message in. + * @param shortMessage The message to display. + * @param longMessage Optional message to show in a message box. null means don't show. + */ + private void setStatus(Color color, String shortMessage, String longMessage) { + System.out.println(shortMessage); + lblConnectionInfo.setForeground(color); + lblConnectionInfo.setText(shortMessage); + if (longMessage != null) + JOptionPane.showMessageDialog( + null, + longMessage, + "Anmeldung fehlgeschlagen", + JOptionPane.ERROR_MESSAGE); + } - return isClientReturnedCorrectly; - }// end checkServerConnection() }// end class |