diff --git a/src/main/java/com/application/DB/Account_handler.java b/src/main/java/com/application/DB/Account_handler.java new file mode 100644 index 0000000000000000000000000000000000000000..e5a7cf0596f74fd80208b9d2355f3e8f405afa32 --- /dev/null +++ b/src/main/java/com/application/DB/Account_handler.java @@ -0,0 +1,100 @@ +package com.application.DB; + +import com.application.GUI.Panes.LogoBar; +import com.application.GUI.PopUpWindows.NotificationPopUp; +import com.google.cloud.bigquery.FieldValueList; +import com.google.cloud.bigquery.TableResult; + +import static com.application.DB.Constants.*; +import static com.application.DB.Settings.*; +import static com.application.GUI.PopUpWindows.LoginPopup.getPasswordTextField; +import static java.lang.System.err; + +public class Account_handler { + + public static void getAccountInformation(String username, String password) throws Exception { + + TableResult result = logIn(username,password); + + if(result.getTotalRows() != 0) { + for (FieldValueList row : result.iterateAll()) { + + if (row.get("Username").getValue().equals(username)) { + LogoBar.getLogin().setText(username); + setUserName(username); + + if (!row.get("Phone_no").isNull()) { + setPhoneNo(row.get("Phone_no").getStringValue()); + } + if (!row.get("First_name").isNull()) { + setFirstName(row.get("First_name").getStringValue()); + } + if (!row.get("Last_name").isNull()) { + setLastName(row.get("Last_name").getStringValue()); + } + if (!row.get("Admin").isNull()) { + setIsAdmin(row.get("Admin").getBooleanValue()); + } + } + } + } else { + NotificationPopUp.displayNotificationWindow("Wrong username or password!"); + getPasswordTextField().clear(); + } + } + + public static TableResult logIn(String username, String password) throws Exception { + + // Sqlstatement + final String sqlStatement = "SELECT Username, Admin, Phone_no, First_name, Last_name " + + "FROM " + PROJECT_ID + "." + LOCATION_ID + "." + USERS_TABLE_NAME + " " + + "WHERE Username = " + '"' + username + '"' + " " + + "AND Password = " + '"' + password+ '"'; + + System.out.println(sqlStatement); + + // Retrieves the results from the queryjob + return HelpingFunctions.createQueryJob(sqlStatement); + } + + public static TableResult getAccount(String username) throws Exception { + + // Sqlstatement + final String sqlStatement = "SELECT Username " + + "FROM " + PROJECT_ID + "." + LOCATION_ID + "." + USERS_TABLE_NAME + " " + + "WHERE Username = " + '"' + username + '"'; + + System.out.println(sqlStatement); + + // Retrieves the results from the queryjob + return HelpingFunctions.createQueryJob(sqlStatement); + } + + public static void addUser(String firstName, String lastName, String phoneNo, String username, String password, boolean isAdmin) throws Exception { + // Sqlstatement + final String sqlStatement = + "INSERT INTO " + PROJECT_ID + "." + LOCATION_ID + "." + USERS_TABLE_NAME + "(First_name, Last_name, Phone_no, Username, Password, Admin) " + + "VALUES("+'"'+firstName+'"'+","+'"'+lastName+'"'+","+'"'+phoneNo+'"'+","+'"'+username+'"'+","+'"'+password+'"'+","+ isAdmin+") "; + + System.out.println(sqlStatement); + + HelpingFunctions.createQueryJob(sqlStatement); + } + + public static boolean deleteUser(String username) throws Exception { + + if(getAccount(username).getTotalRows() != 0){ + // Sqlstatement + final String sqlStatement = "DELETE FROM "+ PROJECT_ID + "." + LOCATION_ID + "." + USERS_TABLE_NAME +" WHERE Username = "+'"'+username+'"'; + + System.out.println(sqlStatement); + + HelpingFunctions.createQueryJob(sqlStatement); + + return true; + } else { + return false; + } + } + +} diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index 66067d33df20d0b866b3a6b35496d1fad24fdbd5..75ae0f2f28778d262908484973934d77e058c6d5 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -34,4 +34,50 @@ public class Constants { public static boolean DEFAULT_IS_SELECTED_REGRESSION_SHADOW = false; public static boolean DEFAULT_IS_SELECTED_PREVIOUS_DATA = true; + // Account constants + private static boolean isAdmin = false; + private static String firstName; + private static String lastName; + private static String userName; + private static String phoneNo; + + public static String getUserName() { + return userName; + } + + public static void setUserName(String userName) { + Constants.userName = userName; + } + + public static String getPhoneNo() { + return phoneNo; + } + + public static void setPhoneNo(String phoneNo) { + Constants.phoneNo = phoneNo; + } + + public static boolean isIsAdmin() { + return isAdmin; + } + + public static void setIsAdmin(boolean isAdmin) { + Constants.isAdmin = isAdmin; + } + + public static String getFirstName() { + return firstName; + } + + public static void setFirstName(String firstName) { + Constants.firstName = firstName; + } + + public static String getLastName() { + return lastName; + } + + public static void setLastName(String lastName) { + Constants.lastName = lastName; + } } diff --git a/src/main/java/com/application/DB/Settings.java b/src/main/java/com/application/DB/Settings.java index 8b0b874622253b1567bd41343b70055b46fcc5df..57bc2427efbd5a356dc07958933a43e0b3a73c2b 100644 --- a/src/main/java/com/application/DB/Settings.java +++ b/src/main/java/com/application/DB/Settings.java @@ -29,6 +29,7 @@ public final class Settings { public static final int LOCATION_ID = 124; public static final String MAN_MOISTURE_TABLE = "int_dk_manMoisture"; public static final String KWH_TABLE_NAME = "int_sd_winccsensordata"; + public static final String USERS_TABLE_NAME = "users"; public static final String KWH_NAME_PARAMETER = "VariantValue"; public static final String KWH_TIMESTAMP_NAME_PARAMETER = "Timestamp"; public static final String KWH_VALUE_ID_NAME_PARAMETER = "ValueID"; diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index 60551dbe3830942e65a0fb56b388f3eec12523e9..c217acddfacbb8995ccae982a9d520961babb2ae 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -148,7 +148,7 @@ public class LineChartFunctionality { //System.out.println(String.format("Mean: %f", stats.getMean())); double lower = stats.getMean() - ci; double upper = stats.getMean() + ci; - System.out.println(String.format("Confidence Interval "+ Settings.CONFIDENCE_INTERVAL*100+"%%: %f, %f", lower, upper)); + //System.out.println(String.format("Confidence Interval "+ Settings.CONFIDENCE_INTERVAL*100+"%%: %f, %f", lower, upper)); // Deletes entries if they are out of bounds with the confidence interval entry.getValue().removeIf(value -> Double.compare(value, lower) < 0 || Double.compare(value, upper) > 0); diff --git a/src/main/java/com/application/GUI/Panes/LogoBar.java b/src/main/java/com/application/GUI/Panes/LogoBar.java index f819c95c7aef5dbde8ebbfe29e487adf19edfe89..4cb813b48d07ca3220d1859d11e099bd6c37a525 100644 --- a/src/main/java/com/application/GUI/Panes/LogoBar.java +++ b/src/main/java/com/application/GUI/Panes/LogoBar.java @@ -1,5 +1,8 @@ package com.application.GUI.Panes; +import com.application.GUI.PopUpWindows.LoginPopup; +import javafx.geometry.Pos; +import javafx.scene.control.Button; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.HBox; @@ -9,9 +12,11 @@ import javafx.scene.layout.Region; import java.io.FileInputStream; import java.io.FileNotFoundException; +import static com.application.DB.Constants.isIsAdmin; + public class LogoBar { - public LogoBar() { - } + + private static Button login = new Button("Login"); /** * This function imports the logos and defines the alignments @@ -41,6 +46,23 @@ public class LogoBar { Region region2 = new Region(); HBox.setHgrow(region2, Priority.ALWAYS); - return new HBox(imageViewM, region1, imageViewTitle, region2); + // Login button + getLogin().setOnAction(event -> { + if(getLogin().getText().equals("Login")){ + LoginPopup.login(); + } else { + if(isIsAdmin()){ + LoginPopup.adminPopup(); + } else { + LoginPopup.userPopup(); + } + } + }); + + return new HBox(imageViewM, region1, imageViewTitle, region2, getLogin()); + } + + public static Button getLogin() { + return login; } } \ No newline at end of file diff --git a/src/main/java/com/application/GUI/Panes/SideBar.java b/src/main/java/com/application/GUI/Panes/SideBar.java index 99838521013939f1da686c0c2079d768db560038..6747aeb274d51c7af8ab2a8d4888d4549f55ecd5 100644 --- a/src/main/java/com/application/GUI/Panes/SideBar.java +++ b/src/main/java/com/application/GUI/Panes/SideBar.java @@ -1,8 +1,8 @@ package com.application.GUI.Panes; import com.application.DB.Constants; -import com.application.GUI.PopUpWindows.InputPopUpWindow; -import com.application.GUI.PopUpWindows.OutputPopUpWindow; +import com.application.GUI.PopUpWindows.InputPopup; +import com.application.GUI.PopUpWindows.OutputPopup; import com.application.GUI.ProgressBar.RingProgressIndicator; import com.application.Main; import javafx.application.Platform; @@ -72,11 +72,11 @@ public class SideBar { Button inputParametersButton = new Button("Input Parameters"); inputParametersButton.setId("sideBarButtonInputParameters"); - inputParametersButton.setOnAction(e -> InputPopUpWindow.display()); + inputParametersButton.setOnAction(e -> InputPopup.display()); Button finishButton = new Button("Finish"); finishButton.setId("sideBarButtonFinish"); - finishButton.setOnAction(e -> OutputPopUpWindow.displayOutputWindow()); + finishButton.setOnAction(e -> OutputPopup.displayOutputWindow()); Button exitButton = new Button("Exit"); exitButton.setId("sideBarButtonExit"); diff --git a/src/main/java/com/application/GUI/PopUpWindows/InputPopUpWindow.java b/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java similarity index 98% rename from src/main/java/com/application/GUI/PopUpWindows/InputPopUpWindow.java rename to src/main/java/com/application/GUI/PopUpWindows/InputPopup.java index 1fa2d6957e8a215be23eb6e96dfbc96b25d5504a..1259d2762d1f963348cb2cbf1abbc4d5bb211e6f 100644 --- a/src/main/java/com/application/GUI/PopUpWindows/InputPopUpWindow.java +++ b/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java @@ -29,7 +29,7 @@ import static com.application.DB.DB.setInputParameters; * @author Eilert Tunheim, Karin Pettersen, Mads Arnesen * @version 1.0 */ -public class InputPopUpWindow { +public class InputPopup { public static void display() { @@ -334,7 +334,7 @@ public class InputPopUpWindow { layout.setAlignment(Pos.CENTER); Scene scene = new Scene(layout, 600, 500); - scene.getStylesheets().add(InputPopUpWindow.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); window.setScene(scene); window.showAndWait(); } diff --git a/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java b/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java new file mode 100644 index 0000000000000000000000000000000000000000..878fba65da35b5725f2cea85d8767e1b059cd2c3 --- /dev/null +++ b/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java @@ -0,0 +1,283 @@ +package com.application.GUI.PopUpWindows; + +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.*; +import javafx.scene.layout.VBox; +import javafx.stage.Modality; +import javafx.stage.Stage; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +import static com.application.DB.Account_handler.*; +import static com.application.DB.Constants.*; +import static com.application.GUI.Panes.LogoBar.getLogin; + +public class LoginPopup { + + public static PasswordField PASSWORD_TEXT_FIELD = new PasswordField(); + + public static void login(){ + + Stage window = new Stage(); + window.initModality(Modality.APPLICATION_MODAL); + window.setTitle("Login window"); + + Label userNameLabel = new Label("Username:"); + Label passwordLabel = new Label("Password:"); + + TextField userNameTextField = new TextField(); + getPasswordTextField().clear(); + + Button closeButton = new Button("Close"); + Button loginButton = new Button("Login"); + + closeButton.setOnAction(event -> window.close()); + loginButton.setOnAction(event -> { + + try { + getAccountInformation(userNameTextField.getText(), hashPassword(getPasswordTextField().getText())); + if(getLogin().getText().equals("Admin")) { + LoginPopup.adminPopup(); + window.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + + if(!getLogin().getText().equals("Login")){ + window.close(); + } + + }); + + + + VBox layout = new VBox(10); + layout.setAlignment(Pos.CENTER); + layout.getChildren().addAll(userNameLabel, userNameTextField, passwordLabel, getPasswordTextField(), loginButton, closeButton); + + Scene scene = new Scene(layout, 500, 300); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + window.setScene(scene); + window.showAndWait(); + } + + public static void adminPopup(){ + + Stage window = new Stage(); + window.initModality(Modality.APPLICATION_MODAL); + window.setTitle("Admin window"); + + Label usernameLabel = new Label("Username: "); + TextField usernameTextfield = new TextField(); + usernameTextfield.setText(getUserName()); + usernameTextfield.setEditable(false); + + Button addUser = new Button("Add User"); + Button deleteUser = new Button("Delete User"); + Button logout = new Button("Logout"); + Button close = new Button("Close"); + + addUser.setOnAction(event -> { + adminAddUser(); + }); + deleteUser.setOnAction(event -> { + adminDeleteUser(); + }); + logout.setOnAction(event -> { + logout(); + window.close(); + }); + close.setOnAction(event -> window.close()); + + + VBox layout = new VBox(10); + layout.setAlignment(Pos.CENTER); + layout.getChildren().addAll(usernameLabel, usernameTextfield, addUser, deleteUser, logout, close); + + Scene scene = new Scene(layout, 500, 300); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + window.setScene(scene); + window.showAndWait(); + } + + public static void adminAddUser(){ + + Stage window = new Stage(); + window.initModality(Modality.APPLICATION_MODAL); + window.setTitle("Admin window"); + + Label firstNameLabel = new Label("First Name: "); + Label lastNameLabel = new Label("Last Name: "); + Label phoneNoLabel = new Label("Phone No: "); + Label usernameLabel = new Label("Username: "); + Label passwordFirstLabel = new Label("Password : "); + Label passwordSecondLabel = new Label("Password Repeat: "); + Label isAdminLabel = new Label("Is Admin: "); + + TextField firstNameTextField = new TextField(); + TextField lastNameTextField = new TextField(); + TextField phoneNoTextField = new TextField(); + TextField usernameTextField = new TextField(); + PasswordField passwordFirstField = new PasswordField(); + PasswordField passwordSecondField = new PasswordField(); + CheckBox isAdminBox = new CheckBox(); + isAdminBox.setSelected(false); + + Button close = new Button("Close"); + Button addUser = new Button("Add User"); + + close.setOnAction(event -> window.close()); + addUser.setOnAction(event -> { + + // If the passwords match each other, add the user, if not display an errormessage + if(passwordFirstField.getText().contentEquals(passwordSecondField.getText())){ + + // Hashing the password if they match. + String hashedPassword = hashPassword(passwordFirstField.getText()); + + // Tries to add the user + try { + addUser(firstNameTextField.getText(), lastNameTextField.getText(), phoneNoTextField.getText(), + usernameTextField.getText(), hashedPassword, isAdminBox.isSelected()); + NotificationPopUp.displayNotificationWindow("Successfully added user!"); + window.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + NotificationPopUp.displayNotificationWindow("Passwords does not match!"); + passwordFirstField.clear(); + passwordSecondField.clear(); + } + + }); + + + VBox layout = new VBox(10); + layout.setAlignment(Pos.CENTER); + layout.getChildren().addAll(firstNameLabel, firstNameTextField, lastNameLabel, lastNameTextField, + phoneNoLabel, phoneNoTextField, usernameLabel, usernameTextField, + passwordFirstLabel, passwordFirstField, passwordSecondLabel, passwordSecondField, + isAdminLabel, isAdminBox, addUser, close); + + Scene scene = new Scene(layout, 500, 600); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + window.setScene(scene); + window.showAndWait(); + } + + public static void adminDeleteUser(){ + + Stage window = new Stage(); + window.initModality(Modality.APPLICATION_MODAL); + window.setTitle("Admin window"); + + Label usernameLabel = new Label("Username: "); + TextField usernameTextField = new TextField(); + + Button close = new Button("Close"); + Button delete = new Button("Delete User"); + + close.setOnAction(event -> window.close()); + delete.setOnAction(event -> { + try { + boolean results = deleteUser(usernameTextField.getText()); + if(results){ + NotificationPopUp.displayNotificationWindow(usernameTextField.getText()+" was successfully deleted!"); + window.close(); + } else { + NotificationPopUp.displayNotificationWindow("Could not find username: " + usernameTextField.getText()); + usernameTextField.clear(); + } + } catch (Exception e) { + e.printStackTrace(); + } + }); + + VBox layout = new VBox(10); + layout.setAlignment(Pos.CENTER); + layout.getChildren().addAll(usernameLabel, usernameTextField, delete, close); + + Scene scene = new Scene(layout, 500, 300); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + window.setScene(scene); + window.showAndWait(); + } + + public static void logout(){ + getLogin().setText("Login"); + setFirstName(""); + setLastName(""); + setIsAdmin(false); + setPhoneNo(""); + setUserName(""); + } + + public static void userPopup(){ + + Stage window = new Stage(); + window.initModality(Modality.APPLICATION_MODAL); + window.setTitle("User window"); + + + Label nameLabel = new Label("Name: "); + Label phoneNoLabel = new Label("Phone no: "); + + TextField nameTextfield = new TextField(); + TextField phoneNoTextField = new TextField(); + + nameTextfield.setEditable(false); + phoneNoTextField.setEditable(false); + + nameTextfield.setText(getFirstName() + " " + getLastName()); + phoneNoTextField.setText(getPhoneNo()); + + + Button close = new Button("Close"); + Button logout = new Button("Logout"); + close.setOnAction(event -> window.close()); + logout.setOnAction(event -> { + logout(); + window.close(); + }); + + VBox layout = new VBox(10); + layout.setAlignment(Pos.CENTER); + layout.getChildren().addAll(nameLabel, nameTextfield, phoneNoLabel, phoneNoTextField, logout, close); + + Scene scene = new Scene(layout, 500, 300); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + window.setScene(scene); + window.showAndWait(); + } + + public static String hashPassword(String password){ + try { + MessageDigest messageDigest = MessageDigest.getInstance("SHA-512"); + + assert messageDigest != null; + messageDigest.update(password.getBytes(StandardCharsets.UTF_8)); + + byte[] hashedPassword = messageDigest.digest(); + + StringBuilder hashedPasswordString = new StringBuilder(); + + for (byte b: hashedPassword) { + hashedPasswordString.append(String.format("%02x",b)); + } + + return hashedPasswordString.toString(); + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static PasswordField getPasswordTextField() { + return PASSWORD_TEXT_FIELD; + } +} diff --git a/src/main/java/com/application/GUI/PopUpWindows/NotificationPopUp.java b/src/main/java/com/application/GUI/PopUpWindows/NotificationPopUp.java index a94dbde51ac1ccaab7759ac1295a0f22eed060b3..a8442c422fe1ccb9d62f1be10a6dbce64b069fbe 100644 --- a/src/main/java/com/application/GUI/PopUpWindows/NotificationPopUp.java +++ b/src/main/java/com/application/GUI/PopUpWindows/NotificationPopUp.java @@ -1,6 +1,5 @@ package com.application.GUI.PopUpWindows; -import com.application.GUI.PopUpWindows.InputPopUpWindow; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; @@ -31,7 +30,7 @@ public class NotificationPopUp { layout.getChildren().addAll(messageLabel,close); Scene scene = new Scene(layout, 300, 200); - scene.getStylesheets().add(InputPopUpWindow.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); window.setScene(scene); window.showAndWait(); } diff --git a/src/main/java/com/application/GUI/PopUpWindows/OutputPopUpWindow.java b/src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java similarity index 94% rename from src/main/java/com/application/GUI/PopUpWindows/OutputPopUpWindow.java rename to src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java index c94a729cf5ce7a04d599b8f40b6d06d09b620b49..9c4409b1b609c912b4c16e0e06c6051f3d2c4679 100644 --- a/src/main/java/com/application/GUI/PopUpWindows/OutputPopUpWindow.java +++ b/src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java @@ -2,8 +2,6 @@ package com.application.GUI.PopUpWindows; import com.application.DB.Constants; import com.application.DB.DB; -import com.application.GUI.PopUpWindows.InputPopUpWindow; -import com.application.GUI.PopUpWindows.NotificationPopUp; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; @@ -19,7 +17,7 @@ import java.time.format.DateTimeFormatter; import static com.application.DB.Constants.IS_FINISHED; import static com.application.DB.Constants.MAX_USER_INPUT_CHARACTERS; -public class OutputPopUpWindow { +public class OutputPopup { public static void displayOutputWindow(){ @@ -116,7 +114,7 @@ public class OutputPopUpWindow { layout.getChildren().addAll(moistureCheckLabelHuge,moistureCheckTextField,countinueButton,finishButton); Scene scene = new Scene(layout, 600, 500); - scene.getStylesheets().add(InputPopUpWindow.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + scene.getStylesheets().add(InputPopup.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); window.setScene(scene); window.showAndWait(); } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index aa0a52bea7b4baeab300b106f60eec5353820658..d6b924dea24545310c2ad6ce08d9bb7d7a38dc0e 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -1,11 +1,12 @@ package com.application; -import com.application.GUI.PopUpWindows.InputPopUpWindow; +import com.application.GUI.PopUpWindows.InputPopup; import com.application.GUI.Panes.BottomBar; import com.application.GUI.Panes.LogoBar; import com.application.GUI.Panes.SideBar; import com.application.GUI.LineChartFunctionality; +import com.application.GUI.PopUpWindows.LoginPopup; import javafx.application.Application; import javafx.application.Platform; import javafx.scene.chart.LineChart; @@ -137,7 +138,8 @@ public class Main extends Application { primaryStage.show(); // Displays the input parameters popup window - InputPopUpWindow.display(); + LoginPopup.login(); + InputPopup.display(); } public static void setTreeSpeciesText(String treeSpeciesText) { diff --git a/target/classes/com/application/DB/Account_handler.class b/target/classes/com/application/DB/Account_handler.class new file mode 100644 index 0000000000000000000000000000000000000000..c09f8ced6631474642158218a0c1f8833b6ff76f Binary files /dev/null and b/target/classes/com/application/DB/Account_handler.class differ diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class index 4887ecccb0aecb7419aabd5a5d4c362b1a9c75e9..f9229ec0ebccb95510e2f7694f75caeb87e56e94 100644 Binary files a/target/classes/com/application/DB/Constants.class and b/target/classes/com/application/DB/Constants.class differ diff --git a/target/classes/com/application/DB/Settings.class b/target/classes/com/application/DB/Settings.class index 1510d13abd39fac5accabe4ae53c72967b1ffd19..3cc7d0b40907c69485096f5fd430ff9206db126c 100644 Binary files a/target/classes/com/application/DB/Settings.class and b/target/classes/com/application/DB/Settings.class differ diff --git a/target/classes/com/application/GUI/Panes/LogoBar.class b/target/classes/com/application/GUI/Panes/LogoBar.class index cb180a3b27155aecbea2709a056ca51aa590cb8e..654a3b92355770a294d191cc0f302fe5fc700687 100644 Binary files a/target/classes/com/application/GUI/Panes/LogoBar.class and b/target/classes/com/application/GUI/Panes/LogoBar.class differ diff --git a/target/classes/com/application/GUI/Panes/SideBar.class b/target/classes/com/application/GUI/Panes/SideBar.class index 33a2c4007598228d0ac1b13f37e5e234c21dd9e3..2176f7d89cd8104c978404d72d8af780c4142634 100644 Binary files a/target/classes/com/application/GUI/Panes/SideBar.class and b/target/classes/com/application/GUI/Panes/SideBar.class differ diff --git a/target/classes/com/application/GUI/PopUpWindows/InputPopUpWindow.class b/target/classes/com/application/GUI/PopUpWindows/InputPopup.class similarity index 85% rename from target/classes/com/application/GUI/PopUpWindows/InputPopUpWindow.class rename to target/classes/com/application/GUI/PopUpWindows/InputPopup.class index 14172f83b8ac618bcbfec3aee8ee6ad8ab29040a..8d31307c5d5c7a14c5f4fb19efcad444cd5ba67f 100644 Binary files a/target/classes/com/application/GUI/PopUpWindows/InputPopUpWindow.class and b/target/classes/com/application/GUI/PopUpWindows/InputPopup.class differ diff --git a/target/classes/com/application/GUI/PopUpWindows/LoginPopup.class b/target/classes/com/application/GUI/PopUpWindows/LoginPopup.class new file mode 100644 index 0000000000000000000000000000000000000000..d48a380678cdbcd7de915ccbd1bfb5ac516a2e67 Binary files /dev/null and b/target/classes/com/application/GUI/PopUpWindows/LoginPopup.class differ diff --git a/target/classes/com/application/GUI/PopUpWindows/NotificationPopUp.class b/target/classes/com/application/GUI/PopUpWindows/NotificationPopUp.class index 848042985ce87564a882d2c011ae62fa5c50009e..85c44a9dff6feda3f064bd8f59114e7ffe943ff8 100644 Binary files a/target/classes/com/application/GUI/PopUpWindows/NotificationPopUp.class and b/target/classes/com/application/GUI/PopUpWindows/NotificationPopUp.class differ diff --git a/target/classes/com/application/GUI/PopUpWindows/OutputPopUpWindow.class b/target/classes/com/application/GUI/PopUpWindows/OutputPopup.class similarity index 65% rename from target/classes/com/application/GUI/PopUpWindows/OutputPopUpWindow.class rename to target/classes/com/application/GUI/PopUpWindows/OutputPopup.class index 5e2edd7365e0dfb11635952c63d89c5d844ff898..04851fe4919902ae6f14901bab0a633baec5c884 100644 Binary files a/target/classes/com/application/GUI/PopUpWindows/OutputPopUpWindow.class and b/target/classes/com/application/GUI/PopUpWindows/OutputPopup.class differ diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index 712fcdba727b41cb3bd273f43ab62a276c275282..aa6c0575581b03ac72e0f15042a91c42bfd30150 100644 Binary files a/target/classes/com/application/Main.class and b/target/classes/com/application/Main.class differ