From 5e0b0da0ae8ec997f6057c22793b69fe93ec1cd0 Mon Sep 17 00:00:00 2001
From: karin_pettersen <karinep@stud.ntnu.no>
Date: Sun, 15 May 2022 20:14:21 +0200
Subject: [PATCH] Added test class for accountHandler

---
 Bachelor_application.iml                      |  11 +++
 pom.xml                                       |  28 ++++++++
 ...count_handler.java => AccountHandler.java} |  20 ++++--
 .../java/com/application/DB/Constants.java    |   4 +-
 .../com/application/DB/HelpingFunctions.java  |  22 ++++++
 .../java/com/application/DB/Settings.java     |   2 +-
 .../GUI/PopUpWindows/InputPopup.java          |   6 +-
 .../GUI/PopUpWindows/LoginPopup.java          |  11 +--
 .../application/DB/AccountHandlerTest.java    |  65 ++++++++++++++++++
 .../com/application/DB/Account_handler.class  | Bin 4213 -> 0 bytes
 .../com/application/DB/Constants.class        | Bin 2090 -> 2090 bytes
 .../com/application/DB/HelpingFunctions.class | Bin 8496 -> 9012 bytes
 .../classes/com/application/DB/Settings.class | Bin 5971 -> 5982 bytes
 .../GUI/LineChartFunctionality.class          | Bin 19826 -> 19687 bytes
 .../GUI/PopUpWindows/InputPopup.class         | Bin 8907 -> 8920 bytes
 .../GUI/PopUpWindows/LoginPopup.class         | Bin 11567 -> 11560 bytes
 16 files changed, 151 insertions(+), 18 deletions(-)
 rename src/main/java/com/application/DB/{Account_handler.java => AccountHandler.java} (80%)
 create mode 100644 src/test/com/application/DB/AccountHandlerTest.java
 delete mode 100644 target/classes/com/application/DB/Account_handler.class

diff --git a/Bachelor_application.iml b/Bachelor_application.iml
index f8154df..b94cb91 100644
--- a/Bachelor_application.iml
+++ b/Bachelor_application.iml
@@ -6,6 +6,7 @@
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
@@ -55,5 +56,15 @@
     <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
     <orderEntry type="library" name="Maven: joda-time:joda-time:2.10.14" level="project" />
     <orderEntry type="library" name="Maven: org.jblas:jblas:1.2.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.8.2" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index e6c3063..3c4734f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,34 @@
             <version>1.2.4</version>
         </dependency>
 
+        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx -->
+
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx</artifactId>
+            <version>11</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>RELEASE</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>RELEASE</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>RELEASE</version>
+            <scope>test</scope>
+        </dependency>
+
+
     </dependencies>
 
     <properties>
diff --git a/src/main/java/com/application/DB/Account_handler.java b/src/main/java/com/application/DB/AccountHandler.java
similarity index 80%
rename from src/main/java/com/application/DB/Account_handler.java
rename to src/main/java/com/application/DB/AccountHandler.java
index e5a7cf0..fa9c06a 100644
--- a/src/main/java/com/application/DB/Account_handler.java
+++ b/src/main/java/com/application/DB/AccountHandler.java
@@ -8,9 +8,8 @@ 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 class AccountHandler {
 
     public static void getAccountInformation(String username, String password) throws Exception {
 
@@ -64,21 +63,28 @@ public class Account_handler {
                 "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 {
+    public static boolean addUser(String firstName, String lastName, String phoneNo, String username, String password, boolean isAdmin) throws Exception {
+
+        if(getAccount(username).getTotalRows() == 0) {
             // 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+") ";
+                    "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);
+            System.out.println(sqlStatement);
 
-        HelpingFunctions.createQueryJob(sqlStatement);
+            HelpingFunctions.createQueryJob(sqlStatement);
+            return true;
+        } else {
+            return false;
+        }
     }
 
     public static boolean deleteUser(String username) throws Exception {
diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index 75ae0f2..17b4ae5 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -41,9 +41,7 @@ public class Constants {
     private static String userName;
     private static String phoneNo;
 
-    public static String getUserName() {
-        return userName;
-    }
+    public static String getUserName() { return userName;}
 
     public static void setUserName(String userName) {
         Constants.userName = userName;
diff --git a/src/main/java/com/application/DB/HelpingFunctions.java b/src/main/java/com/application/DB/HelpingFunctions.java
index cdeeafa..4ab13f7 100644
--- a/src/main/java/com/application/DB/HelpingFunctions.java
+++ b/src/main/java/com/application/DB/HelpingFunctions.java
@@ -1,8 +1,10 @@
 package com.application.DB;
 
+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;
@@ -12,8 +14,10 @@ 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.*;
 
+
 public class HelpingFunctions {
 
 
@@ -178,4 +182,22 @@ public class HelpingFunctions {
     public static void setLoadedData(boolean loadedData) {
         Constants.LOADED_DATA = loadedData;
     }
+
+
+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;
+    }
+    else if(input.contains("UNION")){
+        NotificationPopUp.displayNotificationWindow("Keyword: 'UNION' is not allowed");
+        return true;
+    }
+    else return false;
+}
+
+
+
+
+
 }
diff --git a/src/main/java/com/application/DB/Settings.java b/src/main/java/com/application/DB/Settings.java
index 57bc242..04028a6 100644
--- a/src/main/java/com/application/DB/Settings.java
+++ b/src/main/java/com/application/DB/Settings.java
@@ -29,7 +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 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/PopUpWindows/InputPopup.java b/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java
index 1259d27..e96015b 100644
--- a/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java
+++ b/src/main/java/com/application/GUI/PopUpWindows/InputPopup.java
@@ -14,6 +14,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 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;
@@ -127,13 +128,14 @@ public class InputPopup {
                 Constants.MOISTURE_GOAL = moistureList.getValue();
             }
 
+
+
             boolean err = false;
 
             // If the input is null, sets the value to be empty
             if (treeSpeciesList.getValue() == null) {
                 Constants.TREE_SPECIES = "";
-            } else if (treeSpeciesList.getValue().length() > MAX_USER_INPUT_CHARACTERS) {
-                NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
+            } else if (isValidInput(treeSpeciesList.getValue())) {
                 treeSpeciesList.setValue("");
                 err = true;
             }
diff --git a/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java b/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java
index 878fba6..a2218c8 100644
--- a/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java
+++ b/src/main/java/com/application/GUI/PopUpWindows/LoginPopup.java
@@ -10,7 +10,7 @@ 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.AccountHandler.*;
 import static com.application.DB.Constants.*;
 import static com.application.GUI.Panes.LogoBar.getLogin;
 
@@ -140,10 +140,11 @@ public class LoginPopup {
 
                 // 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();
+                    if(addUser(firstNameTextField.getText(), lastNameTextField.getText(), phoneNoTextField.getText(),
+                            usernameTextField.getText(), hashedPassword, isAdminBox.isSelected())){
+                        NotificationPopUp.displayNotificationWindow("Successfully added user!");
+                        window.close();
+                    } else NotificationPopUp.displayNotificationWindow("That username already exist in the database!");
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
diff --git a/src/test/com/application/DB/AccountHandlerTest.java b/src/test/com/application/DB/AccountHandlerTest.java
new file mode 100644
index 0000000..1c89004
--- /dev/null
+++ b/src/test/com/application/DB/AccountHandlerTest.java
@@ -0,0 +1,65 @@
+package com.application.DB;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import static com.application.DB.Settings.USERS_TABLE_NAME;
+
+class AccountHandlerTest {
+
+    AccountHandlerTest(){
+        USERS_TABLE_NAME = "users_testing";
+    }
+
+    @Test
+    void logIn() throws Exception {
+        AccountHandler.deleteUser("loginTestAccount");
+        AccountHandler.addUser("test","test","+4712345678","loginTestAccount","test",false);
+        Assertions.assertEquals(1, AccountHandler.logIn("loginTestAccount","test").getTotalRows());
+        AccountHandler.deleteUser("loginTestAccount");
+    }
+
+    @Test
+    void logInFailed() throws Exception {
+        Assertions.assertEquals(0, AccountHandler.logIn("qefjdnweflkweoihde","test").getTotalRows());
+    }
+
+    @Test
+    void getAccount() throws Exception {
+        AccountHandler.deleteUser("testAccount");
+        AccountHandler.addUser("test","test","+4712345678","testAccount","test",false);
+        Assertions.assertEquals(1, AccountHandler.getAccount("testAccount").getTotalRows());
+        AccountHandler.deleteUser("testAccount");
+    }
+
+    //The test checks if the user is added
+    @Test
+    void addUser() throws Exception {
+        AccountHandler.deleteUser("testAccount");
+        AccountHandler.addUser("test","test","+4712345678","testAccount","test",false);
+        Assertions.assertEquals(1, AccountHandler.getAccount("testAccount").getTotalRows());
+        AccountHandler.deleteUser("testAccount");
+    }
+
+    //The test checks if the user is added
+    @Test
+    void addAlreadyExistingUser() throws Exception {
+        AccountHandler.deleteUser("testAccountAlready");
+        AccountHandler.addUser("test","test","+4712345678","testAccountAlready","test",false);
+        Assertions.assertFalse(AccountHandler.addUser("test","test","+4712345678","testAccountAlready","test",false));
+        AccountHandler.deleteUser("testAccountAlready");
+    }
+
+    @Test
+    void deleteUser() throws Exception {
+        AccountHandler.deleteUser("deleteTestAccount");
+        AccountHandler.addUser("test","test","+4712345678","deleteTestAccount","test",false);
+        AccountHandler.deleteUser("deleteTestAccount");
+        Assertions.assertEquals(0, AccountHandler.getAccount("deleteTestAccount").getTotalRows());
+    }
+
+    @Test
+    void deleteUserNonExistingUser() throws Exception {
+        Assertions.assertFalse(AccountHandler.deleteUser("erjfnerjkfwefbaekrørebf"));
+    }
+}
\ No newline at end of file
diff --git a/target/classes/com/application/DB/Account_handler.class b/target/classes/com/application/DB/Account_handler.class
deleted file mode 100644
index c09f8ced6631474642158218a0c1f8833b6ff76f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4213
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

diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class
index f9229ec0ebccb95510e2f7694f75caeb87e56e94..b1d3fc3702ed1019a1d6296da0a1b093a81acaa1 100644
GIT binary patch
delta 87
zcmZ1_uu5P<DJ!GS<T6$*R(%E*27}2<S*;n3CqHD>Vl`)AVX&Aiz-G;8J=up%i`AZi
sg~4HRHJde~^W^PpTCDC2EDRo#pRrjpdQVnj*JAZ&U||TD9LRnX0C}Dh=Kufz

delta 87
zcmZ1_uu5P<DJ!Gy<T6$*Rzn6B2BXPKS*;mOCqHD>Vzp#oVX&Gkz-G;8JK2X#i`9{V
sg~4fZHJde~>*VchTCAQ7EDT<gpRrjp`c772*J2H1U||TF9LRnX0DdtP1ONa4

diff --git a/target/classes/com/application/DB/HelpingFunctions.class b/target/classes/com/application/DB/HelpingFunctions.class
index 7166717be98c08b21717c8005665d8fe9bd7c817..20e3d6c5e0490d9ddbe6094ea05e11c3be6765fe 100644
GIT binary patch
delta 2735
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
Mj|}e_ZZJp!00R{l5C8xG

delta 2220
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
Zj4cdjSvVQ4G4NgiGoCR#VK~bm2>{qofgJz<

diff --git a/target/classes/com/application/DB/Settings.class b/target/classes/com/application/DB/Settings.class
index 3cc7d0b40907c69485096f5fd430ff9206db126c..c10b0728d7fa140d9da7a00434929e80fbf5f2ea 100644
GIT binary patch
delta 2165
zcmcbtcTcbW)W2Q(7#J8#7_M<K7&1&@XPC;xzyzYFaWUvIOy^=?VVD6DnF(Ue0ui%0
z80LUP=7Ko$I2h)G=mi`M3pp4TaWE|AU|7Pzu#|&g83)614u%z63@aH{aWb$ltma@?
z!@;nYgJB&9!+H*e4Ir_NTs{me44Xg(Yz7fqI2g8aFl^&s*v`SQ1EgRl2g5E9y&FXA
z0TFvS81{ka{p<_}*clFTF&ttz%*CL~aD<)V=)}XljK?MiGHNj%pIpPJGI=p$G2@BN
z;!H1?7*B3uoz2Re&5$#B9+!#5DTdQL43!MUJPc<T&hjvHfLOH*#f%J`VTn1psU?}o
z#XJn>7|!!BG=M~zy~{Ir7+M*MCv$Oka$n$KIK^<0har$5X!1O6d!Y!1ARdM;kP+P=
zqK~0?@_X(m?IeaEMh4EH)Wn>y#GKMp9)>iKIwJ;S9tINzV@3wn(&E&jVjc!32J6Y`
zJUZN$co;4-T;XBJX1F?e9*^_pmpoRC^@a=#3>pla3`Pvb3=9mMAe{^h43Z3{3}y_B
z4CV|B3``6b43Z314AyYI4TB_uErT(fZ^t0XV2>p4z#z%sh{P9Q-~>4WY_2nsxD<nA
zJ%bC9fHZ?7gDVnWmO+xi4T<m0Aj#l?X0a!dJU@dZgBKECfI*VM8;LK-Aj#l^#1~?y
zmt^oo5)fgKWbi}ci!w+u_#;^uz#s{V6$VCzU~tHUFi0|lBB_^RkYor$;)6UCj>HFf
zD1spfp}(F%k|7ewf+z+_hG--WN(_<=F-Ux621$lkBtFPTaY%e221$l^B)$rRBtrrc
zUzI_UArZ;GdXSHjkX^(e$&iesL7hR8Aq9yK@=+=hALOGnH2vvF@)-=044Ft4W-;(H
zFfn8^<S;NY<T5bWgQXZ57#LW!wlgqp1cz!K0|Nsn|1&V~Ft9N2G2}CVSYSmA1q_AY
zbXvqv%)rEuJNc=AnJ-Aa5CaPX14AkU2SXZzC__4fGD8Mj9|wahLkUAE0|P@D)Fg;V
zIRgVU9xE8QK)DrcVuqkKl8Jc?91Qsk5)1_l8VrR<CMq#hp_vF0sfL?a!@$W<3w7fM
zL0!hY$#O#CrZAsyFo<C22Z_|d_180Sfr<vOi~fjcO`am8#F#gEyO1)H8O98aXl?+B
zAe+I-(8SOTHiKVSR2CFYYz&}qY=`>0g@FrH>VQ=^3Y*n~REROKGB7Z7GjK5UFbFdA
zGDtD>F(@-kMDn{VLmQgCAQ4o1+adNcFfhn~ZDe3z*~B2Xfq{X6kpW~2#2r(S+|j{M
z%mQ}EFJa^en9ab!Fo!{cVJ?FP!#pHMC^2-RIRYet8UbDK2#}aOOGK10Z}J8aQX`=o
zYQ`TCAI7}No}#D`(1Yd%V}>3E)PU%P1jOWpqR0`j1<B)mP#YYDB__WXm1E4C%q1pW
zk4P%A4E<=ffJ9JjnE<f`HMlj<gZm)dRt|=Vuq?=Mh=Gj(1SYX=X3!L{+039Nq`kSG
zL1#CEZY1ko2E9mTjvWlF!I3NiY#@3EgZ_2~gUt*Q2zdcxkVGVlfCY$#DUd@_APAC(
zWDyVo(J%#SND72O5|JzdV0s6Gz9rZW4N!pqNicE@><kPHf($GSA`F}i3JiP<W(;}^
Vb`1UuAq)i!(F}|XlfZ??WB~hhF$n+w

delta 2164
zcmcbocUiCg)W2Q(7#J8#7_M+J=rc@aXPCmpzyzYFaxv&IOygo;VVDjQnE_(W1QD}1
z7-oY+=72bJIT+@F==mHB3pf}Saxg67U|7t-u!MtQDF?$c4u<7i3@aE`ax$<mtm0r;
z&B3sSgJCTP!#WOz^&qhgTrLbO3>!fPYyuIRIT*HZFl^;u*v7%I9i(6f2g6Pfy$eL_
z1`&JM8TPU>?BinC&v1Z?L7U+qJHw%gr+XO>PmW~NVmvarg;9l>gW>4p6^zA<$2Q9_
zy<lQIzL}MEHY;-$L-ypwTqYJL7*6sqR4^3rFq~pI&BM?RV%0DdF*0z5CFbO&mSiRu
z^DvxYILpIO4-#eeF3;d$XkjRt%+KA)eU69W1jBhAh5&}Z$&0z|g~AyEc^EoDMs$IQ
zUWTH{U$~>>5*Y#+890Md6LZ26b4pWr7*av%3>XY~7>pPUCs*?5a9`kIxX5scharpM
z^5hLX&TOou#i>Qbn?Lf{FxKlcFfeE^a55M$7&0(0aDwzOFfd3m7&DkKFfy1jFfcGN
zm@!B)STI<^`Bn^)4Au;WaJ~(LB!exIyd8rigFO;ofI*VM0g3O(Aj#ka;n#yLkYbQz
zaE1tg`O*xM3@%7~Sq4c4S0uh0gCv7HngcwL<oOvS89b5rAP0CM@dX(q8N9*#dWa8&
z7$g~dzyc7y2!kYpFA`srL6X4_$wGeyNl?5nFfs&z9UROc$q<619^|1=BtFPPVMu(C
zhr$^G85rx442VFoAd*3nAqq)@5`!c|G!kE#L6RW`i4XEoED|5&p*SSI3WFp=JQ81(
zL6RYX!H}UI7RMkTC4yXp<e(%Z4eAV%49Q4*kdIQ3_#hvpqUldVl22!lWXM4BU?u}U
z0~14*J3}@DBSQ`Y1A{RGBLgD?0|Tqpb_T|c;84wFU|;}ce+C8~1{MZBhCBuk3#^DC
zpP>MpUJDtD7?>DxCO;Q2W6Yf_Cn#<TQ^mm`%TUZv!oa{#3e^V@DPv%O`mvmW3zR#-
z`m+SBeL?mKF|aT&Fyt|CFyu2xFcdIoFciY=<zP@^s6;anBvJ)8v6_LCp$6)rPlCFP
zxsw%ykX<B#p&ukt3)f%Azy&G_z%KeHqBVJ%kP>6=<efswNWL;=Xh3rVNCepoPKHK?
zCa@WT!lJSuU$KFMwjJv4W(F=$DFasFEDQ>_Dq-n#<Zx?6vq6@jl>ya;Hi!)j3=A@0
zvl$pzHZjO;U|?WiWI)(B70JeSXt?|lMh@xO3>*w|7$g|xGH5W&LkZ~)G&d+QbTFWX
zbSKor77<;fxLd@)!LXP?kYNdf6vI*^6G0)3ni@bN$iCuY=z^N~PsE2Yce1yray=qc
zj2XJoTm%w9*3Ze%gDq6l&_iVlQmFJoY-C_yC}dy;hotIm2BygE49wnILXtw0--^mH
z=1%4jlSXohEJGifOF$y1F6qbS5)E{h9E7`sgJA+ZEAC`qV*r6(*3Ar>0ydi&w01LS
z*GIDMWzdOa=Gei&8XU<Yzy_jsFz9Y)(A&%)v712~DlcFRl89sxumI681#(CV1VIv!
zECNCx8m2%ENr5m(B9cV_Ov4lyXn+a@NaB(LJ5Z2;g+YXYlfjHZlfjO`iy?#|n<1Kk
LkzpdZ@R$Su0&y&5

diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class
index 30bd0f2183c54ab6bccf4cc5eda99118dc7ac9f9..b21e073b2ce26efcaa49a9f1501d31ead5c17834 100644
GIT binary patch
delta 8565
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

delta 8670
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
A>i_@%

diff --git a/target/classes/com/application/GUI/PopUpWindows/InputPopup.class b/target/classes/com/application/GUI/PopUpWindows/InputPopup.class
index 8d31307c5d5c7a14c5f4fb19efcad444cd5ba67f..347ac9d24189f21a827c7d1ad4ed22d1523084af 100644
GIT binary patch
delta 3252
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
N?r@e5oE6S!3jis$%0d7D

delta 3358
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

diff --git a/target/classes/com/application/GUI/PopUpWindows/LoginPopup.class b/target/classes/com/application/GUI/PopUpWindows/LoginPopup.class
index d48a380678cdbcd7de915ccbd1bfb5ac516a2e67..c94b2f85d508e5f666aed9e7f81ececd4e584974 100644
GIT binary patch
delta 4217
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
CD~%Tb

delta 4138
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
R;Vg4F%L2~whO>ManE?wDPVN8z

-- 
GitLab