summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/gui/intro
diff options
context:
space:
mode:
authorSimon Rettberg2014-09-13 13:57:38 +0200
committerSimon Rettberg2014-09-13 13:57:38 +0200
commitf46908c17ecc4788eb9db68507648afe37c1ef76 (patch)
treec5013cb3ded6db495099cb3c81a310cf6c70f018 /dozentenmodul/src/main/java/gui/intro
parent[client] MAsterserver thrift connection: Set connection timeout of 6 secs (diff)
downloadtutor-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.java286
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