diff --git a/src/main/java/com/application/DB/AccountHandler.java b/src/main/java/com/application/DB/AccountHandler.java index ead7643810d8a9f72887e2908cff68d6d0f6107b..a1cdbb126517c3455a67dbe9b2cfc36afbcd4986 100644 --- a/src/main/java/com/application/DB/AccountHandler.java +++ b/src/main/java/com/application/DB/AccountHandler.java @@ -5,7 +5,6 @@ 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; @@ -33,19 +32,19 @@ public class AccountHandler { if (row.get("Username").getValue().equals(username)) { CreateLogoBar.getLogin().setText(username); - setUserName(username); + HelpingFunctions.setUserName(username); if (!row.get("Phone_no").isNull()) { - setPhoneNo(row.get("Phone_no").getStringValue()); + HelpingFunctions.setPhoneNo(row.get("Phone_no").getStringValue()); } if (!row.get("First_name").isNull()) { - setFirstName(row.get("First_name").getStringValue()); + HelpingFunctions.setFirstName(row.get("First_name").getStringValue()); } if (!row.get("Last_name").isNull()) { - setLastName(row.get("Last_name").getStringValue()); + HelpingFunctions.setLastName(row.get("Last_name").getStringValue()); } if (!row.get("Admin").isNull()) { - setIsAdmin(row.get("Admin").getBooleanValue()); + HelpingFunctions.setIsAdmin(row.get("Admin").getBooleanValue()); } } } diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index 17b4ae5e84ada6a3c938ee416973f071d2dc797d..0ab11bc16da202db4bbbabd295275338e6d17b2c 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -1,10 +1,13 @@ package com.application.DB; +/** + * This class contain a number of constants used throughout the application + * + * @author Eilert Tunheim, Karin Pettersen, Mads Arnesen + * @version 1.0.0 + */ public class Constants { - // Key name file for the database access - public static String KEY_FILE_NAME = "sf-drying-optimization-8a2e1b7ffc14.json"; - // Time related constants public static String START_TIME = ""; public static String STOP_TIME = ""; @@ -22,60 +25,9 @@ public class Constants { public static String SAWSET = ""; public static String MOISTURE_GOAL = ""; - // Number of manual moisture checks - public static int NUMBER_OF_CHECKS = 1; - - // Max number of input characters for sql injection prevention - public static int MAX_USER_INPUT_CHARACTERS = 10; - // Boolean constants to toggle default launch selected or not for checkboxes for showing graphs public static boolean DEFAULT_IS_SELECTED_LIVE_DATA = true; public static boolean DEFAULT_IS_SELECTED_REGRESSION = true; 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/DB.java b/src/main/java/com/application/DB/DB.java index 562486a66c8f2c4a144eaaf275414da6f07ab6ad..344382b2143fed164b00aea6c2597f7408cbfd50 100644 --- a/src/main/java/com/application/DB/DB.java +++ b/src/main/java/com/application/DB/DB.java @@ -606,7 +606,7 @@ public class DB { // Sqlstatement final String sqlStatement = "INSERT INTO " + PROJECT_ID + "." + LOCATION_ID + "." + MAN_MOISTURE_TABLE + "(moisture,tree_species,dimensions,sawset,moisture_goal,no_moisture_check,start_time,stop_time,finished) " + - "VALUES("+moisture+","+treeSpecies+","+dimensions+","+sawset+","+moistureGoal+","+ Constants.NUMBER_OF_CHECKS+","+startTime+","+stopTime+","+IS_FINISHED+") "; + "VALUES("+moisture+","+treeSpecies+","+dimensions+","+sawset+","+moistureGoal+","+ NUMBER_OF_CHECKS+","+startTime+","+stopTime+","+IS_FINISHED+") "; System.out.println(sqlStatement); diff --git a/src/main/java/com/application/DB/HelpingFunctions.java b/src/main/java/com/application/DB/HelpingFunctions.java index 8f843ccd21d456af2ccc52c8da34ed11135da2ae..167049b76e1796b2298ac69a8abbaccee421f607 100644 --- a/src/main/java/com/application/DB/HelpingFunctions.java +++ b/src/main/java/com/application/DB/HelpingFunctions.java @@ -4,7 +4,6 @@ import com.application.GUI.PopUpWindows.NotificationPopUp; import com.google.auth.oauth2.GoogleCredentials; import com.google.auth.oauth2.ServiceAccountCredentials; import com.google.cloud.bigquery.*; -import io.opencensus.internal.StringUtils; import java.io.File; import java.io.FileInputStream; @@ -13,18 +12,32 @@ import java.util.HashMap; import java.util.Map; import java.util.TimeZone; -import static com.application.DB.Constants.KEY_FILE_NAME; -import static com.application.DB.Constants.MAX_USER_INPUT_CHARACTERS; import static com.application.DB.Settings.*; - +/** + * This class contain a number of helping function that is accessed throughout the application + * + * @author Eilert Tunheim, Karin Pettersen, Mads Arnesen + * @version 1.0.0 + */ public class HelpingFunctions { + // Key name file for the database access + public static String KEY_FILE_NAME = "sf-drying-optimization-8a2e1b7ffc14.json"; + + // Map to store manual moisture static Map<String,String> manMoist = new HashMap<>(); + // Account constants + static boolean isAdmin = false; + static String firstName; + static String lastName; + static String userName; + static String phoneNo; + /** - * Creates a simple date format to use for converting millis in numbers to a usefull date format + * Creates a simple date format to use for converting millis in numbers to a useful date format * * @return returns the date format */ @@ -150,6 +163,11 @@ public class HelpingFunctions { } } + /** + * This function gets the total number of chambers that are searched for + * + * @return an integer indecating the total number of chambers + */ public static int getNoOfChambers(){ int valmeticsChamberIDS = 0; int kwhChamberIDS = 0; @@ -170,6 +188,24 @@ public class HelpingFunctions { return noOfChambers; } + /** + * This function handles input validation + * + * @param input string of input parameter from the user to be checked + * @return a boolean to indicate if the input is accepted or not + */ + public static boolean isValidInput (String input){ + if(input.length() > MAX_USER_INPUT_CHARACTERS) { + NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!"); + return true; + } + else if(input.toLowerCase().contains("union")){ + NotificationPopUp.displayNotificationWindow("Keyword: 'UNION' is not allowed"); + return true; + } + else return false; +} + public static boolean isLoadedData() { return Constants.LOADED_DATA; } @@ -178,21 +214,41 @@ public class HelpingFunctions { Constants.LOADED_DATA = loadedData; } + public static String getUserName() { return userName;} -public static boolean isValidInput (String input){ - if(input.length() > Constants.MAX_USER_INPUT_CHARACTERS) { - NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!"); - return true; + public static void setUserName(String userName) { + HelpingFunctions.userName = userName; } - else if(input.toLowerCase().contains("union")){ - NotificationPopUp.displayNotificationWindow("Keyword: 'UNION' is not allowed"); - return true; + + public static String getPhoneNo() { + return phoneNo; } - else return false; -} + public static void setPhoneNo(String phoneNo) { + HelpingFunctions.phoneNo = phoneNo; + } + public static boolean isIsAdmin() { + return isAdmin; + } + public static void setIsAdmin(boolean isAdmin) { + HelpingFunctions.isAdmin = isAdmin; + } + public static String getFirstName() { + return firstName; + } + public static void setFirstName(String firstName) { + HelpingFunctions.firstName = firstName; + } + + public static String getLastName() { + return lastName; + } + + public static void setLastName(String lastName) { + HelpingFunctions.lastName = lastName; + } } diff --git a/src/main/java/com/application/DB/Settings.java b/src/main/java/com/application/DB/Settings.java index e4bca572acf675007cb262cade9be2704dc6b21b..97335ce6fba319be2035a4659b4fde2977d4f7dd 100644 --- a/src/main/java/com/application/DB/Settings.java +++ b/src/main/java/com/application/DB/Settings.java @@ -13,6 +13,11 @@ public final class Settings { // Empty constructor } + // Number of manual moisture checks + public static int NUMBER_OF_CHECKS = 1; + // Max number of input characters for sql injection prevention + public static int MAX_USER_INPUT_CHARACTERS = 15; + // Number of wanted drying periods public static int NUMBER_OF_PERIODS = 2; diff --git a/src/main/java/com/application/GUI/Panes/CreateLogoBar.java b/src/main/java/com/application/GUI/Panes/CreateLogoBar.java index 2223ffd351950b7379a359a36768ade5377aeede..62f71ec777d0fbe4bfcbc3b07af9d87436d7448e 100644 --- a/src/main/java/com/application/GUI/Panes/CreateLogoBar.java +++ b/src/main/java/com/application/GUI/Panes/CreateLogoBar.java @@ -11,7 +11,7 @@ import javafx.scene.layout.Region; import java.io.FileInputStream; import java.io.FileNotFoundException; -import static com.application.DB.Constants.isIsAdmin; +import static com.application.DB.HelpingFunctions.isIsAdmin; public class CreateLogoBar { diff --git a/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java b/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java index 6ff2fb0f57af604109587da113fb48a1419525dc..6b7fa64e867a8c2f9a09119e053cfbe82708b802 100644 --- a/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java +++ b/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java @@ -17,7 +17,6 @@ import java.util.Map; import static com.application.DB.HelpingFunctions.isValidInput; import static com.application.DB.Settings.*; import static com.application.DB.DB.getCurrentDrying; -import static com.application.DB.Constants.MAX_USER_INPUT_CHARACTERS; import static com.application.DB.HelpingFunctions.setLoadedData; import static com.application.GUI.LineChartFunctionality.*; import static com.application.GUI.Panes.CreateLogoBar.getLogin; diff --git a/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java b/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java index 5f1312a1075f7859792055d525113c9d01bd5c34..1fa5c23c8c5e2f6533c13e8899f413709db63806 100644 --- a/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java +++ b/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java @@ -1,11 +1,10 @@ package com.application.GUI.PopUpWindows; -import javafx.event.EventHandler; +import com.application.DB.HelpingFunctions; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; import javafx.scene.layout.VBox; import javafx.stage.Modality; import javafx.stage.Stage; @@ -14,7 +13,6 @@ import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import static com.application.DB.AccountHandler.*; -import static com.application.DB.Constants.*; import static com.application.DB.HelpingFunctions.isValidInput; import static com.application.GUI.Panes.CreateLogoBar.getLogin; @@ -95,7 +93,7 @@ public class LoginPopup { Label usernameLabel = new Label("Username: "); TextField usernameTextfield = new TextField(); - usernameTextfield.setText(getUserName()); + usernameTextfield.setText(HelpingFunctions.getUserName()); usernameTextfield.setEditable(false); Button addUser = new Button("Add User"); @@ -242,11 +240,11 @@ public class LoginPopup { public static void logout(){ getLogin().setText("Login"); - setFirstName(""); - setLastName(""); - setIsAdmin(false); - setPhoneNo(""); - setUserName(""); + HelpingFunctions.setFirstName(""); + HelpingFunctions.setLastName(""); + HelpingFunctions.setIsAdmin(false); + HelpingFunctions.setPhoneNo(""); + HelpingFunctions.setUserName(""); } public static void userPopup(){ @@ -265,8 +263,8 @@ public class LoginPopup { nameTextfield.setEditable(false); phoneNoTextField.setEditable(false); - nameTextfield.setText(getFirstName() + " " + getLastName()); - phoneNoTextField.setText(getPhoneNo()); + nameTextfield.setText(HelpingFunctions.getFirstName() + " " + HelpingFunctions.getLastName()); + phoneNoTextField.setText(HelpingFunctions.getPhoneNo()); Button close = new Button("Close"); diff --git a/src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java b/src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java index 713900efeea7023f25f5b66442ffb399c21b209e..d6997d1787135b1ea678eb7eab490d2fc84ebb4e 100644 --- a/src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java +++ b/src/main/java/com/application/GUI/PopUpWindows/OutputPopup.java @@ -2,6 +2,7 @@ package com.application.GUI.PopUpWindows; import com.application.DB.Constants; import com.application.DB.DB; +import com.application.DB.Settings; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; @@ -15,7 +16,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import static com.application.DB.Constants.IS_FINISHED; -import static com.application.DB.Constants.MAX_USER_INPUT_CHARACTERS; +import static com.application.DB.Settings.MAX_USER_INPUT_CHARACTERS; import static com.application.DB.HelpingFunctions.isValidInput; public class OutputPopup { @@ -58,7 +59,7 @@ public class OutputPopup { !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) { Constants.STOP_TIME = null; DB.pushManMoisture(moistureCheckTextField.getCharacters().toString()); - Constants.NUMBER_OF_CHECKS++; + Settings.NUMBER_OF_CHECKS++; window.close(); } else { NotificationPopUp.displayNotificationWindow("Please enter a value!");